(57)【特許請求の範囲】
【請求項１】
デバイスに割当てられたメモリアドレスを利用して前記デバイスにアクセスするゲストの試みに応答して、アクセスタイプに基づき、前記アクセスが許可されるか判断する評価ロジックと、
前記アクセスは許可されないと前記評価ロジックが判断した場合、前記ゲストからホストに当該装置の制御を移行するイグジットロジックと、
を有する装置であって、
前記評価ロジックはさらに、前記アクセスがインタラプトコントローラのタスク優先度レジスタへのライトアクセスである場合、前記アクセスはシャドウ位置に対して値を書き込むため許可されると判断し、
前記イグジットロジックはさらに、前記シャドウ位置に書き込まれた値が所定の閾値未満である場合、前記ゲストから前記ホストに当該装置の制御を移行する、
ことを特徴とする装置。
【請求項２】
評価ロジックが、デバイスに割当てられたメモリアドレスを利用して、前記デバイスにアクセスする試みを検出するステップと、
前記評価ロジックが、前記アクセスがインタラプトコントローラのタスク優先度レジスタへのライトアクセスであると判断し、シャドウ位置に値を書き込むため前記アクセスを許可するステップと、
イグジットロジックが、前記シャドウ位置に書き込まれた値が所定の閾値未満である場合、ゲストからホストに制御を移行するステップと、
を有することを特徴とする方法。
【請求項３】
メモリと、
デバイスに割当てられたメモリアドレスを利用して前記デバイスにアクセスするゲストの試みに応答して、アクセスタイプに基づき、前記アクセスが許可されるか判断する評価ロジックと、前記アクセスは許可されないと前記評価ロジックが判断した場合、ゲストからホストに当該プロセッサの制御を移行するイグジットロジックとを有するプロセッサと、
を有するシステムであって、
前記評価ロジックはさらに、前記アクセスがインタラプトコントローラのタスク優先度レジスタへのライトアクセスである場合、前記アクセスはシャドウ位置に対して値を書き込むため許可されると判断し、
前記イグジットロジックはさらに、前記シャドウ位置に書き込まれた値が所定の閾値未満である場合、前記ゲストから前記ホストに前記プロセッサの制御を移行する、
ことを特徴とするシステム。
【請求項４】
請求項３記載のシステムであって、
前記メモリは、前記ゲストに対するバーチャルマシーンの制御構造を格納することを特徴とするシステム。
【請求項５】
請求項４記載のシステムであって、
前記制御構造は、前記イグジットロジックが、前記評価ロジックの判断に関係なく、前記ゲストから前記ホストに前記プロセッサの制御を移行することを示す標識を有することを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理の技術分野に関し、より詳細には、情報処理システムにおけるリソースの仮想化に関する。
【背景技術】
【０００２】
一般に、情報処理システムにおけるリソースの仮想化（ｖｉｒｔｕａｌｉｚａｔｉｏｎ）のコンセプトは、１以上のオペレーティングシステム（ＯＳ）の複数のインスタンスが、各ＯＳがシステムとそれのリソースに対して完全かつ直接的な制御を有するよう設計されていても、１つの情報処理システム上で実行することを可能にする。仮想化は、典型的には、ソフトウェア（バーチャルマシーンモニタ、すなわち、ＶＭＭなど）を利用して、ＯＳが完全かつ直接的に制御可能な１以上の仮想プロセッサを含む仮想リソースを有する「バーチャルマシーン（ＶＭ）」を各ＯＳに提供することにより実現されるが、ＶＭＭは、仮想化環境（ＶＭ）における物理リソースの共有化及び／又は割当てなど、仮想化ポリシーを実現するためシステム環境を維持する。ＶＭ上で実行される各ＯＳ及び他の何れかのソフトウェアは、「ゲスト」又は「ゲストソフトウェア」と呼ばれ、「ホスト」又は「ホストソフトウェア」は、仮想化環境の外部で実行され、仮想化環境を認識した又は認識していないＶＭＭなどのソフトウェアである。
【０００３】
情報処理システムにおけるプロセッサは、例えば、ＶＭ上でゲストを実行するため、仮想化環境に入る命令をサポートすることによって、仮想化をサポートするかもしれない。仮想化環境では、優先されるレジスタ又はリソースにアクセスするための外部のインタラプト又は試みなど、特定のイベント、処理及び状況は、インターセプト（ｉｎｔｅｒｃｅｐｔ）され、すなわち、ＶＭＭが例えば、仮想化ポリシーを実現するため動作可能となるように、プロセッサに仮想化環境から離脱させるかもしれない。物理プロセッサはまた、仮想化環境を維持するための他の命令をサポートするようにしてもよく、物理プロセッサの仮想化機能を表示又は制御するメモリ又はレジスタビットを有するかもしれない。
【０００４】
システムの優先的リソースは、入出力（Ｉ／Ｏ）デバイスがあるメモリアドレスに変換されたＩ／Ｏトランザクション及び／又はメモリトランザクションを介しアクセス可能なＩ／Ｏデバイス（メモリ変換デバイス（ｍｅｍｏｒｙ−ｍａｐｐｅｄ  ｄｅｖｉｃｅ））を有するかもしれない。Ｉ／Ｏトランザクションは、ゲストがＩ／Ｏデバイスに直接アクセスすることを回避するためインターセプトされるかもしれない。メモリ変換されたＩ／Ｏデバイスへのメモリトランザクションは、Ｉ／Ｏデバイスが変換されたページを非プレゼント（ｐｒｅｓｅｎｔ）又は非ライタブル（ｗｒｉｔａｂｌｅ）とマークすることによって、ページベースメモリ管理アーキテクチャによりインターセプトされるかもしれない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の課題は、上記問題点に鑑み、効果的な情報処理システムにおけるリソースの仮想化を実現する方法、装置及びシステムを提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明は、デバイスに変換されたメモリアドレスを利用した前記デバイスにアクセスするゲストの試みに応答して、アクセスタイプに基づき、前記アクセスが許可されるか判断する評価ロジックと、前記アクセスは許可されないと前記評価ロジックが判断した場合、前記ゲストからホストに当該装置の制御を移行するイグジットロジックとから構成されることを特徴とする装置を提供する。
【０００７】
本発明はまた、デバイスに変換されるメモリアドレスを利用して、前記デバイスにアクセスする試みを検出するステップと、アクセスタイプに基づき、前記アクセスが許可されているか判断するステップと、前記アクセスが許可されていない場合、前記ゲストからホストに制御を移行するステップとから構成されることを特徴とする方法を提供する。
【０００８】
本発明はまた、メモリと、デバイスに変換されたメモリアドレスを利用した前記デバイスにアクセスするゲストの試みに応答して、アクセスタイプに基づき、前記アクセスが許可されるか判断する評価ロジックと、前記アクセスは許可されないと前記評価ロジックが判断した場合、前記ゲストからホストに当該プロセッサの制御を移行するイグジットロジックとを有するプロセッサとから構成されることを特徴とするシステムを提供する。
【発明の効果】
【０００９】
本発明によると、効果的な情報処理システムにおけるリソースの仮想化を実現する方法、装置及びシステムを提供することが可能となる。
【発明を実施するための最良の形態】
【００１０】
以下において、ゲストがメモリ変換デバイスにアクセスするための装置、方法及びシステムの実施例が説明される。本記載では、本発明のより完全なる理解を提供するため、コンポーネント、システムコンフィギュレーションなどの多数の具体的詳細が与えられる。しかしながら、本発明がこのような具体的詳細なしに実現可能であることは、当業者により理解されるであろう。さらに、いくつかの周知の構成、回路などは、本発明を不要に不明りょうにすることを回避するため、詳細には説明されない。
【００１１】
仮想化環境のパフォーマンスは、インターセプトされるイベントの頻度が最小化される場合、向上するかもしれない。本発明の実施例は、メモリ変換デバイスの仮想化をサポートするのに利用可能であり、仮想化環境におけるパフォーマンスを向上させるのに効果的であるかもしれない。一実施例では、それらは、Ｐｅｎｔｉｕｍ（登録商標）系プロセッサにおけるＡＰＩＣ（Ａｄｖａｎｃｅｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）のＴＰＲ（Ｔａｓｋ  Ｐｒｉｏｒｉｔｙ  Ｒｅｇｉｓｔｅｒ）の仮想化をサポートするのに利用可能である。本実施例では、ＴＰＲへのすべてのゲストアクセスがＶＭＭによりインターセプトされる仮想化環境において、ＴＰＲへの一部のゲストアクセスに対するＶＭＭのインターセプトを不要にすることによりパフォーマンスを向上させるかもしれない。
【００１２】
図１は、本発明の実施例が動作可能な仮想化アーキテクチャ１００を示す。図１において、ベアプラットフォーム（ｂａｒｅ  ｐｌａｔｆｏｒｍ）ハードウェア１１０は、任意のＯＳ又はＶＭＭソフトウェアを実行可能な任意のデータ処理装置であってもよい。例えば、ベアプラットフォームハードウェアは、パーソナルコンピュータ、メインフレームコンピュータ、ポータブルコンピュータ携帯装置、セットトップボックス、サーバ又は他の何れかの計算システムのものであるかもしれない。ベアプラットフォームハードウェア１１０は、プロセッサ１２０、メモリ１３０、入出力（Ｉ／Ｏ）デバイス１１１及びチップセット１１２を有する。
【００１３】
プロセッサ１２０は、Ｐｅｎｔｉｕｍ（登録商標）系プロセッサ、Ｉｔａｎｉｕｍ（登録商標）系プロセッサ、インテルコーポレイションからの他のプロセッサ、若しくは他の企業からのプロセッサなどの汎用マイクロプロセッサ、又はデジタル信号プロセッサ若しくはマイクロコントローラを含む任意のタイプのプロセッサであってもよい。図１は、１つのプロセッサ１２０しか示していないが、ベアプラットフォームハードウェア１１０は、各々が任意数の実行コアを備えた任意数のマルチコアプロセッサと、各々が任意数のスレッドを備えた任意数のマルチスレッドプロセッサとを含む任意数のプロセッサを含むかもしれない。
【００１４】
メモリ１３０は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、半導体ベースＲＯＭ、フラッシュメモリ、磁気ディスクメモリ、光ディスクメモリ、プロセッサ１２０により可読な他の任意のタイプの媒体又はこのような媒体の何れかの組み合わせであってもよい。メモリ１３０は、何れかのアドレッシング技術によりアドレス指定可能であり、ベアプラットフォームハードウェア１１０に図示される、又は図示されない何れかのデバイスが、メモリ１３０のアドレス領域内のアドレスに変換されるかもしれない。
【００１５】
Ｉ／Ｏデバイス１１５は、モニタ、キーボード、マウス、プリンタ、ネットワークインタフェース、情報ストレージ装置などの任意数の周辺又はＩ／Ｏデバイスを表すかもしれない。チップセット１１１は、システムロジック、バスコントロール、バスインタフェース、バスブリッジ、メモリコントロール、周辺デバイスコントロール、周辺デバイス機能、システムコンフィギュレーションなど任意数のタスクを実行する任意数のコンポーネントを含むかもしれない。いくつかの実施例では、Ｉ／Ｏデバイス１１５は、通常のメモリアクセス命令を用いて１以上のアドレス領域を介し、すなわち、メモリ変換インタフェースを介しアクセスされるかもしれない。メモリ変換Ｉ／Ｏデバイスは、それを介しアクセス可能とされる少なくも１つのそのようなアドレス領域を有する。
【００１６】
プロセッサ１２０、メモリ１３０、Ｉ／Ｏデバイス１１５及びチップセット１１１は、例えば、１以上のバス、ポイント・ツー・ポイント又は他の有線又は無線接続を直接的又は間接的に介するなど、何れか既知のアプローチに従って互いに接続又は通信するようにしてもよい。ベアプラットフォームハードウェア１１０はまた、任意数のさらなるデバイス又は接続を有するようにしてもよい。
【００１７】
ベアプラットフォームハードウェア１００に加えて、図１は、ＶＭＭ１４０、ＶＭ１５０と１６０、ゲストＯＳ及びアプリケーション１５２、１５４、１５５、１６２、１６４と１６５を示す。
【００１８】
ＶＭＭ１４０は、ＶＭ、すなわち、ベアプラットフォームハードウェア１１０のアブストラクションをゲストに提供し、あるいは、ＶＭを生成及び管理し、仮想化環境１００の内部で仮想化ポリシーを実現するため、ベアプラットフォームハードウェア１１０にインストール又はアクセス可能な任意のソフトウェア、ファームウェア又はハードウェアホストであってもよい。他の実施例では、ホストは、ベアプラットフォームハードウェア１１０を制御可能な任意のＶＭＭ、ハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）、ＯＳ、他のソフトウェア、ファームウェア又はハードウェアであってもよい。ゲストは、任意のＯＳ、ＶＭＭ１４０のインスタンスを含む任意のＶＭＭ、ハイパーバイザ、アプリケーション又は他のソフトウェアであってもよい。
【００１９】
各ゲストは、ＶＭに提供されるプラットフォーム及びプロセッサのアーキテクチャに従って、ベアプラットフォームハードウェア１１０のプロセッサ、プラットフォームレジスタ、メモリ及び入出力デバイスなどの物理リソースにアクセスすることを期待する。図１は、２つのＶＭ１５０と１６０を示し、ＶＭ１５０にはゲストＯＳ１５２及びゲストアプリケーション１５４と１５５がインストールされ、ＶＭ１６０にはゲストＯＳ１６２及びゲストアプリケーション１６４と１６５がインストールされている。図１は、２つのＶＭと各ＶＭに２つのアプリケーションしか示していないが、本発明の範囲内において、任意数のＶＭが生成可能であり、任意数のアプリケーションが各ＶＭ上で実行可能である。
【００２０】
ゲストによってアクセス可能なリソースは、「優先（ｐｒｉｖｉｌｅｇｅｄ）」又は「非優先（ｎｏｎ−ｐｒｉｖｉｌｅｇｅｄ）」リソースとして分類されるかもしれない。優先リソースについて、ＶＭＭ１４０は、リソースに対する最終的な制御を維持しながら、ゲストによって所望される機能を実現する。非優先リソースは、ＶＭＭ１４０によって制御される必要はなく、ゲストによって直接的にアクセスされるかもしれない。
【００２１】
さらに、各ゲストＯＳは、例外処理（ページフォルト、一般的なプロテクションフォルトなど）、インタラプト（ハードウェアインタラプト、ソフトウェアインタラプトなど）、プラットフォームイベント（初期化、システム管理インタラプトなど）などの各種イベントを処理することを期待する。これら例外処理、インタラプト及びプラットフォームイベントは、ここではまとめて「イベント」と呼ばれる。これらのイベントの一部は「優先」される。なぜなら、ＶＭ１５０と１６０の適切な処理、ゲストからのＶＭＭ１４０のプロテクション及び互いからのゲストのプロテクションを保証するため、ＶＭＭ１４０により処理される必要があるためである。
【００２２】
何れか所与の時点において、プロセッサ１２０は、ＶＭＭ１４０又は何れかのゲストからの命令を実行しているかもしれず、これにより、ＶＭＭ１４０又はゲストは、プロセッサ１２０上で実行又は制御されるかもしれない。優先イベントが実行されるとき、又はゲストが優先リソースにアクセスしようとするとき、コントロールは、ゲストからＶＭＭ１４０に移行するかもしれない。ゲストからＶＭＭ１４０へのコントロールの移行は、ここでは「ＶＭイグジット（ｅｘｉｔ）」と呼ばれる。イベント処理後、又はリソースへのアクセスを適切に実現した後、ＶＭＭ１４０は、ゲストにコントロールを返すかもしれない。ＶＭＭ１４０からゲストへのコントロールの移行は、「ＶＭエントリ（ｅｎｔｒｙ）」とここでは呼ばれる。
【００２３】
図１の実施例では、プロセッサ１２０は、バーチャルマシーンコントロール構成（ＶＭＣＳ）１３２に格納されているデータに従って、ＶＭ１５０と１６０の動作を制御する。ＶＭＣＳ１３２は、ゲストの状態、ＶＭＭ１４０の状態、ＶＭＭ１４０がゲストの動作をどのように制御するか示す実行制御情報、ＶＭイグジット及びＶＭエントリに関する上記又は他の任意のそのような情報を含むかもしれない構成である。プロセッサ１２０は、ＶＭの実行環境を決定し、それの動作を制限するための情報をＶＭＣＳ１３２から読み出す。本実施例では、ＶＭＣＳ１３２は、メモリ１３０に格納されている。いくつかの実施例では、複数のＶＭＣＳが複数のＶＭをサポートするのに利用される。図１は、メモリ１３０に格納されているＶＭＣＳ１３２を示すが、ＶＭＣＳをメモリに格納することは、本発明によって要求されるものではない。
【００２４】
プロセッサ１２０は、インタラプトリクエストを受付、生成、優先順位付け、送信、保留、制御又は管理するためのインタラプトコントローラ１２２を有するかもしれない。例えば、インタラプトコントローラ１２２は、Ｐｅｎｔｉｕｍ（登録商標）系プロセッサのアーキテクチャに従って、ローカルなＡＰＩＣ（Ａｄｖａｎｃｅｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）であるかもしれない。チップセット１１１はまた、インタラプトコントローラ１１２に加えて、それと共に、又はその代わりに、インタラプトリクエストを受付、生成、優先順位付け、送信、保留、制御又は管理するためのインタラプトコントローラ１１２を有するかもしれない。例えば、インタラプトコントローラ１１２は、Ｉ／Ｏ  ＡＰＩＣであってもよい。プロセッサ１２０及び／又はチップセット１１１は、他の何れかのインタラプトコントローラを有するようにしてもよく、また、図１に図示されない他の何れかのプロセッサ、チップセット又はコンポーネントは、インタラプトコントローラを有するようにしてもよく、また、インタラプトリクエストは、他の何れかのアプローチに従って制御又は管理されるようにしてもよい。
【００２５】
プロセッサ１２０は、レジスタ又は他のコントロール、コンフィギュレーション状態、情報ストレージ構成又は位置１２３及び１２４を有するメモリ変換デバイス１２２を有するかもしれない。例えば、メモリ変換デバイス１２２はＡＰＩＣであるかもしれず、ストレージ位置１２３はＴＰＲであるかもしれず、ストレージ位置１２４は他の何れかのＡＰＩＣレジスタ又はレジスタの一部であるかもしれない。チップセット１１１はまた、ストレージ位置１１３及び１１４を備えたメモリ変換デバイス１１２を有するかもしれず、Ｉ／Ｏデバイス１１５はまた、ストレージ位置１１６及び１１７を有するメモリ変換デバイスであってもよい。プロセッサ１２０及び／又はチップセット１１１は、さらなるメモリ変換デバイスを有するかもしれず、他の何れかのＩ／Ｏデバイスは、メモリ変換デバイスであるかもしれず、図１に図示されない他の何れかのプロセッサ、チップセット又はコンポーネントは、本発明の実施例によりゲストによりアクセスされるメモリ変換デバイスであるかもしれない。ストレージ位置１２３、１２４、１１６及び１１７は、上述されるように、Ｉ／Ｏ命令及び／又はメモリアクセスを介しアクセス可能であるかもしれない。従って、ストレージ位置へのアクセスを参照する際、以下の記載は、ストレージ位置に対応するＩ／Ｏポート又はメモリ領域へのアクセスを意味するものと解釈されるべきである。このようなストレージは、Ｉ／Ｏデバイスのメモリによりバックされるか、あるいはＩ／Ｏデバイスにより提供される機能とのインタフェースを提供するかもしれない。
【００２６】
プロセッサ１２０はまた、プロセッサ１２０がチップセット１１１などの他の何れかのコンポーネントを介し又は直接的に、何れかのタイプのバス、ポイント・ツー・ポイント又は他の接続を介しメモリ１３０と通信することを可能にするため、バスユニット又は他の何れかのユニット、ポート又はインタフェースであるかもしれないメモリ１３０とのインタフェース１２１を有する。
【００２７】
さらに、プロセッサ１２０は、デバイス１２２、１１２及び１１５などのメモリ変換デバイスへのアクセスの仮想化を含む仮想化をサポートするコントロールロジック１２５を含む。コントロールロジック１２５は、プロセッサ１２０内部のマイクロコード、プログラマブルロジック、ハードコードロジック又は他の何れかの形式のコントロールロジックであってもよい。他の実施例では、コントロールロジック１２５は、プロセッサ内部、又はメモリ１３０などのプロセッサにより可読又はアクセス可能な任意のコンポーネント内部のプロセッサアブストラクションレイヤなどの任意の形式によるハードウェア、ソフトウェア又はファームウェアにより実現可能である。
【００２８】
コントロールロジック１２５は、例えば、プロセッサ１２０にホストからゲストへの仮想化命令又は他の命令に応答して仮想化をサポートするため、プロセッサ１２０に１以上のマイクロオペレーションを実行させることによって、図２及び３に示される方法などの本発明の実施例による方法を実行させる。
【００２９】
コントロールロジック１２５は、シャドウロジック１２６、評価ロジック１２７及びイグジットロジック１２８を有する。シャドウロジック１２６は、後述されるように、メモリ変換デバイスのシャドーイングをサポートする。評価ロジック１２７は、ゲストがメモリ領域（メモリ変換デバイスのストレージなど）にアクセスする試みが可能であるか判断する。イグジットロジック１２８は、上記試みが可能でない場合、ＶＭイグジットを準備及び発生させる。これらロジックユニットのそれぞれはまた、他のロジックユニットにより実行されるものとして記載されるものを含むさらなる機能を実行するようにしてもよく、上記ロジックユニットの何れか又はすべては、１つのロジックユニットに一体化されるようにしてもよい。
【００３０】
ＶＭＣＳ１３２は、デバイス１２２、１１２及び１１５などのメモリ変換デバイスの仮想化をサポートするため、フィールド、コントロールビット又は他のデータ構造を含むかもしれない。これらのデータ構造は、ＶＭ環境の管理方法を決定するため、コントロールロジック１２５によりチェック又は参照されるかもしれない。例えば、インターセプトコントロールビット１３４は、後述されるように、メモリ変換デバイスのストレージ位置のシャドウ又は仮想化コピーにアクセスしようとするゲストによる特定の試みをＶＭイグジットにするよう設定されるかもしれない。本実施例の説明では、これらコントロールビットは、所望の効果を可能又は発生させるよう設定される。ここでは、設定とは、論理「１」を当該ビットに書き込むことを意味するが、何れかの論理的用語が、本発明の範囲内で利用可能である。
【００３１】
またＶＭＣＳ１３２において、シャドウアドレスフィールド１３５は、メモリ変換デバイスのストレージ位置のシャドウ又は仮想化コピーが格納可能なメモリ位置のアドレスを格納するのに利用可能である。例えば、ストレージ位置１２３がＴＰＲである場合、シャドウアドレスフィールド１３５は、タスク優先の仮想コピーが仮想ＡＰＩＣページのオフセット８０ＨにおいてＴＰＲフィールドのビット７：４に格納されるように、４キロバイトの仮想ＡＰＩＣページのメモリの位置を決定する６４ビットフィールドであるかもしれない。他の実施例では、ＶＭＣＳ１３２は、ストレージ位置１２３に格納されることが所望される値のシャドウコピーを、当該値に対するメモリ位置へのポインタの代わりに直接格納するためのフィールドを有するかもしれない。例えば、ＶＭＣＳ１３２は、ＴＰＲに格納されることが所望される値の仮想コピーを直接格納する４ビットフィールドを有するかもしれない。
【００３２】
図２及び３は、本発明の実施例による方法を示す。各実施例はこれに限定されるものではないが、図２及び３の実施例を説明するため、図１の仮想化環境１００が参照される。本記載は、「メモリ変換デバイスへのアクセス」、「ストレージへのアクセス」などの用語を使用するが、このような用語は、これらのアクセスが通常のメモリアクセス命令を介し行われることを意味する。
【００３３】
図２は、ゲストがメモリ変換デバイスにアクセスするためＶＭＭがサポートを初期化する方法の実施例を示す。
【００３４】
図２のボックス２１０では、図１のＶＭＭ１４０は、ＶＭに対するＶＭＣＳ（ＶＭＣＳ１３２など）を生成する。ボックス２１２〜２１６において、ＶＭＭ１４０は、メモリ変換デバイス１２２などのメモリ変換デバイスの仮想化を実現するようＶＭＣＳ１３２を構成する。
【００３５】
ボックス２１４において、ストレージ位置１２３のシャドウコピーを格納するためのメモリ位置のアドレスが、アドレスフィールド１３５に書き込まれる。上述したように、アドレスは、シャドウ位置として使用されるべきメモリ位置のアドレスを決定するため、オフセットが追加されるベースアドレスであってもよいし、あるいは、シャドウ位置のアドレスであってもよい。あるいは、シャドウ値は、当該シャドウ値へのポインタでなく、ＶＭＣＳに直接格納されてもよい。一実施例では、ＶＭＭ１４０は、シャドウ値を格納するメモリを割り当てるかもしれない。
【００３６】
ボックス２１６において、インターセプトコントロールビット１３４は、図３を参照して説明されるように、メモリ変換デバイス１２２のストレージ位置１２３のシャドウ又は仮想コピーにアクセスするゲストによる試みが、ＶＭイグジットに発生させるよう設定される。本実施例では、図３を参照してさらに説明されるように、メモリ変換デバイス１２２がまたシャドーイングされないストレージ位置１２４を有するようにしてもよいということに留意されたい。
【００３７】
図３は、ゲストがメモリ変換デバイスにアクセスするための方法の実施例を示す。
【００３８】
図３のボックス３１０において、ＶＭエントリが実行され、コントロールがゲストに移行される。ボックス３２０において、ゲストは、ＶＭ上での実行を開始又は継続する。ボックス３３０において、ゲストは、メモリ変換デバイス１２２に割り当てられたメモリの領域のアドレスへのメモリアクセスを試みる。このメモリアクセスは、リード、ライト、実行又はリード変更ライトの試行であるかもしれない。メモリアクセスは、バスロッキング表示などの特別な限定子を有するかもしれない。メモリアクセスは、明示的なものであってもよいし（例えば、データアクセス、スタックリード、命令フェッチなど）、あるいは非明示的なものであってもよい（例えば、ＴＬＢミスに続くページテーブルデータのフェッチ、ページテーブルへのアクセスされた又はダーティビットのライト、セグメント記述子のリードなど）であってもよい。評価ロジック１２７は、アドレス比較器を用いて、又は他の既知のアプローチを介して試行されたアクセスを検出するようにしてもよい。一実施例では、メモリアクセスの検出は、物理アドレスの解析により実行されてもよい。他の実施例では、リニア又は仮想アドレスが利用される。
【００３９】
メモリ変換デバイスは、ゲストが当該デバイスにおいて利用可能なすべてのストレージ位置のシャドウ又は仮想コピーにアクセス可能である場合、完全にシャドーイングされたとみなされるかもしれない（例えば、メモリ変換デバイスが何れもシャドーイングされたストレージ位置１２３及び１２４のみを有する場合など）。メモリ変換デバイスは、ゲストが当該デバイスにおいて利用可能なストレージ位置の少なくとも１つのシャドウ又は仮想コピーにアクセス可能である場合、部分的にシャドーイングされたとみなされるかもしれない（例えば、ストレージ位置１２３がシャドーイングされているが、ストレージ位置１２４ではない場合など）。いくつかの実施例では、メモリ変換デバイスの何れのストレージ位置にゲストがアクセスしようとしているかに応じて、複数のコントロールビット又は異なるコントロールビットがチェックされるかもしれない。
【００４０】
ボックス３４０において、メモリ変換デバイス１２２に対するインターセプト機構がイネーブルとされていない場合、ボックス３９０において、イグジットロジック１２８は、ＶＭＭがアクセスを処理するのを可能にするため、ＶＭイグジットを発生させる。他方、ボックス３４０において、メモリ変換デバイスに対するインターセプト機構がイネーブルである場合、本方法３００は、ボックス３６０に移行する。ボックス３６０において、評価ロジック１２７は、アクセスが許可されるべきか判断する。アクセスが許可されていない場合、ボックス３９０において、イグジットロジック１２８は、ＶＭＭがアクセスを処理するのを可能にするため、ＶＭイグジットを発生させる。
【００４１】
しかしながら、ボックス３５０において、インターセプトコントロールビット１３４がイネーブルである場合、本方法３００は、ボックス３６０に移行する。ボックス３６０において、評価ロジック１２７は、アクセスが許可されるべきか判断する。アクセスが許可されていない場合、ボックス３９０において、エグジットロジック１２８は、ＶＭＭがアクセスを処理するのを可能にするため、ＶＭイグジットを発生させる。
【００４２】
アクセスが許可されるべきか否かの判定は、試行されるアクセスのタイプに基づくかもしれない。一実施例では、リードアクセスは許可されるかもしれないが、ライトアクセスは許可されないかもしれない。一実施例では、実行の試みは許可されないかもしれない。一実施例では、リード変更ライトの試みは、許可されないかもしれない。いくつかの実施例では、非明示的なアクセスは許可されないかもしれない。アクセスタイプに基づく他の制限もまた可能である。他の実施例では、アクセスが許可されるか否かは、アクセスがシャドーイングされた位置であるか、シャドーイングされていない若しくは部分的にシャドーイングされた位置に対するものであるかに依存するかもしれない。従って、アクセスタイプは、シャドーイングされた、シャドーイングされていない、又は部分的にシャドーイングされたとなるかもしれない。例えば、アクセスがデバイス１２２の位置１２３など、シャドーイングされた位置に対するものである場合、当該アクセスは許可されるが、アクセスが、シャドーイングされた位置１２３とシャドーイングされていない位置１２４の両方を含む位置などの部分的にシャドーイングされた位置や、デバイス１２２のデバイス１２４などのシャドーイングされていない位置に対するものである場合、当該アクセスは許可されないかもしれない。他のアクセスタイプもまた、本発明の範囲内で可能であるかもしれない。
【００４３】
メモリ変換デバイス１２２がＡＰＩＣである実施例が、さらなる実施例として説明される。試行されるアクセスは、ＴＰＲにアクセスしようとする命令であるかもしれない（当該アクセスは、ＴＰＲがシャドーイングされているため、実際にはＴＰＲの仮想コピー（Ｖ−ＴＰＲ）に対するものとなるであろう）。このような命令は、仮想ＡＰＩＣ（Ｖ−ＡＰＩＣ）ページに対する１以上のアクセスを引き起こすかもしれない。当該命令がＶ−ＴＰＲからのリードを有し、Ｖ−ＡＰＩＣへの他の何れのアクセスも有しない場合、当該リードが許可されるかもしれない。当該命令がＶ−ＡＰＩＣページへの他のアクセスなしにＶ−ＴＰＲへのライトを含む場合、当該ライトは許可されるかもしれず、シャドウロジック１２６は、Ｖ−ＴＰＲフィールドのビット１２７：８が、当該ライトの後にクリアされることを保証する（すなわち、シャドウロジックは、後述されるような特別な処理を実行するであろう）。Ｖ−ＡＰＩＣを利用した実施例における上記２つの命令は、ＴＰＲがシャドーイングされているため、アクセスタイプがシャドーイングされている、シャドーイングされていない、又は部分的にシャドーイングされている場合には、シャドウアクセスであるとみなされるかもしれない。一実施例では、シャドウロジック１２６は、シャドーイングされたストレージの一部又は他のストレージ位置若しくはマシーンレジスタに対する適切な更新を実行するかもしれない。例えば、一実施例では、シャドーイングされたストレージ位置の一部に対するライトは、無視されるかもしれない。他の実施例では、読み出し専用であるシャドーイングされたストレージ位置のリードは、シャドウメモリに格納されている値に関係なく、ゼロなどの対応するリザーブされている値を常に返すかもしれない。
【００４４】
Ｖ−ＡＰＩＣを利用した実施例における他の命令は、部分的にシャドーイングされているとみなされるかもしれない。命令がＶ−ＴＰＲへのアクセスとＶ−ＡＰＩＣの他の位置へのアクセス（すなわち、シャドーイングされていない）を含む場合、ＶＭイグジットが実行される。
【００４５】
ボックス３６０において、アクセスが許可されるべきであると評価ロジック１２７が判断した場合、ボックス３７０において、評価ロジック１２７は、特別な処理が必要であるか判断する。特別な処理は、コントロールロジック１２５により実行可能な試みられたアクセスの処理を含むかもしれない。上記において、Ｖ−ＴＰＲへのライトを含む命令に関するものが与えられた。また他の実施例では、Ｖ−ＡＰＩＣを利用することは、命令がＶ−ＴＰＲへの複数のアクセスを含む場合である。この場合、特別な処理は、命令の実行を可能にするためのものであるが、ＶＭイグジットを発生させるためのものであるかもしれない。
【００４６】
ボックス３７０において、特別な処理を必要としないと評価ロジック１２７が判断した場合、ボックス３５２において、シャドウロジック１２６は、メモリ変換デバイス１２２の仮想バージョンを用いてゲストアクセスを実行させ、本方法３００は、ゲストが実行を継続するためボックス３２０に戻る。他方、特別な処理が必要であると評価ロジック１２７が判断した場合、ボックス３７２において、コントロールロジック１２５が当該特別な処理を実行する。この特別な処理は、後述されるように、メモリ変換デバイス１２２の仮想バージョンを利用して、ゲストアクセスを全体的又は部分的に実行することを含むかもしれない。
【００４７】
ボックス３８０において、特別な処理がＶＭイグジットを含むかコントロールロジック１２５が判断する。ＶＭイグジットを含む場合、ボックス３９０において、イグジットロジック１２８は、ＶＭイグジットを発生させる。ＶＭイグジットを含まない場合、本方法３００は、ゲストが実行を継続するためボックス３２０に戻る。
【００４８】
一実施例では、特別な処理は、ＡＰＩＣにおけるＴＰＲの仮想化をサポートするため設けられるかもしれない。本実施例では、ＴＰＲへのライトは、常にシャドウに書き込むことを許可されるかもしれない。書き込まれた値がＶＭＭにより指定される閾値（ＶＭＣＳのフィールドに格納されるものなど）未満である場合、ＶＭイグジットが実行される。上述したように、Ｖ−ＡＰＩＣのＴＰＲフィールド以外のアドレスを変更するライトなど、部分的にシャドーイングされたアクセスは、ＶＭイグジットを発生させる。他の実施例では、メモリ変換デバイス１２２の仮想バージョンへの完了するようライトが許可され、当該命令の終了により、ＶＭイグジットが行われる。
【００４９】
本発明の範囲内において、図２及び３に示される方法は、異なる順序、図示されたボックスの省略、さらなるボックスの追加又は再順序付け、省略又は追加的なボックスの組み合わせにより実行されてもよい。例えば、ＶＭＣＳは、リード及び／又はライトアクセスが可能であるか判断するため、シャドウコントロール及び／又はインターセプトコントロールビットに関して利用可能なロードコントロール及びストアコントロールビットを含むかもしれない。
【００５０】
プロセッサ１２０又は本発明の実施例による他の何れかのコンポーネント又はコンポーネントの一部は、生成からシミュレーション、製造までの各段階において設計されるかもしれない。構成を表すデータは、いくつかの方法によりそれを表すかもしれない。まず、シミュレーションにおいて有用なように、ハードウェアは、ハードウェア記述言語又は他の機能記述言語を用いて表されるかもしれない。さらに、又はあるいは、ロジック及び／又はトランジスタゲートを備える回路レベルモデルが、設計処理のいくつかの段階で生成されるかもしれない。さらに、大部分の構成は、いくつかの段階において各種デバイスの物理的配置を表すデータによりモデリングされるレベルに到達する。従来の半導体製造技術が利用される場合、デバイス配置モデルを表すデータは、集積回路を生成するのに利用されるマスクに対する異なるマスクレイや上の各種特徴の有無を指定するデータであるかもしれない。
【００５１】
当該構成の何れかの表現において、データは、マシーン可読媒体の何れかの形式により格納されるかもしれない。このような情報を送信するのに変調又は生成される光学的又は電気的な波動、又はメモリ、ディスクなどの磁気若しくは光記憶媒体は、マシーン可読媒体であってもよい。これらの媒体の何れも、エラーリカバリルーチンにおける命令など、本発明の実施例において利用される構成又は他の情報を搬送又は表示するかもしれない。情報を表示又は搬送する電気的な搬送波が送信されるとき、電気信号の複製、バッファリング又は再送が実行される程度まで、新たな複製が行われる。従って、通信プロバイダ又はネットワークプロバイダのアクションは、本発明の技術を実現する搬送波などの物品の複製を生成することから構成されるかもしれない。
【００５２】
以上より、ゲストがメモリ変換デバイスにアクセスするための装置及び方法が開示された。特定の実施例が添付した図面により説明及び図示されたが、このような実施例が単なる例示であり、本発明を限定するものではないということは理解されるであろう。本発明は、他の様々な変更が本開示を研究することにより当業者に想起されると予想されるため、ここで説明及び図示された具体的構成に限定されるものではない。成長が速く、さらなる進歩が予見不可能な当該技術分野では、開示された実施例は、添付した請求項の範囲又は本開示の原理から逸脱することなく、技術的進歩を可能にすることによって実現されるよう構成及び詳細において容易に変更可能である。
【図面の簡単な説明】
【００５３】
【図１】図１は、本発明の実施例が動作可能な仮想化環境を示す。
【図２】図２は、ゲストがメモリ変換デバイスにアクセスするため、ＶＭＭがサポートを初期化する方法の実施例を示す。
【図３】図３は、ゲストがメモリ変換デバイスにアクセスするための方法の実施例を示す。
【符号の説明】
【００５４】
１００  仮想化アーキテクチャ
１１０  ベアプラットフォームハードウェア
１２０  プロセッサ
１３０  メモリ
１３２  ＶＭＣＳ
１５０  ＶＭ（バーチャルマシーン）
１６０  ＶＭＭ（バーチャルマシーンモニタ）
【図１】
0004668166.tif 000002
【図２】
0004668166.tif 000003
【図３】
0004668166.tif 000004