JP2024512960A - ページ移行を提供するためのシステム及び方法 - Google Patents

ページ移行を提供するためのシステム及び方法 Download PDF

Info

Publication number
JP2024512960A
JP2024512960A JP2023558750A JP2023558750A JP2024512960A JP 2024512960 A JP2024512960 A JP 2024512960A JP 2023558750 A JP2023558750 A JP 2023558750A JP 2023558750 A JP2023558750 A JP 2023558750A JP 2024512960 A JP2024512960 A JP 2024512960A
Authority
JP
Japan
Prior art keywords
page
memory
pages
data mover
hardware data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023558750A
Other languages
English (en)
Inventor
ティー. ホワイト ショーン
ン フィリップ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ATI Technologies ULC
Advanced Micro Devices Inc
Original Assignee
ATI Technologies ULC
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ATI Technologies ULC, Advanced Micro Devices Inc filed Critical ATI Technologies ULC
Publication of JP2024512960A publication Critical patent/JP2024512960A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Figure 2024512960000001
複数の階層型メモリ間のページのページ移行を提供する方法及び装置は、各メモリ階層内で頻繁にアクセスされるメモリページを識別し、メモリページがどのくらい頻繁にアクセスされているかを示すページ人気ランキング情報を生成する。方法及び装置は、オペレーティングシステム又はハイパーバイザ(システムで何れかが使用されているかに応じて)にページ人気ランキング情報を提供し、オペレーティングシステム又はハイパーバイザは、ページ人気ランキング情報に基づいて、ページ移動コマンドをハードウェア・データ・ムーバに発行し、ハードウェア・データ・ムーバは、オペレーティングシステムからのページ移動コマンドに応じてメモリページを異なるメモリ階層に移動する。
【選択図】図1

Description

