(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-21
(54)【発明の名称】ページ移行を提供するためのシステム及び方法
(51)【国際特許分類】
G06F 12/0862 20160101AFI20240313BHJP
【FI】
G06F12/0862 100
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023558750
(86)(22)【出願日】2022-03-24
(85)【翻訳文提出日】2023-10-24
(86)【国際出願番号】 US2022021818
(87)【国際公開番号】W WO2022212182
(87)【国際公開日】2022-10-06
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ショーン ティー. ホワイト
(72)【発明者】
【氏名】フィリップ ン
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ13
5B205KK16
5B205MM36
5B205RR04
5B205VV03
(57)【要約】
複数の階層型メモリ間のページのページ移行を提供する方法及び装置は、各メモリ階層内で頻繁にアクセスされるメモリページを識別し、メモリページがどのくらい頻繁にアクセスされているかを示すページ人気ランキング情報を生成する。方法及び装置は、オペレーティングシステム又はハイパーバイザ(システムで何れかが使用されているかに応じて)にページ人気ランキング情報を提供し、オペレーティングシステム又はハイパーバイザは、ページ人気ランキング情報に基づいて、ページ移動コマンドをハードウェア・データ・ムーバに発行し、ハードウェア・データ・ムーバは、オペレーティングシステムからのページ移動コマンドに応じてメモリページを異なるメモリ階層に移動する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数の階層型メモリ間のページのページ移行を提供する方法であって、
各階層型メモリ領域内で頻繁にアクセスされるメモリページを識別し、メモリページがどのくらい頻繁にアクセスされているかを示すページ人気ランキング情報を生成することと、
前記ページ人気ランキング情報をオペレーティングシステム又はハイパーバイザのうち少なくとも一方に提供することと、
前記ページ人気ランキング情報に基づいて、前記オペレーティングシステム又はハイパーバイザが、ページ移動コマンドをハードウェア・データ・ムーバに発行することと、
前記オペレーティングシステム又はハイパーバイザからの前記ページ移動コマンドに応じて、前記ハードウェア・データ・ムーバが、メモリページを何れかのメモリ階層から別のメモリ階層に移動させることと、を含む、
方法。
【請求項2】
前記ページ移動コマンドを発行することは、異なるメモリ階層への複数のメモリページのセキュア・ネスト・ページング・バッチ移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを発行することを含む、
請求項1の方法。
【請求項3】
前記ページ移動コマンドを発行することは、ゲスト・オペレーティングシステムが安全に所有する1つ以上のメモリページのセキュア・ネスト・ページング移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを発行することを含む、
請求項1の方法。
【請求項4】
前記ページ移動コマンドを発行することは、非セキュア・ネスト・ページング・システム内のダイレクト・メモリ・アクセス・デバイスによって活発に使用され得る1つ以上のページのコンテンツを、暗号化されていないか、又は、オペレーティングシステム若しくはハイパーバイザが所有する鍵を使用して暗号化されているかの何れかのメモリに前記ハードウェア・データ・ムーバによって移動させるコマンドデータを発行することを含む、
請求項1の方法。
【請求項5】
前記ページ移動コマンドを発行することは、I/Oデバイスページのセキュア・ネスト・ページング移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを発行することを含み、
前記セキュア・ネスト・ページング移動は、ダイレクト・メモリ・アクセス・デバイスによって活発に使用され得るページを移動させる、
請求項1の方法。
【請求項6】
前記オペレーティングシステムと前記ハードウェア・データ・ムーバとの間にアプリケーション・プログラミング・インターフェース(application programming interface、API)を設けることを含み、
前記APIは、前記ページ移動コマンドを前記ハードウェア・データ・ムーバに提供し、返されたページ移行データを前記ハードウェア・データ・ムーバから前記オペレーティングシステムに提供する、
請求項1の方法。
【請求項7】
前記ページ移動コマンドを提供している間に入出力メモリ管理ユニットのアドレスマッピングを遅延させることを含む、
請求項1の方法。
【請求項8】
複数の階層型メモリ間のページのページ移行を提供する装置であって、
格納されたコードを実行するように構成された1つ以上のプロセッサであって、前記コードは、実行されると、各メモリ階層領域内で頻繁にアクセスされるメモリページを識別することと、メモリページがどのくらい頻繁にアクセスされているかを示すページ人気ランキング情報を生成することと、を前記1つ以上のプロセッサに行わせる、1つ以上のプロセッサと、
前記ページ人気ランキング情報に基づいて、ページ移動コマンドをハードウェア・データ・ムーバに発行するように構成されたオペレーティングシステム又はハイパーバイザと、
前記1つ以上のプロセッサに動作可能に結合され、前記オペレーティングシステム又はハイパーバイザからの前記ページ移動コマンドに応じてメモリページを異なるメモリ階層に移動させるように動作するハードウェア・データ・ムーバと、を備える、
装置。
【請求項9】
前記ページ移動コマンドは、異なるメモリ階層への複数のメモリページのセキュア・ネスト・ページング・バッチ移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを含む、
請求項8の装置。
【請求項10】
前記ページ移動コマンドは、ゲスト・オペレーティングシステムが安全に所有する1つ以上のメモリページのセキュア・ネスト・ページング移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを含む、
請求項8の装置。
【請求項11】
前記ページ移動コマンドを発行することは、非セキュア・ネスト・ページング・システム内のダイレクト・メモリ・アクセス・デバイスによって活発に使用され得る1つ以上のページのコンテンツを、暗号化されていないか、又は、オペレーティングシステム若しくはハイパーバイザが所有する鍵を使用して暗号化されているかの何れかのメモリに前記ハードウェア・データ・ムーバによって移動させるコマンドデータを発行することを含む、
請求項8の装置。
【請求項12】
前記ページ移動コマンドは、I/Oデバイスページのセキュア・ネスト・ページング移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを含み、
前記セキュア・ネスト・ページング移動は、ダイレクト・メモリ・アクセス・デバイスによって活発に使用され得るページを移動させる、
請求項8の装置。
【請求項13】
前記1つ以上のプロセッサは、格納されたコードを実行し、前記コードは、実行されると、前記オペレーティングシステムと前記ハードウェア・データ・ムーバとの間にアプリケーション・プログラミング・インターフェース(application programming interface、API)を設けることを前記1つ以上のプロセッサに行わせ、
前記APIは、前記移動コマンドを前記ハードウェア・データ・ムーバに提供し、返されたページ移行データを前記ハードウェア・データ・ムーバから前記オペレーティングシステムに提供する、
請求項8の装置。
【請求項14】
入力/出力メモリ管理ユニットを備え、
前記入力/出力メモリ管理ユニットは、前記ハードウェア・データ・ムーバに動作可能に結合されると共に、前記階層型メモリにアクセスする入力/出力ユニットとインターフェース接続するように動作し、
前記ハードウェア・データ・ムーバは、
セキュリティプロセッサ(security processor、SP)と、
前記セキュリティプロセッサと通信するダイレクト・メモリ・アクセス・エンジン(direct access engine、DMA)と、を備え、
前記セキュリティプロセッサは、前記ページ移動コマンドを処理するように動作し、前記DMAエンジンは、メモリの異なる階層の間で1つ以上のページを移動させるように動作する、
請求項8の装置。
【請求項15】
マルチ階層型メモリシステムにおいてページ移行を提供する装置であって、
プロセッサを含むハードウェア・データ・ムーバと、
前記プロセッサと通信するダイレクト・メモリ・アクセス(direct memory access、DMA)エンジンと、を備え、
前記プロセッサは、オペレーティングシステムからのページ移動コマンドを処理するように動作し、
前記DMAエンジンは、前記ページ移動コマンドに基づいて、メモリの異なる階層の間で1つ以上のページを移動させるように動作する、
装置。
【請求項16】
前記プロセッサは、異なるメモリ階層への複数のメモリページのセキュア・ネスト・ページング・バッチ移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを処理するように構成されている、
請求項15の装置。
【請求項17】
前記プロセッサは、ゲスト・オペレーティングシステムが所有する1つ以上のメモリページのセキュア・ネスト・ページング移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを処理するように構成されている、
請求項15の装置。
【請求項18】
前記プロセッサは、非セキュア・ネスト・ページング・システム内のダイレクト・メモリ・アクセス・デバイスによって活発に使用され得る1つ以上のページのコンテンツを、暗号化されていないか、又は、オペレーティングシステム若しくはハイパーバイザが所有する鍵を使用して暗号化されているかの何れかのメモリに前記ハードウェア・データ・ムーバによって移動させるコマンドデータを処理するように構成されている、
請求項15の装置。
【請求項19】
前記プロセッサは、I/Oデバイスページのセキュア・ネスト・ページング移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを処理するように構成されており、
前記セキュア・ネスト・ページング移動は、ダイレクト・メモリ・アクセス・デバイスによって活発に使用され得るページを移動させる、
請求項15の装置。
【請求項20】
前記プロセッサは、セキュア・ネストされたページのためのページ移動を提供するように構成されたセキュリティプロセッサである、
請求項15の装置。
【発明の詳細な説明】
【背景技術】
【0001】
ダイレクト・メモリ・アクセス(direct memory access、DMA)コントローラを含むメモリコントローラは、データプロセッサ等のメモリ・アクセス・エージェントによって生成されたアクセスを、コンピュータメモリによって理解される1つ以上のコマンドに変換する回路である。メモリコントローラを、個別のチップとして実装すること、又は、単一の集積回路チップ上のデータプロセッサ等の他のコンポーネントと統合することも可能である。後者の場合、メモリコントローラは、通常、統合メモリコントローラと呼ばれる。統合メモリコントローラは、ダイナミック・ランダム・アクセス・メモリ(dynamic random-access memory、DRAM)バスプロトコル及びダブル・データ・レート・ダイナミック・ランダム・アクセス・メモリ(double data rate dynamic random-access memory、DDR DRAM)バスプロトコル等の様々なバスプロトコルをサポートする。プロセッサ(例えば、中央演算処理装置(central processing unit、CPU)、グラフィックス処理装置(graphics processing unit、GPU)、デジタル・シグナル・プロセッサ(digital signal processor、DSP)等)のようなコンピューティングリソース及びメモリの密結合の必要性は、システム設計者に、メモリ容量の要件、メモリコントローラの可用性、メモリのライフサイクル制限、及び、CPUが利用できるメモリ帯域幅に関連する課題を突きつけている。インメモリワークロード及びサーバ仮想化等の機能は、メモリ容量を増加させる必要性を駆り立てる。更に、CPU(例えば、1つ以上のコア)の性能の向上により、ソケットごとにより多くのメモリチャネルが必要となる。例えば、メモリ容量要件は、多くのワークロードに対してバランスのとれた計算リソースを維持するために、CPUの数によって駆り立てられる。
【0002】
階層型メモリシステムは、種々のレイテンシ及び/又は帯域幅の特性を有するメモリの2つ又はそれより多くの領域からなる。例えば、2ソケットシステムは、全てのメモリが従来のDRAMであっても、メモリの「ローカル」階層及び「リモート」階層を有する。業界では、HBM及びDRAM、DRAM及びCXLタイプ3メモリ拡張デバイス、DRAM及びNVDIMM-P等の階層型メモリの新しい組み合わせが開発されている。レイテンシ及び帯域幅の差のいくつかの例には、例えば、DRAMに対してより高いレイテンシ特性及び異なる帯域幅特性を有するCXL接続メモリが含まれてもよい。HBMは、DRAMと類似したレイテンシ特性を有するが、帯域幅が非常に高い場合がある。複数のメモリ階層の間の性能差に起因して、頻繁に使用されるページをより低速なメモリ階層からより高速な階層に移動させ、使用される頻度の低いページをより高速なメモリ階層からより低速な階層に移動させることが望ましい。メモリをプロセスに割り当てる等の管理を容易にするために、メモリを、4KiB、2MiB、1GiB等の様々なサイズのページに分割してもよい。ページ移行を使用することにより、メモリのより高速な階層を最大限に利用することによる性能の向上が得られる。
【0003】
複数の競合するメモリ技術の急速な開発が進行中であるため、現在のところ、明確な最良の技術又は解決策又はインターフェースが存在しない。ハードウェアのみの解決策が提案されているが、所有権が主張されるものであり、現在の選択肢から最良のメモリ解決策が選択される可能性は低く、未だ選択肢が出てきていない。また、ページ移行のためのハードウェアのみの解決策は、いくつかのワークロードでは良好に機能するが、他のワークロードではうまく機能しない場合があり、挙動に基づいて動作を調整することが困難な場合がある。また、ハイパーバイザと仮想マシンとの間のセキュリティを強化する必要性及び仮想化により、ハードウェアのみの解決策は、セキュリティニーズへの適合では十分に堅牢ではない場合がある。ページ移行を実行する他の解決策は、ハードウェアのみの解決策よりも柔軟な場合があるソフトウェアのみの解決策を使用するが、ソフトウェアで実施されたデータ移動は、ハードウェアで実施されたデータ移動より性能が低くなる。また、例えば、高度なセキュリティ機能によって保護されるゲスト仮想マシンによって使用されているページを、ハイパーバイザによって移行できない場合があるので、既知のシステムが適切なセキュリティを提供しない場合がある。
【0004】
実施形態は、同様の符号が同様の要素を表す以下の図を伴う場合に、以下の説明を考慮してより容易に理解されるであろう。
【図面の簡単な説明】
【0005】
【
図1】本開示に記載の一例による、ページ移行を提供するための装置を示すブロック図である。
【
図2】本開示に記載の一例による、階層型メモリシステムにおいてページ移行を提供するための方法を示すフロー図である。
【
図3】本開示に記載の一例による、ページ移動コマンドを示す図である。
【
図4】本開示に記載の一例による、ページ移行を提供するための装置の一例を示すブロック図である。
【発明を実施するための形態】
【0006】
以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。別段言及されなければ、「結合される」という単語及びその関連する動詞形は、当技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段言及されなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も意味する。
【0007】
装置及び方法は、ページ移行動作のために3つのコンポーネントを使用する一種のハイブリッド・ハードウェア/ソフトウェア・アーキテクチャを提供する。いくつかの実装では、ソフトウェア・プロファイリング・ドライバは、採用されると共に例えばCPUにおいて実行され、システムトラフィックのプロファイリングを行って、例えばオペレーティングシステム又はハイパーバイザによるソフトウェアの意思決定を通知する。ハイパーバイザ/オペレーティングシステムは、ハイパーバイザ/OSページ管理に関連する決定を行うためのページ移行ポリシーエンジンとして機能する。ファームウェアを実行するマイクロコントローラ等のハードウェア・データ・ムーバは、ハイパーバイザ/オペレーティングシステムの指示によるページの移行をサポートする。このアーキテクチャにより、種々のメモリ技術及びワークロードに対する広範囲な柔軟性が可能になる。いくつかの実装では、改善されたページ移行動作を可能にするために、ハイパーバイザ/オペレーティングシステムによってハードウェア・データ・ムーバに対して発行される新しいコマンドが開発されている。
【0008】
いくつかの実装では、サーバプロセッサは、複数のメモリ領域の階層の間、例えば、直接接続DRAM及びより低速な階層型メモリの間のページ移行をサポートする。いくつかの実装では、システムメモリの頻繁にアクセスされるページを、より低速なメモリ階層からより高速なメモリ階層に再配置して性能を向上させることが可能になるように、ページ移行を使用する。DRAM及び他のデバイスの混成がシステムメモリにマッピングされるが、いくつかの例では、メモリマップドIO(memory mapped IO、MMIO)ではない。非DRAM領域は、より長い読み出し/書き込みアクセス時間、及び、より大きいビット密度等のデバイス技術の特性に起因して、典型的にはより高いレイテンシを有し、場合によってはDRAM領域よりも大きい。性能を向上させるために、プロファイラは、現在のところより低速な階層にある頻繁にアクセスされるページを識別し、ハイパーバイザ又はOSは、それらのページをDRAM等のより高速なメモリに移行させると共に、アクセス頻度の低いページをより低速なシステム階層に残しておく。また、ハイパーバイザ又はOSは、必要に応じて、ページをより高速な階層からより低速な階層に移動させる。一例では、より高速な階層内にある頻繁にアクセスされるページは、より低速な階層への移行には選択されない。
【0009】
いくつかの実装では、複数の階層型メモリ間のページのページ移行を提供するための方法は、各階層型メモリ領域内で頻繁にアクセスされるメモリページを識別し、メモリページがどのくらい頻繁にアクセスされているかを示すページ人気ランキング情報(page hotness ranking information)を生成することと、ページ人気ランキング情報をオペレーティングシステム又はハイパーバイザのうち少なくとも一方に提供することと、ページ人気ランキング情報に基づいて、オペレーティングシステム又はハイパーバイザによってハードウェア・データ・ムーバ(hardware data mover)にページ移動コマンドを発行することと、オペレーティングシステム又はハイパーバイザからのページ移動コマンドに応じて、ハードウェア・データ・ムーバによってメモリページを何れかのメモリ階層から別のメモリ階層に移動させることと、を含む。
【0010】
ある特定の実装では、本方法は、異なるメモリ階層への複数のメモリページのセキュア・ネスト・ページング・バッチ移動(secure nested paging batch move)をハードウェア・データ・ムーバに提供させるコマンドデータを発行することを含む。
【0011】
いくつかの実装では、本方法は、ゲスト・オペレーティングシステムによって安全に所有される1つ以上のメモリページのセキュア・ネスト・ページング移動をハードウェア・データ・ムーバに提供させるコマンドデータを発行することを含む。
【0012】
ある特定の実装では、本方法は、暗号化されていないか、又は、オペレーティングシステム若しくはハイパーバイザが所有する鍵を使用して暗号化されているかの何れかのメモリに、非セキュア・ネスト・ページング・システム内のダイレクト・メモリ・アクセス・デバイスによって活発に使用され得る1つ以上のページのコンテンツを、ハードウェア・データ・ムーバに移動させるコマンドデータを発行することを含む。
【0013】
いくつかの実装では、本方法は、ダイレクト・メモリ・アクセス・デバイスによって活発に使用され得るページのセキュア・ネスト・ページング移動をハードウェア・データ・ムーバに提供させるコマンドデータを発行することを含む。
【0014】
ある特定の実装では、本方法は、オペレーティングシステム又はハイパーバイザと、ハードウェア・データ・ムーバと、の間のアプリケーション・プログラミング・インターフェース(application programming interface、API)を提供することを含み、このAPIは、ハードウェア・データ・ムーバに移動コマンドを提供し、ハードウェア・データ・ムーバからオペレーティングシステムに返されたページ移行データを提供する。
【0015】
いくつかの実装では、本方法は、ページ移動コマンドを提供している間に入出力メモリ管理ユニット内のDMA動作を遅延させることを含む。
【0016】
いくつかの実装では、複数の階層型メモリ間のページのページ移行を提供するための装置は、格納されたコードを実行するように構成された1つ以上のプロセッサを含み、この格納されたコードは、実行されると、各メモリ階層領域内で頻繁にアクセスされるメモリページを1つ以上のプロセッサに識別させ、メモリページがどのくらい頻繁にアクセスされているかを示すページ人気ランキング情報を生成させる。装置は、ページ人気ランキング情報に基づいて、ハードウェア・データ・ムーバにページ移動コマンドを発行するように構成されたオペレーティングシステム又はハイパーバイザを含む。装置は、オペレーティングシステムからのページ移動コマンドに応じて異なるメモリ階層にメモリページを移動させるハードウェア・データ・ムーバを含む。
【0017】
図1は、ページ移行を提供するためのシステム100の一例を示している。この例では、システム100は、1つ以上のサーバプロセッサを含み、このサーバプロセッサは、例えば、データプロセッサ等のプロセッサ110と、中央演算処理装置等のプロセッサ112と、を含み、このプロセッサ112は、格納された実行可能命令を実行し、この命令は、実行されると、オペレーティングシステム及び/又はハイパーバイザ、ドライバ、アプリケーション・プログラム・インターフェース(application program interface、API)、並びに、本明細書で更に説明するゲスト・オペレーティングシステムとして動作する。いくつかの実装におけるサーバプロセッサは、集積回路、システム・オン・チップ、又は、他の任意の適切な構成である。この例では、システム100は、1つ以上のIOデバイス114と、現在のところ階層1メモリと呼ばれるより低速な階層型メモリ118と、階層2メモリと呼ばれるより高速な階層型メモリ120を有する階層型メモリシステム116と、を含む。プロセッサ110は、データファブリック122と、入出力メモリ管理ユニット(input output memory management unit、IOMMU)124と、ハードウェア・データ・ムーバ126と、を含む。IOMMU124は、1つ以上のIOデバイス114に適切なインターフェースを提供することで、IOデバイス114は、階層型メモリシステムのメモリを使用できるようになる。IOMMU及びIOデバイスは、163として示される1つ以上のバス構造を通じて通信する。また、データファブリック122は、162として示される1つ以上の通信リンクを通じて階層型メモリ116のための適切なインターフェースを提供する。データファブリック122は、通信リンク164を通じてIOMMU124と通信する。
【0018】
いくつかの実装では、ハードウェア・データ・ムーバ126は、セキュリティプロセッサ等のプロセッサ130と、いくつかの実装ではファームウェアを実行するマイクロコントローラとして実装されるダイレクト・メモリ・アクセス(direct memory access、DMA)エンジン135と、を含む。同様に、いくつかの実装におけるプロセッサ130も、ファームウェアを実行するプロセッサとして実装される。いくつかの実装では、ハードウェア・データ・ムーバ126は、IOMMUを通じてデータファブリック122と通信し、1つ以上の通信リンク150を介してIOMMUと通信する。他の実装では、データ・ムーバはデータファブリックと直接的に通信する。
【0019】
いくつかの実装におけるプロセッサ112は、オペレーティングシステム又はハイパーバイザを実行するプロセッサとして機能する。仮想化システムでは、プロセッサ112は、当技術分野で知られているようなゲスト・オペレーティングシステム152を生成する。これらのゲスト・オペレーティングシステムは、仮想マシンとのインターフェース接続を容易にする。仮想化システムでは、ハイパーバイザが使用され、次いで1つ以上のゲスト仮想マシンがハイパーバイザの制御の下で実行される。非仮想化システムは、オペレーティングシステムを実行する。仮想化システムでは、ハイパーバイザがシステム物理メモリマップを所有する。非仮想化システムでは、OSがシステム物理メモリマップを所有する。この例では、オペレーティングシステム又はハイパーバイザは、ページ移行ポリシーエンジン155を含む。また、プロセッサ112は、ドライバ等のページ性能プロファイラ156と、ページプロファイラAPI158と、データ・ムーバAPI160と、を含む。
【0020】
プロセッサ130は、ページ移動コマンド168及び他のコマンドをプロセッサ112から受信し、移動コマンドの場合には、ページ性能プロファイラ156が、人気のある階層型メモリシステム116内ページをより低速な階層型メモリ118内に識別した場合に、DMAエンジン135を採用して、例えば、より低速なメモリ階層118からより高速なメモリ階層120へのページ移動を行う。いくつかの実装では、ページ性能プロファイラ156は、ページ・テーブル・エントリ(page table entry、PTE)内のアクセス/ダーティビットをスキャンして、頻繁にアクセスされるページを識別する。別の言い方をすれば、より低速な階層型メモリ内でページが頻繁にアクセスされる場合、ページ性能プロファイラ156は、それらのページを識別し、ページプロファイラAPI158を通じてページ移行ポリシーエンジン155にページごとの又はページグループごとのランクを提供することで、ページ移行ポリシーエンジン155は、より低速な階層型メモリからより高速な階層型メモリにページを移動させるかどうかを決定することができる。ページ移行ポリシーエンジン155は、ハードウェア・データ・ムーバ126によって移動される各特定の階層型メモリ内のページのリストであるページ移動リスト165をメモリ内に保持する。
【0021】
システム100は、IOデバイス114によって活発に読み出され及び/又は書き込まれている移動ページに対応する。いくつかの実装でのCPU112によって活発に読み出され及び/又は書き込まれているページの移動は、従来の方法で処理される。例えば、ページ移行により、ページのアドレスマッピングは、何れかのシステム物理アドレスから別のシステム物理アドレスに変更され、データは「古い」アドレスから「新しい」アドレスにコピーされる。伝統的なハイパーバイザ又はOSソフトウェアは、CPUアドレスマッピングのためのページテーブルを更新する(古いアドレスマッピングを消去し、次いで、ページ移行が完了した時点で、新しいアドレスマッピングをインストールする)。ハードウェア・データ・ムーバは、データをその新しいページにコピーし、IOMMUページテーブル内のアドレスマッピングを更新する。
【0022】
いくつかの実装では、ページ性能プロファイラ156は、CPU上で実行するドライバであり、他の実装では、ページ性能プロファイラ156は、ハードウェア・データ・ムーバ126内に配置されており、セキュリティプロセッサ130又はDMAエンジン135によって実行されるファームウェアである。他の変形例も考えられる。
【0023】
いくつかの実装では、ページプロファイラ156は、より低速な階層型メモリ領域内で頻繁にアクセスされるメモリページを識別し、メモリページが将来アクセスされる可能性を示すページ人気ランキング情報166を生成する。オペレーティングシステム又はハイパーバイザ等のページ移行ポリシーエンジン155は、ページ人気ランキング情報166に基づいて、ハードウェア・データ・ムーバ126にページ移動コマンド168を発行する。例えば、人気ランキング情報166により、より低速な階層のメモリ内の特定のページ又はページ一式に対して高い順位が示される場合、そのページは頻繁にアクセスされていることを意味しており、そのページをより高速な階層のメモリに移動させるように移動コマンド168が発行される。ハードウェア・データ・ムーバ(hardware data mover、HDM)126は、オペレーティングシステムからのページ移動コマンドに応じて、より低速な階層型メモリからより高速な階層型メモリにメモリページを移動させる。より高速な階層からより低速な階層へのページ移動も、OS又はハイパーバイザによる指示どおりに、必要に応じてデータ・ムーバによって実行される。
【0024】
いくつかの実装では、PCIe等の要求エンジン又は他のI/Oデバイスが他のページの読み出し及び書き込みを発行し続けることができるが、移行されているページへのアクセスはIOMMUにおいて停止されるように、ハードウェア・データ・ムーバ126はIOMMU124を一時的に休止させる。例えば、いくつかの実装では、システムは、ブロックされる1つ以上のIOMMUページ・テーブル・エントリを変更することで、IOMMUは、I/Oデバイスからの要求アドレスを書き換えようとする試みを停止する。ハードウェア・データ・ムーバ126は、「古い」アドレスへのアクセスをブロックし、それへの任意のアクセスは、IOMMUにおいて停止される。次いで、データ・ムーバは、「古い」ページから新しいページにデータを移動する。データ移動が完了した時点で、データ・ムーバは、IOMMUページテーブルを更新して、「古い」アドレスの代わりに「新しい」アドレスにマッピングし、IOMMU停止を解除する。その先のIOMMUは、I/Oデバイスからの任意の要求を「新しい」アドレスに送信する。
【0025】
いくつかの実装では、CPU及びIOMMUの各々によりCPUかIOMMUのページ・アクセス・プロファイリングが可能になるように、個別のページテーブルが保持される。いくつかの実装では、プロファイラ156は、ページ人気情報(例えば、ランク及びメタデータ)を発行することによって頻繁にアクセスされ、メモリのより低速な階層からメモリのより高速な階層への移行が提案される「遅いメモリ」ページのリストを提供する。
【0026】
ある特定の実装では、
図3に関して以下で更に記載するように、複数の種類の移動コマンドが採用される。いくつかの実装では、移動コマンドは、より高速な階層型メモリ内のメモリ領域への複数のメモリページのセキュア・ネスト・ページング・バッチ移動をハードウェア・データ・ムーバに提供させるコマンドデータを含む。いくつかの実装では、移動コマンドSNP_PAGE_MOVE_GUEST CMDは、1つ以上のメモリページのセキュア・ネスト・ページング移動をゲスト・オペレーティングシステムに提供することをハードウェア・データ・ムーバに行わせるコマンドデータを含む。いくつかの実装では、PAGE_MOVE_IOコマンドは、暗号化されていないか、又は、オペレーティングシステム若しくはハイパーバイザが所有する鍵を使用して暗号化されているかの何れかのメモリに、非セキュア・ネスト・ページング・システム内のダイレクト・メモリ・アクセス・デバイスによって活発に使用され得る1つ以上のページのコンテンツをハードウェア・データ・ムーバに移動させるコマンドデータを含む。
【0027】
ある特定の実装では、SNP_PAGE_MOVE_IOコマンドは、I/Oデバイスページのセキュア・ネスト・ページング移動をハードウェア・データ・ムーバに提供させるコマンドデータを含み、このセキュア・ネスト・ページング移動は、ダイレクト・メモリ・アドレス・デバイスによって活発に使用されるページを移動させる。
【0028】
プロセッサ112は、格納されたコードを実行し、このコードは実行されるとページ移行ポリシーエンジン155等のオペレーティングシステムと、ハードウェア・データ・ムーバ126と、の間のデータ・ムーバAPI160を提供し、このAPIはハードウェア・データ・ムーバ126に移動コマンドを提供し、ハードウェア・データ・ムーバからオペレーティングシステムに返された、移動が成功裏に行われたことの確認等のページ移行データを提供する。
【0029】
図2は、階層型メモリを使用するIOデバイスのためのページ移行等のような、多層メモリシステムにおけるページ移行を提供するための方法200の一例を示すフローチャートである。動作を任意の適切な順序で実行してもよく、任意の適切な構造によって実行してもよいことが認識されるであろう。この例では、本方法は、
図1のシステムによって実行される。ブロック210に示すように、本方法は、より低速な階層型メモリ領域及びより高速な階層型メモリ等の各メモリ階層において頻繁にアクセスされるメモリページを識別し、メモリページがアクセスされている頻度を示すページ人気ランキング情報166を生成することを含む。いくつかの実装では、これはプロファイラ156によって行われる。ブロック215に示すように、本方法は、ページ人気ランキング情報166をポリシーエンジン155等のオペレーティングシステム又はハイパーバイザに、例えば、プロファイラ156によって提供することを含む。ブロック220に示すように、本方法は、ページ人気ランキング情報166に基づいて、オペレーティングシステムによって、ハードウェア・データ・ムーバ126にページ移動コマンド168を発行することを含む。ブロック225に示されるように、本方法は、オペレーティングシステム又はハイパーバイザからのページ移動コマンド168に応じて、メモリページを異なるメモリ階層へ(例えば、より低速な階層型メモリ118からより高速な階層型メモリ120へ)ハードウェア・データ・ムーバ126によって移動させることを含む。
【0030】
一例では、プロファイラ156は、より低速な階層型メモリ領域にマッピングされると共に頻繁にアクセスされるメモリページを(そのようなページはより良好なシステム性能のためにより高速なメモリ階層に移行される候補である可能性が高いので)識別しようと試みるプロセッサによって実行されるソフトウェアである。いくつかの実装では、プロファイラはページ人気ランクを提供する。いくつかの実装では、プロファイラは、各ページのプロファイリング統計をページ人気ランクに集約する。すなわち、
人気ランク=f(最新性、頻度、共有、クリーン/ダーティ、メモリ階層)。
【0031】
人気ランクは、過去においてページがどのくらい頻繁にアクセスされたかを説明する。より高いランクのページは、性能を向上させるために、より高速なメモリ階層に配置される。
【0032】
いくつかの実装では、各ページについて、プロファイラは、ランクの他に以下の情報、すなわち、監視ハードウェア(例えば、DMA)から直接的に取得されたホスト仮想アドレス及びシステム物理アドレス(HVA及びsPA)と、ページサイズと、そのページが現在のところ属するメモリ階層(より高速なメモリ階層か、より低速なメモリ階層か)と、を提供する。このメモリ階層は、監視ハードウェア(例えば、DMA)から直接的に取得されたもの、又は、メモリマップ(より高速なメモリ階層アドレス領域か、より低速なメモリ階層アドレス領域か)に基づいて生成されるものであり、このメモリマップは、アドバンスト・コンフィグレーション・アンド・パワー・インターフェース(Advanced Configuration and Power Interface、ACPI)の異種メモリ属性テーブル(Heterogeneous Memory Attributes Tables、HMAT)及びシステム・リソース・アフィニティ・テーブル(System Resource Affinity Table、SRAT)から取得される。
【0033】
これらのページを識別するためにプロファイラが様々な方法を使用できることを認識し得るであろう。種々のシステムでは、それらのワークロード及びハードウェア/ソフトウェア構成にとって最適に機能するものに応じて、それらのプロファイラを異なるように構成することを選択してもよい。また、将来のシステムでは、プロファイラで使用される方法を追加、削除又は変更してもよいが、ポリシーエンジンに送信されるプロファイラ出力は、プロファイラで使用される基礎となる方法にかかわらず、一貫したままであることが意図されている。これにより、ハイパーバイザ及びオペレーティングシステムのベンダは、ポリシーエンジンを変更する必要なく、将来のプロセッサ及びそれらの性能プロファイリング・ドライバと共に機能し続ける、ページ移行のためのポリシーエンジンを生成することが可能になる。
【0034】
ポリシーエンジン155は、システム物理アドレスマップを所有するトップレベルのハイパーバイザ又はオペレーティングシステムで実行される。それは、性能プロファイリング・ドライバ156又はそれが考慮することを望む任意の他のソースから入力166を取り込み、それがシステムにとって最良であると考える如何なるページ移行決定も行う。任意の適切な決定プロセスが採用されてもよく、ハイパーバイザ又はオペレーティングシステムのベンダに委ねられる。
【0035】
ハイパーバイザ/オペレーティングシステムのポリシーエンジン155は、物理メモリ全体の管理を担当して、ページ移行を可能にするために必要に応じて物理メモリの割り当て及び予約を行う。ポリシーエンジンは、必要に応じてより低速なメモリ階層からより高速なメモリにページを迅速に移動させることができるように、DRAMページのプールを予約してもよい。これらのメモリ管理の選択は、ハイパーバイザ又はオペレーティングシステムのベンダに委ねられる。
【0036】
いくつかのシステムは、VMセキュリティを採用する。例えば、アドバンスト・マイクロ・デバイスズ(Advanced Micro Devices、AMD)は、ハイパーバイザから仮想マシン(virtual machine:VM)を分離するように設計された最初のx86技術であるセキュアな暗号化仮想化(Secure Encrypted Virtualization:SEV)を導入した。ハイパーバイザは、伝統的に仮想化セキュリティモデルにおいて信頼されるコンポーネントであったが、多くの市場が、異なるVM信頼モデルから利益を得ることができる。例えばクラウドでは、顧客は、自身のVMベースのワークロードをクラウド管理者から保護して、自身のデータの機密性を維持し、クラウドプロバイダのインフラストラクチャ内のバグへのそれらの暴露を最小限に抑えることを望む場合がある。これは、ハイパーバイザ及び物理サーバ上にたまたま共存する場合がある他のコードからハードウェアレベルでVMを分離したいという要望につながる。
【0037】
AMDは、SEVにおいてメインメモリ暗号化を使用することによって、この課題に取り組み始めた。この技術では、個々のVMに、それらが使用中のデータを自動的に暗号化するために使用される固有の高度暗号化標準(Advanced Encryption Standard、AES)暗号鍵を割り当てることが可能になった。ハイパーバイザ等のコンポーネントがゲスト内部のメモリを読み取ろうと試みた場合、暗号化されているバイトしか見ることができない。
【0038】
AMDは後にSEV-ES(Encrypted State:暗号化された状態)機能を導入しており、この機能によりCPUレジスタ状態に対する追加の保護が追加された。SEV-ESでは、VMによって活発に使用されているデータをハイパーバイザが見ることができないように、VMレジスタ状態が各ハイパーバイザ遷移時に暗号化される。SEVと共に、SEV-ESは、メモリ内のデータの機密性を保護するのに役立つことによってVMの攻撃対象領域を低減する。次世代のSEVは、SEV-SNP(Secure Nested Paging:セキュア・ネスト・ページング)と呼ばれる。SEV-SNPは、既存のSEV及びSEV-ESの機能性を基礎として、ハードウェアベースの新しいセキュリティ保護を追加している。SEV-SNP(SNPとも呼ばれる)は、物理メモリページの所有権をVMに割り当てることによって強力なメモリ整合性保護を追加する。ページを所有するVMのみが、ページを変更してもよい。SEV-SNPは、分離された実行環境を生成するために、データリプレイ、メモリリマッピング、及び、他にもいろいろな悪意のあるハイパーバイザベースの攻撃を防止するのに役立つ。また、SEV-SNPは、追加のVM使用モデルをサポートし、割り込み挙動を中心により強力な保護を提供し、最近開示されたサイドチャネル攻撃に対する保護の強化を提供するように設計されたいくつかの追加のオプションのセキュリティ強化を導入する。
【0039】
また、ポリシーエンジンが使用する意思決定プロセスは、ハイパーバイザ/オペレーティングシステムのベンダ次第であるが、いくつかの実装では、ポリシーエンジンがページ移行プロセスの一部として実行すべきいくつかのアクションがある。例えば、ポリシーエンジンが移行したいと望むページを識別した時点で、それはCPUホストページを非存在にし、CPUのTLBを無効にすべきである。また、非SNPハイパーバイザがこれを行うことに失敗した場合、非SNPゲスト状態がページ移行中にCPUアクティビティによって破損する場合がある。SNPハイパーバイザがこれを行うことに失敗した場合、ページ移行は失敗する。また、ポリシーエンジンは、任意のCXLデバイス又は非セキュアなATSデバイスが存在する場合、PCI-Expressの仕様において定義されるように、アドレス変換サービス(address translation service、ATS)からホストページをオフライン化しなければならない。ポリシーエンジン155が、いくつかの実装において、2MB又は1GBのページを移行することを望む場合、データ・ムーバが4KBページより大きいページを処理しない限り、ポリシーエンジンは、データ・ムーバを呼び出す前に、ページスマッシュを実行して、それらを4KBページに変換する。SNP対応システムでは、ソースページ及び移動先ページが適切な状態にあることが予想される。例えば、ハイパーバイザによって所有されるページが移動されている場合、ソースページ及び移動先ページはハイパーバイザの状態にあると予想される。同様に、ゲストOSによって所有されるページが移動されている場合、ソースページはゲスト有効又はゲスト無効の状態にあると予想され、移動先ページは移行前の状態にあると予想される。次いで、ポリシーエンジンは、適切な移動コマンド(例えば、メールボックスメッセージ)をデータ・ムーバ126に送信する。
【0040】
ある特定のIOMMUページテーブル要件がハイパーバイザ又はOSに提起される。例えば、いくつかの実装では、ハイパーバイザ又はOSは、任意のゲスト物理アドレス(GPA)からシステム物理アドレス(sPA)へのマッピングのための単一のIOMMUホスト・ページ・テーブルのみを有する。メモリの種々のセクションをマッピングする複数のホスト・ページ・テーブルがあり得る。例えば、各仮想マシンは、自身のIOMMUホスト・ページ・テーブルを有してもよい。
【0041】
ハードウェア・データ・ムーバ126は、現在のページ変換をブロックすると共に無効にし、ソースページから移動先ページにデータをコピーし、データ移動が完了した時点で新しいIOMMUページ変換をセットアップするための様々な機能を実行する。SNP対応システムでは、データ・ムーバは、SNPセキュリティ保証を実施し、SNP逆マップテーブル(Reverse Map Table、RMP)を適切に更新する。いくつかの実装では、データ・ムーバは、セキュリティプロセッサ(SP)アプリケーション・プログラミング・インターフェース(API)等のデータ・ムーバAPI160を採用し、このAPIはポリシーエンジン155によって呼び出されて、SP及びハードウェア(例えば、DMAエンジン135)によって、その制御の下で特定のページが移動されることを要求する。このAPIは、将来のプロセッサ設計の柔軟性を可能にするページ移行をサポートする複数のプロセッサ世代にわたって一貫したままであることが企図される。
【0042】
上述したように、プロファイラ156は、より低速なメモリ階層からより高速な階層型メモリに移行することをハイパーバイザ又はオペレーティングシステムが選択する可能性がある、頻繁にアクセスされるページを識別する。ハイパーバイザ又はオペレーティングシステム内のポリシーエンジンは、人気ランキング情報、及び、考慮する必要がある任意の他の要因の分析に基づいて、何れのページを移行するかを実際に決定する。データ・ムーバは、ポリシーエンジンのコマンドを実行して、ページをそれらの現在のアドレスから新しいアドレスに移行させる。上記のシステムは、ゲストOSがより低速なメモリ階層にI/Oバッファを割り当てた仮想化システムをサポートする。これらのI/Oバッファは、ゲスト内に固定されたページであってもよい。ハイパーバイザは、ゲストOSがこれらのより低速なメモリ階層のページに頻繁にアクセスしていることを検出すると共により高い性能のメモリのページへのそれらの再配置を決定し、他方で、ゲストOSが如何なる変更にも気づかないままでいることが、開示されたページ移行システムにより可能になる。セキュア・ネスト・ページング(Secure Nested Paging、SNP)及びセキュアな暗号化仮想化(Secure Encrypted Virtualization、SEV)の機能を使用する仮想化システムにおいても、ページ移行が可能である。
【0043】
ハードウェア・データ・ムーバは、従来のシステムとは異なり、複数のゲストOSのために64個の4KBページのグループ等のページのバッチを移動するようにプログラム可能であり、各ゲストは、セキュリティプロセッサによって管理されているように、ある特定のゲストのためだけにページを暗号化及び復号化するためのそれ自身のセキュリティ鍵を有する。例えば、セキュリティプロセッサは、ページを移動させるために用いる適切なゲスト暗号化/復号化の鍵をデータ・ムーバに伝える。これは、そのページの適切なコンテンツを、それらのコンテンツ又は鍵をハイパーバイザに公開することなく新しい位置に移動させる。
【0044】
図3は、いくつかの実装において、システム設計に応じてページ移行ポリシーエンジン155によって発行されるページ移動コマンドの例を示す。いくつかの実装におけるPAGE_MOVE_IOコマンド300は、I/OのDMAを有するもののSNP/SEV能力を有しないゲストを有する非SNPハイパーバイザのために使用される。コマンド300は、非SNPハイパーバイザ又はベアメタルOS(ホストがメモリを所有する)のために所望され、ページ移行ポリシーエンジン155は、階層型メモリシステムを管理するためにコマンドを使用してもよい。
【0045】
PAGE_MOVE_IOコマンド300は、非SNPシステム内の1つ以上のページのコンテンツを、暗号化されていないか又は暗号化されているかの何れかのメモリにハイパーバイザが所有する鍵を使用して移動させる。このコマンドは、システム物理アドレス空間内で1つ以上のページの移動を可能にし、他方で、そのページは、固定されたメモリへのDMAを生成するデバイスを含むDMAデバイスによって活発に使用され得る。それは、新しいページ位置を指示するようにIOMMUホストPTEを直接的に更新する。IOMMUホスト・ページ・テーブルは、デバイスDMAをマッピングするために使用される。一例では、ページ移動コマンド300は、ページ移動リストの物理アドレス、移動すべきページ移行リストのエントリの数、及び、物理アドレスのステータスを表すコマンドデータを含む。ページ移行リスト内に含まれるソースページは、ハイパーバイザ又は種々のゲストに属してもよい。
【0046】
ページ移行リストのエントリ310の例は、移動されるページのIOMMUゲスト物理アドレス(guest physical address、GPA)と、参照されたIOMMUホスト・ページ・テーブル・エントリ(page table entry、PTE)のIOMMU識別子の下位ビットと、ソースページへのポインタと、ソースページアドレスと、IOMMU識別子の上位ビットと、移動先ページアドレスと、を含むように示されている。
【0047】
SNP_PAGE_MOVE_IOコマンド302は、SNPセキュリティ保証を維持しながら、SNPを有効にしたシステムにおけるシステム物理アドレス空間内で1つ以上のハイパーバイザページのコンテンツを移動させる。このコマンドは、適切なセキュリティ状態にない如何なるページ(ソースページ及び移動先ページの両方)も移行させない。それらが移行にとって適切な状態にある場合、コピーは、正しい暗号化/復号化の鍵を用いてデータ・ムーバによって行われるが、ページコンテンツ又は鍵の値を公開することがない。そのページを、ハイパーバイザと様々なゲストOSとの間で共有してもよい。メモリは、暗号化されていないか又はハイパーバイザの鍵を使用して暗号化されているかの何れでもよい。コマンド302は、DMAデバイスによって活発に使用され得るページを移動させる。このコマンドは、IOMMUホスト・ページ・テーブル・エントリを直接的に更新して、新しいページ位置を指示する。いくつかの実装では、CPUは、移動されるページへのアクセスが妨げられる。いくつかの他のページ移動コマンドのように、ページ移行リストアドレスは移動コマンドの一部としてOSによって提供されて、ページ移行リストのソース物理アドレスを識別する。ページ移行リストは、移動されるページのリストを、それらのソースアドレス及び移動先アドレスも含めて、含んでいる。
【0048】
ゲストページ移行リストのエントリ304の例は、移動されるページのIOMMUゲスト物理アドレス(guest physical address、GPA)と、参照されたIOMMUホスト・ページ・テーブル・エントリ(page table entry、PTE)のIOMMU識別子の下位ビットと、ソースページへのポインタと、ソースページアドレスと、IOMMU識別子の上位ビットと、移動先ページアドレスと、を含む。
【0049】
SNP_PAGE_MOVE_GUESTコマンド306は、SNPセキュリティ保証に違反することなく、システム物理アドレス空間内で、SNPを認識するSEVゲストに属する1つ以上のページのコンテンツを移動させる。移行プロセス中にそのページへの同時並行のDMAが存在する場合、DMAを中断してもよい。通常は、移動されるページをCPUホスト・ページ・テーブル内で非存在にすることによって、CPUは、それらにアクセスすることが妨げられるべきである。移行が成功した後、移動先ページはそれらの対応するソースページの状態をとり、ソースページは移行前の状態に戻される。コマンド306は、ゲストページ移行リスト物理アドレスと、移動するページ移行リストエントリの数と、物理アドレスのステータスと、を含む。
【0050】
SNP_UPDATE_PAGESコマンド308は、ページのリストをある逆マップテーブル(reverse map table、RMP)の状態から別の状態に変換する。例えば、ハイパーバイザの状態から移行前の状態へ及びその逆である。OSが多数のページの状態を変更したいと望む場合には、RMPUPDATEコマンドの代わりにこの動作を使用してもよい。RMPは、セキュア・ネスト・ページング(Secure Nested Paging、SNP)対応システム内のメモリのページごとの「セキュリティ状態」であり、したがって、セキュリティプロセッサは、RMPに変更がある場合にはいつでも関与する必要がある。いくつかの実装では、単一のSNP_UPDATE_PAGESコマンドによって最大4096ページを移動してもよい。また、ページ移行リストに記載されたページが互いに隣接している必要性はない。
【0051】
いくつかの実装では、ページ更新リストは、メモリの整列された4KB領域内に1から127個のページ更新リストエントリを含む。更新される追加のページが存在する場合、4KB領域の上位32バイトは、リストの次の部分を指示する次ページ更新リストエントリを含む。
【0052】
図4は、上述したようなページ移行を実行する1つ以上のサーバプロセッサ402を採用するクラウドプラットフォーム等のコンピューティングシステム400の一実施形態を示す。概して、コンピューティングシステム400は、1つ以上のクラウドサーバを含むがこれらに限定されないいくつかの異なる種類のデバイスの何れか又はメモリ406を含む他のデバイスとして具現化されており、システム・オン・チップ、集積回路、マルチパッケージデバイス等であってもよい。この例では、コンピューティングシステム400は、バス構造412を通じて互いに通信するいくつかのコンポーネントを含む。コンピューティングシステム400では、各コンポーネントは、バス412を通じて直接的に又は他のコンポーネントのうち1つ以上を介しての何れかで、他のコンポーネントの何れかと通信することができる。コンピューティングシステム400内のコンポーネントは、いくつかの実装では、サーバの筐体、ラップトップ若しくはデスクトップの筐体、又は、携帯電話のケーシング等の単一の物理的エンクロージャ内に含まれ、あるいはいくつかの実装では、ディスプレイは、システム・オン・チップ又は他の構成から離れている。代替の実施形態では、コンピューティングシステム400のコンポーネントのうちいくつかは、コンピューティングシステム400全体が単一の物理的エンクロージャ内に存在しないような周辺デバイス408として具現化される。システムは、階層型メモリ422を含む。
【0053】
いくつかの実装では、コンピューティングシステム400は、ユーザから情報を受信する又はユーザに情報を提供するためのユーザ・インターフェース・デバイスを含む。具体的には、コンピューティングシステム400は、キーボード、マウス、タッチスクリーン又はユーザから情報を受信するための他のデバイス等の入力デバイス402を含む。いくつかの実装では、コンピューティングシステム400は、発光ダイオード(light-emitting diode、LED)ディスプレイ、液晶ディスプレイ又は他の出力デバイス等の物理モニタ411を介してユーザに情報を表示する。しかしながら、そのようなデバイスを採用する必要はない。
【0054】
ある特定の実装では、コンピューティングシステム400は、有線ネットワーク又は無線ネットワークを通じてデータを送信及び受信するためのネットワークアダプタ407を更に含む。また、コンピューティングシステム400は、1つ以上の周辺デバイス408を含む。周辺デバイス408は、大容量記憶デバイス、位置検出デバイス、センサ、入力デバイス、又は、コンピューティングシステム400によって使用される他の種類のデバイスを含んでもよい。
【0055】
処理装置402は、ハイパーバイザ、アプリケーション、ドライバ、API及び他のコードを含むオペレーティングシステム等のメモリシステム406に格納された命令を受信して実行する。一実施形態において、処理装置402は、共通の集積回路基板上に存在する複数の処理コアを含む。メモリシステム406は、ランダムアクセスメモリ(RAM)モジュール、読み出し専用メモリ(random-access memory、ROM)モジュール、ハードディスク、及び、他の非一時的なコンピュータ可読記憶媒体等のように、コンピューティングシステム400によって使用されるメモリデバイスを含む。メモリデバイスのいくつかは、処理装置402のためのメモリとして使用される。
【0056】
コンピューティングシステム400のいくつかの実施形態は、
図4に示されるような実施形態よりもより少ない又はより多いコンポーネントを含んでもよい。例えば、ある特定の実施形態は、如何なるディスプレイ411も入力デバイス402もないままで実施される。他の実施形態は、2つ以上のある特定のコンポーネントを有しており、例えば、コンピューティングシステム400の一実施形態は、複数の処理装置402と、バスと、ネットワークアダプタ407と、メモリシステム406等を有することができる。
【0057】
特徴及び要素が特定の組み合わせで上述明されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。いくつかの実施形態において本明細書に記載される装置は、汎用コンピュータ又はプロセッサによる実施のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施され得る。コンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(random-access memory、RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、磁気媒体(例えば、内蔵ハードディスク及びリムーバブルディスク)、磁気光学媒体、並びに、光学媒体(例えば、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD))が挙げられる。
【0058】
様々な実施形態の上記の詳細な説明では、その一部を形成し、本発明を実施することができる特定の好ましい実施形態を例として示す添付図面を参照した。これらの実施形態は、当業者が本発明を実施することを可能にするために十分に詳細に説明されており、他の実施形態が利用されてもよく、本発明の範囲から逸脱することなく論理的、機械的及び電気的変更が行われてもよいことを理解されたい。当業者が本発明を実施することを可能にするのに必要でない詳細を避けるために、説明は、当業者に知られている特定の情報を省略する場合がある。更に、本開示の教示を組み込む多くの他の様々な実施形態が当業者によって容易に構築され得る。したがって、本発明は、本明細書に記載の特定の形態に限定されることを意図するものではなく、逆に、本発明の範囲内に合理的に含まれ得るそのような代替形態、修正形態及び均等物を包含することを意図するものである。したがって、上述した詳細な説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によってのみ定義される。本明細書に記載される実施形態及び実施例の上記の詳細な説明は、限定ではなく、例示及び説明のためにのみ提示されている。例えば、説明された動作は、任意の適切な順序又は方法で行われる。したがって、本発明は、上記で開示され、本明細書で特許請求される基本的な基礎原理の範囲内に入るあらゆる修正、変形又は等価物を包含することが企図される。
【0059】
上記の詳細な説明及びそこに記載される実施例は、限定のためではなく、例示及び説明のためにのみ提示されている。
【手続補正書】
【提出日】2023-11-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数の階層型メモリ間のページのページ移行を提供する方法であって、
各階層型メモリ領域内で頻繁にアクセスされるメモリページを識別し、メモリページがどのくらい頻繁にアクセスされているかを示すページ人気ランキング情報を生成することと、
前記ページ人気ランキング情報をオペレーティングシステム又はハイパーバイザのうち少なくとも一方に提供することと、
前記ページ人気ランキング情報に基づいて、前記オペレーティングシステム又はハイパーバイザが、ページ移動コマンドをハードウェア・データ・ムーバ
(HDM)に発行することと、
前記オペレーティングシステム又はハイパーバイザからの前記ページ移動コマンドに応じて、前記ハードウェア・データ・ムーバが、メモリページを何れかのメモリ階層から別のメモリ階層に移動させることと、を含む、
方法。
【請求項2】
前記ページ移動コマンドを発行することは、異なるメモリ階層への複数のメモリページのセキュア・ネスト・ページング・バッチ移動を前記ハードウェア・データ・ムーバに提供させる
、又は、ゲスト・オペレーティングシステムが安全に所有する1つ以上のメモリページのセキュア・ネスト・ページング移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを発行することを含む、
請求項1の方法。
【請求項3】
前記ページ移動コマンドを発行することは、非セキュア・ネスト・ページング・システム内のダイレクト・メモリ・アクセス・デバイスによって活発に使用され得る1つ以上のページのコンテンツを、暗号化されていないか、又は、オペレーティングシステム若しくはハイパーバイザが所有する鍵を使用して暗号化されているかの何れかのメモリに前記ハードウェア・データ・ムーバによって移動させるコマンドデータを発行することを含む、
請求項1の方法。
【請求項4】
前記ページ移動コマンドを発行することは、I/Oデバイスページのセキュア・ネスト・ページング移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを発行することを含み、
前記セキュア・ネスト・ページング移動は、ダイレクト・メモリ・アクセス・デバイスによって活発に使用され得るページを移動させる、
請求項1の方法。
【請求項5】
前記オペレーティングシステムと前記ハードウェア・データ・ムーバとの間にアプリケーション・プログラミング・インターフェース(application programming interface、API)を設けることを含み、
前記APIは、前記ページ移動コマンドを前記ハードウェア・データ・ムーバに提供し、返されたページ移行データを前記ハードウェア・データ・ムーバから前記オペレーティングシステムに提供する、
請求項1の方法。
【請求項6】
前記ページ移動コマンドを提供している間に入出力メモリ管理ユニットのアドレスマッピングを遅延させることを含む、
請求項1の方法。
【請求項7】
複数の階層型メモリ間のページのページ移行を提供する装置であって、
格納されたコードを実行するように構成された1つ以上のプロセッサであって、前記コードは、実行されると、各メモリ階層領域内で頻繁にアクセスされるメモリページを識別することと、メモリページがどのくらい頻繁にアクセスされているかを示すページ人気ランキング情報を生成することと、を前記1つ以上のプロセッサに行わせる、1つ以上のプロセッサと、
前記ページ人気ランキング情報に基づいて、ページ移動コマンドをハードウェア・データ・ムーバ
(HDM)に発行するように構成されたオペレーティングシステム又はハイパーバイザと、
前記1つ以上のプロセッサに動作可能に結合され、前記オペレーティングシステム又はハイパーバイザからの前記ページ移動コマンドに応じてメモリページを異なるメモリ階層に移動させるように動作するハードウェア・データ・ムーバと、を備える、
装置。
【請求項8】
前記ページ移動コマンドは、異なるメモリ階層への複数のメモリページのセキュア・ネスト・ページング・バッチ移動を前記ハードウェア・データ・ムーバに提供させる
、又は、ゲスト・オペレーティングシステムが安全に所有する1つ以上のメモリページのセキュア・ネスト・ページング移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを含む、
請求項
7の装置。
【請求項9】
前記ページ移動コマンドを発行することは、非セキュア・ネスト・ページング・システム内のダイレクト・メモリ・アクセス・デバイスによって活発に使用され得る1つ以上のページのコンテンツを、暗号化されていないか、又は、オペレーティングシステム若しくはハイパーバイザが所有する鍵を使用して暗号化されているかの何れかのメモリに前記ハードウェア・データ・ムーバによって移動させるコマンドデータを発行することを含む、
請求項
7の装置。
【請求項10】
前記ページ移動コマンドは、I/Oデバイスページのセキュア・ネスト・ページング移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを含み、
前記セキュア・ネスト・ページング移動は、ダイレクト・メモリ・アクセス・デバイスによって活発に使用され得るページを移動させる、
請求項
7の装置。
【請求項11】
前記1つ以上のプロセッサは、格納されたコードを実行し、前記コードは、実行されると、前記オペレーティングシステムと前記ハードウェア・データ・ムーバとの間にアプリケーション・プログラミング・インターフェース(application programming interface、API)を設けることを前記1つ以上のプロセッサに行わせ、
前記APIは、前記移動コマンドを前記ハードウェア・データ・ムーバに提供し、返されたページ移行データを前記ハードウェア・データ・ムーバから前記オペレーティングシステムに提供する、
請求項
7の装置。
【請求項12】
入力/出力メモリ管理ユニットを備え、
前記入力/出力メモリ管理ユニットは、前記ハードウェア・データ・ムーバに動作可能に結合されると共に、前記階層型メモリにアクセスする入力/出力ユニットとインターフェース接続するように動作し、
前記ハードウェア・データ・ムーバは、
セキュリティプロセッサ(security processor、SP)と、
前記セキュリティプロセッサと通信するダイレクト・メモリ・アクセス・エンジン(direct access engine、DMA)と、を備え、
前記セキュリティプロセッサは、前記ページ移動コマンドを処理するように動作し、前記DMAエンジンは、メモリの異なる階層の間で1つ以上のページを移動させるように動作する、
請求項
7の装置。
【請求項13】
マルチ階層型メモリシステムにおいてページ移行を提供する装置であって、
プロセッサを含むハードウェア・データ・ムーバと、
前記プロセッサと通信するダイレクト・メモリ・アクセス(direct memory access、DMA)エンジンと、を備え、
前記プロセッサは、オペレーティングシステムからのページ移動コマンドを処理するように動作し、
前記DMAエンジンは、前記ページ移動コマンドに基づいて、メモリの異なる階層の間で1つ以上のページを移動させるように動作する、
装置。
【請求項14】
前記プロセッサは、異なるメモリ階層への複数のメモリページのセキュア・ネスト・ページング・バッチ移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを処理するように構成されている、
請求項
13の装置。
【請求項15】
前記プロセッサは、ゲスト・オペレーティングシステムが所有する1つ以上のメモリページのセキュア・ネスト・ページング移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを処理するように構成されている、
請求項
13の装置。
【請求項16】
前記プロセッサは、非セキュア・ネスト・ページング・システム内のダイレクト・メモリ・アクセス・デバイスによって活発に使用され得る1つ以上のページのコンテンツを、暗号化されていないか、又は、オペレーティングシステム若しくはハイパーバイザが所有する鍵を使用して暗号化されているかの何れかのメモリに前記ハードウェア・データ・ムーバによって移動させるコマンドデータを処理するように構成されている、
請求項
13の装置。
【請求項17】
前記プロセッサは、
セキュア・ネストされたページのためのページ移動を提供するように構成されたセキュリティプロセッサであって、I/Oデバイスページのセキュア・ネスト・ページング移動を前記ハードウェア・データ・ムーバに提供させるコマンドデータを処理するように構成されており、
前記セキュア・ネスト・ページング移動は、ダイレクト・メモリ・アクセス・デバイスによって活発に使用され得るページを移動させる、
請求項
13の装置。
【国際調査報告】