(57)【要約】【課題】  本発明は、上記問題点を解決するバーチャルシステムについてのプロセッサ、方法及びシステムを提供する。【解決手段】  上記課題を解決するため、本発明は、バーチャルシステムを有するプロセッサであって、前記バーチャルシステムは、当該プロセッサが動作可能なホストマシーン上で実行可能なバーチャルマシーン上で実行可能なゲストソフトウェアによるゲスト物理的メモリの参照を前記ホストマシーンのホスト物理的メモリの参照にマップする拡張ページングテーブルを有するメモリバーチャル化サポートシステムを有することを特徴とするプロセッサを提供する。【選択図】  図２
2010123148.tif 000002
【特許請求の範囲】
【請求項１】
バーチャルマシーン上で実行されるゲストソフトウェアの実行を制御するバーチャルマシーンモニタをホストマシーン上で実行するプロセッサであって、
当該プロセッサの制御を前記バーチャルマシーンモニタから前記ゲストソフトウェアに移行するための命令を実行する実行ロジックと、
複数の第１ページテーブルへのポインタを格納する制御レジスタと、
前記ゲストソフトウェアが前記バーチャルマシーン上で実行されるとき、前記複数の第１ページテーブルを用いてゲストバーチャルアドレスをゲスト物理的アドレスに変換し、前記ゲストソフトウェアが前記バーチャルマシーン上で実行されるとき、複数の第２ページテーブルを用いて前記ゲスト物理的アドレスをホスト物理的アドレスに変換するアドレス変換ロジックと、
を有するプロセッサ。
【請求項２】
前記複数の第２ページテーブルは、ゲスト物理的メモリのページに対するアクセス制限を指定するため、リードアクセス制御情報、ライトアクセス制御情報及び実行アクセス制御情報の少なくとも１つを含む、請求項１記載のプロセッサ。
【請求項３】
前記ゲスト物理的メモリのページに対するアクセス制限の違反に応答して、当該プロセッサの制御を前記バーチャルマシーンモニタに移行する制御ロジックをさらに有する、請求項２記載のプロセッサ。
【請求項４】
前記複数の第２ページテーブルは、マルチレベル拡張ページングテーブルを含む、請求項１記載のプロセッサ。
【請求項５】
前記アドレス変換ロジックは、当該プロセッサのバーチャル化システムのフラグが所定値に設定されている場合に限って、アクティブ化される、請求項１記載のプロセッサ。
【請求項６】
バーチャルマシーン上で実行されるゲストソフトウェアの実行を制御するバーチャルマシーンモニタをホストマシーン上で実行するプロセッサであって、
当該プロセッサの制御を前記バーチャルマシーンモニタから前記ゲストソフトウェアに移行するための命令を実行する実行ロジックと、
複数の第１ページテーブルへのポインタを格納する制御レジスタと、
前記ゲストソフトウェアが前記バーチャルマシーン上で実行されるとき、前記複数のネスト化されたページテーブルを用いてゲストバーチャルアドレスをゲスト物理的アドレスに変換し、前記ゲスト物理的アドレスをホスト物理的アドレスに変換するアドレス変換ロジックと、
を有するプロセッサ。
【請求項７】
前記複数のネスト化されたページテーブルは、前記ゲストバーチャルアドレスを前記ゲスト物理的アドレスに変換するための複数のゲストページテーブルを含む、請求項６記載のプロセッサ。
【請求項８】
前記複数のネスト化されたページテーブルは、前記ゲスト物理的アドレスを前記ホスト物理的アドレスに変換するための複数のホストページテーブルを含む、請求項６記載のプロセッサ。
【請求項９】
前記複数のネスト化されたページテーブルは、ゲスト物理的メモリのページに対するアクセス制限を指定するため、リードアクセス制御情報、ライトアクセス制御情報及び実行アクセス制御情報の少なくとも１つを含む、請求項６記載のプロセッサ。
【請求項１０】
前記ゲスト物理的メモリのページに対するアクセス制限の違反に応答して、当該プロセッサの制御を前記バーチャルマシーンモニタに移行する制御ロジックをさらに有する、請求項９記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーチャルマシーンシステムの物理的メモリのバーチャル化に関する。
【背景技術】
【０００２】
バーチャル化は、バーチャル化のためのハードウェア及びソフトウェアサポートを有する単一のホストマシーンによって、当該ホストマシーンの基礎となるハードウェアが独立して動作する１以上のバーチャルマシーンとされるようにホストの複数のアブストラクションの提供を可能にする。このため、各バーチャルマシーンは、自己完結したプラットフォームとして機能し得る。しばしば、複数のゴーストオペレーティングシステム及び／又は他のゲストソフトウェアが、実際に同一のハードウェアプラットフォーム上で物理的に実行されながら、複数のバーチャルマシーン上で明らかに同時にかつ独立に共存及び実行されることを可能にするため、バーチャル化技術が利用される。バーチャルマシーンは、ホストマシーンのハードウェアをまねるようにしてもよいし、あるいは、異なるハードウェアアブストラクションを一緒に与えるようにしてもよい。
【０００３】
バーチャル化システムは、ホストマシーンを制御するバーチャルマシーンモニタ（ＶＭＭ）を備えるようにしてもよい。ＶＭＭは、バーチャルマシーンにおいて動作するゲストソフトウェアにリソース群（プロセッサ、メモリ、ＩＯ装置など）を与える。ＶＭＭは、物理的ホストマシーンの一部又は全てのコンポーネントをバーチャルマシーンにマップし、ＶＭＭにおいてソフトウェア的にエミュレートされ、バーチャルマシーンに含まれる完全なバーチャルコンポーネントを生成するようにしてもよい（バーチャルＩＯ装置など）。従って、ＶＭＭは、ゲストソフトウェアとの「バーチャルベアマシーン（ｖｉｒｔｕａｌ  ｂａｒｅ  ｍａｃｈｉｎｅ）」インタフェースを提供すると言われる。ＶＭＭは、ハードウェアバーチャル化アーキテクチャの機能を利用して、バーチャルマシーンにサービスを提供し、ホストマシーン上で実行される複数のバーチャルマシーンから、及びそれらの間のプロテクションを提供する。
【０００４】
ゲストソフトウェアがバーチャルマシーンにおいて実行されると、ゲストソフトウェアにより実行される特定の命令（周辺装置にアクセスする命令など）は、ゲストソフトウェアがハードウェアプラットフォーム上で直接実行されている場合には、通常はハードウェアに直接アクセスするであろう。ＶＭＭによりサポートされるバーチャル化システムでは、これらの命令は、バーチャルマシーンイグジット（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ  ｅｘｉｔ）とここでは呼ばれるＶＭＭへの遷移を生じさせるかもしれない。ＶＭＭは、ゲストソフトウェアが実行されているバーチャルマシーンと両立するホストマシーン周辺装置とホストマシーンハードウェアとに適した手法により、上記命令をソフトウェア的に取り扱う。同様に、ホストマシーンにおいて生成される特定の割込みや例外処理が、ＶＭＭにより傍受及び管理される必要があるかもしれないし、又は、サービス提供のためのゲストソフトウェアにわたされる前にＶＭＭによりゲストソフトウェアに対して適応される必要があるかもしれない。このとき、ＶＭＭは制御をゲストソフトウェアに遷移し、バーチャルマシーンが処理を開始する。ＶＭＭからゲストソフトウェアへの遷移は、ここではバーチャルマシーンエントリ（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ  ｅｎｔｒｙ）と呼ばれる。
【０００５】
周知のように、ほとんどのオペレーティングシステムのマシーン上で実行されるプロセスは、基礎となる物理的メモリシステムのアブストラクションであるバーチャルアドレススペースを利用する。当該技術分野で知られているように、「バーチャルアドレス」、「バーチャルアドレススペース」、「バーチャルメモリアドレス」、「バーチャルメモリスペース」など、メモリ管理に関して使用されるとき、「バーチャル」という用語は、プロセッサベースシステム上で実行されるプロセスへの基礎となる物理的メモリのアブストラクションを与える、一般的にはオペレーティングシステムに関するプロセッサベースシステムの周知技術を表す。例えば、プロセスは、基礎となるオペレーティングシステムにより非リニアであって非連続な物理的メモリにマップされるバーチャルな連続するリニア化されたアドレススペースアブストラクションにアクセスする。この「バーチャル」の使用は、「バーチャル」が「バーチャルマシーン」、「バーチャルベアマシーン」、「バーチャルハードウェア」、「バーチャルプロセッサ」、「バーチャルネットワークインタフェース」などの物理的マシーンをシミュレートするアブストラクションを一般に表すバーチャル化に関して使用される「バーチャル」の使用とは区別することができる。この用語の意図する意味は、使用される場面に基づき当業者には明らかであろう。
【０００６】
図１は、プロセッサとバスを介し当該プロセッサに通信可能に接続されるメモリとを搭載したプロセッサベースシステム上で実行されるプロセスを示す。図１を参照して、プロセス１０５がそれのバーチャルアドレススペース１１５内のメモリ位置１１０（プロセスバーチャルメモリスペース）を参照すると、マシーン１２５の物理的メモリ１４５（マシーン物理的メモリ）内の実アドレス１４０への参照が、ハードウェア（ときにはプロセッサ１２０に搭載される）及びソフトウェア（一般にはマシーンのオペレーティングシステムにおける）により実現可能なメモリ管理１３０により生成される。メモリ管理１３０は、バーチャルアドレススペース内の位置をマシーンの物理的メモリ内の位置にマップする。図１に示されるように、プロセスは、実メモリとは異なる観点のメモリを物理的マシーンにおいて利用可能にする。図１に示される例では、当該プロセスは、メモリ管理ハードウェア及びソフトウェアによって、１０〜１１ＭＢのアドレススペースを有する物理的メモリの一部に現実にはマップされる０〜１ＭＢのバーチャルアドレススペースにおいて実行される。プロセススペースアドレスから物理的アドレスを計算するため、オフセット１３５がプロセスバーチャルアドレスに追加されてもよい。より複雑なプロセスバーチャルメモリスペースから物理的メモリへのマッピングも可能である。例えば、プロセスバーチャルメモリに対応する物理的メモリは、ページなどのパーツに分割され、物理的メモリ内の他のプロセスからのページとインタリーブされてもよい。
【０００７】
通常、メモリは各ページが実現形態に応じて可変的な既知のデータ量のデータを含むいくつかのページに分割される。例えば、１ページは４０９６バイトのメモリを有する。メモリ位置が実行プロセスにより参照されるとき、それらはページ参照に変換される。典型的なマシーンでは、メモリ管理はプロセスバーチャルメモリ内のページへの参照をマシーン物理的メモリ内のページにマップする。一般に、メモリ管理はページテーブルを用いて、プロセススペースページ位置に対応する物理的ページ位置を特定するようにしてもよい。
【０００８】
バーチャルマシーン環境においてゲストソフトウェアを管理する１つの特徴は、メモリの管理である。バーチャルマシーンにおいて実行されるゲストソフトウェアによりなされるメモリ管理アクションを処理することにより、バーチャルマシーンモニタなどの制御システムに対する複雑さが生じる。例えば、「ＩＡ−３２  Ｉｎｔｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒ‘ｓ  Ｍａｎｕａｌ」（ＩＡ−３２ドキュメンテーション）に記載される３２ビットＩＡ−３２インテル（登録商標）アーキテクチャプラットフォーム（ＩＡ−３２）上で実現されるホストマシーン上で、２つのバーチャルマシーンがバーチャル化を介し実行されるシステムを検討する。ＩＡ−３２プラットフォームは、ＩＡ−３２プロセッサの一部として実現されるＩＡ−３２ページテーブルを含むものであってもよい。さらに、各バーチャルマシーン自体は、ＩＡ−３２マシーンのアブストラクションをそこで実行されているゲストソフトウェアに提供する。各バーチャルマシーン上で実行されるゲストソフトウェアは、ゲストプロセスバーチャルメモリアドレスを参照し、当該アドレスはゲストマシーンのメモリ管理システムによってゲスト物理的メモリアドレスに変換される。しかしながら、ゲスト物理的メモリ自体は、ＶＭＭを介したホスト物理的メモリのおけるさらなるマッピングとホストプロセッサ上のハードウェアのバーチャル化サブシステムにより実現されるようにしてもよい。したがってその後、例えば、ゲストＩＡ−３２ページテーブルコントロールレジスタへの参照を含むゲストオペレーティングシステム又はゲストプロセスによるゲストメモリへの参照は、ＶＭＭにより傍受される可能性がある。なぜならば、ゲスト物理的メモリは実際にはホスト物理的メモリに直接対応するものでなく、ホストマシーンのバーチャル化システムを介しさらにリマップされるとき、上記参照はさらなる再処理を行うことなくホストマシーンのＩＡ−３２ページテーブルに直接わたすことはできないためである。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、上記問題点を解決するバーチャルシステムについてのプロセッサ、方法及びシステムに関する。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本発明は、バーチャルシステムを有するプロセッサであって、前記バーチャルシステムは、当該プロセッサが動作可能なホストマシーン上で実行可能なバーチャルマシーン上で実行可能なゲストソフトウェアによるゲスト物理的メモリの参照を前記ホストマシーンのホスト物理的メモリの参照にマップする拡張ページングテーブルを有するメモリバーチャル化サポートシステムを有することを特徴とするプロセッサを提供する。
【００１１】
さらに、本発明は、プロセッサベースホストマシーン上で実行可能なバーチャルマシーン上で実行可能なゲストソフトウェアによるゲスト物理的メモリの参照を、前記ホストマシーンの拡張ページングテーブルを用いて前記ホストマシーンのホスト物理的メモリの参照にマップするステップを有することを特徴とする方法を提供する。
【発明の効果】
【００１２】
本発明によると、バーチャルシステムについてのプロセッサ、方法及びシステムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、従来技術によるプロセスと物理的メモリとの関係を示す。
【図２】図２は、一実施例によるバーチャルマシーンとホストマシーンとの関係を抽象化して示す。
【図３】図３は、一実施例によるバーチャルマシーン間の関係を抽象化して示す。
【図４ａ】図４ａは、バーチャルマシーン環境の一実施例における処理を示す。
【図４ｂ】図４ｂは、バーチャルマシーン環境の一実施例における処理を示す。
【図５】図５は、一実施例による拡張ページングテーブルを用いたアドレス計算を示す。
【図６】図６は、一実施例による階層的拡張ページングテーブルを用いたアドレス計算を示す。
【図７】図７は、一実施例による拡張ページングテーブルベースアドレスポインタを示す。
【図８】図８は、一実施例による拡張ページングテーブルエントリを示す。
【発明を実施するための形態】
【００１４】
図２は、本発明の一実施例によるゲストメモリのマッピングに関するホストマシーン上で実行される１以上のバーチャルマシーン間の関係を示す。図２は、ホストマシーンのバーチャル化を介したゲスト物理的メモリのリマップ方法を示す。バーチャルマシーンＡ（２４２）やバーチャルマシーンＢ（２５７）などの各バーチャルマシーンは、当該バーチャルマシーン上で実行されるゲストソフトウェアにそれぞれバーチャルプロセッサ２４５と２５５を与える。各マシーンはそれぞれ、物理的メモリのアブストラクションであるゲスト物理的メモリ２４０と２５０をゲストオペレーティングシステム又は他のゲストソフトウェアに与える。ゲストソフトウェアがバーチャルマシーン２４２及び２５７上で実行されるとき、それはホスト物理的メモリ２６０を用いるホストプロセッサ２６５上のホストマシーン２６７により実際は実行される。
【００１５】
図２に示されるように、本実施例では、バーチャルマシーンＡ（２４２）のアドレス０から始まる物理的メモリスペースとして与えられるゲスト物理的メモリ２４０が、ホスト物理的メモリ２６０のある連続領域２７０にマップされる。同様に、バーチャルマシーンＢ（２５７）のゲスト物理的メモリ２５０が、ホスト物理的メモリ２６０の異なる部分２７５にマップされる。図２に示されるように、ホストマシーンは、１０２４ＭＢのホスト物理的メモリを有するようにしてもよい。各バーチャルマシーン２４２及び２５７に２５６ＭＢのメモリが割当てられている場合、１つの可能のマッピングは、バーチャルマシーンＡ（２４２）に領域１２８〜３８４ＭＢが割り当てられ、バーチャルマシーンＢ（２５７）に領域５１２〜７６８ＭＢが割り当てられるというものである。バーチャルマシーン２４２と２５７は共に、０〜２５６ＭＢゲスト物理的アドレススペースを参照する。ＶＭＭのみが、各バーチャルマシーンのアドレススペースがホスト物理的アドレススペースの異なる部分にマップすることを認識している。
【００１６】
図２に示されるバーチャルマシーンとメモリマッピングは、本発明の一実施例の単なる一表現であり、他の実施例では、ホストマシーン上で実行されるバーチャルマシーンの実際の個数は１以上の可変的な値であってもよく、ホストマシーン及びバーチャルマシーンの実際のメモリサイズもまた、バーチャルマシーンごとに可変とされてもよい。図示された例は、バーチャルマシーンへのメモリのシンプルな連続的割当てを示す。より一般的なケースでは、バーチャルマシーンに割り当てられる物理的メモリページは、連続するものでなくてもよく、互いに、そしてＶＭＭと他のホストプロセスに属するページとインタリーブされるホスト物理的メモリに分散されてもよい。
【００１７】
図２に示されるようなシステムのバーチャルマシーンとして提供されるプロセッサベースシステムは、それのすべての複雑さにおいてバーチャルマシーンを実現するようにしてもよい。従って例えば、バーチャルマシーンは、フルビューのゲスト物理的メモリをゲストＯＳに提供し、ゲストＯＳ及びバーチャルプロセッサ又は当該バーチャルマシーンの他のバーチャルハードウェアにより提供されるメモリ管理を利用して、バーチャルマシーン上で実行されるゲストソフトウェアに対するメモリ管理を実行する。一実施例では、バーチャルマシーンは、メモリ管理用のページテーブルなどのＩＡ−３２ハードウェアサポートを含むＩＡ−３２プラットフォームをゲストＯＳに与え、メモリ管理用のＩＡ−３２ハードウェアを含むＩＡ−３２プラットフォームであるホストプラットフォーム上で実行される。追加的な機構なしに、本実施例のバーチャル化システムは、物理的メモリをリマップ、パーティション、プロテクトするため１つの可能な手段としてＩＡ−３２ページテーブルシャドーイングを利用して、ＶＭＭにおいて物理的メモリバーチャル化アルゴリズムを実現する必要がある。従って例えば、ゲストソフトウェアがバーチャルマシーンのＩＡ−３２ページテーブルにアクセスしようとするとき、ＶＭＭは、バーチャル化に必要な機能（物理的アドレスのリマッピングなど）をゲストＯＳにより必要とされる機能にオーバーレイする必要がある。
【００１８】
このため、ＶＭＭは、ゲストソフトウェアによるページング機構の使用を取り巻く各種イベントをトラップする必要がある。これには、ＩＡ−３２ドキュメンテーションに記載されるように、ＩＡ−３２メモリ管理システムの制御レジスタ（ＣＲ０、ＣＲ３、Ｃ４など）などの制御レジスタの書き込み、ページング及びメモリアクセスに係るモデル特化レジスタ（ＭＳＲ）（メモリタイプ範囲レジスタ（ＭＴＲＲ）など）へのアクセス、特定の例外処理（ページフォルトなど）の取り扱いが含まれる。上記のように物理的メモリをバーチャル化するためＩＡ−３２ページテーブルを利用することは、複雑な処理を伴い、かなりのパフォーマンスオーバーヘッドを強いることになる。
【００１９】
図３は、バーチャルマシーン環境３００の一実施例を示す。本実施例では、プロセッサベースプラットフォーム３１６がＶＭＭ３１２を実行する。ＶＭＭは、典型的にはソフトウェアにより実現されるが、より高いレベルのソフトウェアにバーチャルベアマシーンインタフェースをエミュレート及びエクスポートするかもしれない。このようなハイレベルなソフトウェアは、標準的なＯＳやリアルタイムＯＳから構成されるものであってもよく、限られたオペレーティングシステムの機能を有するストリップダウンされた環境のものであってもよく、一部の実施例では標準的なＯＳで典型的には利用可能なＯＳ機能を有するものでなくてもよい。あるいは、例えば、ＶＭＭ３１２は他のＶＭＭ内部で、又はそのサービスを利用して実行されてもよい。ＶＭＭは、例えば、ハードウェア、ソフトウェア、ファームウェア、又は一部の実施例においては各種技術の組み合わせにより実現されてもよい。
【００２０】
プラットフォームハードウェア３１６は、パーソナルコンピュータ（ＰＣ）、メインフレーム、携帯情報端末（ＰＤＡ）や「スマート」携帯電話などの携帯装置、携帯コンピュータ、セットトップボックス又は他のプロセッサベースシステムであってもよい。プラットフォームハードウェア３１６は、少なくともプロセッサ３１８とメモリ３２０とを備える。プロセッサ３１８は、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラなどのプログラムの実行が可能な任意のタイプのプロセッサであってもよい。プロセッサは、実施例における実行用のハードコードロジック、プログラマブルロジック又はマイクロコードを有するものであってもよい。図３はプロセッサ３１８のみが示されているが、他の実施例ではシステムに複数のプロセッサが設けられていてもよい。さらに、プロセッサ３１８は、複数のコア、複数スレッドのサポートなどを有するものであってもよい。メモリ３２０は、ハードディスク、フロッピー（登録商標）ディスク、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、上記デバイスの任意の組み合わせ、又は各種実施例においてプロセッサ３１８により読み出し可能な他の任意のタイプのマシーン媒体から構成可能である。メモリ３２０は、プログラム及び他の方法の実施例を実行するための命令及び／又はデータを格納するものであってもよい。
【００２１】
ＶＭＭ３１２は、同一又は異なるアブストラクションを各種ゲストに提供する１以上のバーチャルマシーンのアブストラクションをゲストソフトウェアに提供する。図３は、２つのバーチャルマシーン３０２と３１４を示す。各バーチャルマシーン上で実行されるゲストソフトウェア３０３及び３１３などのゲストソフトウェアは、ゲストＯＳ３０４や３０６などのゲストＯＳと、各種ゲストソフトウェアアプリケーション３０８と３１０を備えるようにしてもよい。ゲストソフトウェア３０３及び３１３は、他の機能を実行するためゲストソフトウェア３０３と３１３が実行されているバーチャルマシーン内の物理的リソース（プロセッサレジスタ、メモリ、Ｉ／Ｏ装置など）にアクセスするようにしてもよい。例えば、ゲストソフトウェア３０３と３１３は、バーチャルマシーン３０２と３１４に与えられるプラットフォーム及びプロセッサのアーキテクチャに従って、すべてのレジスタ、キャッシュ、構造、Ｉ／Ｏ装置、メモリなどにアクセスすることを期待する。
【００２２】
一実施例では、プロセッサ３１８は、バーチャルマシーン制御構造（ＶＭＣＳ）３２４に格納されているデータに従って、バーチャルマシーン３０２と３１４の動作を制御する。ＶＭＣＳ３２４は、ゲストソフトウェア３０３と３１３の状態、ＶＭＭ３１２の状態、ＶＭＭ３１２がゲストソフトウェア３０３と３１３の動作のどのように制御することを所望するに関する実行制御情報、ＶＭＭ３１２とバーチャルマシーンとの間の遷移を制御する情報などを含む構造である。プロセッサ３１８は、バーチャルマシーンの実行環境を決定し、それの動作を制限するため、ＶＭＣＳ３２４から情報を読み出す。一実施例では、ＶＭＣＳ３２４はメモリ３２０に格納されている。一部の実施例では、複数のＶＭＣＳ構造が複数のバーチャルマシーンをサポートするのに利用される。
【００２３】
ＶＭＭ３１２は、バーチャルマシーン３０２と３１４において実行されるゲストソフトウェアによりアクセス可能な物理的メモリを管理する必要がある。一実施例において、物理的メモリ管理をサポートするため、プロセッサ３１８は、拡張ページテーブル（ＥＰＴ）機構を設ける。当該実施例では、ＶＭＭ３１２は、バーチャルマシーン３０２又は３１４への制御の遷移前に提供されることを要する物理的メモリバーチャル化に係るフィールドの値を与える物理的メモリ管理モジュール３２６を備えるようにしてもよい。当該フィールドは、まとめてＥＰＴ制御と呼ばれる。ＥＰＴ制御には、例えば、ＥＰＴ機構がイネーブルとされるべきか指定するＥＰＴイネーブル表示と、物理的メモリバーチャル化機構の形式及びセマティックを示す１以上のＥＰＴテーブル構成制御が含まれるかもしれない。これらについては、以下において詳細に説明される。さらに一実施例では、ＥＰＴテーブル３２８は、ＶＭＭ３１２がゲストソフトウェア３０３と３１３に設ける物理的アドレス変換及びプロテクションセマティックを示す。
【００２４】
一実施例では、ＥＰＴ制御はＶＭＣＳ３２４に格納される。あるいは、ＥＰＴ制御は、プロセッサ３１８、メモリ３２０とプロセッサ３１８の組み合わせ、又は他の何れかの格納位置に備えられてもよい。一実施例では、個々のＥＰＴ制御が各バーチャルマシーン３０２と３１４に維持される。あるいは、同一のＥＰＴ制御が、両方のバーチャルマシーンに対して維持され、各バーチャルマシーンエントリ前にＶＭＭ３１２により更新される。
【００２５】
一実施例では、ＥＰＴテーブル３２８はメモリ３２０に格納される。あるいは、ＥＰＴテーブル３２８は、プロセッサ３１８、メモリ３２０とプロセッサ３１８の組み合わせ、又は他の何れかの格納位置に備えられてもよい。一実施例では、個々のＥＰＴテーブル３２８が各バーチャルマシーン３０２と３１４に維持される。あるいは、同一のＥＰＴテーブル３２８が、両方のバーチャルマシーンに対して維持され、各バーチャルマシーンエントリ前にＶＭＭ３１２により更新される。
【００２６】
一実施例では、プロセッサ３１８は、ＥＰＴイネーブル表示に基づき、ＥＰＴ機構がイネーブルにされているか否か判断するＥＰＴアクセスロジック３２２を有する。ＥＰＴ機構がイネーブルである場合、プロセッサは、ＥＰＴ制御及びＥＰＴテーブル３２８に基づき、ゲスト物理的アドレスをホスト物理的アドレスに変換する。
【００２７】
システム３００が複数のプロセッサ又はマルチスレッドプロセッサを有する一実施例では、各論理プロセッサは独立したＥＰＴアクセスロジック３２２と関連付けされ、ＶＭＭ３１２は各論理プロセッサに対してＥＰＴテーブル３２８とＥＰＴ制御を設定する。
【００２８】
ゲストソフトウェア（例えば、ゲストＯＳとアプリケーション３０８を含むゲストソフトウェア３０３など）によりアクセス可能なリソースは、「特権あり（ｐｒｉｖｉｌｅｇｅｄ）」又は「特権なし（ｎｏｎ−ｐｒｉｖｉｌｅｇｅｄ）」として分類することが可能である。特権のあるリソースに対して、ＶＭＭ３１２は、当該特権のあるリソースに対する最終的な制御を保持しながら、ゲストソフトウェアにより所望される機能を実現する。さらに、各ゲストソフトウェア３０３及び３１３は、例外処理（ページフォルト、一般的なプロテクションフォルトなど）、中断（ハードウェア中断、ソフトウェア中断など）、プラットフォームイベント（初期化（ＩＮＩＴ）やシステム管理中断（ＳＭＩ）など）などの各種プラットフォームイベントを処理することが期待される。上記プラットフォームイベントの一部は、バーチャルマシーン３０２及び３１４の適切な動作を確実にし、ゲストソフトウェアからのプロテクトのため、ＶＭＭ３１２により処理される必要があるため、「特権あり」とされる。ゲストオペレーティングシステムとゲストアプリケーションの両方が、特権のあるリソースにアクセスしようとしてもよく、共に特権のあるイベントを発生させるかもしれない。特権のあるプラットフォームイベント及び特権のあるリソースへのアクセスの試みは、ここでは「特権のあるイベント」又は「バーチャル化イベント」として呼ばれる。
【００２９】
図４ａ及び４ｂに示される処理によって、図３に示されるような実施例におけるバーチャルマシーン環境の動作が示される。図４ａは、ゲストソフトウェアに発生した特権付きイベントを処理する一実施例によるＶＭ環境の処理と、ゲストソフトウェアによる特権なしイベントを処理する当該実施例の処理を示す。図４ｂは、拡張ページングテーブルに関する実施例におけるＶＭ環境の処理、具体的には、ゲスト物理的メモリへのゲストソフトウェアアクセス及びＶＭＭによるハードウェアのＥＰＴ機構の管理に関する処理を示す。図４ａ及び４ｂは、図３に示されるような環境において発生するすべてのコンポーネント又はすべての処理を示すものではない。これは単なる提示の簡単化のためである。図４ａ及び４ｂには少数のコンポーネントと具体的処理が示されているが、他の実施例によるＶＭ環境は、他の多数のコンポーネントを有するかもしれず、他の多数の処理が実行されるかもしれない。
【００３０】
まず、図４ａが検討される。図４ａは、図３において上述されたプラットフォームハードウェア３１６と、バーチャルマシーンアブストラクション３０２上で実行されるゲストソフトウェア３０３の一例となる処理群を示す。これらの処理は、システム内の何れにおいて（例えば、ＶＭＭ３１２やゲストソフトウェア３０３など）行われるか示すブロックにより示される。上述のＶＭ環境の他のコンポーネントに加えて、ＶＭアブストラクション３０２は、４１２においてバーチャルマシーン状態とゲストソフトウェア３０３の他の状態情報を格納し、バーチャルネットワーク接続や汎用レジスタなどの他のリソースをゲストに提供する。もちろん、ＶＭ状態、ゲスト状態及び他のＶＭリソースを実現する物理的リソースは、実際には、ＶＭが実行するプラットフォームハードウェア３１６により提供される。プラットフォームハードウェアは、メモリ３２０、ＶＭＣＳ３２４及びプロセッサ３１８を備える。
【００３１】
４４０において、ゲストソフトウェア３０３は、特権なしのリソース４４２にアクセスする。特権なしのリソースは、ＶＭＭ３１２により制御される必要はなく、ＶＭＭ３１２を呼び出すことなく継続されるゲストソフトウェアにより直接アクセス可能であり、４４５において、ゲストは特権なしのリソース４４２へのアクセス後も動作を継続することが可能とされる。特権なしのプラットフォームイベントも同様に、ＶＭＭ３１２の介入なしに処理される（これは、図４ａには示されていない）。
【００３２】
４０５において、ゲストソフトウェア３０３は、特権付きのリソースにアクセスしようとし、特権付きのプラットフォームイベントを受ける。このような特権付きのイベントが４０５において発生するとき、４０７において制御はＶＭＭ３１２に移行するようにしてもよい。４０７におけるゲストソフトウェアからＶＭＭ３１２への制御移行は、バーチャルマシーンイグジットと呼ばれる。リソースアクセスを実現した後、又は特権付きイベントを適切に処理した後、ＶＭＭ３１２は、４３２においてゲストソフトウェアに制御を戻し、その後、ゲストソフトウェアが４３５において処理を再開する。４３２におけるＶＭＭ３１２からゲストソフトウェアへの制御の移行は、バーチャルマシーンエントリと呼ばれる。一実施例では、ＶＭＭ３１２は、当該移行をトリガーするための命令を実行することによりバーチャルマシーンエントリを開始する。ここでは、当該命令をバーチャルマシーンエントリ命令と呼ぶ。
【００３３】
一実施例では、バーチャルマシーンイグジットが行われると、４１０において、ＶＭＭ３１２により求められるプロセッサ状態のコンポーネントがセーブされ、ＶＭＭ３１２により求められるプロセッサ状態のコンポーネントがロードされ、４２０において、当該実行がＶＭＭ３１２において再開される。一実施例では、ゲストソフトウェアにより用いられるプロセッサ状態のコンポーネントは、ＶＭＣＳ３２４のゲスト状態エリアに格納され、ＶＭＭ３１２により求められるプロセッサ状態のコンポーネントは、ＶＭＣＳ３２４のモニタ状態エリアに格納される。一実施例では、ＶＭＭ３１２からゲストソフトウェアへの移行が行われると、バーチャルマシーンイグジットにおいてセーブされたプロセッサ状態のコンポーネントが、４２５において復帰され（バーチャルマシーンイグジットの処理中にＶＭＭ３１２により変更されてもよい）、４３０において、制御がバーチャルマシーン３０２又は３１４に戻される。
【００３４】
次に、図４ｂが検討される。上述のように、図４ｂは、図４ａにおいて上述されたＶＭ環境の処理、特に拡張ページングテーブル、ゲスト物理的メモリへのゲストプログラムアクセス、及びＶＭＭによるハードウェアのＥＰＴ機構の管理に関する処理を示す。前述のように、簡単化のため、図４ｂは、ＶＭ環境で行われるすべてのコンポーネント又はすべての処理を示すものではない。図４ｂには少数のコンポーネント処理が示されているが、他の実施例によるＶＭ環境は他の多数のコンポーネントを有するようにしてもよく、他の多数の処理が実行されてもよい。
【００３５】
図４ｂに示される実施例によるＶＭ環境のコンポーネントは、ゲストソフトウェア３０３、ＶＭ３０２、物理的メモリ管理モジュール３２６を有するＶＭＭ３１２、及びプラットフォームハードウェア又は物理的マシーン３１６である。プラットフォームハードウェアはさらに、本実施例ではＥＰＴテーブル３２８とＶＭＣＳ３２４を含むメモリ３２０、及びＥＰＴアクセスロジック３２２を有するプロセッサ３１８から構成される。一般には、プラットフォームハードウェアのＥＰＴ機能の使用は、ゲスト物理的メモリへのアクセスが、例えば、ゲストソフトウェア３０３によりなされると、図４に示されるように４５０においてゲストソフトウェアにより開始される。ゲスト物理的メモリアクセスは、ＶＭ３０２により与えられるメモリ４５１のＶＭアブストラクションに参照され、その後に物理的マシーン３１６に参照される。ＥＰＴ機構がイネーブルである場合、プラットフォームハードウェア３１６は、ＥＰＴアクセスロジック３２２及びＥＰＴテーブル３２８を用いて、ゲスト物理的メモリへのアクセスをホスト物理的メモリ３２０へのアクセスに変換するため、ゲスト物理的メモリへのＶＭ参照を処理する。ＥＰＴ処理の詳細が、図５及び６を参照して後述される。
【００３６】
ＥＰＴ機構自体は、ＶＭＣＳ３２４に格納されるＥＰＴ制御及びＥＰＴテーブル３２８を構成するＶＭＭ３１２により構成される。本実施例では、ＥＰＴ機構の構成は、ＶＭＭ３１２における特権付きイベント４０５の処理の後であってＶＭエントリ４３０の前に、物理的メモリ管理モジュール３２６の処理の一部としてＶＭＭ３１２により実行されてもよい。ＥＰＴ機構の構成では、ＶＭＭ３１２は、ＥＰＴ機構４６０をイネーブル、非イネーブル又は制御するため、ＥＰＴテーブル３２８及びＥＰＴ制御を更新する。
【００３７】
もちろん、他の多数の処理形態が、図３を参照して上述されたようなＥＰＴ制御及びＥＰＴテーブル３２８のための異なる位置、複数のＶＭ、複数のプロセッサ、複数のスレッド、複数のゲスト及びこれらの組み合わせなどのＶＭ環境に関する拡張ページングテーブルの使用に対して可能である。
【００３８】
図５は、上述の拡張ページテーブルを用いて、バーチャルマシーンのゲストソフトウェアがゲストバーチャルアドレスを参照するとき、ホスト物理的アドレスを最終的に計算する処理の一例を示す。図示された例は、シンプルな３２ビットバーチャルアドレッシング及びシンプルなページテーブルフォーマットを用いたＩＡ−３２プラットフォームにおいて実行されるゲストソフトウェアを示す。当業者はこの具体例を、例えば、他の命令セットアーキテクチャ（インテルコーポレイションから入手可能な「Ｉｎｔｅｌ  Ｉｔａｎｉｕｍ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒ’ｓ  Ｍａｎｕａｌ」に規定されるようなインテルＩｔａｎｉｕｍ（登録商標）アーキテクチャなど）や他のページングモード（例えば、ゲストソフトウェアの６４ビットアドレッシングなど）などを理解するため、上記具体例を容易に拡張することができるであろう。
【００３９】
図５において、ゲストバーチャルアドレス５１０の参照は、バーチャルマシーンにおいて実行されるゲストソフトウェアにより実行される。ゲストにおいてアクティブなメモリ管理機構は（すなわち、ゲストオペレーティングシステムにより設定される）、バーチャルアドレスをゲスト物理的アドレスに変換するのに利用される。変換に用いられる各ゲスト物理的アドレスと、結果として得られるゲスト物理的アドレスは、ホスト物理的メモリへのアクセス前にＥＰＴを介しホスト物理的アドレスに変換される。このプロセスが以下において詳細に説明される。
【００４０】
本具体例では、ＣＲ３レジスタ５２０の適切なビット５０２が、ゲスト物理的メモリのゲストのページディレクトリテーブル５６０のベースを指示する。この値５０２は、ゲストのＰＤテーブル５６０のページディレクトリエントリ（ＰＤＥ）のゲスト物理的アドレス５１２を構成するため、ゲストバーチャルアドレス５１０からの上位ビットと合成される（本例では、テーブルのエントリはそれぞれ４バイトであるため、４倍することによりＩＡ−３２セマティックに従い適切に調整される）。この値５１２は、ページディレクトリエントリのホスト物理的アドレス５０４を構成するため、ＥＰＴテーブル５５５を介し変換される。プロセッサは、当該ホスト物理的アドレス５０４を用いてページディレクトリエントリにアクセスする。
【００４１】
ＰＤＥからの情報は、ゲストのページテーブル５７０のベースアドレス５２２を含む。このゲスト物理的アドレス５２２は、ゲストのページテーブル５７０へのページテーブルエントリのゲスト物理的アドレス５３２を構成するため、適切に調整されたゲストバーチャルアドレス５１０のビット２１：１２と合成される。このゲスト物理的アドレス５３２は、ゲストのページテーブルエントリ（ＰＴＥ）のホスト物理的アドレス５３２を構成するため、ＥＰＴテーブル５６５を介し変換される。プロセッサは、このホスト物理的アドレス５１４を用いてＰＴＥにアクセスする。
【００４２】
ＰＴＥからの情報は、アクセスされるゲスト物理的メモリ内のページのベースアドレス５４２を含む。この値は、アクセスされるメモリのゲスト物理的アドレス５５２を構成するため、ゲストバーチャルアドレス５１０の下位オーダービット（１１：０）と合成される。この値５５２は、アクセスされるメモリのホスト物理的アドレス５２４を構成するため、ＥＰＴテーブル５７５を介し変換される。
【００４３】
ＥＰＴテーブルがゲスト物理的アドレスをホスト物理的アドレスに変換するのに利用されるたびに、プロセッサは、後述されるように、当該アクセスがＥＰＴテーブルの制御に従って許可されていることを確認する。さらに、図５においては個別に示されているが、ＥＰＴテーブル５５５、５６５及び５７５は、一実施例では同一のＥＰＴテーブル群であってもよいということは理解される必要がある（すなわち、ゲスト物理からホスト物理へのすべてのアドレス変換に対して、単一のＥＰＴテーブル群が使用される）。
【００４４】
図６は、マルチレベルＥＰＴテーブルを用いたゲスト物理的アドレスをホスト物理的アドレスに最終的に変換する上述の拡張ページテーブルを用いた処理の他の例を示す。図６に示される実施例では、ＥＰＴベースポインタ（ＥＰＴＰ）６２０の適切なビット６０２が、本実施例ではホスト物理的メモリに格納される第１レベルＥＰＴテーブル６５０のベースのホスト物理的アドレスを示す。ＥＰＴＰについては、図７を参照することにより詳細に説明される。本例では、ＥＰＴテーブルの各エントリは８バイトである。ゲスト物理的アドレス６１０からのビット３８：３０（６０１）は、上位ゲスト物理的アドレス６０３を取得するため、８倍することにより適切に調整される（例えば、３ビットだけ値を左にシフトさせることにより）。ＥＰＴテーブルベースアドレス値６０２が当該調整された上位ゲスト物理的アドレスビット６０３と合成（加算）され、第１レベルＥＰＴテーブル６５０のＥＰＴテーブルエントリ６５１のホスト物理的アドレス６０４が構成される。第１レベルＥＰＴテーブル６５０の６５１などのエントリと他のＥＰＴテーブル６６０や６７０のエントリの一例となるフォーマットが、図８を参照して後述される。
【００４５】
ＥＰＴテーブルエントリ６５１の一部は、次レベルＥＰＴテーブル６６０のベースアドレス６１２となる。第２の調整されたアドレスコンポーネント６１３は、ゲスト物理的アドレス６１０のビット２９：２１（６１１）から構成される。この調整された値６１３は、次レベルＥＰＴテーブル６６０のＥＰＴテーブルエントリ６６１のホスト物理的アドレス６１４を構成するため、ベースアドレス６１２と合成（加算）される。プロセッサは、当該ホスト物理的アドレス６１４を用いてＥＰＴテーブルエントリ６６１にアクセスする。
【００４６】
ＥＰＴテーブルエントリ６６１からの情報は、最終的なＥＰＴテーブル６７０のベースアドレス６２２を含む。このベースアドレス６２２は、最終的なＥＰＴテーブル６７０のＥＰＴテーブルエントリ６７１のアドレス６２４を構成するため適切に調整された後、ゲストバーチャルアドレス６１０の調整されたビット２０：１２（６２３）と合成される。プロセッサは、このホスト物理的アドレス６２４を用いてＥＰＴテーブルエントリにアクセスする。
【００４７】
ＥＰＴテーブルエントリ６７１からの情報は、ホスト物理的メモリ６９０においてアクセスされるページのベースアドレスを含む。このページアドレス値６９０は、アクセスされるメモリの最終的なホスト物理的アドレス６３４を構成するため、ゲスト物理的アドレス６１０の下位オーダービット（１１：０）と合成される。
【００４８】
図６に示される実施例では、ＥＰＴテーブルは階層的なものである。それらは、従来のマルチレベルページテーブルと同様の構成とされている。さらに他の実施例では当業者には理解されるようにテーブルにアクセスする機構の応じて異なるサイズとされてもよいが、本例では、各ＥＰＴテーブルの各ＥＰＴテーブルエントリは８バイトとされる。本例では、各ＥＰＴテーブルは４ＫＢとされる。他の実施例では、異なるテーブルサイズが利用されてもよい。さらに、図６に示される階層によるすべてのテーブルが同一サイズを有する必要はない。このサイズ変更は、ＥＰＴテーブルの次のレベルをインデックス付けするためゲスト物理的アドレスから利用されるビット数に影響を与えるかもしれない。他の多数のＥＰＴテーブル設定が可能であるということは、当業者には明らかであろう。
【００４９】
図に示される階層的構成は３つのレベルの階層を示し、ＥＰＴテーブル６５０と６６０の２つがそれぞれ下位レベルＥＰＴテーブル６６０と６７０に対するインデックスとして用いられる。他の実施例では、このような階層的テーブルにおいて、２レベル以下、又は４レベル以上の階層とされるかもしれない。一般に、階層のレベル数は、ゲスト物理的アドレスのレベル数、各テーブルのサイズ及び各テーブルエントリのバイト数の少なくとも１以上に応じて変更されてもよい。図６の具体例のゲスト物理的アドレスは、３２ビットである。他の実施例では、ゲスト物理的アドレスは異なるサイズであってもよく、当該サイズ変更は、変換を実行するのに必要とされるＥＰＴテーブルのレベル数の変更を必要とするかもしれない。例えば、ゲスト物理的アドレスが４８ビットである場合、４レベルＥＰＴテーブルが変換を実行するのに必要とされる（各レベルにおいて４ＫＢのＥＰＴテーブルと各ＥＰＴテーブルの８バイトＥＰＴテーブルエントリを仮定する）。
【００５０】
図６に示される実施例では、ＥＰＴ制御は単一のフィールドであるＥＰＴポインタ（ＥＰＴＰ）を含む。当該フィールドは、第１レベルＥＰＴテーブルのベースアドレスを含む。本例では、各ＥＰＴテーブルは４ＫＢである。
【００５１】
図７に示される実施例において、ＥＰＴベースアドレスポインタ（ＥＰＴＰ）は、図６において上述されたような第１レベルＥＰＴテーブルのベースのベースアドレス（ホスト物理的メモリにおける）を構成するのに用いられるビットを含む。図７に示される例では、ビット５９：１２によりベースアドレスは構成される。ビット１１：０と６３：６０は、「０」と仮定される。もちろん、各ビットフィールドの幅は実施例に応じて可変とされてもよく、例えば、ベースアドレスフィールドは、特定のアーキテクチャ又は実現形態におけるアドレスビットのビット数に応じて可変とされる。ＥＰＴＰレジスタの残りのビットは、他の実施例では他の目的のため利用されるかもしれない。一実施例では、ＥＰＴＰレジスタは、バーチャルマシーンエントリ又はバーチャルマシーンイグジットを介してのみアクセス可能である。このような実施例では、プロセッサのＥＰＴＰレジスタが、バーチャルマシーンエントリの時点におけるＶＭＣＳのＥＰＴＰフィールドからロードされ、ゲストソフトウェアの動作中はＥＰＴ機構がアクティブ状態とされる。上述のように、当該アクティブ化（及びＥＰＴＰフィールドのロード処理）は、ＶＭＣＳ内又は何れかにおける他の制御ビットにより制御されるようにしてもよい。
【００５２】
図８は、ＥＰＴテーブルのエントリのフォーマットの実施例を示す。本例では、ＥＰＴテーブルの各エントリは８バイトである。一実施例では、各ＥＰＴテーブルは４ＫＢであり、このことは、ＥＰＴテーブルページごとにＥＰＴテーブルエントリが５１２あることを意味するものである。図８の実施例に示されるように、各ＥＰＴテーブルエントリは、メモリの次レベルＥＰＴテーブル又はページのベースホスト物理的アドレス（ＡＤＤＲ）、パーミッション及び他の設定情報を含む。上述のように、各ビットフィールドの幅は実施例に応じて変更されてもよく、例えば、ＡＤＤＲの幅は、特定のアーキテクチャ又は実現形態のアドレスビットのビット数に応じて変更されてもよい。図８は、「Ｐｒｅｓｅｎｔ」と「Ｗｒｉｔａｂｌｅ」の２つのパーミッションビットしか示していない。他の実施例では、他のパーミッション及び設定情報が、各ＥＰＴテーブルエントリに与えられてもよい。例えば一実施例では、メモリのあるページが実行可能な場合（すなわち、当該ページの内容が取り出され、プロセッサによる命令として解釈される場合）、パーミッションビットが設定される。
【００５３】
ＥＰＴテーブルは、各種フォーマットを有するようにしてもよい。例えば、それらは、シンプルな階層的テーブルとして図６に示されるように実現されてもよい。あるいは、それらは、シングルレベルページテーブルであってもよい（この場合、第１レベルＥＰＴテーブルのサイズは、ゲスト物理的アドレススペースの最大サイズを規定する）。あるいは、それらは、あるフォーマットではハッシュテーブルであってもよい。多数の可能な構成が実施例に応じて可能であるということは、当業者には明らかであろう。
【００５４】
ＥＰＴテーブルは、ホスト物理的メモリにおいて１以上のページサイズをサポートしてもよい。一実施例では、各ＥＰＴテーブルの各エントリは、ＥＰＴテーブルのウォーク（ｗａｌｋ）が当該ポイントで停止すべきことを示すスーパーページビットと、ＥＰＴテーブルエントリのアドレス情報を用いて構成されたホスト物理的アドレスと、ゲスト物理的アドレスの残りのビットとを含む。図６に示される例では、例えば、スーパーページビットがＥＰＴテーブル６６０において設定されている場合、ホスト物理的メモリの結果となるページは２ＭＢとなり、結果となるホスト物理的アドレスは、ゲスト物理的アドレス６１０のビット２０：０とＥＰＴテーブル６６０からのアドレスビットとを合成することにより構成されるであろう。
【００５５】
一部の実施例では、拡張ページングテーブルとＥＰＴアドレス変換機構が、バーチャルマシーンエントリによりイネーブルとされ、バーチャルマシーンイグジットによりイネーブル解除されてもよい。この結果、ＥＰＴ機構は、自らのアドレス変換を管理するため、ゲストソフトウェア又はＶＭＭソフトウェアの何れかによる使用に対して利用可能とならないかもしれない。さらにそのような実施例では、ＥＰＴ機構は、ＥＰＴ処理が従来のページ管理機構の特徴を利用してもよいが、ＩＡ−３２の実施例におけるＩＡ−３２ページングテーブルなどのように、ゲスト又はホストソフトウェアに利用可能な他の従来のメモリページ管理機構とは異なるものであって、独立なものとされてもよい。このため、ＥＰＴテーブルの構成及び処理は、ホストマシーンのＥＰＴ機構及びバーチャル化を用いるゲストソフトウェアの実行とは対照的に、従来のホストマシーン上での直接的なプログラム及び処理の実行のため、プロセッサにより与えられる他のページ変換機能と完全に区別されてもよい。一実施例では、ＥＰＴ機構は、ゲスト及びＶＭＭソフトウェアに利用可能であって、本実施例の従来のページ管理機構により利用されているものと同様のフォーマットによるテーブルを利用するようにしてもよい。しかしながら、ＥＰＴ機構を制御するテーブルは、依然としてゲストバーチャルアドレスからゲスト物理的アドレスへの変換の制御、又は、ホストバーチャルアドレスからホスト物理的アドレスへの変換の制御とは区別されてもよい。
【００５６】
与えられる実施例は実行ユニット及びロジック回路に関するバーチャルマシーンシステムの物理的メモリバーチャル化のサポートについて説明しているが、他の実施例では、ソフトウェアにより実現することも可能である。一部の実施例は、マシーンによるアクセス時に当該実施例のプロセスを実行する命令を格納したマシーン読み出し可能な媒体又はマシーンを構成するようなソフトウェアプログラムプロダクト又はソフトウェアとして提供されてもよい。他の実施例では、プロセスを実行するためのロジックを含む特定用途向けハードウェアコンポーネント、プログラムされたコンポーネントやカスタムハードウェアコンポーネントの任意の組み合わせによって、プロセスが実行されるかもしれない。
【００５７】
上記説明では、説明された実施例の完全なる理解を提供するため、多数の具体的詳細が与えられている。しかしながら、当業者は、他の多数の実施例がこのような具体的詳細なしに実現可能であるということを理解するであろう。
【００５８】
上記詳細な説明の一部は、プロセッサベースシステム内部のデータビットに対する処理の記号表現及びアルゴリズムに関して与えられる。このようなアルゴリズムによる記述及び表現は、当該技術分野における他の当業者に内容を最も効果的に伝えるのに利用される手段である。当該処理は、物理量の物理的操作を要する。これらの物理量は、電気、磁気、光信号、又は格納、転送、合成、比較及び操作可能な他の物理的信号の形態をとり得る。便宜上、これらの信号は、ビット、値、要素、シンボル、文字、項、番号などと呼ばれるかもしれない。
【００５９】
しかしながら、上記及び同様の用語のすべてが、適切な物理量と関連付けされ、当該物理量に付けられる単なる便宜上のラベルであるということに留意されたい。特段指定されていない場合、又は記載から明らかな場合、「実行」、「処理」、「計算」、「決定」などの用語は、プロセッサベースシステムのストレージ内の物理量として表されるデータを同様に表現された他のデータに変換及び操作するプロセッサベースシステム又は同様の電子計算装置、又は他の情報ストレージ、送信若しくは表示装置のアクション及びプロセスを表すものであるかもしれない。
【００６０】
実施例の説明では、添付された図面が参照されている。図面では、同一の番号は図面を通じて実質的に同様のコンポーネントを表している。他の実施例が利用可能であり、構造的、論理的及び電気的変更がなされるかもしれない。さらに、各種実施例は相互排他的なものである必要はない。例えば、一実施例による特定の機能、構成又は特徴は、他の実施例にも含めることが可能である。
【００６１】
さらに、プロセッサにおいて実現される実施例の構成は、制作からシミュレーション、そして製造までの各段階を経る。構成を表すデータは、いくつかの手法によりこの構成を表現可能である。まず、シミュレーションで有用なように、ハードウェアはハードウェア記述言語又は他の機能記述言語を用いて表現されるかもしれない。さらに、ロジック及び／又はトランジスタゲートを有する回路レベルモデルは、設計プロセスの段階において作成される。さらに、ほとんどの設計は、ハードウェアモデルの各種装置の物理的配置を表すデータレベルに到達する。従来技術による半導体製造技術が用いられる場合、ハードウェアモデルを表すデータは、集積回路を生成するのに利用されるマスクの異なるマスクレイヤ上の各種構成の有無を示すデータであってもよい。何れの設計表現においても、データは任意の形式のマシーン可読媒体に格納されるようにしてもよい。このような情報を送信するため変調又は生成される光波又は電波、メモリ、ディスクなどの磁気又は光ストレージが、マシーン可読媒体であるかもしれない。上記媒体の何れも、設計又はソフトウェア情報を「搬送」又は「示す」ことが可能である。コード又は設計を示す、又は搬送する電気搬送波が送信されると、当該電気信号の複製、バッファリング又は再送が行われる程度まで、新たなコピーが行われる。このため、通信プロバイダ又はネットワークプロバイダは、実施例を表現又は構成する物品（搬送波）を複製することが可能である。
【００６２】
マシーンによるアクセス時に、本発明によるプロセスをマシーンに実行させるデータを格納したマシーン可読媒体を有するプログラムプロダクトとして、実施例が提供されてもよい。このマシーン可読媒体は、以下に限定されるものではないが、フロッピー（登録商標）ディスケット、光ディスク、ＤＶＤ−ＲＯＭディスク、ＤＶＤ−ＲＡＭディスク、ＤＶＤ−ＲＷディスク、ＤＶＤ＋ＲＷディスク、ＣＤ−Ｒディスク、ＣＤ−ＲＷディスク、ＣＤ−ＲＯＭディスク、光磁気ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光カード、フラッシュメモリ、又は電子命令を格納するのに適した他のタイプのメディアマシーン可読媒体を含むかもしれない。さらに、プログラムプロダクトとして実施例がダウンロードされてもよい。当該プログラムは、通信リンク（モデム、ネットワーク接続など）を介し、搬送波や他の伝搬媒体として実現されるデータ信号によりリモートデータソースから要求元装置に転送されるようにしてもよい。
【００６３】
上記方法の多くは最も基本的形式により記述されるが、本発明の基本的範囲から逸脱することなく、いくつかのステップが上記方法から削除又は追加可能であり、記載されたメッセージの何れかから情報が削除又は追加することも可能である。さらなる多数の変更及び適応が可能であるということは、当業者には明らかであろう。実施例は、本発明を限定するものでなく、例示するために与えられている。本発明の範囲は、与えられた実施例によってではなく、請求項によってのみ決定されるべきものである。
【符号の説明】
【００６４】
１２０  プロセッサ
１２５  マシーン
２４２、２５７  バーチャルマシーン
２４５、２５５  バーチャルプロセッサ
２６５  ホストプロセッサ
２６７  ホストマシーン
３００  バーチャルマシーン環境
３１２  バーチャルマシーンモニタ（ＶＭＭ）
３１６  プラットフォームハードウェア
３２４  バーチャルマシーン制御構成（ＶＭＣＳ）
３２８  拡張ページテーブル（ＥＰＴ）テーブル
【図１】
2010123148.tif 000003
【図２】
2010123148.tif 000004
【図３】
2010123148.tif 000005
【図４ａ】
2010123148.tif 000006
【図４ｂ】
2010123148.tif 000007
【図５】
2010123148.tif 000008
【図６】
2010123148.tif 000009
【図７】
2010123148.tif 000010
【図８】
2010123148.tif 000011