ダイレクト・メモリ・アクセス(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の数によって駆り立てられる。
階層型メモリシステムは、種々のレイテンシ及び/又は帯域幅の特性を有するメモリの2つ又はそれより多くの領域からなる。例えば、2ソケットシステムは、全てのメモリが従来のDRAMであっても、メモリの「ローカル」階層及び「リモート」階層を有する。業界では、HBM及びDRAM、DRAM及びCXLタイプ3メモリ拡張デバイス、DRAM及びNVDIMM-P等の階層型メモリの新しい組み合わせが開発されている。レイテンシ及び帯域幅の差のいくつかの例には、例えば、DRAMに対してより高いレイテンシ特性及び異なる帯域幅特性を有するCXL接続メモリが含まれてもよい。HBMは、DRAMと類似したレイテンシ特性を有するが、帯域幅が非常に高い場合がある。複数のメモリ階層の間の性能差に起因して、頻繁に使用されるページをより低速なメモリ階層からより高速な階層に移動させ、使用される頻度の低いページをより高速なメモリ階層からより低速な階層に移動させることが望ましい。メモリをプロセスに割り当てる等の管理を容易にするために、メモリを、4KiB、2MiB、1GiB等の様々なサイズのページに分割してもよい。ページ移行を使用することにより、メモリのより高速な階層を最大限に利用することによる性能の向上が得られる。
複数の競合するメモリ技術の急速な開発が進行中であるため、現在のところ、明確な最良の技術又は解決策又はインターフェースが存在しない。ハードウェアのみの解決策が提案されているが、所有権が主張されるものであり、現在の選択肢から最良のメモリ解決策が選択される可能性は低く、未だ選択肢が出てきていない。また、ページ移行のためのハードウェアのみの解決策は、いくつかのワークロードでは良好に機能するが、他のワークロードではうまく機能しない場合があり、挙動に基づいて動作を調整することが困難な場合がある。また、ハイパーバイザと仮想マシンとの間のセキュリティを強化する必要性及び仮想化により、ハードウェアのみの解決策は、セキュリティニーズへの適合では十分に堅牢ではない場合がある。ページ移行を実行する他の解決策は、ハードウェアのみの解決策よりも柔軟な場合があるソフトウェアのみの解決策を使用するが、ソフトウェアで実施されたデータ移動は、ハードウェアで実施されたデータ移動より性能が低くなる。また、例えば、高度なセキュリティ機能によって保護されるゲスト仮想マシンによって使用されているページを、ハイパーバイザによって移行できない場合があるので、既知のシステムが適切なセキュリティを提供しない場合がある。
実施形態は、同様の符号が同様の要素を表す以下の図を伴う場合に、以下の説明を考慮してより容易に理解されるであろう。
本開示に記載の一例による、ページ移行を提供するための装置を示すブロック図である。 本開示に記載の一例による、階層型メモリシステムにおいてページ移行を提供するための方法を示すフロー図である。 本開示に記載の一例による、ページ移動コマンドを示す図である。 本開示に記載の一例による、ページ移行を提供するための装置の一例を示すブロック図である。
以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。別段言及されなければ、「結合される」という単語及びその関連する動詞形は、当技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段言及されなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も意味する。
装置及び方法は、ページ移行動作のために3つのコンポーネントを使用する一種のハイブリッド・ハードウェア/ソフトウェア・アーキテクチャを提供する。いくつかの実装では、ソフトウェア・プロファイリング・ドライバは、採用されると共に例えばCPUにおいて実行され、システムトラフィックのプロファイリングを行って、例えばオペレーティングシステム又はハイパーバイザによるソフトウェアの意思決定を通知する。ハイパーバイザ/オペレーティングシステムは、ハイパーバイザ/OSページ管理に関連する決定を行うためのページ移行ポリシーエンジンとして機能する。ファームウェアを実行するマイクロコントローラ等のハードウェア・データ・ムーバは、ハイパーバイザ/オペレーティングシステムの指示によるページの移行をサポートする。このアーキテクチャにより、種々のメモリ技術及びワークロードに対する広範囲な柔軟性が可能になる。いくつかの実装では、改善されたページ移行動作を可能にするために、ハイパーバイザ/オペレーティングシステムによってハードウェア・データ・ムーバに対して発行される新しいコマンドが開発されている。
いくつかの実装では、サーバプロセッサは、複数のメモリ領域の階層の間、例えば、直接接続DRAM及びより低速な階層型メモリの間のページ移行をサポートする。いくつかの実装では、システムメモリの頻繁にアクセスされるページを、より低速なメモリ階層からより高速なメモリ階層に再配置して性能を向上させることが可能になるように、ページ移行を使用する。DRAM及び他のデバイスの混成がシステムメモリにマッピングされるが、いくつかの例では、メモリマップドIO(memory mapped IO、MMIO)ではない。非DRAM領域は、より長い読み出し/書き込みアクセス時間、及び、より大きいビット密度等のデバイス技術の特性に起因して、典型的にはより高いレイテンシを有し、場合によってはDRAM領域よりも大きい。性能を向上させるために、プロファイラは、現在のところより低速な階層にある頻繁にアクセスされるページを識別し、ハイパーバイザ又はOSは、それらのページをDRAM等のより高速なメモリに移行させると共に、アクセス頻度の低いページをより低速なシステム階層に残しておく。また、ハイパーバイザ又はOSは、必要に応じて、ページをより高速な階層からより低速な階層に移動させる。一例では、より高速な階層内にある頻繁にアクセスされるページは、より低速な階層への移行には選択されない。
いくつかの実装では、複数の階層型メモリ間のページのページ移行を提供するための方法は、各階層型メモリ領域内で頻繁にアクセスされるメモリページを識別し、メモリページがどのくらい頻繁にアクセスされているかを示すページ人気ランキング情報(page hotness ranking information)を生成することと、ページ人気ランキング情報をオペレーティングシステム又はハイパーバイザのうち少なくとも一方に提供することと、ページ人気ランキング情報に基づいて、オペレーティングシステム又はハイパーバイザによってハードウェア・データ・ムーバ(hardware data mover)にページ移動コマンドを発行することと、オペレーティングシステム又はハイパーバイザからのページ移動コマンドに応じて、ハードウェア・データ・ムーバによってメモリページを何れかのメモリ階層から別のメモリ階層に移動させることと、を含む。
ある特定の実装では、本方法は、異なるメモリ階層への複数のメモリページのセキュア・ネスト・ページング・バッチ移動(secure nested paging batch move)をハードウェア・データ・ムーバに提供させるコマンドデータを発行することを含む。
いくつかの実装では、本方法は、ゲスト・オペレーティングシステムによって安全に所有される1つ以上のメモリページのセキュア・ネスト・ページング移動をハードウェア・データ・ムーバに提供させるコマンドデータを発行することを含む。
ある特定の実装では、本方法は、暗号化されていないか、又は、オペレーティングシステム若しくはハイパーバイザが所有する鍵を使用して暗号化されているかの何れかのメモリに、非セキュア・ネスト・ページング・システム内のダイレクト・メモリ・アクセス・デバイスによって活発に使用され得る1つ以上のページのコンテンツを、ハードウェア・データ・ムーバに移動させるコマンドデータを発行することを含む。
いくつかの実装では、本方法は、ダイレクト・メモリ・アクセス・デバイスによって活発に使用され得るページのセキュア・ネスト・ページング移動をハードウェア・データ・ムーバに提供させるコマンドデータを発行することを含む。
ある特定の実装では、本方法は、オペレーティングシステム又はハイパーバイザと、ハードウェア・データ・ムーバと、の間のアプリケーション・プログラミング・インターフェース(application programming interface、API)を提供することを含み、このAPIは、ハードウェア・データ・ムーバに移動コマンドを提供し、ハードウェア・データ・ムーバからオペレーティングシステムに返されたページ移行データを提供する。
いくつかの実装では、本方法は、ページ移動コマンドを提供している間に入出力メモリ管理ユニット内のDMA動作を遅延させることを含む。
いくつかの実装では、複数の階層型メモリ間のページのページ移行を提供するための装置は、格納されたコードを実行するように構成された1つ以上のプロセッサを含み、この格納されたコードは、実行されると、各メモリ階層領域内で頻繁にアクセスされるメモリページを1つ以上のプロセッサに識別させ、メモリページがどのくらい頻繁にアクセスされているかを示すページ人気ランキング情報を生成させる。装置は、ページ人気ランキング情報に基づいて、ハードウェア・データ・ムーバにページ移動コマンドを発行するように構成されたオペレーティングシステム又はハイパーバイザを含む。装置は、オペレーティングシステムからのページ移動コマンドに応じて異なるメモリ階層にメモリページを移動させるハードウェア・データ・ムーバを含む。
図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と通信する。
いくつかの実装では、ハードウェア・データ・ムーバ126は、セキュリティプロセッサ等のプロセッサ130と、いくつかの実装ではファームウェアを実行するマイクロコントローラとして実装されるダイレクト・メモリ・アクセス(direct memory access、DMA)エンジン135と、を含む。同様に、いくつかの実装におけるプロセッサ130も、ファームウェアを実行するプロセッサとして実装される。いくつかの実装では、ハードウェア・データ・ムーバ126は、IOMMUを通じてデータファブリック122と通信し、1つ以上の通信リンク150を介してIOMMUと通信する。他の実装では、データ・ムーバはデータファブリックと直接的に通信する。
いくつかの実装におけるプロセッサ112は、オペレーティングシステム又はハイパーバイザを実行するプロセッサとして機能する。仮想化システムでは、プロセッサ112は、当技術分野で知られているようなゲスト・オペレーティングシステム152を生成する。これらのゲスト・オペレーティングシステムは、仮想マシンとのインターフェース接続を容易にする。仮想化システムでは、ハイパーバイザが使用され、次いで1つ以上のゲスト仮想マシンがハイパーバイザの制御の下で実行される。非仮想化システムは、オペレーティングシステムを実行する。仮想化システムでは、ハイパーバイザがシステム物理メモリマップを所有する。非仮想化システムでは、OSがシステム物理メモリマップを所有する。この例では、オペレーティングシステム又はハイパーバイザは、ページ移行ポリシーエンジン155を含む。また、プロセッサ112は、ドライバ等のページ性能プロファイラ156と、ページプロファイラAPI158と、データ・ムーバAPI160と、を含む。
プロセッサ130は、ページ移動コマンド168及び他のコマンドをプロセッサ112から受信し、移動コマンドの場合には、ページ性能プロファイラ156が、人気のある階層型メモリシステム116内ページをより低速な階層型メモリ118内に識別した場合に、DMAエンジン135を採用して、例えば、より低速なメモリ階層118からより高速なメモリ階層120へのページ移動を行う。いくつかの実装では、ページ性能プロファイラ156は、ページ・テーブル・エントリ(page table entry、PTE)内のアクセス/ダーティビットをスキャンして、頻繁にアクセスされるページを識別する。別の言い方をすれば、より低速な階層型メモリ内でページが頻繁にアクセスされる場合、ページ性能プロファイラ156は、それらのページを識別し、ページプロファイラAPI158を通じてページ移行ポリシーエンジン155にページごとの又はページグループごとのランクを提供することで、ページ移行ポリシーエンジン155は、より低速な階層型メモリからより高速な階層型メモリにページを移動させるかどうかを決定することができる。ページ移行ポリシーエンジン155は、ハードウェア・データ・ムーバ126によって移動される各特定の階層型メモリ内のページのリストであるページ移動リスト165をメモリ内に保持する。
システム100は、IOデバイス114によって活発に読み出され及び/又は書き込まれている移動ページに対応する。いくつかの実装でのCPU112によって活発に読み出され及び/又は書き込まれているページの移動は、従来の方法で処理される。例えば、ページ移行により、ページのアドレスマッピングは、何れかのシステム物理アドレスから別のシステム物理アドレスに変更され、データは「古い」アドレスから「新しい」アドレスにコピーされる。伝統的なハイパーバイザ又はOSソフトウェアは、CPUアドレスマッピングのためのページテーブルを更新する(古いアドレスマッピングを消去し、次いで、ページ移行が完了した時点で、新しいアドレスマッピングをインストールする)。ハードウェア・データ・ムーバは、データをその新しいページにコピーし、IOMMUページテーブル内のアドレスマッピングを更新する。
いくつかの実装では、ページ性能プロファイラ156は、CPU上で実行するドライバであり、他の実装では、ページ性能プロファイラ156は、ハードウェア・データ・ムーバ126内に配置されており、セキュリティプロセッサ130又はDMAエンジン135によって実行されるファームウェアである。他の変形例も考えられる。
いくつかの実装では、ページプロファイラ156は、より低速な階層型メモリ領域内で頻繁にアクセスされるメモリページを識別し、メモリページが将来アクセスされる可能性を示すページ人気ランキング情報166を生成する。オペレーティングシステム又はハイパーバイザ等のページ移行ポリシーエンジン155は、ページ人気ランキング情報166に基づいて、ハードウェア・データ・ムーバ126にページ移動コマンド168を発行する。例えば、人気ランキング情報166により、より低速な階層のメモリ内の特定のページ又はページ一式に対して高い順位が示される場合、そのページは頻繁にアクセスされていることを意味しており、そのページをより高速な階層のメモリに移動させるように移動コマンド168が発行される。ハードウェア・データ・ムーバ(hardware data mover、HDM)126は、オペレーティングシステムからのページ移動コマンドに応じて、より低速な階層型メモリからより高速な階層型メモリにメモリページを移動させる。より高速な階層からより低速な階層へのページ移動も、OS又はハイパーバイザによる指示どおりに、必要に応じてデータ・ムーバによって実行される。
いくつかの実装では、PCIe等の要求エンジン又は他のI/Oデバイスが他のページの読み出し及び書き込みを発行し続けることができるが、移行されているページへのアクセスはIOMMUにおいて停止されるように、ハードウェア・データ・ムーバ126はIOMMU124を一時的に休止させる。例えば、いくつかの実装では、システムは、ブロックされる1つ以上のIOMMUページ・テーブル・エントリを変更することで、IOMMUは、I/Oデバイスからの要求アドレスを書き換えようとする試みを停止する。ハードウェア・データ・ムーバ126は、「古い」アドレスへのアクセスをブロックし、それへの任意のアクセスは、IOMMUにおいて停止される。次いで、データ・ムーバは、「古い」ページから新しいページにデータを移動する。データ移動が完了した時点で、データ・ムーバは、IOMMUページテーブルを更新して、「古い」アドレスの代わりに「新しい」アドレスにマッピングし、IOMMU停止を解除する。その先のIOMMUは、I/Oデバイスからの任意の要求を「新しい」アドレスに送信する。
いくつかの実装では、CPU及びIOMMUの各々によりCPUかIOMMUのページ・アクセス・プロファイリングが可能になるように、個別のページテーブルが保持される。いくつかの実装では、プロファイラ156は、ページ人気情報(例えば、ランク及びメタデータ)を発行することによって頻繁にアクセスされ、メモリのより低速な階層からメモリのより高速な階層への移行が提案される「遅いメモリ」ページのリストを提供する。
ある特定の実装では、図3に関して以下で更に記載するように、複数の種類の移動コマンドが採用される。いくつかの実装では、移動コマンドは、より高速な階層型メモリ内のメモリ領域への複数のメモリページのセキュア・ネスト・ページング・バッチ移動をハードウェア・データ・ムーバに提供させるコマンドデータを含む。いくつかの実装では、移動コマンドSNP_PAGE_MOVE_GUEST CMDは、1つ以上のメモリページのセキュア・ネスト・ページング移動をゲスト・オペレーティングシステムに提供することをハードウェア・データ・ムーバに行わせるコマンドデータを含む。いくつかの実装では、PAGE_MOVE_IOコマンドは、暗号化されていないか、又は、オペレーティングシステム若しくはハイパーバイザが所有する鍵を使用して暗号化されているかの何れかのメモリに、非セキュア・ネスト・ページング・システム内のダイレクト・メモリ・アクセス・デバイスによって活発に使用され得る1つ以上のページのコンテンツをハードウェア・データ・ムーバに移動させるコマンドデータを含む。
ある特定の実装では、SNP_PAGE_MOVE_IOコマンドは、I/Oデバイスページのセキュア・ネスト・ページング移動をハードウェア・データ・ムーバに提供させるコマンドデータを含み、このセキュア・ネスト・ページング移動は、ダイレクト・メモリ・アドレス・デバイスによって活発に使用されるページを移動させる。
プロセッサ112は、格納されたコードを実行し、このコードは実行されるとページ移行ポリシーエンジン155等のオペレーティングシステムと、ハードウェア・データ・ムーバ126と、の間のデータ・ムーバAPI160を提供し、このAPIはハードウェア・データ・ムーバ126に移動コマンドを提供し、ハードウェア・データ・ムーバからオペレーティングシステムに返された、移動が成功裏に行われたことの確認等のページ移行データを提供する。
図2は、階層型メモリを使用するIOデバイスのためのページ移行等のような、多層メモリシステムにおけるページ移行を提供するための方法200の一例を示すフローチャートである。動作を任意の適切な順序で実行してもよく、任意の適切な構造によって実行してもよいことが認識されるであろう。この例では、本方法は、図1のシステムによって実行される。ブロック210に示すように、本方法は、より低速な階層型メモリ領域及びより高速な階層型メモリ等の各メモリ階層において頻繁にアクセスされるメモリページを識別し、メモリページがアクセスされている頻度を示すページ人気ランキング情報166を生成することを含む。いくつかの実装では、これはプロファイラ156によって行われる。ブロック215に示すように、本方法は、ページ人気ランキング情報166をポリシーエンジン155等のオペレーティングシステム又はハイパーバイザに、例えば、プロファイラ156によって提供することを含む。ブロック220に示すように、本方法は、ページ人気ランキング情報166に基づいて、オペレーティングシステムによって、ハードウェア・データ・ムーバ126にページ移動コマンド168を発行することを含む。ブロック225に示されるように、本方法は、オペレーティングシステム又はハイパーバイザからのページ移動コマンド168に応じて、メモリページを異なるメモリ階層へ(例えば、より低速な階層型メモリ118からより高速な階層型メモリ120へ)ハードウェア・データ・ムーバ126によって移動させることを含む。
一例では、プロファイラ156は、より低速な階層型メモリ領域にマッピングされると共に頻繁にアクセスされるメモリページを(そのようなページはより良好なシステム性能のためにより高速なメモリ階層に移行される候補である可能性が高いので)識別しようと試みるプロセッサによって実行されるソフトウェアである。いくつかの実装では、プロファイラはページ人気ランクを提供する。いくつかの実装では、プロファイラは、各ページのプロファイリング統計をページ人気ランクに集約する。すなわち、
人気ランク=f(最新性、頻度、共有、クリーン/ダーティ、メモリ階層)。
人気ランクは、過去においてページがどのくらい頻繁にアクセスされたかを説明する。より高いランクのページは、性能を向上させるために、より高速なメモリ階層に配置される。
いくつかの実装では、各ページについて、プロファイラは、ランクの他に以下の情報、すなわち、監視ハードウェア(例えば、DMA)から直接的に取得されたホスト仮想アドレス及びシステム物理アドレス(HVA及びsPA)と、ページサイズと、そのページが現在のところ属するメモリ階層(より高速なメモリ階層か、より低速なメモリ階層か)と、を提供する。このメモリ階層は、監視ハードウェア(例えば、DMA)から直接的に取得されたもの、又は、メモリマップ(より高速なメモリ階層アドレス領域か、より低速なメモリ階層アドレス領域か)に基づいて生成されるものであり、このメモリマップは、アドバンスト・コンフィグレーション・アンド・パワー・インターフェース(Advanced Configuration and Power Interface、ACPI)の異種メモリ属性テーブル(Heterogeneous Memory Attributes Tables、HMAT)及びシステム・リソース・アフィニティ・テーブル(System Resource Affinity Table、SRAT)から取得される。
これらのページを識別するためにプロファイラが様々な方法を使用できることを認識し得るであろう。種々のシステムでは、それらのワークロード及びハードウェア/ソフトウェア構成にとって最適に機能するものに応じて、それらのプロファイラを異なるように構成することを選択してもよい。また、将来のシステムでは、プロファイラで使用される方法を追加、削除又は変更してもよいが、ポリシーエンジンに送信されるプロファイラ出力は、プロファイラで使用される基礎となる方法にかかわらず、一貫したままであることが意図されている。これにより、ハイパーバイザ及びオペレーティングシステムのベンダは、ポリシーエンジンを変更する必要なく、将来のプロセッサ及びそれらの性能プロファイリング・ドライバと共に機能し続ける、ページ移行のためのポリシーエンジンを生成することが可能になる。
ポリシーエンジン155は、システム物理アドレスマップを所有するトップレベルのハイパーバイザ又はオペレーティングシステムで実行される。それは、性能プロファイリング・ドライバ156又はそれが考慮することを望む任意の他のソースから入力166を取り込み、それがシステムにとって最良であると考える如何なるページ移行決定も行う。任意の適切な決定プロセスが採用されてもよく、ハイパーバイザ又はオペレーティングシステムのベンダに委ねられる。
ハイパーバイザ/オペレーティングシステムのポリシーエンジン155は、物理メモリ全体の管理を担当して、ページ移行を可能にするために必要に応じて物理メモリの割り当て及び予約を行う。ポリシーエンジンは、必要に応じてより低速なメモリ階層からより高速なメモリにページを迅速に移動させることができるように、DRAMページのプールを予約してもよい。これらのメモリ管理の選択は、ハイパーバイザ又はオペレーティングシステムのベンダに委ねられる。
いくつかのシステムは、VMセキュリティを採用する。例えば、アドバンスト・マイクロ・デバイスズ(Advanced Micro Devices、AMD)は、ハイパーバイザから仮想マシン(virtual machine:VM)を分離するように設計された最初のx86技術であるセキュアな暗号化仮想化(Secure Encrypted Virtualization:SEV)を導入した。ハイパーバイザは、伝統的に仮想化セキュリティモデルにおいて信頼されるコンポーネントであったが、多くの市場が、異なるVM信頼モデルから利益を得ることができる。例えばクラウドでは、顧客は、自身のVMベースのワークロードをクラウド管理者から保護して、自身のデータの機密性を維持し、クラウドプロバイダのインフラストラクチャ内のバグへのそれらの暴露を最小限に抑えることを望む場合がある。これは、ハイパーバイザ及び物理サーバ上にたまたま共存する場合がある他のコードからハードウェアレベルでVMを分離したいという要望につながる。
AMDは、SEVにおいてメインメモリ暗号化を使用することによって、この課題に取り組み始めた。この技術では、個々のVMに、それらが使用中のデータを自動的に暗号化するために使用される固有の高度暗号化標準(Advanced Encryption Standard、AES)暗号鍵を割り当てることが可能になった。ハイパーバイザ等のコンポーネントがゲスト内部のメモリを読み取ろうと試みた場合、暗号化されているバイトしか見ることができない。
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使用モデルをサポートし、割り込み挙動を中心により強力な保護を提供し、最近開示されたサイドチャネル攻撃に対する保護の強化を提供するように設計されたいくつかの追加のオプションのセキュリティ強化を導入する。
また、ポリシーエンジンが使用する意思決定プロセスは、ハイパーバイザ/オペレーティングシステムのベンダ次第であるが、いくつかの実装では、ポリシーエンジンがページ移行プロセスの一部として実行すべきいくつかのアクションがある。例えば、ポリシーエンジンが移行したいと望むページを識別した時点で、それはCPUホストページを非存在にし、CPUのTLBを無効にすべきである。また、非SNPハイパーバイザがこれを行うことに失敗した場合、非SNPゲスト状態がページ移行中にCPUアクティビティによって破損する場合がある。SNPハイパーバイザがこれを行うことに失敗した場合、ページ移行は失敗する。また、ポリシーエンジンは、任意のCXLデバイス又は非セキュアなATSデバイスが存在する場合、PCI-Expressの仕様において定義されるように、アドレス変換サービス(address translation service、ATS)からホストページをオフライン化しなければならない。ポリシーエンジン155が、いくつかの実装において、2MB又は1GBのページを移行することを望む場合、データ・ムーバが4KBページより大きいページを処理しない限り、ポリシーエンジンは、データ・ムーバを呼び出す前に、ページスマッシュを実行して、それらを4KBページに変換する。SNP対応システムでは、ソースページ及び移動先ページが適切な状態にあることが予想される。例えば、ハイパーバイザによって所有されるページが移動されている場合、ソースページ及び移動先ページはハイパーバイザの状態にあると予想される。同様に、ゲストOSによって所有されるページが移動されている場合、ソースページはゲスト有効又はゲスト無効の状態にあると予想され、移動先ページは移行前の状態にあると予想される。次いで、ポリシーエンジンは、適切な移動コマンド(例えば、メールボックスメッセージ)をデータ・ムーバ126に送信する。
ある特定のIOMMUページテーブル要件がハイパーバイザ又はOSに提起される。例えば、いくつかの実装では、ハイパーバイザ又はOSは、任意のゲスト物理アドレス(GPA)からシステム物理アドレス(sPA)へのマッピングのための単一のIOMMUホスト・ページ・テーブルのみを有する。メモリの種々のセクションをマッピングする複数のホスト・ページ・テーブルがあり得る。例えば、各仮想マシンは、自身のIOMMUホスト・ページ・テーブルを有してもよい。
ハードウェア・データ・ムーバ126は、現在のページ変換をブロックすると共に無効にし、ソースページから移動先ページにデータをコピーし、データ移動が完了した時点で新しいIOMMUページ変換をセットアップするための様々な機能を実行する。SNP対応システムでは、データ・ムーバは、SNPセキュリティ保証を実施し、SNP逆マップテーブル(Reverse Map Table、RMP)を適切に更新する。いくつかの実装では、データ・ムーバは、セキュリティプロセッサ(SP)アプリケーション・プログラミング・インターフェース(API)等のデータ・ムーバAPI160を採用し、このAPIはポリシーエンジン155によって呼び出されて、SP及びハードウェア(例えば、DMAエンジン135)によって、その制御の下で特定のページが移動されることを要求する。このAPIは、将来のプロセッサ設計の柔軟性を可能にするページ移行をサポートする複数のプロセッサ世代にわたって一貫したままであることが企図される。
上述したように、プロファイラ156は、より低速なメモリ階層からより高速な階層型メモリに移行することをハイパーバイザ又はオペレーティングシステムが選択する可能性がある、頻繁にアクセスされるページを識別する。ハイパーバイザ又はオペレーティングシステム内のポリシーエンジンは、人気ランキング情報、及び、考慮する必要がある任意の他の要因の分析に基づいて、何れのページを移行するかを実際に決定する。データ・ムーバは、ポリシーエンジンのコマンドを実行して、ページをそれらの現在のアドレスから新しいアドレスに移行させる。上記のシステムは、ゲストOSがより低速なメモリ階層にI/Oバッファを割り当てた仮想化システムをサポートする。これらのI/Oバッファは、ゲスト内に固定されたページであってもよい。ハイパーバイザは、ゲストOSがこれらのより低速なメモリ階層のページに頻繁にアクセスしていることを検出すると共により高い性能のメモリのページへのそれらの再配置を決定し、他方で、ゲストOSが如何なる変更にも気づかないままでいることが、開示されたページ移行システムにより可能になる。セキュア・ネスト・ページング(Secure Nested Paging、SNP)及びセキュアな暗号化仮想化(Secure Encrypted Virtualization、SEV)の機能を使用する仮想化システムにおいても、ページ移行が可能である。
ハードウェア・データ・ムーバは、従来のシステムとは異なり、複数のゲストOSのために64個の4KBページのグループ等のページのバッチを移動するようにプログラム可能であり、各ゲストは、セキュリティプロセッサによって管理されているように、ある特定のゲストのためだけにページを暗号化及び復号化するためのそれ自身のセキュリティ鍵を有する。例えば、セキュリティプロセッサは、ページを移動させるために用いる適切なゲスト暗号化/復号化の鍵をデータ・ムーバに伝える。これは、そのページの適切なコンテンツを、それらのコンテンツ又は鍵をハイパーバイザに公開することなく新しい位置に移動させる。
図3は、いくつかの実装において、システム設計に応じてページ移行ポリシーエンジン155によって発行されるページ移動コマンドの例を示す。いくつかの実装におけるPAGE_MOVE_IOコマンド300は、I/OのDMAを有するもののSNP/SEV能力を有しないゲストを有する非SNPハイパーバイザのために使用される。コマンド300は、非SNPハイパーバイザ又はベアメタルOS(ホストがメモリを所有する)のために所望され、ページ移行ポリシーエンジン155は、階層型メモリシステムを管理するためにコマンドを使用してもよい。
PAGE_MOVE_IOコマンド300は、非SNPシステム内の1つ以上のページのコンテンツを、暗号化されていないか又は暗号化されているかの何れかのメモリにハイパーバイザが所有する鍵を使用して移動させる。このコマンドは、システム物理アドレス空間内で1つ以上のページの移動を可能にし、他方で、そのページは、固定されたメモリへのDMAを生成するデバイスを含むDMAデバイスによって活発に使用され得る。それは、新しいページ位置を指示するようにIOMMUホストPTEを直接的に更新する。IOMMUホスト・ページ・テーブルは、デバイスDMAをマッピングするために使用される。一例では、ページ移動コマンド300は、ページ移動リストの物理アドレス、移動すべきページ移行リストのエントリの数、及び、物理アドレスのステータスを表すコマンドデータを含む。ページ移行リスト内に含まれるソースページは、ハイパーバイザ又は種々のゲストに属してもよい。
ページ移行リストのエントリ310の例は、移動されるページのIOMMUゲスト物理アドレス(guest physical address、GPA)と、参照されたIOMMUホスト・ページ・テーブル・エントリ(page table entry、PTE)のIOMMU識別子の下位ビットと、ソースページへのポインタと、ソースページアドレスと、IOMMU識別子の上位ビットと、移動先ページアドレスと、を含むように示されている。
SNP_PAGE_MOVE_IOコマンド302は、SNPセキュリティ保証を維持しながら、SNPを有効にしたシステムにおけるシステム物理アドレス空間内で1つ以上のハイパーバイザページのコンテンツを移動させる。このコマンドは、適切なセキュリティ状態にない如何なるページ(ソースページ及び移動先ページの両方)も移行させない。それらが移行にとって適切な状態にある場合、コピーは、正しい暗号化/復号化の鍵を用いてデータ・ムーバによって行われるが、ページコンテンツ又は鍵の値を公開することがない。そのページを、ハイパーバイザと様々なゲストOSとの間で共有してもよい。メモリは、暗号化されていないか又はハイパーバイザの鍵を使用して暗号化されているかの何れでもよい。コマンド302は、DMAデバイスによって活発に使用され得るページを移動させる。このコマンドは、IOMMUホスト・ページ・テーブル・エントリを直接的に更新して、新しいページ位置を指示する。いくつかの実装では、CPUは、移動されるページへのアクセスが妨げられる。いくつかの他のページ移動コマンドのように、ページ移行リストアドレスは移動コマンドの一部としてOSによって提供されて、ページ移行リストのソース物理アドレスを識別する。ページ移行リストは、移動されるページのリストを、それらのソースアドレス及び移動先アドレスも含めて、含んでいる。
ゲストページ移行リストのエントリ304の例は、移動されるページのIOMMUゲスト物理アドレス(guest physical address、GPA)と、参照されたIOMMUホスト・ページ・テーブル・エントリ(page table entry、PTE)のIOMMU識別子の下位ビットと、ソースページへのポインタと、ソースページアドレスと、IOMMU識別子の上位ビットと、移動先ページアドレスと、を含む。
SNP_PAGE_MOVE_GUESTコマンド306は、SNPセキュリティ保証に違反することなく、システム物理アドレス空間内で、SNPを認識するSEVゲストに属する1つ以上のページのコンテンツを移動させる。移行プロセス中にそのページへの同時並行のDMAが存在する場合、DMAを中断してもよい。通常は、移動されるページをCPUホスト・ページ・テーブル内で非存在にすることによって、CPUは、それらにアクセスすることが妨げられるべきである。移行が成功した後、移動先ページはそれらの対応するソースページの状態をとり、ソースページは移行前の状態に戻される。コマンド306は、ゲストページ移行リスト物理アドレスと、移動するページ移行リストエントリの数と、物理アドレスのステータスと、を含む。
SNP_UPDATE_PAGESコマンド308は、ページのリストをある逆マップテーブル(reverse map table、RMP)の状態から別の状態に変換する。例えば、ハイパーバイザの状態から移行前の状態へ及びその逆である。OSが多数のページの状態を変更したいと望む場合には、RMPUPDATEコマンドの代わりにこの動作を使用してもよい。RMPは、セキュア・ネスト・ページング(Secure Nested Paging、SNP)対応システム内のメモリのページごとの「セキュリティ状態」であり、したがって、セキュリティプロセッサは、RMPに変更がある場合にはいつでも関与する必要がある。いくつかの実装では、単一のSNP_UPDATE_PAGESコマンドによって最大4096ページを移動してもよい。また、ページ移行リストに記載されたページが互いに隣接している必要性はない。
いくつかの実装では、ページ更新リストは、メモリの整列された4KB領域内に1から127個のページ更新リストエントリを含む。更新される追加のページが存在する場合、4KB領域の上位32バイトは、リストの次の部分を指示する次ページ更新リストエントリを含む。
図4は、上述したようなページ移行を実行する1つ以上のサーバプロセッサ402を採用するクラウドプラットフォーム等のコンピューティングシステム400の一実施形態を示す。概して、コンピューティングシステム400は、1つ以上のクラウドサーバを含むがこれらに限定されないいくつかの異なる種類のデバイスの何れか又はメモリ406を含む他のデバイスとして具現化されており、システム・オン・チップ、集積回路、マルチパッケージデバイス等であってもよい。この例では、コンピューティングシステム400は、バス構造412を通じて互いに通信するいくつかのコンポーネントを含む。コンピューティングシステム400では、各コンポーネントは、バス412を通じて直接的に又は他のコンポーネントのうち1つ以上を介しての何れかで、他のコンポーネントの何れかと通信することができる。コンピューティングシステム400内のコンポーネントは、いくつかの実装では、サーバの筐体、ラップトップ若しくはデスクトップの筐体、又は、携帯電話のケーシング等の単一の物理的エンクロージャ内に含まれ、あるいはいくつかの実装では、ディスプレイは、システム・オン・チップ又は他の構成から離れている。代替の実施形態では、コンピューティングシステム400のコンポーネントのうちいくつかは、コンピューティングシステム400全体が単一の物理的エンクロージャ内に存在しないような周辺デバイス408として具現化される。システムは、階層型メモリ422を含む。
いくつかの実装では、コンピューティングシステム400は、ユーザから情報を受信する又はユーザに情報を提供するためのユーザ・インターフェース・デバイスを含む。具体的には、コンピューティングシステム400は、キーボード、マウス、タッチスクリーン又はユーザから情報を受信するための他のデバイス等の入力デバイス402を含む。いくつかの実装では、コンピューティングシステム400は、発光ダイオード(light-emitting diode、LED)ディスプレイ、液晶ディスプレイ又は他の出力デバイス等の物理モニタ411を介してユーザに情報を表示する。しかしながら、そのようなデバイスを採用する必要はない。
ある特定の実装では、コンピューティングシステム400は、有線ネットワーク又は無線ネットワークを通じてデータを送信及び受信するためのネットワークアダプタ407を更に含む。また、コンピューティングシステム400は、1つ以上の周辺デバイス408を含む。周辺デバイス408は、大容量記憶デバイス、位置検出デバイス、センサ、入力デバイス、又は、コンピューティングシステム400によって使用される他の種類のデバイスを含んでもよい。
処理装置402は、ハイパーバイザ、アプリケーション、ドライバ、API及び他のコードを含むオペレーティングシステム等のメモリシステム406に格納された命令を受信して実行する。一実施形態において、処理装置402は、共通の集積回路基板上に存在する複数の処理コアを含む。メモリシステム406は、ランダムアクセスメモリ(RAM)モジュール、読み出し専用メモリ(random-access memory、ROM)モジュール、ハードディスク、及び、他の非一時的なコンピュータ可読記憶媒体等のように、コンピューティングシステム400によって使用されるメモリデバイスを含む。メモリデバイスのいくつかは、処理装置402のためのメモリとして使用される。
コンピューティングシステム400のいくつかの実施形態は、図4に示されるような実施形態よりもより少ない又はより多いコンポーネントを含んでもよい。例えば、ある特定の実施形態は、如何なるディスプレイ411も入力デバイス402もないままで実施される。他の実施形態は、2つ以上のある特定のコンポーネントを有しており、例えば、コンピューティングシステム400の一実施形態は、複数の処理装置402と、バスと、ネットワークアダプタ407と、メモリシステム406等を有することができる。
特徴及び要素が特定の組み合わせで上述明されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。いくつかの実施形態において本明細書に記載される装置は、汎用コンピュータ又はプロセッサによる実施のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施され得る。コンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(random-access memory、RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、磁気媒体(例えば、内蔵ハードディスク及びリムーバブルディスク)、磁気光学媒体、並びに、光学媒体(例えば、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD))が挙げられる。
様々な実施形態の上記の詳細な説明では、その一部を形成し、本発明を実施することができる特定の好ましい実施形態を例として示す添付図面を参照した。これらの実施形態は、当業者が本発明を実施することを可能にするために十分に詳細に説明されており、他の実施形態が利用されてもよく、本発明の範囲から逸脱することなく論理的、機械的及び電気的変更が行われてもよいことを理解されたい。当業者が本発明を実施することを可能にするのに必要でない詳細を避けるために、説明は、当業者に知られている特定の情報を省略する場合がある。更に、本開示の教示を組み込む多くの他の様々な実施形態が当業者によって容易に構築され得る。したがって、本発明は、本明細書に記載の特定の形態に限定されることを意図するものではなく、逆に、本発明の範囲内に合理的に含まれ得るそのような代替形態、修正形態及び均等物を包含することを意図するものである。したがって、上述した詳細な説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によってのみ定義される。本明細書に記載される実施形態及び実施例の上記の詳細な説明は、限定ではなく、例示及び説明のためにのみ提示されている。例えば、説明された動作は、任意の適切な順序又は方法で行われる。したがって、本発明は、上記で開示され、本明細書で特許請求される基本的な基礎原理の範囲内に入るあらゆる修正、変形又は等価物を包含することが企図される。
上記の詳細な説明及びそこに記載される実施例は、限定のためではなく、例示及び説明のためにのみ提示されている。

Claims (20)

  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の装置。
JP2023558750A 2021-03-31 2022-03-24 ページ移行を提供するためのシステム及び方法 Pending JP2024512960A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/219,051 2021-03-31
US17/219,051 US20220318040A1 (en) 2021-03-31 2021-03-31 System and method for providing page migration
PCT/US2022/021818 WO2022212182A1 (en) 2021-03-31 2022-03-24 System and method for providing page migration

Publications (1)

Publication Number Publication Date
JP2024512960A true JP2024512960A (ja) 2024-03-21

Family

ID=81308398

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023558750A Pending JP2024512960A (ja) 2021-03-31 2022-03-24 ページ移行を提供するためのシステム及び方法

Country Status (6)

Country Link
US (1) US20220318040A1 (ja)
EP (1) EP4315083A1 (ja)
JP (1) JP2024512960A (ja)
KR (1) KR20230162982A (ja)
CN (1) CN117120991A (ja)
WO (1) WO2022212182A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117493026B (zh) * 2023-12-29 2024-03-22 苏州元脑智能科技有限公司 一种多主机与多计算快速链接内存设备系统及其应用设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8607013B2 (en) * 2007-10-30 2013-12-10 Vmware, Inc. Providing VMM access to guest virtual memory
KR100987332B1 (ko) * 2008-11-07 2010-10-18 서울대학교산학협력단 메모리 구조에 따른 메모리 관리 장치
US8180981B2 (en) * 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
US8984240B2 (en) * 2012-08-30 2015-03-17 International Business Machines Corporation Reducing page faults in host OS following a live partition mobility event
US8793373B2 (en) * 2012-12-06 2014-07-29 Hitachi, Ltd. Network system and method for operating the same
US9870324B2 (en) * 2015-04-09 2018-01-16 Vmware, Inc. Isolating guest code and data using multiple nested page tables
US10846117B1 (en) * 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10489299B2 (en) * 2016-12-09 2019-11-26 Stormagic Limited Systems and methods for caching data
US10860244B2 (en) * 2017-12-26 2020-12-08 Intel Corporation Method and apparatus for multi-level memory early page demotion
US10817441B2 (en) * 2019-03-29 2020-10-27 Intel Corporation Shared accelerator memory systems and methods
US20220206842A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Methods, apparatus, systems, and instructions to migrate protected virtual machines

Also Published As

Publication number Publication date
KR20230162982A (ko) 2023-11-29
WO2022212182A1 (en) 2022-10-06
US20220318040A1 (en) 2022-10-06
CN117120991A (zh) 2023-11-24
EP4315083A1 (en) 2024-02-07

Similar Documents

Publication Publication Date Title
EP3311268B1 (en) Secure initialisation
JP6913636B2 (ja) 共有ページ
KR102592377B1 (ko) 보호된 예외 핸들링
JP6893479B2 (ja) 所有権テーブルを用いたデータ処理装置及び方法
US10365938B2 (en) Systems and methods for managing data input/output operations in a virtual computing environment
JP6110946B2 (ja) ゲスト仮想マシン内の仮想入出力メモリ管理ユニット
RU2602793C2 (ru) Способ модификации разрешений на доступ к памяти в защищенной процессорной среде
JP5870206B2 (ja) 効率的なメモリ及びリソース管理
JP4665040B2 (ja) 計算機およびアクセス制御方法
JP5541036B2 (ja) メモリアクセス制御プログラム、メモリアクセス制御方法、及び情報処理装置
JP2017045477A (ja) 仮想ディスクストレージ技術
IL255680A (en) Address translation
US20200319913A1 (en) System, apparatus and method for accessing multiple address spaces via a virtualization device
TW201229760A (en) Supporting a secure readable memory region for pre-boot and secure mode operations
US11003588B2 (en) Networked input/output memory management unit
JP2024512960A (ja) ページ移行を提供するためのシステム及び方法
KR20220001016A (ko) 게스트 운영체제에 입출력 메모리 관리 유닛 레지스터 복사본을 제공하는 방법
Zhang et al. PiBooster: A Light-Weight Approach to Performance Improvements in Page Table Management for Paravirtual Virtual-Machines
KR20230162100A (ko) 계층형 메모리 관리를 오프로드하기 위한 방법들 및 장치들
JP5468490B2 (ja) 仮想化環境が実現されているコンピュータにおいてディスク・ドライブにアクセスする方法およびコンピュータ
CN116561824A (zh) 在机密计算架构中管理内存的方法和装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231127