JP5844434B2 - バーチャルマシーンシステムの物理的メモリのバーチャル化 - Google Patents

バーチャルマシーンシステムの物理的メモリのバーチャル化 Download PDF

Info

Publication number
JP5844434B2
JP5844434B2 JP2014145013A JP2014145013A JP5844434B2 JP 5844434 B2 JP5844434 B2 JP 5844434B2 JP 2014145013 A JP2014145013 A JP 2014145013A JP 2014145013 A JP2014145013 A JP 2014145013A JP 5844434 B2 JP5844434 B2 JP 5844434B2
Authority
JP
Japan
Prior art keywords
guest
level
memory
address
processor
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.)
Active
Application number
JP2014145013A
Other languages
English (en)
Other versions
JP2014238850A5 (ja
JP2014238850A (ja
Inventor
ベネット スティーヴン
ベネット スティーヴン
アンダーソン アンドリュー
アンダーソン アンドリュー
ネイガー ギルバート
ネイガー ギルバート
サンカラン ラジェシュ
サンカラン ラジェシュ
アーリグ リチャード
アーリグ リチャード
スミス,サード ラリー
スミス,サード ラリー
ロジャーズ ディオン
ロジャーズ ディオン
Original Assignee
インテル コーポレイション
インテル コーポレイション
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 インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2014238850A publication Critical patent/JP2014238850A/ja
Publication of JP2014238850A5 publication Critical patent/JP2014238850A5/ja
Application granted granted Critical
Publication of JP5844434B2 publication Critical patent/JP5844434B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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
    • 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/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、バーチャルマシーンシステムの物理的メモリのバーチャル化に関する。
バーチャル化は、バーチャル化のためのハードウェア及びソフトウェアサポートを有する単一のホストマシーンによって、当該ホストマシーンの基礎となるハードウェアが独立して動作する1以上のバーチャルマシーンとされるようにホストの複数のアブストラクションの提供を可能にする。このため、各バーチャルマシーンは、自己完結したプラットフォームとして機能し得る。しばしば、複数のゴーストオペレーティングシステム及び/又は他のゲストソフトウェアが、実際に同一のハードウェアプラットフォーム上で物理的に実行されながら、複数のバーチャルマシーン上で明らかに同時にかつ独立に共存及び実行されることを可能にするため、バーチャル化技術が利用される。バーチャルマシーンは、ホストマシーンのハードウェアをまねるようにしてもよいし、あるいは、異なるハードウェアアブストラクションを一緒に与えるようにしてもよい。
バーチャル化システムは、ホストマシーンを制御するバーチャルマシーンモニタ(VMM)を備えるようにしてもよい。VMMは、バーチャルマシーンにおいて動作するゲストソフトウェアにリソース群(プロセッサ、メモリ、IO装置など)を与える。VMMは、物理的ホストマシーンの一部又は全てのコンポーネントをバーチャルマシーンにマップし、VMMにおいてソフトウェア的にエミュレートされ、バーチャルマシーンに含まれる完全なバーチャルコンポーネントを生成するようにしてもよい(バーチャルIO装置など)。従って、VMMは、ゲストソフトウェアとの「バーチャルベアマシーン(virtual bare machine)」インタフェースを提供すると言われる。VMMは、ハードウェアバーチャル化アーキテクチャの機能を利用して、バーチャルマシーンにサービスを提供し、ホストマシーン上で実行される複数のバーチャルマシーンから、及びそれらの間のプロテクションを提供する。
ゲストソフトウェアがバーチャルマシーンにおいて実行されると、ゲストソフトウェアにより実行される特定の命令(周辺装置にアクセスする命令など)は、ゲストソフトウェアがハードウェアプラットフォーム上で直接実行されている場合には、通常はハードウェアに直接アクセスするであろう。VMMによりサポートされるバーチャル化システムでは、これらの命令は、バーチャルマシーンイグジット(virtual machine exit)とここでは呼ばれるVMMへの遷移を生じさせるかもしれない。VMMは、ゲストソフトウェアが実行されているバーチャルマシーンと両立するホストマシーン周辺装置とホストマシーンハードウェアとに適した手法により、上記命令をソフトウェア的に取り扱う。同様に、ホストマシーンにおいて生成される特定の割込みや例外処理が、VMMにより傍受及び管理される必要があるかもしれないし、又は、サービス提供のためのゲストソフトウェアにわたされる前にVMMによりゲストソフトウェアに対して適応される必要があるかもしれない。このとき、VMMは制御をゲストソフトウェアに遷移し、バーチャルマシーンが処理を開始する。VMMからゲストソフトウェアへの遷移は、ここではバーチャルマシーンエントリ(virtual machine entry)と呼ばれる。
周知のように、ほとんどのオペレーティングシステムのマシーン上で実行されるプロセスは、基礎となる物理的メモリシステムのアブストラクションであるバーチャルアドレススペースを利用する。当該技術分野で知られているように、「バーチャルアドレス」、「バーチャルアドレススペース」、「バーチャルメモリアドレス」、「バーチャルメモリスペース」など、メモリ管理に関して使用されるとき、「バーチャル」という用語は、プロセッサベースシステム上で実行されるプロセスへの基礎となる物理的メモリのアブストラクションを与える、一般的にはオペレーティングシステムに関するプロセッサベースシステムの周知技術を表す。例えば、プロセスは、基礎となるオペレーティングシステムにより非リニアであって非連続な物理的メモリにマップされるバーチャルな連続するリニア化されたアドレススペースアブストラクションにアクセスする。この「バーチャル」の使用は、「バーチャル」が「バーチャルマシーン」、「バーチャルベアマシーン」、「バーチャルハードウェア」、「バーチャルプロセッサ」、「バーチャルネットワークインタフェース」などの物理的マシーンをシミュレートするアブストラクションを一般に表すバーチャル化に関して使用される「バーチャル」の使用とは区別することができる。この用語の意図する意味は、使用される場面に基づき当業者には明らかであろう。
図1は、プロセッサとバスを介し当該プロセッサに通信可能に接続されるメモリとを搭載したプロセッサベースシステム上で実行されるプロセスを示す。図1を参照して、プロセス105がそれのバーチャルアドレススペース115内のメモリ位置110(プロセスバーチャルメモリスペース)を参照すると、マシーン125の物理的メモリ145(マシーン物理的メモリ)内の実アドレス140への参照が、ハードウェア(ときにはプロセッサ120に搭載される)及びソフトウェア(一般にはマシーンのオペレーティングシステムにおける)により実現可能なメモリ管理130により生成される。メモリ管理130は、バーチャルアドレススペース内の位置をマシーンの物理的メモリ内の位置にマップする。図1に示されるように、プロセスは、実メモリとは異なる観点のメモリを物理的マシーンにおいて利用可能にする。図1に示される例では、当該プロセスは、メモリ管理ハードウェア及びソフトウェアによって、10〜11MBのアドレススペースを有する物理的メモリの一部に現実にはマップされる0〜1MBのバーチャルアドレススペースにおいて実行される。プロセススペースアドレスから物理的アドレスを計算するため、オフセット135がプロセスバーチャルアドレスに追加されてもよい。より複雑なプロセスバーチャルメモリスペースから物理的メモリへのマッピングも可能である。例えば、プロセスバーチャルメモリに対応する物理的メモリは、ページなどのパーツに分割され、物理的メモリ内の他のプロセスからのページとインタリーブされてもよい。
通常、メモリは各ページが実現形態に応じて可変的な既知のデータ量のデータを含むいくつかのページに分割される。例えば、1ページは4096バイトのメモリを有する。メモリ位置が実行プロセスにより参照されるとき、それらはページ参照に変換される。典型的なマシーンでは、メモリ管理はプロセスバーチャルメモリ内のページへの参照をマシーン物理的メモリ内のページにマップする。一般に、メモリ管理はページテーブルを用いて、プロセススペースページ位置に対応する物理的ページ位置を特定するようにしてもよい。
バーチャルマシーン環境においてゲストソフトウェアを管理する1つの特徴は、メモリの管理である。バーチャルマシーンにおいて実行されるゲストソフトウェアによりなされるメモリ管理アクションを処理することにより、バーチャルマシーンモニタなどの制御システムに対する複雑さが生じる。例えば、「IA−32 Intel Architecture Software Developer‘s Manual」(IA−32ドキュメンテーション)に記載される32ビットIA−32インテル(登録商標)アーキテクチャプラットフォーム(IA−32)上で実現されるホストマシーン上で、2つのバーチャルマシーンがバーチャル化を介し実行されるシステムを検討する。IA−32プラットフォームは、IA−32プロセッサの一部として実現されるIA−32ページテーブルを含むものであってもよい。さらに、各バーチャルマシーン自体は、IA−32マシーンのアブストラクションをそこで実行されているゲストソフトウェアに提供する。各バーチャルマシーン上で実行されるゲストソフトウェアは、ゲストプロセスバーチャルメモリアドレスを参照し、当該アドレスはゲストマシーンのメモリ管理システムによってゲスト物理的メモリアドレスに変換される。しかしながら、ゲスト物理的メモリ自体は、VMMを介したホスト物理的メモリのおけるさらなるマッピングとホストプロセッサ上のハードウェアのバーチャル化サブシステムにより実現されるようにしてもよい。したがってその後、例えば、ゲストIA−32ページテーブルコントロールレジスタへの参照を含むゲストオペレーティングシステム又はゲストプロセスによるゲストメモリへの参照は、VMMにより傍受される可能性がある。なぜならば、ゲスト物理的メモリは実際にはホスト物理的メモリに直接対応するものでなく、ホストマシーンのバーチャル化システムを介しさらにリマップされるとき、上記参照はさらなる再処理を行うことなくホストマシーンのIA−32ページテーブルに直接わたすことはできないためである。
本発明は、上記問題点を解決するバーチャルシステムについてのプロセッサ、方法及びシステムに関する。
上記課題を解決するため、本発明は、バーチャルシステムを有するプロセッサであって、前記バーチャルシステムは、当該プロセッサが動作可能なホストマシーン上で実行可能なバーチャルマシーン上で実行可能なゲストソフトウェアによるゲスト物理的メモリの参照を前記ホストマシーンのホスト物理的メモリの参照にマップする拡張ページングテーブルを有するメモリバーチャル化サポートシステムを有することを特徴とするプロセッサを提供する。
さらに、本発明は、プロセッサベースホストマシーン上で実行可能なバーチャルマシーン上で実行可能なゲストソフトウェアによるゲスト物理的メモリの参照を、前記ホストマシーンの拡張ページングテーブルを用いて前記ホストマシーンのホスト物理的メモリの参照にマップするステップを有することを特徴とする方法を提供する。
本発明によると、バーチャルシステムについてのプロセッサ、方法及びシステムを提供することができる。
図1は、従来技術によるプロセスと物理的メモリとの関係を示す。 図2は、一実施例によるバーチャルマシーンとホストマシーンとの関係を抽象化して示す。 図3は、一実施例によるバーチャルマシーン間の関係を抽象化して示す。 図4aは、バーチャルマシーン環境の一実施例における処理を示す。 図4bは、バーチャルマシーン環境の一実施例における処理を示す。 図5は、一実施例による拡張ページングテーブルを用いたアドレス計算を示す。 図6は、一実施例による階層的拡張ページングテーブルを用いたアドレス計算を示す。 図7は、一実施例による拡張ページングテーブルベースアドレスポインタを示す。 図8は、一実施例による拡張ページングテーブルエントリを示す。
図2は、本発明の一実施例によるゲストメモリのマッピングに関するホストマシーン上で実行される1以上のバーチャルマシーン間の関係を示す。図2は、ホストマシーンのバーチャル化を介したゲスト物理的メモリのリマップ方法を示す。バーチャルマシーンA(242)やバーチャルマシーンB(257)などの各バーチャルマシーンは、当該バーチャルマシーン上で実行されるゲストソフトウェアにそれぞれバーチャルプロセッサ245と255を与える。各マシーンはそれぞれ、物理的メモリのアブストラクションであるゲスト物理的メモリ240と250をゲストオペレーティングシステム又は他のゲストソフトウェアに与える。ゲストソフトウェアがバーチャルマシーン242及び257上で実行されるとき、それはホスト物理的メモリ260を用いるホストプロセッサ265上のホストマシーン267により実際は実行される。
図2に示されるように、本実施例では、バーチャルマシーンA(242)のアドレス0から始まる物理的メモリスペースとして与えられるゲスト物理的メモリ240が、ホスト物理的メモリ260のある連続領域270にマップされる。同様に、バーチャルマシーンB(257)のゲスト物理的メモリ250が、ホスト物理的メモリ260の異なる部分275にマップされる。図2に示されるように、ホストマシーンは、1024MBのホスト物理的メモリを有するようにしてもよい。各バーチャルマシーン242及び257に256MBのメモリが割当てられている場合、1つの可能のマッピングは、バーチャルマシーンA(242)に領域128〜384MBが割り当てられ、バーチャルマシーンB(257)に領域512〜768MBが割り当てられるというものである。バーチャルマシーン242と257は共に、0〜256MBゲスト物理的アドレススペースを参照する。VMMのみが、各バーチャルマシーンのアドレススペースがホスト物理的アドレススペースの異なる部分にマップすることを認識している。
図2に示されるバーチャルマシーンとメモリマッピングは、本発明の一実施例の単なる一表現であり、他の実施例では、ホストマシーン上で実行されるバーチャルマシーンの実際の個数は1以上の可変的な値であってもよく、ホストマシーン及びバーチャルマシーンの実際のメモリサイズもまた、バーチャルマシーンごとに可変とされてもよい。図示された例は、バーチャルマシーンへのメモリのシンプルな連続的割当てを示す。より一般的なケースでは、バーチャルマシーンに割り当てられる物理的メモリページは、連続するものでなくてもよく、互いに、そしてVMMと他のホストプロセスに属するページとインタリーブされるホスト物理的メモリに分散されてもよい。
図2に示されるようなシステムのバーチャルマシーンとして提供されるプロセッサベースシステムは、それのすべての複雑さにおいてバーチャルマシーンを実現するようにしてもよい。従って例えば、バーチャルマシーンは、フルビューのゲスト物理的メモリをゲストOSに提供し、ゲストOS及びバーチャルプロセッサ又は当該バーチャルマシーンの他のバーチャルハードウェアにより提供されるメモリ管理を利用して、バーチャルマシーン上で実行されるゲストソフトウェアに対するメモリ管理を実行する。一実施例では、バーチャルマシーンは、メモリ管理用のページテーブルなどのIA−32ハードウェアサポートを含むIA−32プラットフォームをゲストOSに与え、メモリ管理用のIA−32ハードウェアを含むIA−32プラットフォームであるホストプラットフォーム上で実行される。追加的な機構なしに、本実施例のバーチャル化システムは、物理的メモリをリマップ、パーティション、プロテクトするため1つの可能な手段としてIA−32ページテーブルシャドーイングを利用して、VMMにおいて物理的メモリバーチャル化アルゴリズムを実現する必要がある。従って例えば、ゲストソフトウェアがバーチャルマシーンのIA−32ページテーブルにアクセスしようとするとき、VMMは、バーチャル化に必要な機能(物理的アドレスのリマッピングなど)をゲストOSにより必要とされる機能にオーバーレイする必要がある。
このため、VMMは、ゲストソフトウェアによるページング機構の使用を取り巻く各種イベントをトラップする必要がある。これには、IA−32ドキュメンテーションに記載されるように、IA−32メモリ管理システムの制御レジスタ(CR0、CR3、C4など)などの制御レジスタの書き込み、ページング及びメモリアクセスに係るモデル特化レジスタ(MSR)(メモリタイプ範囲レジスタ(MTRR)など)へのアクセス、特定の例外処理(ページフォルトなど)の取り扱いが含まれる。上記のように物理的メモリをバーチャル化するためIA−32ページテーブルを利用することは、複雑な処理を伴い、かなりのパフォーマンスオーバーヘッドを強いることになる。
図3は、バーチャルマシーン環境300の一実施例を示す。本実施例では、プロセッサベースプラットフォーム316がVMM312を実行する。VMMは、典型的にはソフトウェアにより実現されるが、より高いレベルのソフトウェアにバーチャルベアマシーンインタフェースをエミュレート及びエクスポートするかもしれない。このようなハイレベルなソフトウェアは、標準的なOSやリアルタイムOSから構成されるものであってもよく、限られたオペレーティングシステムの機能を有するストリップダウンされた環境のものであってもよく、一部の実施例では標準的なOSで典型的には利用可能なOS機能を有するものでなくてもよい。あるいは、例えば、VMM312は他のVMM内部で、又はそのサービスを利用して実行されてもよい。VMMは、例えば、ハードウェア、ソフトウェア、ファームウェア、又は一部の実施例においては各種技術の組み合わせにより実現されてもよい。
プラットフォームハードウェア316は、パーソナルコンピュータ(PC)、メインフレーム、携帯情報端末(PDA)や「スマート」携帯電話などの携帯装置、携帯コンピュータ、セットトップボックス又は他のプロセッサベースシステムであってもよい。プラットフォームハードウェア316は、少なくともプロセッサ318とメモリ320とを備える。プロセッサ318は、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラなどのプログラムの実行が可能な任意のタイプのプロセッサであってもよい。プロセッサは、実施例における実行用のハードコードロジック、プログラマブルロジック又はマイクロコードを有するものであってもよい。図3はプロセッサ318のみが示されているが、他の実施例ではシステムに複数のプロセッサが設けられていてもよい。さらに、プロセッサ318は、複数のコア、複数スレッドのサポートなどを有するものであってもよい。メモリ320は、ハードディスク、フロッピー(登録商標)ディスク、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、上記デバイスの任意の組み合わせ、又は各種実施例においてプロセッサ318により読み出し可能な他の任意のタイプのマシーン媒体から構成可能である。メモリ320は、プログラム及び他の方法の実施例を実行するための命令及び/又はデータを格納するものであってもよい。
VMM312は、同一又は異なるアブストラクションを各種ゲストに提供する1以上のバーチャルマシーンのアブストラクションをゲストソフトウェアに提供する。図3は、2つのバーチャルマシーン302と314を示す。各バーチャルマシーン上で実行されるゲストソフトウェア303及び313などのゲストソフトウェアは、ゲストOS304や306などのゲストOSと、各種ゲストソフトウェアアプリケーション308と310を備えるようにしてもよい。ゲストソフトウェア303及び313は、他の機能を実行するためゲストソフトウェア303と313が実行されているバーチャルマシーン内の物理的リソース(プロセッサレジスタ、メモリ、I/O装置など)にアクセスするようにしてもよい。例えば、ゲストソフトウェア303と313は、バーチャルマシーン302と314に与えられるプラットフォーム及びプロセッサのアーキテクチャに従って、すべてのレジスタ、キャッシュ、構造、I/O装置、メモリなどにアクセスすることを期待する。
一実施例では、プロセッサ318は、バーチャルマシーン制御構造(VMCS)324に格納されているデータに従って、バーチャルマシーン302と314の動作を制御する。VMCS324は、ゲストソフトウェア303と313の状態、VMM312の状態、VMM312がゲストソフトウェア303と313の動作のどのように制御することを所望するに関する実行制御情報、VMM312とバーチャルマシーンとの間の遷移を制御する情報などを含む構造である。プロセッサ318は、バーチャルマシーンの実行環境を決定し、それの動作を制限するため、VMCS324から情報を読み出す。一実施例では、VMCS324はメモリ320に格納されている。一部の実施例では、複数のVMCS構造が複数のバーチャルマシーンをサポートするのに利用される。
VMM312は、バーチャルマシーン302と314において実行されるゲストソフトウェアによりアクセス可能な物理的メモリを管理する必要がある。一実施例において、物理的メモリ管理をサポートするため、プロセッサ318は、拡張ページテーブル(EPT)機構を設ける。当該実施例では、VMM312は、バーチャルマシーン302又は314への制御の遷移前に提供されることを要する物理的メモリバーチャル化に係るフィールドの値を与える物理的メモリ管理モジュール326を備えるようにしてもよい。当該フィールドは、まとめてEPT制御と呼ばれる。EPT制御には、例えば、EPT機構がイネーブルとされるべきか指定するEPTイネーブル表示と、物理的メモリバーチャル化機構の形式及びセマティックを示す1以上のEPTテーブル構成制御が含まれるかもしれない。これらについては、以下において詳細に説明される。さらに一実施例では、EPTテーブル328は、VMM312がゲストソフトウェア303と313に設ける物理的アドレス変換及びプロテクションセマティックを示す。
一実施例では、EPT制御はVMCS324に格納される。あるいは、EPT制御は、プロセッサ318、メモリ320とプロセッサ318の組み合わせ、又は他の何れかの格納位置に備えられてもよい。一実施例では、個々のEPT制御が各バーチャルマシーン302と314に維持される。あるいは、同一のEPT制御が、両方のバーチャルマシーンに対して維持され、各バーチャルマシーンエントリ前にVMM312により更新される。
一実施例では、EPTテーブル328はメモリ320に格納される。あるいは、EPTテーブル328は、プロセッサ318、メモリ320とプロセッサ318の組み合わせ、又は他の何れかの格納位置に備えられてもよい。一実施例では、個々のEPTテーブル328が各バーチャルマシーン302と314に維持される。あるいは、同一のEPTテーブル328が、両方のバーチャルマシーンに対して維持され、各バーチャルマシーンエントリ前にVMM312により更新される。
一実施例では、プロセッサ318は、EPTイネーブル表示に基づき、EPT機構がイネーブルにされているか否か判断するEPTアクセスロジック322を有する。EPT機構がイネーブルである場合、プロセッサは、EPT制御及びEPTテーブル328に基づき、ゲスト物理的アドレスをホスト物理的アドレスに変換する。
システム300が複数のプロセッサ又はマルチスレッドプロセッサを有する一実施例では、各論理プロセッサは独立したEPTアクセスロジック322と関連付けされ、VMM312は各論理プロセッサに対してEPTテーブル328とEPT制御を設定する。
ゲストソフトウェア(例えば、ゲストOSとアプリケーション308を含むゲストソフトウェア303など)によりアクセス可能なリソースは、「特権あり(privileged)」又は「特権なし(non−privileged)」として分類することが可能である。特権のあるリソースに対して、VMM312は、当該特権のあるリソースに対する最終的な制御を保持しながら、ゲストソフトウェアにより所望される機能を実現する。さらに、各ゲストソフトウェア303及び313は、例外処理(ページフォルト、一般的なプロテクションフォルトなど)、中断(ハードウェア中断、ソフトウェア中断など)、プラットフォームイベント(初期化(INIT)やシステム管理中断(SMI)など)などの各種プラットフォームイベントを処理することが期待される。上記プラットフォームイベントの一部は、バーチャルマシーン302及び314の適切な動作を確実にし、ゲストソフトウェアからのプロテクトのため、VMM312により処理される必要があるため、「特権あり」とされる。ゲストオペレーティングシステムとゲストアプリケーションの両方が、特権のあるリソースにアクセスしようとしてもよく、共に特権のあるイベントを発生させるかもしれない。特権のあるプラットフォームイベント及び特権のあるリソースへのアクセスの試みは、ここでは「特権のあるイベント」又は「バーチャル化イベント」として呼ばれる。
図4a及び4bに示される処理によって、図3に示されるような実施例におけるバーチャルマシーン環境の動作が示される。図4aは、ゲストソフトウェアに発生した特権付きイベントを処理する一実施例によるVM環境の処理と、ゲストソフトウェアによる特権なしイベントを処理する当該実施例の処理を示す。図4bは、拡張ページングテーブルに関する実施例におけるVM環境の処理、具体的には、ゲスト物理的メモリへのゲストソフトウェアアクセス及びVMMによるハードウェアのEPT機構の管理に関する処理を示す。図4a及び4bは、図3に示されるような環境において発生するすべてのコンポーネント又はすべての処理を示すものではない。これは単なる提示の簡単化のためである。図4a及び4bには少数のコンポーネントと具体的処理が示されているが、他の実施例によるVM環境は、他の多数のコンポーネントを有するかもしれず、他の多数の処理が実行されるかもしれない。
まず、図4aが検討される。図4aは、図3において上述されたプラットフォームハードウェア316と、バーチャルマシーンアブストラクション302上で実行されるゲストソフトウェア303の一例となる処理群を示す。これらの処理は、システム内の何れにおいて(例えば、VMM312やゲストソフトウェア303など)行われるか示すブロックにより示される。上述のVM環境の他のコンポーネントに加えて、VMアブストラクション302は、412においてバーチャルマシーン状態とゲストソフトウェア303の他の状態情報を格納し、バーチャルネットワーク接続や汎用レジスタなどの他のリソースをゲストに提供する。もちろん、VM状態、ゲスト状態及び他のVMリソースを実現する物理的リソースは、実際には、VMが実行するプラットフォームハードウェア316により提供される。プラットフォームハードウェアは、メモリ320、VMCS324及びプロセッサ318を備える。
440において、ゲストソフトウェア303は、特権なしのリソース442にアクセスする。特権なしのリソースは、VMM312により制御される必要はなく、VMM312を呼び出すことなく継続されるゲストソフトウェアにより直接アクセス可能であり、445において、ゲストは特権なしのリソース442へのアクセス後も動作を継続することが可能とされる。特権なしのプラットフォームイベントも同様に、VMM312の介入なしに処理される(これは、図4aには示されていない)。
405において、ゲストソフトウェア303は、特権付きのリソースにアクセスしようとし、特権付きのプラットフォームイベントを受ける。このような特権付きのイベントが405において発生するとき、407において制御はVMM312に移行するようにしてもよい。407におけるゲストソフトウェアからVMM312への制御移行は、バーチャルマシーンイグジットと呼ばれる。リソースアクセスを実現した後、又は特権付きイベントを適切に処理した後、VMM312は、432においてゲストソフトウェアに制御を戻し、その後、ゲストソフトウェアが435において処理を再開する。432におけるVMM312からゲストソフトウェアへの制御の移行は、バーチャルマシーンエントリと呼ばれる。一実施例では、VMM312は、当該移行をトリガーするための命令を実行することによりバーチャルマシーンエントリを開始する。ここでは、当該命令をバーチャルマシーンエントリ命令と呼ぶ。
一実施例では、バーチャルマシーンイグジットが行われると、410において、VMM312により求められるプロセッサ状態のコンポーネントがセーブされ、VMM312により求められるプロセッサ状態のコンポーネントがロードされ、420において、当該実行がVMM312において再開される。一実施例では、ゲストソフトウェアにより用いられるプロセッサ状態のコンポーネントは、VMCS324のゲスト状態エリアに格納され、VMM312により求められるプロセッサ状態のコンポーネントは、VMCS324のモニタ状態エリアに格納される。一実施例では、VMM312からゲストソフトウェアへの移行が行われると、バーチャルマシーンイグジットにおいてセーブされたプロセッサ状態のコンポーネントが、425において復帰され(バーチャルマシーンイグジットの処理中にVMM312により変更されてもよい)、430において、制御がバーチャルマシーン302又は314に戻される。
次に、図4bが検討される。上述のように、図4bは、図4aにおいて上述されたVM環境の処理、特に拡張ページングテーブル、ゲスト物理的メモリへのゲストプログラムアクセス、及びVMMによるハードウェアのEPT機構の管理に関する処理を示す。前述のように、簡単化のため、図4bは、VM環境で行われるすべてのコンポーネント又はすべての処理を示すものではない。図4bには少数のコンポーネント処理が示されているが、他の実施例によるVM環境は他の多数のコンポーネントを有するようにしてもよく、他の多数の処理が実行されてもよい。
図4bに示される実施例によるVM環境のコンポーネントは、ゲストソフトウェア303、VM302、物理的メモリ管理モジュール326を有するVMM312、及びプラットフォームハードウェア又は物理的マシーン316である。プラットフォームハードウェアはさらに、本実施例ではEPTテーブル328とVMCS324を含むメモリ320、及びEPTアクセスロジック322を有するプロセッサ318から構成される。一般には、プラットフォームハードウェアのEPT機能の使用は、ゲスト物理的メモリへのアクセスが、例えば、ゲストソフトウェア303によりなされると、図4に示されるように450においてゲストソフトウェアにより開始される。ゲスト物理的メモリアクセスは、VM302により与えられるメモリ451のVMアブストラクションに参照され、その後に物理的マシーン316に参照される。EPT機構がイネーブルである場合、プラットフォームハードウェア316は、EPTアクセスロジック322及びEPTテーブル328を用いて、ゲスト物理的メモリへのアクセスをホスト物理的メモリ320へのアクセスに変換するため、ゲスト物理的メモリへのVM参照を処理する。EPT処理の詳細が、図5及び6を参照して後述される。
EPT機構自体は、VMCS324に格納されるEPT制御及びEPTテーブル328を構成するVMM312により構成される。本実施例では、EPT機構の構成は、VMM312における特権付きイベント405の処理の後であってVMエントリ430の前に、物理的メモリ管理モジュール326の処理の一部としてVMM312により実行されてもよい。EPT機構の構成では、VMM312は、EPT機構460をイネーブル、非イネーブル又は制御するため、EPTテーブル328及びEPT制御を更新する。
もちろん、他の多数の処理形態が、図3を参照して上述されたようなEPT制御及びEPTテーブル328のための異なる位置、複数のVM、複数のプロセッサ、複数のスレッド、複数のゲスト及びこれらの組み合わせなどのVM環境に関する拡張ページングテーブルの使用に対して可能である。
図5は、上述の拡張ページテーブルを用いて、バーチャルマシーンのゲストソフトウェアがゲストバーチャルアドレスを参照するとき、ホスト物理的アドレスを最終的に計算する処理の一例を示す。図示された例は、シンプルな32ビットバーチャルアドレッシング及びシンプルなページテーブルフォーマットを用いたIA−32プラットフォームにおいて実行されるゲストソフトウェアを示す。当業者はこの具体例を、例えば、他の命令セットアーキテクチャ(インテルコーポレイションから入手可能な「Intel Itanium Architecture Software Developer’s Manual」に規定されるようなインテルItanium(登録商標)アーキテクチャなど)や他のページングモード(例えば、ゲストソフトウェアの64ビットアドレッシングなど)などを理解するため、上記具体例を容易に拡張することができるであろう。
図5において、ゲストバーチャルアドレス510の参照は、バーチャルマシーンにおいて実行されるゲストソフトウェアにより実行される。ゲストにおいてアクティブなメモリ管理機構は(すなわち、ゲストオペレーティングシステムにより設定される)、バーチャルアドレスをゲスト物理的アドレスに変換するのに利用される。変換に用いられる各ゲスト物理的アドレスと、結果として得られるゲスト物理的アドレスは、ホスト物理的メモリへのアクセス前にEPTを介しホスト物理的アドレスに変換される。このプロセスが以下において詳細に説明される。
本具体例では、CR3レジスタ520の適切なビット502が、ゲスト物理的メモリのゲストのページディレクトリテーブル560のベースを指示する。この値502は、ゲストのPDテーブル560のページディレクトリエントリ(PDE)のゲスト物理的アドレス512を構成するため、ゲストバーチャルアドレス510からの上位ビットと合成される(本例では、テーブルのエントリはそれぞれ4バイトであるため、4倍することによりIA−32セマティックに従い適切に調整される)。この値512は、ページディレクトリエントリのホスト物理的アドレス504を構成するため、EPTテーブル555を介し変換される。プロセッサは、当該ホスト物理的アドレス504を用いてページディレクトリエントリにアクセスする。
PDEからの情報は、ゲストのページテーブル570のベースアドレス522を含む。このゲスト物理的アドレス522は、ゲストのページテーブル570へのページテーブルエントリのゲスト物理的アドレス532を構成するため、適切に調整されたゲストバーチャルアドレス510のビット21:12と合成される。このゲスト物理的アドレス532は、ゲストのページテーブルエントリ(PTE)のホスト物理的アドレス532を構成するため、EPTテーブル565を介し変換される。プロセッサは、このホスト物理的アドレス514を用いてPTEにアクセスする。
PTEからの情報は、アクセスされるゲスト物理的メモリ内のページのベースアドレス542を含む。この値は、アクセスされるメモリのゲスト物理的アドレス552を構成するため、ゲストバーチャルアドレス510の下位オーダービット(11:0)と合成される。この値552は、アクセスされるメモリのホスト物理的アドレス524を構成するため、EPTテーブル575を介し変換される。
EPTテーブルがゲスト物理的アドレスをホスト物理的アドレスに変換するのに利用されるたびに、プロセッサは、後述されるように、当該アクセスがEPTテーブルの制御に従って許可されていることを確認する。さらに、図5においては個別に示されているが、EPTテーブル555、565及び575は、一実施例では同一のEPTテーブル群であってもよいということは理解される必要がある(すなわち、ゲスト物理からホスト物理へのすべてのアドレス変換に対して、単一のEPTテーブル群が使用される)。
図6は、マルチレベルEPTテーブルを用いたゲスト物理的アドレスをホスト物理的アドレスに最終的に変換する上述の拡張ページテーブルを用いた処理の他の例を示す。図6に示される実施例では、EPTベースポインタ(EPTP)620の適切なビット602が、本実施例ではホスト物理的メモリに格納される第1レベルEPTテーブル650のベースのホスト物理的アドレスを示す。EPTPについては、図7を参照することにより詳細に説明される。本例では、EPTテーブルの各エントリは8バイトである。ゲスト物理的アドレス610からのビット38:30(601)は、上位ゲスト物理的アドレス603を取得するため、8倍することにより適切に調整される(例えば、3ビットだけ値を左にシフトさせることにより)。EPTテーブルベースアドレス値602が当該調整された上位ゲスト物理的アドレスビット603と合成(加算)され、第1レベルEPTテーブル650のEPTテーブルエントリ651のホスト物理的アドレス604が構成される。第1レベルEPTテーブル650の651などのエントリと他のEPTテーブル660や670のエントリの一例となるフォーマットが、図8を参照して後述される。
EPTテーブルエントリ651の一部は、次レベルEPTテーブル660のベースアドレス612となる。第2の調整されたアドレスコンポーネント613は、ゲスト物理的アドレス610のビット29:21(611)から構成される。この調整された値613は、次レベルEPTテーブル660のEPTテーブルエントリ661のホスト物理的アドレス614を構成するため、ベースアドレス612と合成(加算)される。プロセッサは、当該ホスト物理的アドレス614を用いてEPTテーブルエントリ661にアクセスする。
EPTテーブルエントリ661からの情報は、最終的なEPTテーブル670のベースアドレス622を含む。このベースアドレス622は、最終的なEPTテーブル670のEPTテーブルエントリ671のアドレス624を構成するため適切に調整された後、ゲストバーチャルアドレス610の調整されたビット20:12(623)と合成される。プロセッサは、このホスト物理的アドレス624を用いてEPTテーブルエントリにアクセスする。
EPTテーブルエントリ671からの情報は、ホスト物理的メモリ690においてアクセスされるページのベースアドレスを含む。このページアドレス値690は、アクセスされるメモリの最終的なホスト物理的アドレス634を構成するため、ゲスト物理的アドレス610の下位オーダービット(11:0)と合成される。
図6に示される実施例では、EPTテーブルは階層的なものである。それらは、従来のマルチレベルページテーブルと同様の構成とされている。さらに他の実施例では当業者には理解されるようにテーブルにアクセスする機構の応じて異なるサイズとされてもよいが、本例では、各EPTテーブルの各EPTテーブルエントリは8バイトとされる。本例では、各EPTテーブルは4KBとされる。他の実施例では、異なるテーブルサイズが利用されてもよい。さらに、図6に示される階層によるすべてのテーブルが同一サイズを有する必要はない。このサイズ変更は、EPTテーブルの次のレベルをインデックス付けするためゲスト物理的アドレスから利用されるビット数に影響を与えるかもしれない。他の多数のEPTテーブル設定が可能であるということは、当業者には明らかであろう。
図に示される階層的構成は3つのレベルの階層を示し、EPTテーブル650と660の2つがそれぞれ下位レベルEPTテーブル660と670に対するインデックスとして用いられる。他の実施例では、このような階層的テーブルにおいて、2レベル以下、又は4レベル以上の階層とされるかもしれない。一般に、階層のレベル数は、ゲスト物理的アドレスのレベル数、各テーブルのサイズ及び各テーブルエントリのバイト数の少なくとも1以上に応じて変更されてもよい。図6の具体例のゲスト物理的アドレスは、32ビットである。他の実施例では、ゲスト物理的アドレスは異なるサイズであってもよく、当該サイズ変更は、変換を実行するのに必要とされるEPTテーブルのレベル数の変更を必要とするかもしれない。例えば、ゲスト物理的アドレスが48ビットである場合、4レベルEPTテーブルが変換を実行するのに必要とされる(各レベルにおいて4KBのEPTテーブルと各EPTテーブルの8バイトEPTテーブルエントリを仮定する)。
図6に示される実施例では、EPT制御は単一のフィールドであるEPTポインタ(EPTP)を含む。当該フィールドは、第1レベルEPTテーブルのベースアドレスを含む。本例では、各EPTテーブルは4KBである。
図7に示される実施例において、EPTベースアドレスポインタ(EPTP)は、図6において上述されたような第1レベルEPTテーブルのベースのベースアドレス(ホスト物理的メモリにおける)を構成するのに用いられるビットを含む。図7に示される例では、ビット59:12によりベースアドレスは構成される。ビット11:0と63:60は、「0」と仮定される。もちろん、各ビットフィールドの幅は実施例に応じて可変とされてもよく、例えば、ベースアドレスフィールドは、特定のアーキテクチャ又は実現形態におけるアドレスビットのビット数に応じて可変とされる。EPTPレジスタの残りのビットは、他の実施例では他の目的のため利用されるかもしれない。一実施例では、EPTPレジスタは、バーチャルマシーンエントリ又はバーチャルマシーンイグジットを介してのみアクセス可能である。このような実施例では、プロセッサのEPTPレジスタが、バーチャルマシーンエントリの時点におけるVMCSのEPTPフィールドからロードされ、ゲストソフトウェアの動作中はEPT機構がアクティブ状態とされる。上述のように、当該アクティブ化(及びEPTPフィールドのロード処理)は、VMCS内又は何れかにおける他の制御ビットにより制御されるようにしてもよい。
図8は、EPTテーブルのエントリのフォーマットの実施例を示す。本例では、EPTテーブルの各エントリは8バイトである。一実施例では、各EPTテーブルは4KBであり、このことは、EPTテーブルページごとにEPTテーブルエントリが512あることを意味するものである。図8の実施例に示されるように、各EPTテーブルエントリは、メモリの次レベルEPTテーブル又はページのベースホスト物理的アドレス(ADDR)、パーミッション及び他の設定情報を含む。上述のように、各ビットフィールドの幅は実施例に応じて変更されてもよく、例えば、ADDRの幅は、特定のアーキテクチャ又は実現形態のアドレスビットのビット数に応じて変更されてもよい。図8は、「Present」と「Writable」の2つのパーミッションビットしか示していない。他の実施例では、他のパーミッション及び設定情報が、各EPTテーブルエントリに与えられてもよい。例えば一実施例では、メモリのあるページが実行可能な場合(すなわち、当該ページの内容が取り出され、プロセッサによる命令として解釈される場合)、パーミッションビットが設定される。
EPTテーブルは、各種フォーマットを有するようにしてもよい。例えば、それらは、シンプルな階層的テーブルとして図6に示されるように実現されてもよい。あるいは、それらは、シングルレベルページテーブルであってもよい(この場合、第1レベルEPTテーブルのサイズは、ゲスト物理的アドレススペースの最大サイズを規定する)。あるいは、それらは、あるフォーマットではハッシュテーブルであってもよい。多数の可能な構成が実施例に応じて可能であるということは、当業者には明らかであろう。
EPTテーブルは、ホスト物理的メモリにおいて1以上のページサイズをサポートしてもよい。一実施例では、各EPTテーブルの各エントリは、EPTテーブルのウォーク(walk)が当該ポイントで停止すべきことを示すスーパーページビットと、EPTテーブルエントリのアドレス情報を用いて構成されたホスト物理的アドレスと、ゲスト物理的アドレスの残りのビットとを含む。図6に示される例では、例えば、スーパーページビットがEPTテーブル660において設定されている場合、ホスト物理的メモリの結果となるページは2MBとなり、結果となるホスト物理的アドレスは、ゲスト物理的アドレス610のビット20:0とEPTテーブル660からのアドレスビットとを合成することにより構成されるであろう。
一部の実施例では、拡張ページングテーブルとEPTアドレス変換機構が、バーチャルマシーンエントリによりイネーブルとされ、バーチャルマシーンイグジットによりイネーブル解除されてもよい。この結果、EPT機構は、自らのアドレス変換を管理するため、ゲストソフトウェア又はVMMソフトウェアの何れかによる使用に対して利用可能とならないかもしれない。さらにそのような実施例では、EPT機構は、EPT処理が従来のページ管理機構の特徴を利用してもよいが、IA−32の実施例におけるIA−32ページングテーブルなどのように、ゲスト又はホストソフトウェアに利用可能な他の従来のメモリページ管理機構とは異なるものであって、独立なものとされてもよい。このため、EPTテーブルの構成及び処理は、ホストマシーンのEPT機構及びバーチャル化を用いるゲストソフトウェアの実行とは対照的に、従来のホストマシーン上での直接的なプログラム及び処理の実行のため、プロセッサにより与えられる他のページ変換機能と完全に区別されてもよい。一実施例では、EPT機構は、ゲスト及びVMMソフトウェアに利用可能であって、本実施例の従来のページ管理機構により利用されているものと同様のフォーマットによるテーブルを利用するようにしてもよい。しかしながら、EPT機構を制御するテーブルは、依然としてゲストバーチャルアドレスからゲスト物理的アドレスへの変換の制御、又は、ホストバーチャルアドレスからホスト物理的アドレスへの変換の制御とは区別されてもよい。
与えられる実施例は実行ユニット及びロジック回路に関するバーチャルマシーンシステムの物理的メモリバーチャル化のサポートについて説明しているが、他の実施例では、ソフトウェアにより実現することも可能である。一部の実施例は、マシーンによるアクセス時に当該実施例のプロセスを実行する命令を格納したマシーン読み出し可能な媒体又はマシーンを構成するようなソフトウェアプログラムプロダクト又はソフトウェアとして提供されてもよい。他の実施例では、プロセスを実行するためのロジックを含む特定用途向けハードウェアコンポーネント、プログラムされたコンポーネントやカスタムハードウェアコンポーネントの任意の組み合わせによって、プロセスが実行されるかもしれない。
上記説明では、説明された実施例の完全なる理解を提供するため、多数の具体的詳細が与えられている。しかしながら、当業者は、他の多数の実施例がこのような具体的詳細なしに実現可能であるということを理解するであろう。
上記詳細な説明の一部は、プロセッサベースシステム内部のデータビットに対する処理の記号表現及びアルゴリズムに関して与えられる。このようなアルゴリズムによる記述及び表現は、当該技術分野における他の当業者に内容を最も効果的に伝えるのに利用される手段である。当該処理は、物理量の物理的操作を要する。これらの物理量は、電気、磁気、光信号、又は格納、転送、合成、比較及び操作可能な他の物理的信号の形態をとり得る。便宜上、これらの信号は、ビット、値、要素、シンボル、文字、項、番号などと呼ばれるかもしれない。
しかしながら、上記及び同様の用語のすべてが、適切な物理量と関連付けされ、当該物理量に付けられる単なる便宜上のラベルであるということに留意されたい。特段指定されていない場合、又は記載から明らかな場合、「実行」、「処理」、「計算」、「決定」などの用語は、プロセッサベースシステムのストレージ内の物理量として表されるデータを同様に表現された他のデータに変換及び操作するプロセッサベースシステム又は同様の電子計算装置、又は他の情報ストレージ、送信若しくは表示装置のアクション及びプロセスを表すものであるかもしれない。
実施例の説明では、添付された図面が参照されている。図面では、同一の番号は図面を通じて実質的に同様のコンポーネントを表している。他の実施例が利用可能であり、構造的、論理的及び電気的変更がなされるかもしれない。さらに、各種実施例は相互排他的なものである必要はない。例えば、一実施例による特定の機能、構成又は特徴は、他の実施例にも含めることが可能である。
さらに、プロセッサにおいて実現される実施例の構成は、制作からシミュレーション、そして製造までの各段階を経る。構成を表すデータは、いくつかの手法によりこの構成を表現可能である。まず、シミュレーションで有用なように、ハードウェアはハードウェア記述言語又は他の機能記述言語を用いて表現されるかもしれない。さらに、ロジック及び/又はトランジスタゲートを有する回路レベルモデルは、設計プロセスの段階において作成される。さらに、ほとんどの設計は、ハードウェアモデルの各種装置の物理的配置を表すデータレベルに到達する。従来技術による半導体製造技術が用いられる場合、ハードウェアモデルを表すデータは、集積回路を生成するのに利用されるマスクの異なるマスクレイヤ上の各種構成の有無を示すデータであってもよい。何れの設計表現においても、データは任意の形式のマシーン可読媒体に格納されるようにしてもよい。このような情報を送信するため変調又は生成される光波又は電波、メモリ、ディスクなどの磁気又は光ストレージが、マシーン可読媒体であるかもしれない。上記媒体の何れも、設計又はソフトウェア情報を「搬送」又は「示す」ことが可能である。コード又は設計を示す、又は搬送する電気搬送波が送信されると、当該電気信号の複製、バッファリング又は再送が行われる程度まで、新たなコピーが行われる。このため、通信プロバイダ又はネットワークプロバイダは、実施例を表現又は構成する物品(搬送波)を複製することが可能である。
マシーンによるアクセス時に、本発明によるプロセスをマシーンに実行させるデータを格納したマシーン可読媒体を有するプログラムプロダクトとして、実施例が提供されてもよい。このマシーン可読媒体は、以下に限定されるものではないが、フロッピー(登録商標)ディスケット、光ディスク、DVD−ROMディスク、DVD−RAMディスク、DVD−RWディスク、DVD+RWディスク、CD−Rディスク、CD−RWディスク、CD−ROMディスク、光磁気ディスク、ROM、RAM、EPROM、EEPROM、磁気又は光カード、フラッシュメモリ、又は電子命令を格納するのに適した他のタイプのメディアマシーン可読媒体を含むかもしれない。さらに、プログラムプロダクトとして実施例がダウンロードされてもよい。当該プログラムは、通信リンク(モデム、ネットワーク接続など)を介し、搬送波や他の伝搬媒体として実現されるデータ信号によりリモートデータソースから要求元装置に転送されるようにしてもよい。
上記方法の多くは最も基本的形式により記述されるが、本発明の基本的範囲から逸脱することなく、いくつかのステップが上記方法から削除又は追加可能であり、記載されたメッセージの何れかから情報が削除又は追加することも可能である。さらなる多数の変更及び適応が可能であるということは、当業者には明らかであろう。実施例は、本発明を限定するものでなく、例示するために与えられている。本発明の範囲は、与えられた実施例によってではなく、請求項によってのみ決定されるべきものである。
120 プロセッサ
125 マシーン
242、257 バーチャルマシーン
245、255 バーチャルプロセッサ
265 ホストプロセッサ
267 ホストマシーン
300 バーチャルマシーン環境
312 バーチャルマシーンモニタ(VMM)
316 プラットフォームハードウェア
324 バーチャルマシーン制御構成(VMCS)
328 拡張ページテーブル(EPT)テーブル

Claims (17)

  1. 複数の処理コアと、
    前記複数の処理コアに接続され、ゲストバーチャルアドレスを含むメモリアクセスリクエストに応答して、前記ゲストバーチャルアドレスを第1ゲスト物理的アドレスに変換し、前記第1ゲスト物理的アドレスを第1ホスト物理的アドレスに変換するメモリ管理ロジックと、
    を有するプロセッサであって、
    前記メモリ管理ロジックは、
    第1マルチレベル変換テーブルのベースアドレスを格納する第1変換テーブルベースレジスタであって、前記第1マルチレベル変換テーブルは、ゲストバーチャルアドレスからゲスト物理的アドレスへのマッピングを提供する、第1変換テーブルベースレジスタと、
    第2マルチレベル変換テーブルのベースアドレスを格納する第2変換テーブルベースレジスタであって、前記第2マルチレベル変換テーブルは、ゲスト物理的アドレスからホスト物理的アドレスへのマッピングを提供する、第2変換テーブルベースレジスタと、
    前記第1変換テーブルベースレジスタと前記第2変換テーブルベースレジスタとに接続され、前記第1マルチレベル変換テーブルのウォーク中に構成されたゲスト物理的アドレスをホスト物理的アドレスに変換するため、前記第2マルチレベル変換テーブルにアクセスするアドレス変換ロジックと、
    前記第2マルチレベル変換テーブルの利用を有効にし、メモリのページのコンテンツがページテーブルエントリのパーミッションビットフィールドに基づき実行されることを阻止するアクセスロジックであって、前記パーミッションビットフィールドは前記ページのコンテンツが実行可能であるか示す、アクセスロジックと、
    を有するプロセッサ。
  2. 前記第1マルチレベル変換テーブルは、第1レベル及び第2レベルを含む2レベル変換テーブルである、請求項1記載のプロセッサ。
  3. 前記第2マルチレベル変換テーブルは、第1レベル、第2レベル及び第3レベルを含む3レベル変換テーブルである、請求項2記載のプロセッサ。
  4. 当該プロセッサは、ページテーブルエントリに格納される制御情報に基づきメモリアクセスが許可されていることを確認する、請求項1乃至3何れか一項記載のプロセッサ。
  5. 前記制御情報は、対応するメモリ位置が書き込み可能であるか示すパーミッションビットを有する、請求項記載のプロセッサ。
  6. 前記制御情報は、異なるサイズのメモリ領域を参照し、変換テーブルウォークの停止ポイントを示すメモリサイズビットを含む、請求項4又は5記載のプロセッサ。
  7. 前記第2マルチレベル変換テーブルのエントリはそれぞれ、8バイトのサイズである、請求項1乃至6何れか一項記載のプロセッサ。
  8. 前記ゲストバーチャルアドレスは、32ビットバーチャルアドレスである、請求項1乃至7何れか一項記載のプロセッサ。
  9. 当該プロセッサは、ゲストソフトウェアとのバーチャルベアマシーンインタフェースを提供するためのハードウェアサポートを提供し、
    前記ゲストソフトウェアはオペレーティングシステムを含み、前記バーチャルベアマシーンインタフェースは第1バーチャルプロセッサと第2バーチャルプロセッサとを有する、請求項1乃至8何れか一項記載のプロセッサ。
  10. ハードウェアサポートにゲストソフトウェアとのバーチャルベアマシーンインタフェースを提供するためのソフトウェア又はファームウェアを格納するためのメモリであって、前記ゲストソフトウェアはオペレーティングシステムを含み、前記バーチャルベアマシーンインタフェースは第1バーチャルプロセッサと第2バーチャルプロセッサとを有し、前記メモリはROM(Read Only Memory)、RAM(Random Access Memory)及びフラッシュメモリを有する、メモリと、
    前記ハードウェアサポートを提供するプロセッサと、
    を有するシステムであって、
    前記プロセッサは、
    複数の処理コアと、
    前記複数の処理コアに接続され、ゲストバーチャルアドレスを含むメモリアクセスリクエストに応答して、前記ゲストバーチャルアドレスを第1ゲスト物理的アドレスに変換し、前記第1ゲスト物理的アドレスを第1ホスト物理的アドレスに変換するメモリ管理ロジックと、
    を有し、
    前記メモリ管理ロジックは、
    第1マルチレベル変換テーブルのベースアドレスを格納する第1変換テーブルベースレジスタであって、前記第1マルチレベル変換テーブルは、ゲストバーチャルアドレスからゲスト物理的アドレスへのマッピングを提供する、第1変換テーブルベースレジスタと、
    第2マルチレベル変換テーブルのベースアドレスを格納する第2変換テーブルベースレジスタであって、前記第2マルチレベル変換テーブルは、ゲスト物理的アドレスからホスト物理的アドレスへのマッピングを提供する、第2変換テーブルベースレジスタと、
    前記第1変換テーブルベースレジスタと前記第2変換テーブルベースレジスタとに接続され、前記第1マルチレベル変換テーブルのウォーク中に構成されたゲスト物理的アドレスをホスト物理的アドレスに変換するため、前記第2マルチレベル変換テーブルにアクセスするアドレス変換ロジックと、
    前記第2マルチレベル変換テーブルの利用を有効にし、メモリのページのコンテンツがページテーブルエントリのパーミッションビットフィールドに基づき実行されることを阻止するアクセスロジックであって、前記パーミッションビットフィールドは前記ページのコンテンツが実行可能であるか示す、アクセスロジックと、
    を有するシステム。
  11. 前記第1マルチレベル変換テーブルは、第1レベル及び第2レベルを含む2レベル変換テーブルである、請求項10記載のシステム。
  12. 前記第2マルチレベル変換テーブルは、第1レベル、第2レベル及び第3レベルを含む3レベル変換テーブルである、請求項10又は11記載のシステム。
  13. 当該プロセッサは、ページテーブルエントリに格納される制御情報に基づきメモリアクセスが許可されていることを確認する、請求項10乃至12何れか一項記載のシステム。
  14. 前記制御情報は、対応するメモリ位置が書き込み可能であるか示すパーミッションビットを有する、請求項13記載のシステム。
  15. 前記制御情報は、異なるサイズのメモリ領域を参照し、変換テーブルウォークの停止ポイントを示すメモリサイズビットを含む、請求項13又は14記載のシステム。
  16. 前記第2マルチレベル変換テーブルのエントリはそれぞれ、8バイトのサイズである、請求項10乃至15何れか一項記載のシステム。
  17. 前記ゲストバーチャルアドレスは、32ビットバーチャルアドレスである、請求項10乃至16何れか一項記載のシステム。
JP2014145013A 2005-01-14 2014-07-15 バーチャルマシーンシステムの物理的メモリのバーチャル化 Active JP5844434B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/036,736 US7886126B2 (en) 2005-01-14 2005-01-14 Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US11/036,736 2005-01-14

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2010053073A Division JP5611622B2 (ja) 2005-01-14 2010-03-10 バーチャルマシーンシステムの物理的メモリのバーチャル化

Publications (3)

Publication Number Publication Date
JP2014238850A JP2014238850A (ja) 2014-12-18
JP2014238850A5 JP2014238850A5 (ja) 2015-02-26
JP5844434B2 true JP5844434B2 (ja) 2016-01-20

Family

ID=36175192

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2006006606A Pending JP2006196005A (ja) 2005-01-14 2006-01-13 バーチャルマシーンシステムの物理的メモリのバーチャル化
JP2010053073A Active JP5611622B2 (ja) 2005-01-14 2010-03-10 バーチャルマシーンシステムの物理的メモリのバーチャル化
JP2011266502A Active JP5485249B2 (ja) 2005-01-14 2011-12-06 バーチャルマシーンシステムの物理的メモリのバーチャル化
JP2014145013A Active JP5844434B2 (ja) 2005-01-14 2014-07-15 バーチャルマシーンシステムの物理的メモリのバーチャル化

Family Applications Before (3)

Application Number Title Priority Date Filing Date
JP2006006606A Pending JP2006196005A (ja) 2005-01-14 2006-01-13 バーチャルマシーンシステムの物理的メモリのバーチャル化
JP2010053073A Active JP5611622B2 (ja) 2005-01-14 2010-03-10 バーチャルマシーンシステムの物理的メモリのバーチャル化
JP2011266502A Active JP5485249B2 (ja) 2005-01-14 2011-12-06 バーチャルマシーンシステムの物理的メモリのバーチャル化

Country Status (8)

Country Link
US (5) US7886126B2 (ja)
EP (5) EP2988216B1 (ja)
JP (4) JP2006196005A (ja)
KR (1) KR100831488B1 (ja)
CN (2) CN100501680C (ja)
ES (1) ES2907805T3 (ja)
PL (1) PL3572937T3 (ja)
TW (1) TWI308720B (ja)

Families Citing this family (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8706942B2 (en) * 2004-12-29 2014-04-22 Intel Corporation Direct memory access (DMA) address translation between peer-to-peer input/output (I/O) devices
US7886126B2 (en) 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US8214830B2 (en) * 2005-01-19 2012-07-03 Intel Corporation Performance in a virtualization architecture with a processor abstraction layer
US7428626B2 (en) * 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US20060259896A1 (en) * 2005-05-16 2006-11-16 Microsoft Corporation Maintaining reproducibility across multiple software builds
US8387049B2 (en) * 2005-07-15 2013-02-26 International Business Machines Corporation Facilitating processing within computing environments supporting pageable guests
US7926054B2 (en) * 2006-03-03 2011-04-12 Novell, Inc. System, method, and computer-readable medium for virtual machine instantiation from an external peripheral device
US7702843B1 (en) * 2006-04-27 2010-04-20 Vmware, Inc. Determining memory conditions in a virtual machine
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US8949295B2 (en) 2006-09-21 2015-02-03 Vmware, Inc. Cooperative memory resource management via application-level balloon
US7882318B2 (en) 2006-09-29 2011-02-01 Intel Corporation Tamper protection of software agents operating in a vitual technology environment methods and apparatuses
US7802050B2 (en) 2006-09-29 2010-09-21 Intel Corporation Monitoring a target agent execution pattern on a VT-enabled system
US8336046B2 (en) * 2006-12-29 2012-12-18 Intel Corporation Dynamic VM cloning on request from application based on mapping of virtual hardware configuration to the identified physical hardware resources
WO2008086317A2 (en) * 2007-01-05 2008-07-17 Moka5, Inc. Symbiotic smart peripherals
KR100864834B1 (ko) * 2007-04-30 2008-10-23 한국전자통신연구원 메모리 재할당을 이용한 다중 프로세서 간의 데이터 전송장치 및 방법
JP4897578B2 (ja) 2007-06-06 2012-03-14 株式会社日立製作所 仮想計算機の制御プログラムおよび仮想計算機システム
US7925802B2 (en) * 2007-06-21 2011-04-12 Seamicro Corp. Hardware-based virtualization of BIOS, disks, network-interfaces, and consoles using a direct interconnect fabric
CN101399830B (zh) * 2007-09-29 2012-06-06 联想(北京)有限公司 虚拟机系统及其共享以太网点对点协议链接的方法
JP2009104555A (ja) * 2007-10-25 2009-05-14 Intel Corp Vt環境で動作するソフトウェアエージェントの改竄防止、方法および装置
US8522236B2 (en) * 2007-12-28 2013-08-27 Intel Corporation Method and system for establishing a robust virtualized environment
US8151032B2 (en) * 2008-06-26 2012-04-03 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8230155B2 (en) * 2008-06-26 2012-07-24 Microsoft Corporation Direct memory access filter for virtualized operating systems
US9740517B2 (en) * 2008-12-29 2017-08-22 Microsoft Technology Licensing, Llc Dynamic virtual machine memory management
JP4769308B2 (ja) * 2009-01-20 2011-09-07 株式会社東芝 仮想計算機管理機構、同管理機構を有する仮想計算機システム及び同システムにおけるページング処理方法
US8271450B2 (en) * 2009-10-01 2012-09-18 Vmware, Inc. Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory
US8583875B1 (en) 2010-07-13 2013-11-12 Vmware, Inc. Efficient readable ballooning of guest memory by backing balloon pages with a shared page
US8990584B2 (en) 2010-05-28 2015-03-24 Dell Products, Lp System and method for supporting task oriented devices in a client hosted virtualization system
US8527761B2 (en) 2010-05-28 2013-09-03 Dell Products, Lp System and method for fuse enablement of a secure client hosted virtualization in an information handling system
US8938774B2 (en) 2010-05-28 2015-01-20 Dell Products, Lp System and method for I/O port assignment and security policy application in a client hosted virtualization system
US8458490B2 (en) 2010-05-28 2013-06-04 Dell Products, Lp System and method for supporting full volume encryption devices in a client hosted virtualization system
US8751781B2 (en) 2010-05-28 2014-06-10 Dell Products, Lp System and method for supporting secure subsystems in a client hosted virtualization system
US8719557B2 (en) 2010-05-28 2014-05-06 Dell Products, Lp System and method for secure client hosted virtualization in an information handling system
US8639923B2 (en) 2010-05-28 2014-01-28 Dell Products, Lp System and method for component authentication of a secure client hosted virtualization in an information handling system
US9134990B2 (en) 2010-05-28 2015-09-15 Dell Products, Lp System and method for implementing a secure client hosted virtualization service layer in an information handling system
US8589702B2 (en) 2010-05-28 2013-11-19 Dell Products, Lp System and method for pre-boot authentication of a secure client hosted virtualization in an information handling system
KR101077904B1 (ko) * 2010-07-12 2011-10-31 (주)이더블유비엠코리아 페이지 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법
KR101671494B1 (ko) 2010-10-08 2016-11-02 삼성전자주식회사 공유 가상 메모리를 이용한 멀티 프로세서 및 주소 변환 테이블 생성 방법
CN102075389B (zh) * 2011-01-27 2013-02-20 大唐移动通信设备有限公司 一种调试方法和设备
US8479295B2 (en) * 2011-03-30 2013-07-02 Intel Corporation Method and apparatus for transparently instrumenting an application program
US8966477B2 (en) * 2011-04-18 2015-02-24 Intel Corporation Combined virtual graphics device
CN102999393B (zh) * 2011-09-13 2016-03-02 联想(北京)有限公司 一种数据传输的方法、装置及电子设备
US9146785B2 (en) * 2011-09-14 2015-09-29 Microsoft Technology Licensing, Llc Application acceleration in a virtualized environment
US8788763B2 (en) 2011-10-13 2014-07-22 International Business Machines Corporation Protecting memory of a virtual guest
US8782351B2 (en) 2011-10-13 2014-07-15 International Business Machines Corporation Protecting memory of a virtual guest
US8726404B2 (en) 2011-11-14 2014-05-13 Intel Corporation Regulating access to and protecting portions of applications of virtual machines
WO2013074071A1 (en) * 2011-11-14 2013-05-23 Intel Corporation Regulating access to and protecting portions of applications of virtual machines
EP2605132B1 (de) * 2011-12-13 2018-05-09 Siemens Aktiengesellschaft Verfahren für eine Verwaltung von Speicher eines Computers mit zumindest einer virtuellen Maschine
WO2013089695A1 (en) 2011-12-14 2013-06-20 Intel Corporation Method and system for monitoring calls to an application program interface (api) function
CN102521054B (zh) * 2011-12-15 2013-07-17 中国人民解放军国防科学技术大学 一种sun4v架构下的虚拟机DMA资源分配方法
US8719546B2 (en) * 2012-01-04 2014-05-06 Intel Corporation Substitute virtualized-memory page tables
US9141559B2 (en) 2012-01-04 2015-09-22 Intel Corporation Increasing virtual-memory efficiencies
EP2801025B1 (en) * 2012-01-04 2018-10-24 Intel Corporation Increasing virtual-memory efficiencies
WO2013103340A1 (en) * 2012-01-04 2013-07-11 Intel Corporation Substitute virtualized-memory page tables
US20130219146A1 (en) * 2012-02-16 2013-08-22 Micron Technology, Inc. Method, device and system for a configurable address space for non-volatile memory
US9460276B2 (en) 2012-02-22 2016-10-04 Panasonic Intellectual Property Corporation Of America Virtual machine system, confidential information protection method, and confidential information protection program
KR20130101693A (ko) 2012-03-06 2013-09-16 삼성전자주식회사 이종의 운영체제를 사용하는 가상화 시스템의 전력 관리 방법 및 장치
JP5862408B2 (ja) * 2012-03-27 2016-02-16 富士通株式会社 エミュレーション装置、及びエミュレーションプログラム
US10152409B2 (en) 2012-04-30 2018-12-11 Vmware, Inc. Hybrid in-heap out-of-heap ballooning for java virtual machines
US9852054B2 (en) 2012-04-30 2017-12-26 Vmware, Inc. Elastic caching for Java virtual machines
US9015203B2 (en) 2012-05-31 2015-04-21 Vmware, Inc. Balloon object feedback for Java Virtual Machines
US9940228B2 (en) 2012-06-14 2018-04-10 Vmware, Inc. Proactive memory reclamation for java virtual machines
US9330013B2 (en) * 2012-06-28 2016-05-03 Industrial Technology Research Institute Method of cloning data in a memory for a virtual machine, product of computer programs and computer system therewith
US9477505B2 (en) * 2012-08-14 2016-10-25 Oracle International Corporation Method for reducing the overhead associated with a virtual machine exit when handling instructions related to descriptor tables
US10187452B2 (en) 2012-08-23 2019-01-22 TidalScale, Inc. Hierarchical dynamic scheduling
US9769123B2 (en) * 2012-09-06 2017-09-19 Intel Corporation Mitigating unauthorized access to data traffic
US9037823B2 (en) * 2012-09-14 2015-05-19 Intel Corporation Protecting IAT/EAT hooks from rootkit attacks using new CPU assists
US9069669B2 (en) * 2012-10-11 2015-06-30 Industrial Technology Research Institute Method and computer system for memory management on virtual machine
US10310973B2 (en) * 2012-10-25 2019-06-04 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US9015523B2 (en) * 2012-12-20 2015-04-21 Intel Corporation Memory allocation for virtual machines using memory map
US9330026B2 (en) * 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)
KR102069273B1 (ko) 2013-03-11 2020-01-22 삼성전자주식회사 시스템 온 칩 및 그 동작방법
US10031856B2 (en) * 2013-03-14 2018-07-24 Nvidia Corporation Common pointers in unified virtual memory system
DE102013022169A1 (de) 2013-03-14 2014-09-18 Nvidia Corporation Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
US20140281366A1 (en) * 2013-03-15 2014-09-18 Cognitive Electronics, Inc. Address translation in a system using memory striping
WO2014209269A1 (en) * 2013-06-24 2014-12-31 Intel Corporation A protected memory view for nested page table access by virtual machine guests
US10055254B2 (en) * 2013-07-12 2018-08-21 Bluedata Software, Inc. Accelerated data operations in virtual environments
WO2015069280A1 (en) * 2013-11-08 2015-05-14 Empire Technology Development, Llc Memory deduplication masking
TWI497296B (zh) * 2013-12-04 2015-08-21 Univ Nat Taiwan 記憶體配置與分頁位址轉換系統及方法
US20150261688A1 (en) * 2014-03-14 2015-09-17 International Business Machines Corporation Extended page table for i/o address translation
WO2015145620A1 (ja) * 2014-03-26 2015-10-01 株式会社日立製作所 計算機及びアドレス変換方法
FR3020160B1 (fr) * 2014-04-16 2017-08-11 Commissariat Energie Atomique Systeme d'execution de code avec mecanisme d'hypervision en aveugle
US9501222B2 (en) 2014-05-09 2016-11-22 Micron Technology, Inc. Protection zones in virtualized physical addresses for reconfigurable memory systems using a memory abstraction
US9940458B2 (en) 2014-08-07 2018-04-10 Empire Technology Development Llc Flag based threat detection
US9703703B2 (en) * 2014-12-23 2017-07-11 Intel Corporation Control of entry into protected memory views
US9715410B2 (en) * 2015-01-30 2017-07-25 Red Hat Israel, Ltd. Protected virtual machine function access
CN104657086B (zh) * 2015-02-02 2019-01-04 曙光云计算集团有限公司 云服务器的数据存储方法和系统
US9495303B2 (en) * 2015-02-03 2016-11-15 Intel Corporation Fine grained address remapping for virtualization
US9619401B2 (en) * 2015-02-20 2017-04-11 Wisconsin Alumni Research Foundation Efficient memory management system for computers supporting virtual machines
US20160246715A1 (en) * 2015-02-23 2016-08-25 Advanced Micro Devices, Inc. Memory module with volatile and non-volatile storage arrays
US9710393B2 (en) 2015-06-25 2017-07-18 Intel Corporation Dynamic page table edit control
US9665373B2 (en) 2015-06-26 2017-05-30 Intel Corporation Protecting confidential data with transactional processing in execute-only memory
CN107615244B (zh) * 2015-06-26 2021-07-13 英特尔公司 在虚拟机上运行一个或多个容器的技术
WO2017022014A1 (ja) * 2015-07-31 2017-02-09 株式会社日立製作所 仮想計算機システムの制御方法及び仮想計算機システム
US9946566B2 (en) 2015-09-28 2018-04-17 Intel Corporation Method and apparatus for light-weight virtualization contexts
US10055242B2 (en) 2015-10-16 2018-08-21 Microsoft Technology Licensing, Llc Virtualizing audio decoding hardware
US20170220466A1 (en) * 2016-01-30 2017-08-03 Intel Corporation Sharing a guest physical address space among virtualized contexts
US10515023B2 (en) 2016-02-29 2019-12-24 Intel Corporation System for address mapping and translation protection
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10169244B2 (en) 2016-07-29 2019-01-01 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US10241931B2 (en) * 2016-07-29 2019-03-26 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US10620992B2 (en) 2016-08-29 2020-04-14 TidalScale, Inc. Resource migration negotiation
US10983821B2 (en) * 2016-09-26 2021-04-20 Intel Corporation Apparatus and method for a hybrid layer of address mapping for a virtualized input/output (I/O) implementation
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US10338135B2 (en) * 2016-09-28 2019-07-02 Amazon Technologies, Inc. Extracting debug information from FPGAs in multi-tenant environments
US10250572B2 (en) 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10282330B2 (en) 2016-09-29 2019-05-07 Amazon Technologies, Inc. Configurable logic platform with multiple reconfigurable regions
US10162921B2 (en) 2016-09-29 2018-12-25 Amazon Technologies, Inc. Logic repository service
US10642492B2 (en) 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider
US10866909B2 (en) * 2017-06-26 2020-12-15 Intel Corporation Technologies for protecting virtual machine memory
US10579274B2 (en) 2017-06-27 2020-03-03 TidalScale, Inc. Hierarchical stalling strategies for handling stalling events in a virtualized environment
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
CN109426739B (zh) * 2017-09-01 2020-10-30 龙芯中科技术有限公司 处理器和空指针攻击检测方法
US11194735B2 (en) * 2017-09-29 2021-12-07 Intel Corporation Technologies for flexible virtual function queue assignment
US10613990B2 (en) * 2017-12-05 2020-04-07 Red Hat, Inc. Host address space identifier for non-uniform memory access locality in virtual machines
WO2019173937A1 (en) * 2018-03-12 2019-09-19 Intel Corporation Improved memory-mapped input/output (mmio) region access
WO2019180675A1 (en) * 2018-03-22 2019-09-26 Trulyprotect Oy Systems and methods for hypervisor-based protection of code
US10915457B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US11481241B2 (en) * 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US10997083B2 (en) * 2018-09-04 2021-05-04 Arm Limited Parallel page table entry access when performing address translations
US11954026B1 (en) * 2018-09-18 2024-04-09 Advanced Micro Devices, Inc. Paging hierarchies for extended page tables and extended page attributes
US10769076B2 (en) 2018-11-21 2020-09-08 Nvidia Corporation Distributed address translation in a multi-node interconnect fabric
US10901911B2 (en) 2018-11-21 2021-01-26 Microsoft Technology Licensing, Llc Faster computer memory access by reducing SLAT fragmentation
US11099874B2 (en) * 2019-01-28 2021-08-24 Red Hat Israel, Ltd. Efficient userspace driver isolation by shallow virtual machines
US11640361B2 (en) * 2019-03-08 2023-05-02 International Business Machines Corporation Sharing secure memory across multiple security domains
US11531627B2 (en) 2019-03-08 2022-12-20 International Business Machines Corporation Secure storage isolation
US11226904B2 (en) * 2019-04-26 2022-01-18 Hewlett Packard Enterprise Development Lp Cache data location system
CN110442425B (zh) * 2019-07-19 2022-04-08 南京芯驰半导体科技有限公司 一种虚拟化地址空间隔离系统及方法
US11243801B2 (en) 2020-03-26 2022-02-08 Red Hat, Inc. Transparent huge pages support for encrypted virtual machines
US11556513B2 (en) 2020-06-30 2023-01-17 Hewlett Packard Enterprise Development Lp Generating snapshots of a key-value index
US11461299B2 (en) 2020-06-30 2022-10-04 Hewlett Packard Enterprise Development Lp Key-value index with node buffers
US11461240B2 (en) 2020-10-01 2022-10-04 Hewlett Packard Enterprise Development Lp Metadata cache for storing manifest portion
CN114461536A (zh) * 2020-11-10 2022-05-10 瑞昱半导体股份有限公司 查找表建立及内存地址查询方法
US20220179677A1 (en) * 2020-12-09 2022-06-09 Mediatek Inc. Memory protection for virtual machines
GB2604629B (en) * 2021-03-10 2023-06-07 Imagination Tech Ltd A computer system and method using a first page table and a second page table
US11487451B2 (en) * 2021-03-15 2022-11-01 TidalScale, Inc. Fast restart of large memory systems

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4430705A (en) * 1980-05-23 1984-02-07 International Business Machines Corp. Authorization mechanism for establishing addressability to information in another address space
US4456954A (en) * 1981-06-15 1984-06-26 International Business Machines Corporation Virtual machine system with guest architecture emulation using hardware TLB's for plural level address translations
JPS59132483A (ja) * 1983-08-12 1984-07-30 Hitachi Ltd アドレス変換装置
US4695950A (en) * 1984-09-17 1987-09-22 International Business Machines Corporation Fast two-level dynamic address translation method and means
JPS6184754A (ja) * 1984-10-03 1986-04-30 Hitachi Ltd 拡張アドレス変換装置
JPH0731609B2 (ja) * 1985-09-18 1995-04-10 日本電気株式会社 Vmモード変更装置
JP2507756B2 (ja) * 1987-10-05 1996-06-19 株式会社日立製作所 情報処理装置
US5109496A (en) * 1989-09-27 1992-04-28 International Business Machines Corporation Most recently used address translation system with least recently used (LRU) replacement
JPH03192445A (ja) * 1989-12-22 1991-08-22 Hitachi Ltd 仮想計算機システム
US5317705A (en) * 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
JPH04357540A (ja) * 1991-03-28 1992-12-10 Ricoh Co Ltd マップドファイル仮想記憶方式
US5675762A (en) 1992-04-03 1997-10-07 International Business Machines Corporation System for locking down part of portion of memory and updating page directory with entry corresponding to part of portion of the memory locked down
JPH06110715A (ja) * 1992-09-25 1994-04-22 Hitachi Ltd 仮想計算機システムにおける計算機資源の動的割付け方法
US5765207A (en) 1993-06-22 1998-06-09 International Business Machines Corporation Recursive hardware state machine
US6189074B1 (en) * 1997-03-19 2001-02-13 Advanced Micro Devices, Inc. Mechanism for storing system level attributes in a translation lookaside buffer
JP3607540B2 (ja) 1999-08-18 2005-01-05 エヌイーシーシステムテクノロジー株式会社 プログラム単位メモリアクセス属性管理方式
US6393544B1 (en) * 1999-10-31 2002-05-21 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for calculating a page table index from a virtual address
US6651132B1 (en) * 2000-07-17 2003-11-18 Microsoft Corporation System and method for emulating the operation of a translation look-aside buffer
US6907600B2 (en) * 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
US6643759B2 (en) * 2001-03-30 2003-11-04 Mips Technologies, Inc. Mechanism to extend computer memory protection schemes
DE10127198A1 (de) * 2001-06-05 2002-12-19 Infineon Technologies Ag Vorrichtung und Verfahren zum Ermitteln einer physikalischen Adresse aus einer virtuellen Adresse unter Verwendung einer hierarchischen Abbildungsvorschrift mit komprimierten Knoten
US6671791B1 (en) * 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
US6792521B2 (en) * 2001-10-16 2004-09-14 International Business Machines Corporation Behavioral memory mechanism for a data processing system
DE10208765A1 (de) 2002-02-28 2003-09-18 Infineon Technologies Ag Datenverarbeitungsvorrichtung
US6996748B2 (en) * 2002-06-29 2006-02-07 Intel Corporation Handling faults associated with operation of guest software in the virtual-machine architecture
US7124327B2 (en) 2002-06-29 2006-10-17 Intel Corporation Control over faults occurring during the operation of guest software in the virtual-machine architecture
US7953588B2 (en) * 2002-09-17 2011-05-31 International Business Machines Corporation Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host
US6895491B2 (en) * 2002-09-26 2005-05-17 Hewlett-Packard Development Company, L.P. Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching
US6970990B2 (en) 2002-09-30 2005-11-29 International Business Machines Corporation Virtual mode virtual memory manager method and apparatus
US6915405B2 (en) * 2002-12-04 2005-07-05 Bull Hn Information Systems Inc. Emulated target associative memory system with a multi-digit incrementable validity counter
US7073042B2 (en) * 2002-12-12 2006-07-04 Intel Corporation Reclaiming existing fields in address translation data structures to extend control over memory accesses
US7318141B2 (en) * 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US7900017B2 (en) * 2002-12-27 2011-03-01 Intel Corporation Mechanism for remapping post virtual machine memory pages
US7111145B1 (en) * 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US6981125B2 (en) * 2003-04-22 2005-12-27 International Business Machines Corporation Method and apparatus for managing shared virtual storage in an information handling system
US7409487B1 (en) * 2003-06-30 2008-08-05 Vmware, Inc. Virtualization system for computers that use address space indentifiers
US7376949B2 (en) * 2003-10-01 2008-05-20 Hewlett-Packard Development Company, L.P. Resource allocation and protection in a multi-virtual environment
US7451443B2 (en) * 2003-10-01 2008-11-11 Hewlett-Packard Development Company, L.P. Online computer maintenance utilizing a virtual machine monitor
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US7222221B1 (en) * 2004-02-06 2007-05-22 Vmware, Inc. Maintaining coherency of derived data in a computer system
US7206915B2 (en) * 2004-06-03 2007-04-17 Emc Corp Virtual space manager for computer having a physical address extension feature
US7260702B2 (en) * 2004-06-30 2007-08-21 Microsoft Corporation Systems and methods for running a legacy 32-bit x86 virtual machine on a 64-bit x86 processor
US7886293B2 (en) * 2004-07-07 2011-02-08 Intel Corporation Optimizing system behavior in a virtual machine environment
US7562179B2 (en) * 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US7330942B2 (en) * 2004-07-31 2008-02-12 Hewlett-Packard Development Company, L.P. Method for efficient virtualization of physical memory in a virtual-machine monitor
US7281102B1 (en) * 2004-08-12 2007-10-09 Vmware, Inc. Restricting memory access to protect data when sharing a common address space
US7340582B2 (en) * 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
US9058292B2 (en) * 2004-12-29 2015-06-16 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
US7810083B2 (en) * 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7428626B2 (en) 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US7363463B2 (en) * 2005-05-13 2008-04-22 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines

Also Published As

Publication number Publication date
CN100501680C (zh) 2009-06-17
US10114767B2 (en) 2018-10-30
KR100831488B1 (ko) 2008-05-22
JP5611622B2 (ja) 2014-10-22
EP2988216A1 (en) 2016-02-24
CN101533358B (zh) 2013-02-06
PL3572937T3 (pl) 2022-04-04
EP2275932A1 (en) 2011-01-19
EP2988216B1 (en) 2019-03-06
US20060161719A1 (en) 2006-07-20
EP3905039A1 (en) 2021-11-03
JP2006196005A (ja) 2006-07-27
US20130219143A1 (en) 2013-08-22
CN1811714A (zh) 2006-08-02
EP3572937B1 (en) 2021-12-29
JP2010123148A (ja) 2010-06-03
US20150100717A1 (en) 2015-04-09
US20110087822A1 (en) 2011-04-14
JP5485249B2 (ja) 2014-05-07
TWI308720B (en) 2009-04-11
US8533428B2 (en) 2013-09-10
CN101533358A (zh) 2009-09-16
KR20060083168A (ko) 2006-07-20
EP1681630A1 (en) 2006-07-19
US20190121751A1 (en) 2019-04-25
TW200636572A (en) 2006-10-16
JP2012079333A (ja) 2012-04-19
ES2907805T3 (es) 2022-04-26
EP3572937A1 (en) 2019-11-27
JP2014238850A (ja) 2014-12-18
US7886126B2 (en) 2011-02-08
US9164920B2 (en) 2015-10-20

Similar Documents

Publication Publication Date Title
JP5844434B2 (ja) バーチャルマシーンシステムの物理的メモリのバーチャル化
US10180911B2 (en) Synchronizing a translation lookaside buffer with an extended paging table
US7370160B2 (en) Virtualizing memory type
US8645665B1 (en) Virtualizing physical memory in a virtual machine system utilizing multilevel translation table base registers to map guest virtual addresses to guest physical addresses then to host physical addresses
US9684605B2 (en) Translation lookaside buffer for guest physical addresses in a virtual machine

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150924

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151020

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151118

R150 Certificate of patent or registration of utility model

Ref document number: 5844434

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250