(57)【要約】【課題】仮想マシンモニタを用いてコンピュータシステムの全体保安性を増加させるために、仮想マシンモニタを改善する。【解決手段】本発明の実施形態は、基礎レベルのオペレーティングシステムに直接接続することのできるゲスト・オペレーティングシステム及び特定の特別な機能のための安全な実行環境を提供する、セキュアな仮想マシンモニタ及びセキュアな基礎レベルのオペレーティングシステムを提供する。ハードウェア・インタフェースと仮想マシンモニタの間の最上位特権で実行されるセキュア・ファンデーションの小さくて且つ検証可能なコンポーネントを用いることにより、保安が達成される。仮想マシンモニタ及びセキュア・ファンデーションは、仮想マシンモニタが常駐するゲスト・オペレーティングシステム・モニタ、メモリ区画化、認証された呼び出しを採用して、コンピュータシステム内における計算個体同士を、それぞれから安全に隔離させる。【選択図】図６【特許請求の範囲】
【請求項１】
セキュアな仮想マシンモニタに基づくコンピュータシステムであって、
ハードウェア・プラットフォームと、
前記ハードウェア・プラットフォームの特権命令インタフェースに接続して、仮想マシンモニタに対するセキュア・ファンデーションサービス・インタフェース及び呼び出し認証を提供するセキュア・ファンデーションと、
前記セキュア・ファンデーションに接続して、１つ以上のゲスト・オペレーティングシステムに対する仮想マシン・インタフェースを提供する仮想マシンモニタであって、１つ以上のゲスト・オペレーティングシステム・モニタを含み、前記仮想マシンモニタに対してのみアクセス可能な１つ以上のメモリ区画に臨界ゲスト・オペレーティングシステムデータを格納して管理する、仮想マシンモニタと、
前記仮想マシンモニタに接続する１つ以上のゲスト・オペレーティングシステムと、
を含む、コンピュータシステム。
【請求項２】
プロセッサ状態を変更する特権命令に接続する前記セキュア・ファンデーションの部分は、最上位特権レベルで実行される、請求項１に記載のセキュアな仮想マシンモニタに基づくコンピュータシステム。
【請求項３】
前記仮想マシンモニタに基づくコンピュータシステムは、前記最上位特権レベルが、プロセッサ状態レジスタで特定された特権レベルＰＬ０とプロセッサ状態レジスタで特定された仮想モニタモードとの組み合わせである、最新のプロセッシングアーキテクチャに基づいている、請求項２に記載のセキュアな仮想マシンモニタに基づくコンピュータシステム。
【請求項４】
前記セキュア・ファンデーションは、間に介在する仮想モニタモード優先順位レベルで実行される、ネットワークＩ／Ｏスタック及び他の基本オペレーティングシステムサービスを実装する、請求項１に記載のセキュアな仮想マシンモニタに基づくコンピュータシステム。
【請求項５】
前記仮想マシンモニタに基づくコンピュータシステムは、前記間に介在する仮想モニタモード優先順位レベルが、プロセッサ状態レジスタで特定された特権レベルＰＬ１とプロセッサ状態レジスタで特定された仮想モニタモードとの組み合わせである、最新のプロセッシングアーキテクチャに基づいている、請求項４に記載のセキュアな仮想マシンモニタに基づくコンピュータシステム。
【請求項６】
前記仮想マシンモニタは、間に介在する仮想モニタモード優先順位レベルで実行される、請求項１に記載のセキュアな仮想マシンモニタに基づくコンピュータシステム。
【請求項７】
前記仮想マシンモニタに基づくコンピュータシステムは、前記間に介在する仮想モニタモード優先順位レベルが、プロセッサ状態レジスタで特定された特権レベルＰＬ１とプロセッサ状態レジスタで特定された仮想モニタモードとの組み合わせである、最新のプロセッシングアーキテクチャに基づいている、請求項６に記載のセキュアな仮想マシンモニタに基づくコンピュータシステム。
【請求項８】
前記１つ以上のゲスト・オペレーティングシステムは、非仮想モニタモードプロセス及びスレッドに利用可能である最上位優先順位レベルで実行される、請求項１に記載のセキュアな仮想マシンモニタに基づくコンピュータシステム。
【請求項９】
前記仮想マシンモニタに基づくコンピュータシステムは、非仮想モニタモードプロセス及びスレッドに利用可能である前記最上位優先順位レベルが、プロセッサ状態レジスタで特定された特権レベルＰＬ０とプロセッサ状態レジスタで特定された非仮想モニタモードとの組み合わせである、最新のプロセッシングアーキテクチャに基づいている、請求項６に記載のセキュアな仮想マシンモニタに基づくコンピュータシステム。
【請求項１０】
前記メモリ区画は、保護キー及びＴＬＢエントリで特定されたアクセス権限によって確立される、請求項１に記載のセキュアな仮想マシンモニタに基づくコンピュータシステム。
【請求項１１】
前記呼び出し認証は、セキュア・ファンデーションの呼び出し認証ルーチンに、前記呼び出しが前記ゲスト・オペレーティングシステム内の現在の実行位置で行われるように認可されること及び前記呼び出しが適切なルーチン呼び出しのシーケンス内で発生することを検証するように許可する、ローダーで生成された秘密情報を、前記セキュア・ファンデーションの呼び出し認証ルーチンに供給するために、セキュアなローダーによるゲスト・オペレーティングシステムコードの修正を含む、請求項１に記載のセキュアな仮想マシンモニタに基づくコンピュータシステム。
【請求項１２】
前記仮想マシンモニタは、前記仮想メモリモニタに対してのみアクセス可能な１つ以上のメモリ区画に安全に格納された暗号化キーを用いることにより、大容量記憶装置に書き込まれたすべてのデータを自動的に暗号化し、該大容量記憶装置から読み取られるすべての暗号化されたデータを復号化する、請求項１に記載のセキュアな仮想マシンモニタに基づくコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・アーキテクチャ及びオペレーティングシステムに関し、特に、ある高度の保安機能の直接実行のためのセキュア・ファンデーション（ｓｅｃｕｒｅ  ｆｏｕｎｄａｔｉｏｎ）に対する直接的なインタフェースだけではなく、ゲスト・オペレーティングシステムの実行のための保安環境を一緒に提供する、セキュアな仮想マシンモニタ及びその基礎となるセキュア・ファンデーションに関する。
【背景技術】
【０００２】
仮想マシンモニタ（ｖｉｒｔｕａｌ−ｍａｃｈｉｎｅ  ｍｏｎｉｔｏｒ：以下、「ＶＭＭ」という）は、１つ以上のゲスト・オペレーティングシステムの最低のレベル、すなわち、ハードウェア抽象化レベルに対する仮想マシン・インタフェースを提供する。ＶＭＭは、本来、コンピュータシステムの物理的なハードウェア資源と、コンピュータシステム上で実行されるオペレーティングシステム（複数の場合がある）との間に介在した仮想の抽象化層である。ＶＭＭは、コンピュータのユーザによく知られている応用プログラムの実行環境及びユーザ・インタフェースを提供するために一緒に機能する、ハードウェア、ファームウェア、及びソフトウェア内の多数の抽象化層のうちの１つである。最新のコンピュータシステムのハードウェア層でさえも、数多くの抽象化層を含む。適切に設計された場合、仮想の抽象化層は、上位層を不要な詳細事項から遮断して、上位レベル、すなわち、インタフェーシングレベルの必要に合わせられた便利で且つ有用なインタフェースを提供し、また、上位層に不要であり、潜在的に危険な下位レベルの機能へ上位レベルがアクセスするのを防止する。
【０００３】
図１は、仮想マシンモニタの起動及び展開を示した図である。図１は、多様な形態で後続の図面にて用いられる、コンピュータシステム内のハードウェア及びソフトウェア層のブロック図レベルの図解を用いている。先ず、これらの図面は、非常に簡素化されており、これらの図面には、抽象化層の間の数多くの複雑な事項及び配線が省略されていることに留意しなければならない。さらに、ブロックの相対的な大きさは、示されている多様な抽象化層及び機能層の重要度、コードサイズ、複雑性を反映していない。その代わりに、これらの図面は、多くの機能層と抽象化層との間の一般の相対的な関係のみを示している。
【０００４】
第１のコンピュータシステム１０２において、アプリケーション・プログラム１０４がローディングされ、ハードウェア１０６インタフェース上で直接に実行された。このような初期のコンピュータシステムにおいて、プログラムは、一般に、マシンコードで書き込まれ、制御パネルのトグルスイッチを介して、或いは、後には穿孔カード（Ｈｏｌｌｅｒｉｔｈ  ｃａｒｄｓ）のデッキを介してメモリ内に直接入力された。
【０００５】
プログラムの作業を簡素化するために、そして、高価なハードウェア資源をよりうまく利用するために、ジョブ制御層１０８が開発されて、次世代のコンピュータシステム１１０に追加された。ジョブ制御層は、マシンコードの書き込みに伴われる難しさ及び退屈さの軽減のために、アプリケーション・プログラムの原始的な順次スケジューリング、原始的なＩ／Ｏインタフェースおよび支援、並びにアセンブリコードをマシンコードに変換させるアセンブラを提供した。次世代のコンピュータシステム１１２において、ジョブ制御層は、汎用オペレーティングシステム１１４に発展した。オペレーティングシステムは、アプリケーション・プログラムのハードウェアの実行を制御するために、ハードウェアにインタフェースで接続して、応用プログラム・インタフェース及び応用プログラムの実行環境を提供し、プログラマーは、これに対してアプリケーション・プログラムを開発し、その中でアプリケーション・プログラムを実行させるようになる。オペレーティングシステムは、Ｉ／Ｏサービス、スケジューリング、メモリ管理、及び、それ以外のこのようなサービスを含む全体範囲のサービスを提供する。
【０００６】
初期のオペレーティングシステムは、所定の時間に単一アプリケーションの実行を支援するように設計されていた。最初に、ＶＭＭ１１６は、メインフレーム・コンピュータシステム上における多数のオペレーティングシステム、及びこれらのアプリケーションの同時実行を支援する方法として開発された。ＶＭＭは、同時に単一アプリケーション・プログラムの実行をそれぞれ支援する、多数の同時実行されるオペレーティングシステム１１８及び１２０のそれぞれに、仮想ハードウェア・インタフェースを提供する。同時実行されるそれぞれのオペレーティングシステムは、それらが正確にベアマシン（図１の１１２及び１１４）にインタフェーシングしたときに、ＶＭＭにインタフェーシングされるようになる。ＶＭＭは、本質的に、多数のオペレーティングシステムのパーティショニング及び実行が、所定のオペレーティングシステムに明白な方式で、同時実行されるオペレーティングシステムの間において、ハードウェア資源を分割する。
【０００７】
次世代のコンピュータシステム１２２において、仮想メモリ支援、プロセッサ・サイクルの時分割多重化などを特徴とする汎用のマルチタスキング・オペレーティングシステムは、ＶＭＭに対する初期の需要を軽減させ、ＶＭＭは、しばらく、それ以上研究及び開発において活発な主題になることはなかった。汎用オペレーティングシステムは、多くの新しい特性及び機能を含み、これまではアプリケーション・プログラム及び他の個別的な特殊の計算個体の領域内にあるものと見なされていた特性及び機能を取り込みながら、大きさ、機能及び複雑度の点で持続的に発展し、拡張された。
【０００８】
最近、ＶＭＭは、再び研究及び開発努力の目標となり、最新のコンピューティング環境における多くの用途を見つけた。最新のコンピュータハードウェア１３０上で多数のゲストであり、且つ汎用であるマルチタスキング・オペレーティングシステム１２６及び１２８の同時実行を支援するために、新しい種類のＶＭＭ１２４が開発された。このような最新のＶＭＭは、オペレーティングシステムの開発だけではなく、特定のオペレーティングシステムのために開発された複雑なアプリケーション・プログラムが、単一ハードウェアのプラットフォーム上で共に実行されることのできる環境を生成するために使用される。現在、多数の異なるハードウェア・プラットフォーム１５０及び１５２の最上部上において多数の同時実行されるアプリケーション・プログラム１３８−１４７をそれぞれ支援する、多数の汎用マルチタスキング・オペレーティングシステム１３４−１３６を実行させるために、より一層精巧であり、実行可能なタイプのＶＭＭ１３２が開発されて、配置されている。
【０００９】
図２は、最新のコンピューティング環境において、仮想マシンモニタを用いるための多数の動機を示している。第１の動機は、オペレーティングシステム２０４の個別的なインスタンス２１０及び２１２に対して２つのアプリケーション２０２及び２０３のそれぞれの独立した実行を支援する、ロバストなオペレーティングシステムの実行環境を提供するＶＭＭ２０８を導入することにより、ハードウェア・プラットフォーム２０６上において単一のオペレーティングシステム２０４に対して同時実行される２つのアプリケーション２０２及び２０３を分割及び保安化しようとするものである。アプリケーション・プログラムの分割は、２つのアプリケーションの間の直接的な、オペレーティングシステムが提供する制御及びデータ経路を除去することによって、保安性を増大させることができる。また、オペレーティングシステムレベルでの、若しくは、さらには仮想マシンレベルでの故障が、単一オペレーティングシステム上で実行されるアプリケーション・プログラムのすべてに影響を与えるのではなく、単一オペレーティングシステムのインスタンス及びアプリケーション・プログラムにだけ影響を与えるように隔離することができるため、信頼性が増加される。この動機は、特に、ドメイン−ネイムサーバ及びＨＴＴＰサーバを含み、保安攻撃を受けやすい計算を集約した（ｃｏｍｐｕｔａｔｉｏｎａｌｌｙ  ｉｎｔｅｎｓｅ）サーバ・アプリケーションを、所定のマシン上で実行される計算個体及び他のサーバから隔離することに好適である。
【００１０】
ＶＭＭを用いるための第２の動機は、十分に活用されていないハードウェア上で実行される多数の特化されたアプリケーションを統合することである。一例として、２つのアプリケーション２１６及び２１８のそれぞれは、２つの異なるハードウェア・プラットフォーム２２４及び２２６上の２つの異なるオペレーティングシステム（以下、「ＯＳ」という）２２０及び２２２それぞれの上で実行することができる。これは、１つまたは２つのアプリケーションが、特に、１つまたは他のハードウェアシステムに移植されていない特定のＯＳ上で実行されるように合わせられた場合であり得る。ＶＭＭ２３０を用いることによって、単一ハードウェア・プラットフォーム２３２は、ＶＭＭに対してゲスト・オペレーティングシステムとして実行されるそれぞれのオペレーティングシステム２２０及び２２２上で、アプリケーション２１６及び２１８の両方共に対して実行を支援することができる。したがって、コンピューティング環境は、２つの異なって、潜在的に十分活用されていないハードウェア・プラットフォーム２２４及び２２６を支援するよりは、その代わりに、単一のよく用いられるハードウェア・プラットフォーム２３２上でアプリケーションを統合することができる。
【００１１】
ＶＭＭを採用する第３の動機は、多数の潜在的に分散された離散ハードウェア・プラットフォームの間で、計算作業の動的で且つ流動的な移動を支援することである。例えば、図２で、２つのアプリケーション２４０−２４２は、第１のオペレーティングシステム２４４上で実行されるものとして示されており、２つの付加的なアプリケーション２４６及び２４８は、第３のオペレーティングシステム２４９上で実行されるものとして示されている。第２のオペレーティングシステム２５０は、図２のアプリケーション・プログラムを現在実行していない。アプリケーション・プログラム２４０、２４２、２４６及び２４８を異なるハードウェア・プラットフォームに再び割り当てることが、基礎となるハードウェア・プラットフォーム２５２−２５４の観点から好ましいことがある。例えば、アプリケーション・プログラムの計算要求によりうまく対応するために、ハードウェア・プラットフォーム上で使用可能な計算リソースに対して、割り当てを行うことができる。別の場合に、アプリケーション・プログラムによってアクセスされた特定の特別リソースと最も密接に関連するハードウェア・プラットフォームにアプリケーション・プログラムを移動すると、実行がより効率的であるだけではなく、ネットワークの瓶首現象及び遅延の軽減が可能となる。分散オペレーティングシステムは、このような要求に対処するために開発されたが、このシステムは、ときどき、複雑であり、高価である上に、信頼することができない。ＶＭＭ２５６を用いることにより、計算個体の移動に対する支援は、オペレーティングシステムレベルの複雑性と無関係になることができ、それによって、オペレーティングシステム・インスタンスは、それらの現在に実行されているアプリケーションと共に、マシンの間で信頼性を持って効率的に移動することができる。
【００１２】
図２には、ＶＭＭを用いるための多数の動機が示されているが、多くの更なる動機が認められる。ＶＭＭは、単一プロセッサマシン、多重プロセッサマシン、及び分散コンピュータシステム上で本当にセキュアなコンピューティング環境を提供するための、より適切であり、最も経済的な方式であり得る。ＶＭＭは、アプリケーション・プログラム、サービス・プログラム、オペレーティングシステム、及びハードウェアプラットフォームの間の複雑な相互依存性によって拘束されるものではなく、最小の費用でコンピュータシステム開発者及び管理者に使われることのできる柔軟性及び選択権を実質的に増加させ、コンピュータシステム管理者及び開発者が、自分たちの目標に合致させるために求められる、最も効率的で且つ経済的なコンポーネントを選択することを可能とする。
【００１３】
図３は、ＶＭＭの仮想的な抽象化を示したブロック図である。図３において、ＶＭＭ３０２及び３０３は、コンピュータシステムの物理的なハードウェア３０４上で階層化される。オペレーティングシステム３０６−３０７は、ＶＭＭ上で階層化され、ソフトウェアライブラリ３０８−３１０は、オペレーティングシステム上で階層化される。最終的に、アプリケーション・プログラム３１２は、ハードウェア・プラットフォーム３０４のライブラリ３０８−３１０、オペレーティングシステム、及び小さな部分３１４上で階層化される。ハードウェア・プラットフォームは、インタフェースレベルで、特権命令３１６のセット、非特権命令３１８のセット、Ｉ／Ｏ装置３２０へのレジスタ・インタフェース、及び、ネットワーク装置３２２へのレジスタベースのインタフェースからなる。一般に、点線の長方形３２４及び３２６で示された装置ドライバは、Ｉ／Ｏインタフェース３２０及びネットワークＩ／Ｏインタフェース３２２に接続する。図３において、装置ドライバ３２４及び３２６は、ＶＭＭ内、オペレーティングシステム内、またはＶＭＭとオペレーティングシステムの両方に存在することができるということを表示するために、点線で示されている。ＶＭＭは、オペレーティングシステム３０６−３０７、ライブラリ３０８−３１０、及びアプリケーション・プログラム３１２による直接アクセスから、ハードウェア層の特権命令３１６及びＩ／Ｏインタフェースを保護するために設計される。上位レベルによる直接アクセスから特権命令を保護することにより、ＶＭＭは、特権命令によって制御されるハードウェアシステムの状態が、受け容れ可能であり、セキュアな状態転移経路に沿って転移されるよう、保証することができる。ＶＭＭは、オペレーティングシステムに導入される外部由来の個体から、そして、オペレーティングシステム内の保安措置を破壊して、他のアプリケーション・プログラムまたは遠隔コンピュータシステムに損傷を与えるためにオペレーティングシステムサービスを用いるよう試みることのある、悪質的なアプリケーション・プログラムからオペレーティングシステムを保護する。非特権命令３１４が、変換索引バッファ・エントリ、状態レジスタ、及び、他のそのような状態制御資源を含む核心的なハードウェア・プラットフォーム状態変数に影響を及ぼさないため、そして、ＶＭＭによる非特権命令の保護は、一般的に、非合理的な計算オーバーヘッドをもたらすため、非特権命令は、オペレーティングシステム、ライブラリ及びアプリケーション・プログラムに対して直接アクセスすることができる。あるＶＭＭ実装で、ＶＭＭは、物理的なハードウェアに接続するのに要求される、すべての装置ドライバを含む。オペレーティングシステムは、ハードウェアＩ／Ｏインタフェースに直接接続するように試みるよりは、ＶＭＭによって提供されるＩ／Ｏサービスを呼び出すように修正される。他のＶＭＭ実装方式において、ＶＭＭは、制御されて保護される方式でオペレーティングシステム装置ドライバを用いる。
【００１４】
ＶＭＭがオペレーティングシステムとハードウェアとの間に導入されることから、ＶＭＭは、上述したように、仮想ハードウェア・インタフェースを提供して、多数の同時実行されるオペレーティングシステム・インスタンスの間でハードウェア資源を分割して、アプリケーション・プログラム及びオペレーティングシステムの個別的な保安及びコンピュータシステムの全体保安に損傷を与える行為から、オペレーティングシステム及び上位レベル個体を遮断することができる。
【００１５】
現在、ＶＭＭが、保安性、携帯性及び分散コンピューティング目標に対処するために開発されてはいるが、現在の仮想マシンモニタは、依然として完全な保安からは程遠い。図４は、悪意のある又は誤った計算個体によって攻撃を受けたりまたは損傷されやすいように維持される、ＶＭＭに基づくコンピュータシステムの多くの異なる態様が示されている。一般に、コンピュータシステム上で実行される計算個体によって使用され、発生される多くのデータは、大容量記憶装置４０４に格納される。現在の多くのコンピュータシステムにおいて、このようなデータは、あまり保護されず、悪意のある個体によるアクセス及び誤った計算個体による損傷に曝される。特に、読み取り／書き込みＣＤと、リムーバブルディスクと、フラッシュメモリ装置を含むリムーバブル大容量記憶装置及びそれ以外のそのような装置は、コンピュータシステム４０２から容易に接続解除されて、分析及び修正のために、他のコンピュータシステムに再接続したり、或いは他のポートを介して遠隔でアクセスすることができる。それと同様に、コンピュータシステムの内部メモリ４０６は、一般的に、ゲスト・オペレーティングシステム４０８及び４１０の間のＶＭＭによって、さらに、ゲスト・オペレーティングシステム４１２−４１６上で実行される数多くのアプリケーション・プログラムによって分割される。しかしながら、一般的に、この分割は、完全に保安的ではなく、特定のオペレーティングシステムがメモリにアクセスすることを許容し、他のオペレーティングシステムに割り当てられるメモリの内容を修正するようにする保安ギャップを残し、アプリケーション・プログラムは、潜在的にオペレーティングシステム及び他のアプリケーション・プログラムに割り当てられるメモリにアクセスして、修正する。ネットワーク通信４２０を介して受信されたデータストリームは、コンピュータシステムのいずれかのソフトウェア層を攻撃することのできる悪意的であり、且つ実行可能なデータを含むことができる。ＶＭＭ４２２は、ゲスト・オペレーティングシステムの間でハードウェア資源及びゲスト・オペレーティングシステム上で実行されるアプリケーション・プログラムを分割するように努めるが、ＶＭＭは、ときどき、あるゲスト・オペレーティングシステムがＶＭＭによって提供されたサービスを介して他のオペレーティングシステムから情報を収集するように、さらには、このオペレーティングシステムの動作に影響を与えることを許容する、セキュリティ脆弱性を有する。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
図４に関して上述したすべての理由や、多くの付加的な理由により、コンピュータシステムの開発者、製造者及びユーザはともに、仮想マシンモニタ上のゲスト・オペレーティングシステム及びアプリケーション・プログラムの実行効率を減少させることなく、そして、オペレーティングシステムのような、仮想マシンモニタがあまりにも複雑過ぎるために保安動作を適切に設計することを不可能とする過剰な複雑度及びコードを導入することなく、仮想マシンモニタを用いてコンピュータシステムの全体保安性を増加させるために、仮想マシンモニタを改善する必要性を認識してきた。
【課題を解決するための手段】
【００１７】
本発明の実施形態は、順に、基礎レベルのオペレーティングシステムに直接に接続することのできるゲスト・オペレーティングシステム及び特定の特別な機能のための安全な実行環境を提供する、セキュアな仮想マシンモニタ及びセキュアな基礎レベルのオペレーティングシステムを提供する。保安は、小さくて且つ検証可能なセキュア・ファンデーションを用いることによって達成され、この基盤の非常に小さい部分が、ハードウェア・インタフェースと仮想マシンモニタの間の最上位特権で実行される。仮想マシンモニタ及びセキュア・ファンデーションは、仮想マシンモニタが常駐するゲスト・オペレーティングシステム・モニタ、メモリ区画化、認証された呼び出しを採用して、コンピュータシステム内における計算個体同士を、それぞれから安全に隔離させる。
【発明を実施するための最良の形態】
【００１８】
本発明の実施形態は、セキュアな仮想マシンモニタを支援し、さらに、ある特別なアプリケーションの直接実行を支援することのできる、セキュアな仮想マシンモニタ及びその基礎となるセキュア・ファンデーションに関する。現在、本発明の多様な実施形態は、インテルのアイテニアム−２（登録商標）プロセッサ群のプロセッサを用いるコンピュータシステム上への実装に関するものである。以下の第１のサブセクションにおいて、インテル・アイテニアム（登録商標）及びインテル・アイテニアム−２（登録商標）・アーキテクチャが、相対的に高いレベルで説明される。後述する第２のサブセクションにおいて、本発明の実施形態を説明する。
【００１９】
インテル・アイテニアム・アーキテクチャ
図５は、結合されたオペレーティングシステム／ハードウェアシステムによって提供される仮想メモリを示している。図５において、オペレーティングシステムは、プロセッサ５０４と、物理的なメモリ５０６と、大容量記憶装置５０８とを含むハードウェアコンポーネントを取り囲む円５０２で抽象的に示される。図５は、マシンを正確に表示したり、マシンのコンポーネントを列挙するのではなく、ハードウェアシステムまたはマシンのある特徴を抽象的に示そうとしたものである。一般に、オペレーティングシステムは、該オペレーティングシステムによって提供される実行環境内で実行される各プロセスに対し、垂直カラム５１０のような、オペレーティングシステムの外部の垂直カラムとして図５に示されている大きな仮想メモリアドレス空間を提供する。仮想メモリアドレス空間は、６４ビットアドレスをサポートする、結合されたオペレーティングシステム／ハードウェアシステムのための０乃至２６４−１範囲のアドレスを有した、アドレス指定可能なメモリバイトのシーケンスを規定する。アイテニアム・仮想アドレス空間は、６１ビットのオフセット及び２４ビットの領域セレクタからなる最大８５ビット幅であるが、６４ビットアドレス空間は、任意の時点にアクセスすることができる。マシン及びオペレーティングシステムによって、仮想メモリアドレス空間のある部分は、プロセスにおいてアクセスすることができないこともあり、多様なメカニズムが用いられ、マシンが支援するアドレス指定ユニットによってアドレス指定可能な最大の大きさを超えて、仮想メモリアドレス空間の大きさを拡張することもできる。オペレーティングシステムは、一般に、オペレーティングシステムの最上部で同時実行されるそれぞれのプロセスに別個の仮想メモリアドレス空間を提供することにより、図５に示されているように、オペレーティングシステムは、多数の、区分されて、また別個である仮想メモリアドレス空間５１０−５１４を同時に支援することが可能となる。
【００２０】
仮想メモリアドレス空間は、多くの面で、オペレーティングシステムによって生成されて、維持される錯覚である。プロセッサ５０４上で実行されるプロセスまたはスレッドは、一般的に、物理的なメモリ５０６の一部に対してのみアクセスすることができる。物理的なメモリは、プロセッサと別個のメモリ集積回路との間に分散された多様なレベルのキャッシング及び離散メモリコンポーネントを構成することができる。実行されるプロセスによってアドレス指定可能な物理的メモリは、たびたび、オペレーティングシステムによってプロセスに提供される仮想メモリアドレス空間よりも小さくて、同時実行されるプロセスにオペレーティングシステムによって同時に提供される仮想メモリアドレス空間のトータルの大きさよりも、ほぼ常に小さい。オペレーティングシステムは、仮想メモリアドレス空間を通じてアドレス指定されるデータを大容量記憶装置５０８上に格納し、実行されるプロセスによって行われた仮想メモリアクセスによって求められたとおりに、物理的なメモリ５０６内に、そして、またこのメモリの外にページと呼ばれるデータの部分を迅速にスワッピングすることにより、相対的に膨大な仮想メモリアドレス空間の錯覚を生成して、維持させる。一般に、実行されるプログラムによる仮想メモリへのアクセスのパターンは、非常に集中されて、任意の所定の時間的な瞬間で、プログラムが相対的に少ない数の仮想メモリページのみを読み取って、書き込むこともあり得る。したがって、仮想メモリアクセスの比較的小さな断片のみが、大容量記憶装置５０８から物理的なメモリ５０６へのページのスワッピングを必要とする。
【００２１】
仮想メモリモニタは、物理的なマシン・インタフェース上に、そして、コンピュータシステム上で実行されるすべての他のソフトウェア・ルーチン及びプログラムの下にあるルーチンのセットである。「ハイパーバイザ」または簡単に「モニタ」と呼ばれるある類型の仮想マシンモニタは、コンピュータシステム上で同時に実行されるそれぞれのオペレーティングシステムに仮想マシン・インタフェースを提供する。仮想マシン・インタフェースは、マシン上で実行されるオペレーティングシステム、及び他のプログラムによってマシンに対して期待される、これらのマシンの特徴及び特性を含む。例えば、仮想マシン・インタフェースは、仮想化された仮想メモリシステム・インタフェースを含む。図６には、多数の同時実行されるオペレーティングシステムを支援するための、仮想モニタに基づく方式が示されている。図６で、第１の円６０２は、コンピュータシステムの物理的なプロセッサ６０４と、物理的なメモリ６０６と、大容量記憶装置６０８とを取り囲んでいる。第１の取り囲み円６０２は、コンピュータシステムの仮想マシンモニタ、通常のオペレーティングシステムのソフトウェア層の基礎となるソフトウェア層を示す。仮想マシンモニタは、仮想マシン・インタフェース６１０及び６１２を提供する。仮想マシンは、例えば、仮想プロセッサ６１４と、仮想物理的メモリ６１６と、仮想大容量記憶装置６１８とをそれぞれ含むものと見なすことができる。オペレーティングシステムのソフトウェア層は、図６において円で示されたオペレーティングシステム６２０及び６２２のような各仮想マシンをカプセル化するものと見なすことができる。次に、オペレーティングシステムのそれぞれは、多数のゲスト仮想メモリアドレス空間６２４及び６２６を、オペレーティングシステムによって提供される実行環境内で同時に実行されるプロセスに提供する。仮想マシンモニタは、多数の仮想プロセッサをゲスト・オペレーティングシステムに提供することができ、コンピュータシステムに含まれる物理的なプロセッサの数と異なる数の仮想プロセッサを提供することができる。
【００２２】
インテル（登録商標）アイテニアム・コンピュータ・アーキテクチャに適合するように構築されたインテル・アイテニアム（登録商標）のようなプロセッサでは、部分的に、仮想物理的メモリ及び仮想アドレス変換設備を各ゲスト・オペレーティングシステムに提供することにより、多数のゲスト・オペレーティングシステムを支援するモニタベースの仮想マシンを支援するのに適した、最新のコンピュータハードウェア・プラットフォームの一例を示す。図７Ａ−Ｂは、アイテニアム・プロセッサ内のレジスタを示している。図７Ａは、プロセッサ内のレジスタを示したブロック図である。レジスタは、プロセッサの実行状態を規定する値を保有し、メモリに格納されるとき、プロセスの実行を停止させるのに先立って実行されるプロセスのマシン状態をキャプチャする。メモリに格納された特定のレジスタを復旧すると、割り込まれたプロセスの実行再開が許容される。図７Ａ−Ｂに示されているようなレジスタセットは、非常に複雑であり、以下において、特定のレジスタについてのみ説明する。
【００２３】
プロセス状態レジスタ（ｐｒｏｃｅｓｓ  ｓｔａｔｕｓ  ｒｅｇｉｓｔｅｒ：以下、「ＰＳＲ」という）７０２は、現在実行されるプロセスのための制御情報を含む６４ビットレジスタである。ＰＳＲは、現在実行されるプロセッサが実行されている現在の特権レベル（ｃｕｒｒｅｎｔ  ｐｒｉｖｉｌｅｇｅ  ｌｅｖｅｌ：以下、「ＣＰＬ」という）を含む２ビット・フィールドが含まれた、多くのビット・フィールドを有する。４個の特権レベル、０、１、２、及び７が存在する。最上位特権レベルは、特権レベル０である。最下位特権レベルは、特権レベル７である。特権レベル０で実行されるプロセスだけが、図７Ａにおける下方の長方形７０４内に示された「システム・レジスタ・セット」として公知となったレジスタのサブセットを含むいずれかのマシン資源にアクセスして、調整するために許容される。１つの制御レジスタ、すなわち、割り込みプロセッサ状態レジスタ（ｉｎｔｅｒｒｕｐｔｉｏｎ  ｐｒｏｓｅｓｓｏｒ  ｓｔａｔｕｓ  ｒｅｇｉｓｔｅｒ：以下、「ＩＰＳＲ」という）７１８は、最も最近に割り込まれたプロセスのためのＰＳＲ値を格納する。割り込み状態レジスタ（ｉｎｔｅｒｒｕｐｔｉｏｎ  ｓｔａｔｕｓ  ｒｅｇｉｓｔｅｒ：以下、「ＩＳＲ」という）７２０は、割り込み処理ルーチンが起動されるとき、障害時に、若しくは割り込まれた時にＰＳＲ．ｉｃフィールドが「１」から「０」にフリップされた場合、割り込み処理ルーチンに最も最近に発生された割り込みの特性を表示する多数のフィールドを含む。他の制御レジスタは、仮想アドレス変換障害と関連のある仮想メモリアドレス変換情報、最近に成功的に実行された命令語バンドルに対するポインタ、及びその他のこのような情報など、別のイベントなどに関する情報を格納する。外部割込み制御レジスタ７２２のセットは、部分的に、割り込みベクトルを設定するために用いられる。ＩＨＡレジスタは、障害のある仮想アドレスに対応する仮想アドレス変換が発見されなければならない、仮想ハッシュ（ｈａｓｈ）ページテーブルの位置の表示を格納する。
【００２４】
図７Ａにおける上方の長方形領域７２４に示されているレジスタは、「アプリケーション・レジスタのセット」として知られている。これらのレジスタは、一般的なレジスタ７２６のセットを含むが、この７２８の１６個が、割り込み処理コードのための即時レジスタを提供するためにバンクされる。少なくとも９６個の一般のレジスタ７３０は一般的なレジスタ・スタックを形成するが、その一部は、自動的に格納され、バンキングメモリから検索されて、呼び出し及び呼び出されたソフトウェア・ルーチンの間の連結を容易にする。アプリケーション・レジスタのセットは、また、浮動小数点レジスタ７３２と、プレディケイト・レジスタ（ｐｒｅｄｉｃａｔｅ  ｒｅｇｉｓｔｅｒｓ）７３４と、分岐レジスタ７３６と、命令ポインタ７３８と、現在フレーム・マーカ７４０と、ユーザマスク７４２と、性能モニタデータ・レジスタ７４４と、プロセッサ識別子７４６と、先回りロード・アドレス・テーブル（ａｄｖａｎｃｅｄ  ｌｏａｄ  ａｄｄｒｅｓｓ  ｔａｂｌｅ）７４８と、特定のアプリケーション・レジスタ７５０とのセットを含む。
【００２５】
図７Ｂは、１２８個の６４ビット汎用レジスタ７５４、１２８個の８２ビット浮動小数点レジスタ７５６、６４個のプレディケイト・レジスタ７５８のセット、６４個の分岐レジスタ７６０のセット、及びアプリケーション・レジスタ（ａｐｐｌｉｃａｔｉｏｎ  ｒｅｇｉｓｔｅｒ：以下、「ＡＲ」という）（ＡＲ０乃至ＡＲ１２７）７６６を含む多様な特殊用レジスタと、先回りロード・アドレス・テーブル７６８、プロセス識別子レジスタ７７０、性能モニタデータ・レジスタ７７２、ＣＲ０乃至ＣＲ８１の範囲の制御レジスタ（ｃｏｎｔｒｏｌ  ｒｅｇｉｓｔｅｒ：以下、「ＣＲ」という）７７４のセット、ＰＳＲレジスタ７７６、ブレークポイント・レジスタ７７８、性能モニタ・コンフィギュレーション・レジスタ７８０、変換索引バッファ７８２、領域レジスタ７８４、及び保護キー・レジスタ７８６を含む、アイテニアム・アーキテクチャによって提供されるレジスタを示したものである。特定のＡＲレジスタ及びＣＲレジスタは、それら自身の使用を示す頭字語を有する。例えば、ＡＲレジスタ（ＡＲ１７）７８８、バックアップ格納ポインタ・レジスタ（ｂａｃｋｉｎｇ−ｓｔｏｒｅ  ｐｏｉｎｔｅｒ  ｒｅｇｉｓｔｅｒ）は、頭字語ＢＳＰに関連され、このレジスタは、他の方式では、ＢＳＰレジスタまたはＡＲ［ＢＳＰ］レジスタと特定されることができる。多くのレジスタにおいて、単一ビットまたはビット・グループは、特殊な意味を持つ値を含んだフィールドを有する。例えば、レジスタＡＲ［ＲＳＣ］７９０内の２つの最下位ビットは共に、攻撃的にレジスタがプロセッサによってどのように格納されて、復旧されるのかを制御するモード・フィールドを含む。これらの２つのビットは、表示上、「ＡＲ［ＲＳＣ］．ｍｏｄｅ」と特定することができる。
【００２６】
アイテニアム・コンピュータ・アーキテクチャのメモリ及び仮想アドレス変換アーキテクチャは、図８−１１に関連して後述される。インテル・アイテニアム・コンピュータ・アーキテクチャ内で規定された仮想アドレス空間は、図８に示されている領域８０２−８０７のような２２４領域を含むが、各領域は、連続した仮想メモリアドレスによって連続的にアドレス指定される２６１バイトを含む。したがって、仮想メモリアドレス空間は、メモリの２８５バイトのトータルアドレス空間にわたるものと見なすことができる。その後、８５ビットの仮想メモリアドレス８０８は、２４ビット領域フィールド８１０及び６１ビットアドレスフィールド８１２を含むものと見なすことができる。
【００２７】
しかしながら、一般に、仮想メモリアドレスは、６４ビットの量としてエンコードされる。図９は、領域レジスタ、保護キー・レジスタ、及び変換索引レジスタバッファ（ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋ−ａｓｉｄｅ  ｂｕｆｆｅｒ：以下、「ＴＬＢ」という）内に格納された情報を介した、６４ビット仮想メモリアドレスの物理的なメモリアドレスへの変換が示されている。インテル（登録商標）・アイテニアム・アーキテクチャにおいて、仮想アドレスは、３個のフィールド９０４−９０６に分割される６４ビット量９０２で図９に示された、６４ビットのコンピュータワードである。最初の２つのフィールド９０４及び９０５は、メモリページの大きさの範囲内で調整可能なメモリページの大きさに依存した大きさを有する。第１のフィールド９０４は、「オフセット」と称する。このオフセットは、メモリページ内のバイトを指定する整数である。例えば、メモリページが４０９６バイトを含むと、オフセットは、０−４０９５の値を表示するために１２ビットを含む必要がある。第２のフィールド９０５は、仮想ページアドレスを含む。仮想ページアドレスは、物理的なメモリにマッピングされ、ディスクのような大容量記憶装置上に格納されるメモリページによって付加的にバックアップされる仮想アドレス空間内で、メモリページを指定する。第３のフィールド９０６は、仮想ページアドレス９０５によって特定された仮想メモリページが含まれる仮想メモリの領域の識別子を含む領域レジスタを指定する、３ビット・フィールドである。
【００２８】
以下において、アイテニアム・アーキテクチャと一致した１つの可能な仮想アドレス変換の実装方式が説明される。仮想メモリアドレス内のオフセット９０４と同一のオフセット９１０を含む物理的なメモリアドレス９０８だけではなく、コンピュータシステムの物理的なメモリコンポーネント内のページを参照する物理的なページ数９１２への仮想メモリアドレス９０２の変換は、オペレーティングシステムが提供するサービスと組み合わせるときに、プロセッサによって実行される。仮想メモリアドレスから物理的なメモリアドレスへの変換がＴＬＢ９１４内に含まれると、仮想メモリアドレスの物理的なメモリアドレスへの変換は、オペレーティングシステムの介入なく、プロセッサによって全面的に実行することができる。このプロセッサは、領域レジスタ・セレクタ・フィールド９０６を用いて、領域レジスタ９１８のセット内でレジスタ９１６を選択する。選択された領域レジスタ９１６は、２４ビットの領域識別子を含む。プロセッサは、選択された領域レジスタ９１６及び仮想ページアドレス９０５に含まれる領域識別子にマッチする領域識別子及び仮想メモリアドレスを含むＴＬＢエントリ９２０を選択するためのハードウェア機能において、選択された領域レジスタに含まれる領域識別子と仮想ページアドレス９０５の両方を共に用いる。ＴＬＢエントリ９２２のような各ＴＬＢエントリは、領域識別子９２４と、ＴＬＢエントリ９２６に記述されるメモリページと関連する保護キーと、仮想ページアドレス９２８と、共にアクセス権限フィールド９３０から成る特権及びアクセスモード・フィールドと、物理的なメモリページアドレス９３２とを含むフィールドを有する。
【００２９】
現在ビット＝１であるＴＬＢにおいて有効エントリが、仮想メモリアドレスの領域レジスタ・セレクタ・フィールドによって特定された領域レジスタ内に含まれる領域識別子を含み、このエントリが、仮想メモリアドレス内に特定された仮想ページアドレスを含むものと判明すれば、プロセッサは、仮想メモリアドレスに記述された仮想メモリページが、現在実行されるプロセスによってアクセスされることができるかどうかを決定する。ＴＬＢエントリ内のアクセス権限が、メモリページが現在実行されるプロセスによってアクセスされるように許容すると、そしてさらに、ＴＬＢエントリ内の保護キーが、現在実行されるプロセスがメモリページにアクセスするように許容するアクセスモードと関連して保護キー・レジスタ９３４内で発見されることができれば、現在実行されるプロセッサは、メモリページにアクセスすることができる。保護キー整合は、ＰＳＲレジスタのＰＳＲ．ｐｋフィールドが設定される時にだけ求められる。ＴＬＢエントリ内に含まれるアクセス権限は、読み取り、書き込み、及び実行特権のうちのいずれか１つまたはこれらの組み合わせを表示する３ビットアクセスモード・フィールド、及びアクセスプロセスによって必要となる特権レベルを特定する２ビット特権レベル・フィールドを含む。各保護キー・レジスタは、許容された読み取り、書き込み、及び実行アクセスモードを特定するアクセスモード・フィールドに関連された最大２４ビットの長さの保護キー及び保護キー・レジスタが現在有効であるか否かを表示する有効ビットを含む。したがって、ＴＬＢエントリに記述されたメモリページにアクセスするために、アクセスプロセスは、保護キー・レジスタ内の有効な保護キーと関連され、ＴＬＢエントリ内のメモリページに関連されたアクセスモードと互換性のある方式でページにアクセスする必要があり、ＴＬＢエントリ内のメモリページに関連された特権レベルと互換性のある特権レベルで実行する必要がある。
【００３０】
エントリが、仮想メモリアドレス内の仮想ページアドレス及び仮想メモリアドレスの領域レジスタ選択フィールドによって選択された領域識別子と同一の領域識別子及び仮想ページアドレスを有するＴＬＢ内で発見されなければ、ＴＬＢミスが発生し、ハードウェアは、ハードウェアが提供するＶＨＰＴウォーカを用いて、保護されたメモリに位置され、仮想ハッシュページテーブル（ｖｉｒｔｕａｌ  ｈａｓｈ  ｐａｇｅ  ｔａｂｌｅ：以下、「ＶＨＰＴ」という）と称されるアーキテクトマッピング制御テーブルから正確なＴＬＢエントリを探索するように試みることができる。ハードウェアが、ＶＨＰＴから正確なＴＬＢエントリを探索することができなければ、ＴＬＢミス障害が発生して、カーネルまたはオペレーティングシステムは、物理的なメモリ内の特定のメモリページを見つけるように起動されたり、或いは、必要な場合、外部装置から物理的なメモリへ特定されたメモリページをローディングしてから、エントリとして適切な変換をＶＨＰＴ及びＴＬＢに挿入する。仮想メモリアドレスの物理的なメモリアドレスへの変換を試みるとき、カーネルまたはオペレーティングシステムが、保護キー・レジスタ９３４内で有効な保護キーを見つけることができなかったり、現在実行されているプロセスによって試みられたアクセスが、ＴＬＢエントリ内のアクセスモードまたは保護キー・レジスタの保護キー内の読み取り／書き込み／実行ビットと互換性がないか、或いは、現在実行されているプロセスが実行される特権レベルが、ＴＬＢエントリによって必要とされる特権レベルよりも十分に特権化されていないと、オペレーティングシステムコードに対する実行のプロセッサ・ディスパッチによって処理される障害が発生される。
【００３１】
図１０は、仮想メモリアドレスに対応する物理的なメモリ内でメモリページを見つけるために、オペレーティングシステムによって用いられるデータ構造の一形態を示している。仮想メモリアドレス９０２は、図９と同様のフィールド及び数値ラベルを有した図１０に示される。オペレーティングシステムは、仮想ページテーブル１００４内でエントリ１００２を選択するために、領域セレクタ・フィールド９０６及び仮想ページアドレス９０５を用いる。仮想ページテーブルエントリ１００２は、物理的なメモリ内でページ１００８を参照する物理的なページアドレス１００６を含む。仮想メモリアドレスのオフセット９０４は、仮想メモリページ１００８で適したバイトの位置１０１０を選択するために用いられる。仮想ページテーブル１００２は、物理的アドレスが有効であるか否かを示すビット・フィールド１０１２を含む。物理的アドレスが有効でなければ、オペレーティングシステムは、通常、メモリページを含むために物理的なメモリ内でメモリページを選択し、ディスクドライブ１００４のような外部記憶装置から、メモリページの内容を検索する。仮想ページテーブルエントリ１００２は、付加的なフィールドを含むが、このフィールドから、ＴＬＢエントリのために求められる情報を検索することができる。オペレーティングシステムが、仮想メモリアドレスを物理的なメモリアドレスに成功的にマッピングすると、このマッピングは、仮想ページテーブルエントリに入力され、ＴＬＢエントリとしてフォーマットされて、ＴＬＢ内に挿入される。
【００３２】
図１１は、ＴＬＢエントリにおいて用いられるアクセス権限エンコーディングを示している。アクセス権限は、読み取り、書き込み、実行及びアクセス権限の組み合わせを規定する３ビットＴＬＢ．ａｒモード・フィールド１１０２、及びメモリページと関連された特権レベルを規定する２ビットＴＬＢ．ｐｌ特権レベル・フィールド１１０４を含む。図１１に、ＴＬＢ．ａｒ及びＴＬＢ．ｐｌフィールド内に含まれるそれぞれの可能な値のためのアクセス権限が示されている。アクセス権限は、現在にプロセスが実行される特権レベルに依存することに留意されたい。したがって、例えば、０と同一のＴＬＢ．ａｒ及び３と同一のＴＬＢ．ｐｌを有するＴＬＢエントリとして特定されたメモリページは、各特権レベル１１０６−１１０９に対応するカラムで文字「Ｒ」で図１１に示されている任意の特権レベルで実行されるプロセスによって読み取られるようにアクセスすることができる一方、０と同一のＴＬＢ．ａｒ及び０と同一のＴＬＢ．ｐｌを有するＴＬＢエントリに記述されるメモリページが、特権レベル０に対応するカラム下で、文字「Ｒ」１１１０で図１１に表示されたような特権レベル０で実行されるプロセスのみによって読み取られることで、アクセスすることができる。図１１に示されているアクセス権限は、図４に関連して上述した論議による特権レベルで内部化される。一般的に、特定の特権レベルで実行されるプロセスは、その特権レベル及び十分に特権化されていない全ての特権レベルと関連のあるメモリページにアクセスすることができる。ＴＬＢエントリに含まれるアクセス権限のみを用いると、レベル３で実行されるプロセス及びレベル０で実行されるカーネルにアクセスすることができながら、特権レベル２で実行されるオペレーティングシステムにはアクセスすることができないメモリ領域を生成することは不可能である。特権レベル３で実行されるプロセスにアクセスすることができる任意のメモリページは、また、特権レベル２で実行されるオペレーティングシステムにアクセスすることができる。
【００３３】
図１２Ａ−Ｂは、領域レジスタの内容及びＶＨＰＴロングフォーマット・エントリの内容のそれぞれの詳細事項を提供する。図１２Ａに示されているように、領域レジスタは、次のフィールド：（１）「ｖｅ」、ＶＨＰＴウォーカがイネーブルされるか否かを示す１ビットブール（Ｂｏｏｌｅａｎ）・フィールド；（２）「ｐｓ」、領域のための好ましいページの大きさを示す６ビット・フィールド、ここで、好ましいページの大きさは、２ｐｓ；及び、（３）「ＲＩＤ」、２４ビット領域識別子を含む。図１２Ｂに示されているように、ＶＨＰＴロングフォーマット・エントリは、次のフィールドを含む：（１）「ｐ」、当該ページが物理的なメモリに常駐し、エントリ内の他のフィールドが有意味な情報を含むかどうかを示す１ビット・ブールフィールド；（２）「ｍａ」、キャッシング、コヒーレンス、書き込み政策、及びマッピングされた物理的なページの推論的な特徴を説明する「メモリ属性」と呼ばれる３ビット・フィールド；（３）「ａ」、０のとき、アクセス障害を発生させるために当該ページへの参照を引き起こす１ビット・フィールド；（４）「ｄ」、当該ページに対するセマフォ・レファレンス（ｓｅｍａｐｈｏｒｅ  ｒｅｆｅｒｅｎｃｅｓ）、または格納時、ダーティービット障害の発生を特定する１ビット・ブールフィールド；（５）「ｐｌ」、当該ページのための特権レベルを示す２ビット・フィールド；（６）「ａｒ」、ページに対する読み取り、書き込み及び実行許可を含む３ビットアクセス−権限フィールド；（７）「ｐｐｎ」、マッピングされた物理的アドレスに最上位有効ビットを格納する３８ビット・フィールド；（８）「ｅｄ」、１ビット・ブールフィールドであって、このフィールドの値は、推論的なローディング命令を引き延ばすか否かを決定することに寄与する；（９）「ｐｓ」、仮想メモリマッピングのためのページの大きさを示す６ビット・フィールド；（１０）「ｋｅｙ」、当該仮想ページと関連のある保護キー；（１１）「ｔａｇ」、ＶＨＰＴのハッシュベース探索のために用いられる変換タッグ；及び、（１２）「ｔｉ」、変換タッグが有効であるか否かを示す１ビット・ブールフィールド。
【００３４】
図１３Ａ−Ｂは、仮想メモリの物理的なメモリへの変換キャッシュ、及び変換−キャッシュ・エントリの内容に関する付加的な詳細事項を提供する。アイテニアムは、図１３Ａに示されているように、４個の変換構造を提供する。これらは、命令ＴＬＢ（「ＩＴＬＢ」）、データＴＬＢ（「ＤＴＬＢ」）１３０４、命令語変換レジスタ（「ＩＴＲ」）１３０６のセット、及びデータ変換レジスタ（「ＤＴＲ」）１３０８のセットを含む。４個の変換構造をまとめて「ＴＬＢ」と称する。エントリは、特権命令ｉｔｃ．ｉ、ｉｔｃ．ｄ、ｉｔｒ．ｉ、及びｉｔｒ．ｄのそれぞれを用いることにより、ＩＴＬＢ、ＤＴＬＢ、ＩＴＲ、及びＤＴＲ内に配置される。上述したとおり、ＩＴＬＢ及びＤＴＬＢは、仮想メモリの物理的なメモリへの変換のための第１のキャッシュとして作用する。
【００３５】
図１３Ｂは、上述の特権命令を用いて変換−キャッシュ・エントリをＴＬＢに挿入するために用いられるレジスタの内容を示している。４個の異なるレジスタの内容：（１）特権命令に対するオペランドとして特定された一般的なレジスタ１３１０、割り込みＴＬＢ挿入レジスタ（ｉｎｔｅｒｒｕｐｔｉｏｎ  ＴＢＬ  ｉｎｓｅｒｔｉｏｎ  ｒｅｇｉｓｔｅｒ：以下、「ＩＴＩＲ」）１３１２、割り込み障害アドレスレジスタ（ｉｎｔｅｒｒｕｐｔｉｏｎ  ｆａｕｌｔｉｎｇ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ：以下、「ＩＦＡ」という）１３１４、及びＩＦＡレジスタ１３１４の最上位有効３ビットによって選択された領域レジスタ１３１６の内容が用いられる。図１３Ｂに示された多くのフィールドは、図１２Ｂで示されたＶＨＰＴロング・フォーマットエントリでのフィールドと同一であり、簡略にするため、再び説明されない。ＩＦＡレジスタ内のフィールド「ｖｐｎ」は、仮想メモリアドレスの最上位有効ビットを含む。ＶＨＰＴエントリ及び変換キャッシュ・エントリの両方において、物理的なページアドレス及び仮想メモリページアドレスの最上位有効ビット（ページオフセットビットは、０に推定）は、物理的なページ及び仮想メモリページのそれぞれの第１バイトのアドレスを表示する。したがって、ＶＨＰＴエントリ及びＴＬＢエントリは、仮想メモリアドレス及び仮想メモリページの両方に対応するものとされている。物理的なメモリアドレスまたは仮想メモリアドレスの特定されない最下位有効ビットは、最上位有効ビットによって特定された物理的なメモリまたは仮想メモリページ内で、バイトでオフセットされる。
【００３６】
図１４は、保護キー・レジスタの内容に関する付加的な詳細事項を提供する。保護キー・レジスタ１４０２のためのフォーマットは、２４ビットキー・フィールド１４０４及び４個の異なる単一ビット・フィールドを含むが、これらのフィールドは：（１）保護キー・レジスタが有効内容を含むかどうかを示し、それによって仮想アドレス変換の間にプロセッサによって用いられる有効ビット１４０６；（２）設定時、ページに対する書き込みアクセス拒否をもたらす書き込みディスエーブル・ビット１４０８であって、このための変換は、保護キー・フィールド１４０４に含まれた保護キーを含み；（３）設定時、ページに対する読み取りアクセスを無効化させる読み取りディスエーブル・ビット１４１０であって、このための変換は、キー・フィールド１４０４に含まれるキーを含み；及び、（４）設定時、ページへの実行アクセスを防止する実行ディスエーブル・ビット１４１２であって、このための変換は、キー・フィールド１４０４に含まれたキーを含む。保護キー・レジスタ内の読み取りディスエーブル、書き込みディスエーブル、及び実行ディスエーブル・ビットは、ページ毎のアクセス権限に基づいたものよりは、キー・ドメインに基づき、ページへのアクセスを制御するための付加的メカニズムを提供する。
【００３７】
図１５は、図５に関連して上述したアイテニアム・アーキテクチャによって提供される、仮想アドレス変換メカニズムを示している。図１５は、さらに、変換索引バッファ１５０２、保護キー・レジスタ１５０４、領域レジスタ１５０６、３個の異なる仮想アドレス１５０８−１５１０、及び、すべての３つの仮想アドレス１５０８−１５１０が変換される物理的アドレス１５１２を示している。仮想アドレス１５０８−１５１０のような１つ以上の仮想アドレスが、物理的アドレス１５１２のような単一物理的アドレスに変換されるとき、仮想アドレスは、互いの仮想アドレス別名（ａｌｉａｓｅｓ）である。アイテニアム・アーキテクチャ及びその他の多くの最新のコンピュータ・アーキテクチャは、仮想アドレス・エイリアシングを支援する。ゲスト・オペレーティングシステムは、仮想アドレス・エイリアシング支援を推定することができ、さまざまな数多くの理由より仮想アドレス・エイリアシングを用いる。そのために、ゲスト・オペレーティングシステムへの仮想マシン・インタフェースを提供する仮想マシンモニタは、さらに、合理的且つ効率的な方式で仮想アドレス・エイリアシングを支援する必要がある。
【００３８】
図１６Ａは、コンピュータメモリ及び記憶装置の一部とコンピュータメモリの一部で実行可能なプログラムの一部を示している。図１６に示されているメモリレイアウト及び実行可能なコードフォーマッティングは、インテル（登録商標）・アイテニアム・アーキテクチャのものである。種々の類型のコンピュータ・アーキテクチャに従って実行される多くの種々の類型のコンピュータは、異なるメモリ及び実行可能なコード協約（ｃｏｎｖｅｎｔｉｏｎｓ）を用いる。しかしながら、アイテニアム・アーキテクチャ・メモリ及び実行可能なコード協約のために例示された原理は一般的であり、且つ広範囲な数多くの類型のコンピュータ及びコンピュータ・アーキテクチャにかけて適用される。６４ビットメモリワードのカラム１６０２によって図１６Ａに示されるコンピュータメモリは、コンピュータワードの非常に長い順序化されたシーケンスと見なすことができるが、各ワードは、別個のアドレスを有する。一般的に、コンピュータ・アーキテクチャは、自然ワードの大きさを特定し、アイテニアム・アーキテクチャの場合は、６４ビットまたは８バイトである。異なるコンピュータ・アーキテクチャ及び種々の類型のコンピュータは、異なる自然ワード長を特定する。例えば、現在の個人用コンピュータ（「ＰＣ」）において、自然ワード長は、一般に、３２ビットまたは４バイトである。多くのコンピュータ・アーキテクチャ及び種々の類型のコンピュータは、異なるアドレスの指定能力細分性（ｇｒａｎｕｌａｒｉｔｉｅｓ  ｏｆ  ａｄｄｒｅｓｓａｂｉｌｉｔｙ）を用いる。アイテニアム・アーキテクチャにおいて、アドレス指定能力細分性は、多くの範囲の細分性にわたって設定することができる。本発明を説明するために、アドレス指定能力の細分性は単一バイトであると仮定する。メモリにおける特定の６４ビット自然ワード内の８バイトは、最低アドレス指定（ｌｏｗｅｓｔ−ａｄｄｒｅｓｓｅｄ）されたバイトから最高アドレス指定（ｈｉｇｈｅｓｔ−ａｄｄｒｅｓｓｅｄ）されたバイトまで順次に順序化される。同様に、各バイト内のビット及び全体ワード内のビットは、また、最下位有効ビットから最上位有効ビットまで順序化される。
【００３９】
図１６Ａにおいて、任意に選択された６４ビットワード１６０４には、説明のために、任意のアドレス「Ｘ」１６０６が割り当てられる。一般的に、メモリ−ワード・アドレスは６４ビット長さからなり、各自然コンピュータワードは、単一アドレスを格納することができる。アドレス「Ｘ」は、最下位有効バイトのバイトアドレスであるか、６４ビット・コンピュータワード１６０４で最低アドレス指定されたバイトである。それ故、メモリ内の次のコンピュータワード１６０８のアドレスは「Ｘ＋８」であり、その前のワード１６１０のアドレスは「Ｘ−８」である。アドレス「Ｘ−１６」で、６４ビットワード１６１２内の個別バイトは、自らのバイトアドレスがラベル付けられて、図１６に明確に示されている。第１の最低アドレス指定されたバイト１６１４は、アドレス「Ｘ−１６」で図１６に示され、次の連続した上位アドレス指定されたバイト１６１６−１６２２は、コンピュータワード１６１２内の最低アドレス指定されたバイト１６１４の左側に示される。図１６Ａに示されているようなメモリ・レイアウト及びアドレス指定協約は、実行可能なコードを格納するメモリだけではなく、データを格納するメモリの両方に適用される。メモリページの内容が実行可能かどうか、或いは、データが、ページに関連されたアクセス権限によって完全にまたは部分的に決定されることができるかどうかは、格納されたプログラムがページ内の命令として見なすものを、該格納されたプログラムが実行するように試みるか否かによって最終的に決定される。
【００４０】
インテル（登録商標）・アイテニアム・アーキテクチャにおいて、コンピュータ命令は、１６８ビットバンドルに格納される。それぞれの１２８ビット又は１６バイト命令バンドルは、３つの命令を含む。例えば、図１６で、アドレス「Ｘ」及び「Ｘ＋８」１６０４及び１６０８の両方において、２つの隣接したコンピュータワードは、単一命令バンドル１６２４を格納する。命令バンドル１６２４は、アイテニアム・プロセッサ内で特定の類型の命令実行サブユニットに命令バンドルを指示する値をエンコードする、第１の５ビット・フィールド１６２６を含む。命令バンドル１６２４は、さらに３つの命令１６２８−１６３０を含むが、各命令は、４１ビット長を有する。各命令は、多数の異なるフィールドを含む。図１６Ａにおいて、命令バンドル１６２４で最終命令１６３０の拡大図は、命令バンドル１６２４の下に１６３２で示される。命令のためのフォーマットは、命令毎に大きく変化する。しかしながら、一般に、命令は、操作コード（ｏｐ  ｃｏｄｅ）１６３４を含み、大部分の命令は、オペランドまたは独立変数を含む。例えば、図１６Ａで、命令１６３２は、３個のオペランド１６３６−１６３８を含む。格納されたプログラムを含むメモリにおいて、６４ビットワードの各連続した対は、次の命令バンドルを含む。古いコンピュータ・アーキテクチャにおいて、命令は、メモリに格納された順で実行される。多数の最新のプロセッサ・アーキテクチャと同様に、アイテニアム・アーキテクチャは、より一層複雑であり、６個の命令もの数の大量のパイプライン方式及び並列実行を特徴とする。しかし、本発明を説明するために、格納されたプログラムは、下位アドレスから上位アドレスまでメモリに格納された順で大体順次実行されるメモリ内に連続的に格納される、命令バンドルのシーケンスとして見なすことができる。また、特定のコンピュータワードを含むメモリページに関連されたアクセス権限を認知することなく、或いは特定のコンピュータワードがプログラムによって実行されるように試みられるか否かを認知することなく、コンピュータワードの内容のみに基づいて、コンピュータワードが格納されたデータまたは２つのワード命令バンドルのうちのいずれか１つのワードを表示するか否かを決定することは不可能であるということを認識する必要がある。実際に、同一のメモリは、ある場合には、データとして取り扱われることがあり、別の場合には、命令バンドルの一部として実行されることがある。
【００４１】
図１６Ｂは、分岐命令のコンテキストにおいて、直接オペランド及びレジスタ・オペランドを示している。図１６Ｂに示されているように、アドレス「Ｘ」及び「Ｘ＋１６」において、メモリ１６４６の一部の６４ビットワード１６４２及び１６４４は３個の命令バンドルを含むが、これらの中で第２の命令１６４８は、分岐命令である。分岐命令は、現在実行される命令バンドルに続く命令バンドル以外の命令バンドルのアドレスを含むために、ＩＰレジスタ１６５０の内容を変更するように用いられることで、マシンレベルのｇｏｔｏ動作に影響を及ぼす。図１６Ｂに示されているように、分岐命令は、この命令が分岐命令であることを特定する数字操作コード１６５２だけではなく、分岐動作のための目標命令バンドル、または分岐命令によって実行されるｇｏｔｏ動作の宛先命令を特定する単一オペランド１６５４を含む。目標オペランドは、異なるサブタイプの分岐命令で、多くの異なる方式で特定可能である。図１６Ｂに、間接分岐命令１６５６及びＩＰ相対的な分岐命令１６５８が示されている。間接分岐命令１６５６の目標オペランドは、８個の分岐レジスタのうちの１つを数値的に特定する分岐命令内の７ビット・フィールドである。例えば、図１６で、分岐レジスタ・フィールド１６６０は、特定の分岐レジスタ１６６２を指定する。分岐命令が、ｇｏｔｏをアドレス「Ｘ＋８００」で目標命令１６２４に指定すると、間接分岐命令１６５６のレジスタ・オペランド１６６０によって指定された分岐レジスタ１６２２は、アドレス「Ｘ＋８００」を含む。したがって、間接分岐命令１６５６は、現在実行されているプログラムにアクセスすることのできる任意の６４ビットアドレスに実行制御を伝達することができる。ＩＰ相対的な分岐命令１６５８は、分岐命令のアドレスから、実行が分岐命令によって伝達される目標命令までのオフセットを含む目標オペランド・フィールド１６６６を有する。したがって、例えば、図１６Ｂで、目標オペランド１６６６は、目標命令１６６４のアドレス「Ｘ＋８００」にＩＰレジスタをローディングするために、ＩＰ相対的な分岐命令１６５８が実行される間にＩＰレジスタ１６５０の内容に付加される数値値「８００」を含む。そのため、間接分岐命令１６５６は、レジスタ・オペランド、すなわちコンピュータ命令のための最も一般的な類型のオペランドを含む一方、ＩＰ相対的な分岐命令１６５８は直接オペランドを含むが、このオペランドは、ＩＰ相対的な分岐命令の場合に、命令を実行する間に用いられる値を数値的にエンコードする。ＩＰ相対的な分岐命令の直接オペランド、目標フィールド１６６６は、６４ビット自然ワードの大きさよりも相当短いビットの長さを有するため、ＩＰ相対的な分岐命令は、分岐命令の前後の制限された範囲の命令内においてのみ、他の命令に実行制御を伝達することができる。
【００４２】
図１７Ａで、命令は、メモリに格納される順に示されている。連続した命令のセットの側に、矢印１７０４のような矢印で示されているように、プロセッサによって実行される命令１７０２の第１の連続シーケンスが存在する。したがって、命令１７０６は、矢印１７１０で示されたような命令１７０８よりも先に、矢印１７０４で示されているように、先ず実行される。命令１７１２のセットのような多様な命令のセットは、繰り返して実行される命令１７１２のセットの場合に逆方向を指す矢印１７１４及び１７１６で示されているように、ループで繰り返し実行される。一般に、矢印１７２４で示されているように、後続の命令１７２０ではなく命令１７２２に対する実行を指示する分岐命令１７１８のように、分岐型命令が、分岐命令に続かない命令に対する実行を指示するときを除けば、命令は、順に実行される。ときどき、多様な理由のうちの１つから、メモリにおける命令の順序と、分岐命令のように命令それ自体とによって決定されたような正常な実行スレッドは、図１７Ａに点線の矢印１７２６で示されているように割り込みされる。命令１７２６が実行され、矢印１７３０で示されているように命令１７２８に対する実行が指示される。しかし、命令１７２６の実行から生じるトラップによって、または命令１７２８を実行するための試みから生じる障害若しくは外部の割り込みによって、命令の実行の流れは割り込みされ、命令の実行は、自らの第１の命令として命令１７３０を有する割り込みベクトルに対して指示される。図１７Ａに示されているように、割り込みベクトルは、連続した命令１７３４の離散セットで図１７に示されている割り込み処理ルーチンに、次の命令実行を指示する分岐命令１７３２を含むことができる。割り込みが処理されると、割り込み処理ルーチンは、プロセッサ状態をプロセッサが初期に割り込みされたときの状態に戻す割り込み（「ｒｆｉ」）命令１７３６からリターンを実行させ、図１７Ａに矢印１７４０で示されているように、実行の元の流れに実行をリターンさせる。
【００４３】
図１７Ｂは、割り込みをディスパッチするためにプロセッサによって取られたステップを説明するフロー制御図である。割り込みが生じた場合、ステップ１７４２において、プロセッサは、ＩＰＳＲ及びＩＩＰレジスタにＰＳＲ及びＩＰレジスタの内容を格納し、最後に成功的に実行された命令の実行時にＩＰレジスタの内容をＩＩＰＡレジスタに格納し、付加的な割り込み・レジスタを、現在の割り込みを反映する新しい値で更新する。ステップ１７４４において、プロセッサは、命令実行が指示された割り込みベクトルのアイデンティティーとともに、発生した特定の類型の割り込みを識別する、発生した割り込みの類型に関する情報でＩＳＲレジスタを更新する。ステップ１７４６において、プロセッサは、ＰＳＲレジスタを更新し、プロセッサを割り込み処理状態に置く。このような更新の一部として、プロセッサ状態レジスタ（ＰＳＲ．ｃｐｌ）内の現在優先順位レベル（「ｃｐｌ」）フィールドは、値（「０」）を有するようにアップデートされて、０、すなわち最高の優先順位レベルを示す。アイテニアム・プロセッサは、最高の優先順位レベルですべての割り込みを処理する。次に、ステップ１７４８において、プロセッサは、割り込みベクトルのアドレスをＩＰレジスタに置き、ステップ１７１０において、ＩＰレジスタの内容によってポインティングされた割り込みに対応する割り込みベクトルで第１の命令を行うことにより、実行が再開される。
【００４４】
アイテニアム・プロセッサは、並列命令の実行及びパイプライン化された命令の実行を特徴とする。パイプライン化された命令は、命令の実行が非常に速い。命令のパイプライン化された実行は、多数の異なる製品が、多様なアセンブリステーションを通過することによって同時に組み立てられる、工場での組み立てライン大量生産と類似している。一回に単一命令を遂行することよりは、プロセッサが、組み立てラインのような方式で多数の命令の一部を実行する。しかしながら、割り込みが発生した場合、パイプラインが噴出されて、その後に再スタートし、２０個乃至４０個の命令サイクルの間の損失をもたらす。新しいプロセッサが、常にずっと増加する量のパイプライン化及び命令実行の並列化を続けて統合することにより、パイプライン噴出の有害な効果が増加するものと予想される。
【００４５】
アイテニアム・アーキテクチャにおいて、ある種類の命令は、特権命令を含むものと見なされて、優先順位レベル０、すなわちアイテニアム・アーキテクチャによって支援される４つの優先順位レベルのうちの最高レベルで実行されるルーチンによってのみ実行することができる。オペレーティングシステムは、優先順位レベル０で実行するための手段であって、特権命令及びレジスタへの排他的アクセスを有し、一般的に、メモリ及び装置のＯＳ特定部分にアドレス変換を提供する変換索引バッファエントリ内で保護キー・フィールドを設定して、このようなメモリ及び装置のＯＳ特定部分が、優先順位レベル０でしかアクセスすることができなくなるようにする。マシン資源の特権に基づいた分割及び優先順位レベルは、アプリケーション・プログラムによって利用されると、アプリケーション・プログラムが他のアプリケーション・プログラムまたはオペレーティングシステムの実行に干渉するように許容する資源及び命令に対して、オペレーティングシステムが排他的制御を行うことを可能とする。しかしながら、仮想マシンモニタが、ハードウェア／ファームウェア階層と１つ以上のゲスト・オペレーティングシステムとの間に介在するとき、仮想マシンモニタは、一般的に、オペレーティングシステムによって制御される命令及び特権化されたマシン資源に対する排他的な制御を維持する必要がある。一方、仮想マシンモニタ上で実行されるゲスト・オペレーティングシステムは、ゲスト・オペレーティングシステムが他のゲスト・オペレーティングシステムまたは仮想マシンモニタの実行と干渉することを許容する、特権化されたレジスタにアクセスしたり、或いは命令を実行することができる。したがって、仮想マシンモニタは、優先順位レベル０で実行する必要があり、ゲスト・オペレーティングシステムによって提供されるアプリケーション・プログラム実行環境内で実行されるアプリケーション・プログラム及びゲスト・オペレーティングシステムの両方が、共に優先順位レベル０で実行されることを防止し、それによって、特権命令及びレジスタにアクセスする。
【００４６】
しかし、一般に、仮想マシンモニタは、仮想マシンモニタが階層化されるハードウェア／ファームウェア・インタフェースと本質的に同一の仮想マシン・インタフェースを、それぞれのゲスト・オペレーティングシステムに提供しなければならない。ゲスト・オペレーティングシステムは、一般的に、優先順位レベル０へのアクセス及び優先順位レベル０で実行することにより特権命令及びレジスタへのアクセスを推定するため、仮想マシンモニタは、ゲスト・オペレーティングシステムが低い優先順位レベルで実行されるようにすることができない。その代わり、仮想マシンモニタは、ゲスト・オペレーティングシステムによって用いられる仮想優先順位レベル０を提供することにより、優先順位レベル０で実際に動作しているという錯覚をゲスト・オペレーティングシステムに提供する。しかしながら、実際に、仮想優先順位レベル０は、仮想マシンモニタによって優先順位レベル０よりも低い優先順位にマッピングされ、言い換えれば、優先順位レベル０より数値的に大きい。このように遂行することで、仮想マシンモニタは、ソフトウェア仮想化補助を必要とする、特権命令または他の命令を実行するためのゲスト・オペレーティングシステムによるいずれのすべての試みを遮ることができ、特権化されたレジスタ及び特権命令に対して排他的な制御を維持して、仮想化されたマシン状態の一致した観点を表示するため、代わりに特権命令の実行をエミュレートしたり、或いはゲスト・オペレーティングシステムの代わりに特権命令を実行する。
【００４７】
アイテニアム・プロセッサ・アーキテクチャは、最高特権レベルで動作するオペレーティングシステムとアプリケーション・プログラムの間で遷移するとき、割り込みを回避するための１つのメカニズムを提供する。図１７Ｃは、ｅｐｃ命令の動作が示されている。図１７Ｃで、アプリケーション・プログラムは、曲線状の矢印１７５４のような、湾曲した矢印で図１７Ｃに示された実行のスレッドで、アプリケーションプログラム優先順位レベルページ内において命令１７５２を行う。命令１７５６で、アプリケーション・プログラムは、オペレーティングシステムサービスを利用するためにオペレーティングシステム・ルーチンを呼び出す。このような呼び出しまたは分岐は、結果的に、第１の命令１７６０を含む高レベル優先順位仮想メモリページの第１の命令１７６０に制御の変換１７５８をもたらす。第１の命令は、ＰＳＲレジスタに維持される現在優先順位レベルをより高い優先順位レベルにするように指示するｅｐｃ命令であって、ｅｐｃ命令に続く命令は、優先順位レベル０で実行されるために特権命令及び特権化されたレジスタへ十分アクセスする、オペレーティングシステム・サービスルーチン命令を構成する。ｅｐｃ命令によって容易となる、アプリケーション・プログラムの実行からオペレーティングシステムの実行への変化は、どのような割り込みも含まないことから、プロセッサのパイプライニング効果を減少せず、マシンの割り込み処理の状態保存の間接費用を発生させない。
【００４８】
図１７Ｄは、ｅｐｃ命令メカニズムの高レベルフロー制御のダイヤグラムである。ステップ１７６２において、分岐または呼び出し命令は、０優先順位レベル・オペレーティングシステム・ルーチンを呼び出すために、低い優先順位レベルルーチンによって実行される。ステップ１７６４において、アイテニアム・プロセッサは、ＰＦＳレジスタ内のフィールドにＣＦＭ及びＥＣレジスタの内容を格納し、ＰＦＳレジスタの第３のフィールドに、現在マシン優先順位レベルを格納する。次に、ステップ１７６６において、マシンは、ｅｐｃ命令の実行を開始する。先ず、ステップ１７６８において、マシンは、ＰＦＳレジスタのフィールドに現在格納された以前のマシン優先順位レベルが、数値的に現在マシン優先順位レベルよりも低いか否かを決定する。低いときは、より高い優先順位レベルで前の実行をエミュレートするために、呼び出しルーチンによって試みが行われ、プロセスは、アーキテクチャによって許容されないＰＦＳ．ｐｐｌフィールドに格納されているように、より高い優先順位レベルで、また後で再開されることができる。したがって、ステップ１７７０において、障害が生成される。しかし、呼び出しルーチンが、同一であるか高いマシン特権レベルで実行されるルーチンを成功的に呼び出したら、ステップ１７７２において、現在マシン優先順位レベルは、仮想ページに対する変換索引バッファエントリから獲得されたｅｐｃ命令を含む仮想ページの優先順位レベルに設定される。最後に、ステップ１７７４において、実行は、オペレーティングシステム・ルーチンの実行のために新しい優先順位レベル、一般的に、優先順位レベル０で継続する。
【００４９】
インテル・アイテニアム−２（登録商標）・アーキテクチャは、現在、開発中であり、仮想マシンモニタをよりよく支援するための様々な特徴を付け加える。まず、新しい仮想モニタ（以下、「ｖｍ」という）ビットがＰＳＲに付加された。ＰＳＲ．ｖｍビットがクリアされると、プロセッサは、本来のインテル・アイテニアム・プロセッサと類似した方法で作動する。しかし、ＰＳＲ．ｖｍビットが設定されると、プロセッサを表わしたり、或いはプロセッサ状態が特権化されていない実行スレッドによって間接的に修正されることを許容するｔｈａｓｈ命令のような任意の非特権命令及びすべての特権命令は、「仮想化障害」と呼ばれる新しい類型の障害を引き起こす。ＰＳＲ．ｖｍビットは、ＩＶＴを介して伝達されるすべての割り込み上でクリアされ、ＶＭＭは、ｒｆｉ命令を通じてゲスト・オペレーティングシステムに実行をリターンするとき、リセットされることがある。アイテニアム−２・アーキテクチャは、ＰＳＲ．ｖｍビットが、最小間接費用とともに設定されてクリアされるようにする新しい命令、ｖｍｓｗを提供する。ＰＳＲ．ｖｍが設定されるとき、６４ビットの仮想アドレス・ベースの下方半分だけがアクセス可能である一方、ＰＳＲ．ｖｍビットがクリアされると、すべての６４ビットがアクセス可能である。したがって、６４ビット仮想アドレス空間の１／２は、ＶＭＭアクセス専用に維持される。いくつかの新しいベクトルは、ＩＶＴに付加されて、ＶＭＭ割り込み処理ルーチンにより、仮想化障害及び障害操作コードの２つの原因の識別を容易にする。ＰＡＬファームウェア階層は、アイテニアム−２・アーキテクチャにおいて強化され、多くのＶＭＭサービス及び仮想プロセッサ記述子テーブル（以下、「ＶＰＤ」という）を提供する。新しいＰＡＬサービスは、ＶＭＭに対して特別に設計された新しい呼び出し協約を用いる。ＰＡＬサービスは、割り込み制御レジスタへの効率的なゲスト・オペレーティングシステムのアクセスを容易にし、ＶＭＭが、特定の資源及び命令の仮想化をイネーブル及びディスエーブルすることを許可する。
【００５０】
本質的に、ＰＳＲ．ｖｍビットは、特権階層を含む、プロセッサ状態の高レベル分岐点を取り入れる。ゲスト・オペレーティングシステム及び高レベル計算個体は、十分な範囲のＰＬ０からＰＬ３の特権階層を用いることができる。しかし、特権階層ＰＬ０で実行するときでさえ、ゲスト・オペレーティングシステム及び高レベル個体は、１に設定されたＰＳＲ．ｖｍビットとともに特権命令に直接アクセスすることができず、６４ビットアドレス・ベースの１／２にアクセスすることができない。特権レベル０で作動し、クリアされたＰＳＲ．ｖｍと一緒に作動する実行スレッドだけが、特権命令に直接アクセスすることができる。
【００５１】
発明の実施形態
前述したように、現在、仮想マシンモニタ（ＶＭＭ）は、広範囲且つ多様な保安脅威に対して攻撃を受けやすい形態である。ＶＭＭ及びこれが支援する高レベルの計算個体は、最高の特権で実行する膨大な量のコードの複雑度から生じる、Ｉ／Ｏ及びネットワーク通信を介した攻撃、悪意のあるコードのゲスト・オペレーティングシステムとアプリケーション・プログラムへの挿入、及びメモリと他のハードウェアレベルの計算資源の保安化されていない使用に対して脆弱である。このような理由から、より一層セキュアなＶＭＭだけではなく、新規且つセキュアなＶＭＭの開発に対する戦略が、研究者及び開発者、製造者及び、最終的には、ＶＭＭに基づくコンピュータシステムのユーザによって要望される。
【００５２】
図１８は、典型的な中世の城を示している。中世の城は、本発明の実施形態を示す設計及び開発技術と非常に類似している。
【００５３】
城１８０２は、主に保安、すなわち、王族の生命、子孫及び宝物を安全にするように設計される。城は、王家を安全にするために、さまざまの異なる、階層的に順序化された保安尺度を用いる。まず、城は、一般に、丘の頂点のような好まれる地理的位置１８０４に位置する。一般的に、王国の境界内に適切に建設されるが、ここで、城の建設は、侵略軍または農民の暴動による攻撃の前に安全に遂行されて、完了することができ、建設詳細事項を知ることによって利得を得ることもできる隣りの王国の軍隊及びスパイによって発見されずに遂行することができる。また、侵略軍または暴徒化した反抗農民の接近を妨害するため、すべての側面に下に傾斜した地形のような自然的な位置に基づく保安を提供する、丘の頂上のような防御可能な位置に建設される。山腹は、また、周辺地域を見張って観察するための最適の見晴らし地点を提供することができる。
【００５４】
一般に、城は、多層システムの防御を用いる。城は、堀１８０６、厚くて非常に高い壁１８０８、及び、暴徒化した反抗農民または侵略軍に堀及び外部城壁を突破された場合に王族の防御を続けるための多数の砦を提供する、高い壁によって取り囲まれた内部空間内の障害物と付加的な壁とに取り囲まれている。城は、さらに、非常に制限された数のアクセス地点を用いる。堀には、暴徒化した反抗農民または侵略軍の接近が観測されるとき、容易に破壊することができる単一ブリッジ１８１０が架けられている。城壁１８０８は、一般的に、重い門で保護される単一地点の入出口１８１２を有する。強化された入出口地点を通じて、類似であり、また制限されたアクセスを城の内部強化に採用することもできる。さらに、城に入ろうとする群れが識別されて、彼らの進入は、城の門を開く前に承認を受ける。結局、城は、周辺の村の農家内での暴動若しくは侵略軍の接近に対する兆候及び警告に対して、周辺環境を眺める注意深い観察者、つまりモニタ１８１２を含む、武装軍人によって一般的に保護される。要約すれば、城は、最初に、確実に、そして安全に建築され、周辺環境の脅威に対する一定した監視及び内部化（ｎｅｓｔ）された保安尺度の階層によって保護される。
【００５５】
城に採用された保安尺度は、セキュアなＶＭＭ、及びゲスト・オペレーティングシステムの実行環境を生成するために本発明によって用いられる尺度と、構成及び戦略において類似する。図１９は、本発明の実施形態を表わす、セキュアなＶＭＭ及びその基礎となるセキュア・ファンデーションの全体の戦略及びアーキテクチャを示している。本発明のアーキテクチャは、以下を含む：（１）セキュア・ファンデーション、その小さな部分が特権レベル０で実行され、クリアされたＰＳＲ．ｖｍを実行する。言い換えれば、セキュア・ファンデーションのコア部分だけがハードウェアレベル１９０４の直ぐ上の考えられる最高の特権レベル１９０２で実行され、その残りは、ＰＬ１で実行される；（２）クリアされたＰＳＲ．ｖｍを有するＰＬ１で実行され、１つ以上のゲスト・オペレーティングシステム・モニタ１９０８を含むセキュアなＶＭＭ１９０６、保安性があり、ＶＭＭアクセス専用であるメモリ１９１０及びＩ／Ｏドライバ１９１２；（３）ＰＳＲ．ｖｍセットを有する、ＰＬ０で実行される１つ以上のゲスト・オペレーティングシステム１９１４；及び、（４）ＰＳＲ．ｖｍセットを有する、ＰＬ３で実行される１つ以上のアプリケーション・プログラム１９１６。ＤＮＳサーバ、アクセレレータ及び自己保護の防御的な対抗策のような、ある種の特別アプリケーション・プログラムが、セキュア・ファンデーション１９０２上で直接実行されるように実装されることができる。
【００５６】
一般に、セキュア・ファンデーション１９０２は、１つ以上のゲスト・オペレーティングシステムに対する実行環境を提供するそのセキュア・ファンデーション上のＶＭＭ１９０６を支援する。ネットワークＩ／Ｏ１９１８は、セキュア・ファンデーションの一部として、保安ネットワークＩ／Ｏスタックの実装を通じてコンピュータシステムに入力される。このような自己保護ネットワークＩ／Ｏスタックは、多様な脅威及び保安違反に対して流入されるデータを継続的に監視する、複雑な内部ファイアウォールの役割を担当する。コンピュータシステム１９００のメモリ１９２０は厳しく区画化されるが、区画１９２２のような各区画は、コンピュータシステムの適合した動作のために必要とされる最小のアクセス権限のみを提供される。メモリ区画がアクセス権限及び保護キーの使用によって割り当てられる個体以外の個体から、メモリ区画は、厳しく保安化される。図１９において実線１９２４、１９２６で示され、セキュア・ファンデーション１９０２内で実装されて強化されるメモリ区画は、呼び出し認証技術によってさらに保護を受け、メモリ区画が割り当てられた個体のみがメモリ区画にアクセスすることができるようにする。結局、内部及び外部の大容量記憶装置１９３０上に存在するデータは、自動に暗号化され、書き込み時にＶＭＭ内でＩ／Ｏドライバ１９１２によって統合保護されて、読み取り時にＶＭＭ内でＩ／Ｏドライバ１９１２によって自動に復号化されて有効化され、外部個体が、大容量記憶装置上に格納されたコンピュータシステムデータにアクセスできないことを保証する。また、データが自動に暗号化されて復号化されるようにする暗号化キー１９３２が、ＶＭＭアクセス専用のメモリ区画１９３４に格納されて、暗号的なキーにアクセスして用いることから、ＶＭＭに外部的な計算個体を保護する。結局、セキュア・ファンデーション、ＶＭＭ、及び高レベル個体は、信頼チェーン１９３６−１９３９によって安全にインスタンス化される。本質的に、保安コンピュータシステムのそれぞれのコンポーネントは、インスタンス化の前に確認され、障害が起きたコンポーネントの不意なインスタンス化を防止しなければならない。
【００５７】
信頼チェーン１９３６−１９３９及び最高−特権レベルのセキュア・ファンデーション１９０２は、図１８を参照して示された城との類似における、城の保安構造及び好まれる地理的位置と類似である。セキュア・ファンデーション１９０２内のネットワークＩ／Ｏスタック及びゲスト・オペレーティングシステム・モニタ１９０８は共に、潜在的な保安違反に対する周辺環境を常に見張っている城での注意深い観察者１８１２と類似である。区画されたメモリ１９２０、呼び出し側認証技術１９２４、１９２６、セキュア・ファンデーションの階層的命令、ＶＭＭ及びゲスト・オペレーティングシステムは、階層的に順序化された特権とともに、城との類似について論議されたように、最小限に良好に制御された地点を有する入出口の、層になった階層的なシステムの防御を提示する。
【００５８】
図１９を参照して説明すると、一般的なアーキテクチャの様々な他の特徴は、セキュアなＶＭＭ及びセキュア・ファンデーションによって提供されるゲスト・オペレーティングシステム実行環境の全体保安に寄与する。まず、セキュア・ファンデーションは、特権レベルＰＬ０で実行する最小量のコードのみを含む。ＰＬ０コードは、専門家及び研究者の検討のために公開的に発表され、特権命令を介して、コンピュータシステムのハードウェアレベルの基本的なプロセッサ状態及びマシン状態の制御のために用いられるメカニズムのみを含み、保安動作のために充分に且つ完全に確認されるよう、十分適切に境界が設けられて、その大きさは小さい。
【００５９】
システムの第２の特徴は、アクセス権限、他の特権及びサービスが、極めて節約されて分配されるということである。メモリ区画は、例えば、メモリ区画が割り当てられた個体の正確な動作のために必要とされる最小アクセス権限のみを提供される。実行可能な命令は、例えば、単に実行アクセスとともにメモリ区画に格納される。ローディング後にだけ読み取られる必要があるデータは、単に読み取り専用アクセスとともにメモリ区画内に格納される。メモリスタック及び他のデータ構造は、決して特権を実行するように提供されることがない。したがって、データが、外部個体によって間違いを含む可能性がなく、悪意的な実行可能性がシステム内に挿入されたり、仕込まれる可能性がない。アクセス権限は、最初は、メモリ区画内にデータをローディングするように昇格されるが、その後、直ちに必要最低限のアクセス権限に低められる。アクセス権限の動的変化は、保護キーを通じて影響を受けるが、前記保護キーは、ＴＬＢ個体で規定されたアクセス権限を決して昇格させることなく、降格させることにだけ用いることができる。
【００６０】
サービス及び計算資源も、極度に節約されて分配される。それぞれの計算個体は、正確な動作に対する個体によって必要とされるセキュア・ファンデーションサービス及び最小数のＶＭＭに対してのみアクセスが許容される。セキュア・ファンデーションサービスは、認証された呼び出しメカニズムを通じて提供され、個体が割り当てられたサービスのみがそれらにアクセスすることができる。ＶＭＭ内のＩ／Ｏドライバは、もっぱら仮想アドレスのみを用いて、仮想アドレスの物理的なアドレスへの変換にアクセスしたり、制御することができない。大容量記憶装置に格納されたすべてのデータは、仮想メモリアクセス専用のメモリ区画内に安全に格納された暗号化キーによって暗号化される。ネットワーク通信またはＩ／Ｏ装置のうちのいずれか１つを通じてコンピュータシステムに入力されたすべてのデータは、潜在的な保安脅威に対して常に監視される。ＶＭＭ上で実行されるゲスト・オペレーティングシステムの動作は、ゲスト・オペレーティングシステム・モニタまたはＶＭＭ内のモニタによって常に監視される。このようなゲスト・オペレーティングシステム・モニタは、ＶＭＭ上で、計算個体によってアクセスされたり、干渉されることができない。ゲスト・オペレーティングシステムによって用いられる臨界データ(critical data)構造は、ＶＭＭアクセス専用のメモリ区画に安全に格納されることができ、認証された呼び出しを通じて、ゲスト・オペレーティングシステムによりＶＭＭサービスへアクセスすることができる。したがって、ゲスト・オペレーティングシステム及び高レベル計算個体の両方は共に、臨界データ構造に直接アクセスし、これを修正することができない。
【００６１】
図２０Ａ乃至２０Ｆは、本発明の実施形態によるＶＭＭに基づくコンピュータシステムのコンポーネントのインスタンス化（ｉｎｓｔａｎｔｉａｔｉｏｎ）に固有の信頼チェーンを示している。初めに、電源が入ると、コンピュータシステムのプロセッサ２００２（複数の場合がある）は、メモリにロードされて、プロセッサによって実行される第１のファームウェア２００６からデジタル署名２００４を計算する。最初のファームウェア２００６は、フラッシュメモリまたは他の類型の読み取り専用メモリに格納することができる。プロセッサは、計算されたデジタル署名２００４と、プロセッサに対してのみアクセス可能なハードウェアレベルで安全に格納されたデジタル署名２００８とを比較する。計算されたデジタル署名２００４が格納されたデジタル署名２００８と同一であれば、最初のファームウェア２００６は、図２０Ｂに示されているように、ローディングされ、プロセッサによって実行される。図２０Ｃに示されているように、最初のファームウェアは、Ｉ／Ｏアダプタ基板上のオプションＲＯＭのような、大容量記憶装置または他のデータ記憶コンポーネントに格納された付加のファームウェアをインスタンス化する。最初に実行させるファームウェアは、図２０Ｄに示されているように、第２レベルのファームウェアからデジタル署名２０１０を計算して、計算されたデジタル署名を、プロセッサによってローディングされた最初のファームウェアに格納されたデジタル署名２０１２と比較することで、最初のファームウェアの確認及び認証が続けられる。計算されたデジタル署名２０１０が格納されたデジタル署名２０１２と同一であれば、図２０Ｄに示されているように、第２レベルのファームウェアは、コンピュータシステムにアクセスされ、設置されることができる２０１４。同様の方法で、図２０Ｅ及び図２０Ｆに示されているように、少なくともＶＭＭのすべてのコンポーネントにわたって活動し、ゲスト・オペレーティングシステム及びそのゲスト・オペレーティングシステム上で実行されるアプリケーション・プログラムに拡張可能な、それぞれの付加のファームウェア及びソフトウェア階層は、以前に検証されてインスタンス化された階層及びコンポーネントによるインスタンス化前に検証することができる。このような技術により、セキュアなＶＭＭに基づくコンピューティング環境は、階層的に層になったシステムの防御が構成されることで、違反または攻撃の脅威なしに、セキュアにインスタンス化されて、初期化することができる。このようなプロセスは、ＴＰＭのような保安チェックで、それぞれのファームウェア及びソフトウェアの尺度を合成及び格納することを伴う。
【００６２】
図２１Ａ−Ｂは、上位レベル個体によって用いられた臨界データを格納するＶＭＭメモリ区画を含む、各種計算資源へのアクセスを厳しく制御し、高レベル計算個体の間でＶＭＭサービス及びセキュア・ファンデーションを分割する本発明の実施形態によって用いられた呼び出し認証方法を示している。図２１Ａに示されているように、ゲスト・オペレーティングシステム・コードは、ＶＭＭ及びセキュア・ファンデーションサービスを呼び出すマクロを含む。このようなマクロは、アイテニアム・プロセッサによって独立変数レジスタ内に自動的に挿入されるリターンアドレス２１１０とともに、セキュアなローダーによって生成される６４ビットのランダム発生値２１０８及びインデックス２１０６を、アイテニアム・ルーチン・呼び出しに用いられる独立変数レジスタ内にローディングする、呼び出しシーケンス内に命令２１０２及び２１０４を挿入する。サービスは、部分的に呼び出し認証メカニズムを実装するセキュア・ファンデーションコード２１１４を実行させるｅｐｃ命令及びｅｐｃページを介して、ゲスト・オペレーティングシステム・コード２１１２によって呼び出される。呼び出し認証メカニズムは、呼び出しテーブル内の対応するエントリ２１１６を識別するために、独立変数レジスタ内のインデックス２１０６を用いる。呼び出しテーブルは、ＶＭＭに基づくコンピュータシステムのコンポーネントのインスタンス化の間に用意される。その後、呼び出し認証コードは、リターンアドレス２１１０を呼び出しテーブルエントリ２１６内のリターンアドレス２１１８と比較し、また、独立変数レジスタ内の６４ビットのランダム発生値２１０８を呼び出しテーブルエントリ２１１６に格納された６４ビット値２１２０と比較する。独立変数レジスタ内の６４ビット値及びリターンアドレスが、呼び出しテーブルエントリ内の６４ビット値及びリターンアドレスと一致する場合、呼び出し認証ルーチンは、呼び出しテーブルエントリ２１１６に格納された以前の呼び出し内部化レベル２１２２を用いて、プロセッサの現在の実行スタックを映し出すインデックスのスタックのように動作する、フローテーブル２１２６に格納された前に呼び出しされたルーチンのインデックス２１２４を識別する。フローテーブル内の位置２１２４に格納され、呼び出しエントリ２１１６に格納された以前の呼び出し内部化レベル２１２２によって識別されるインデックスが、呼び出しテーブルエントリ２１１６に格納されたインデックス２１２８と一致する場合、ゲスト・オペレーティングシステムからの呼び出し２１１２は有効であり、呼び出しルーチンのインデックス２０１６をフローテーブル２１３０上に押し、呼び出しの持続した実行を認証する呼び出し認証ルーチンが保証される。そうでなければ、エラーが、呼び出しルーチンにリターンされる。
【００６３】
呼び出し認証は、セキュア・ファンデーション及びＶＭＭサービスへのアクセスを厳しく制御する。呼び出し認証は、特定の高レベル計算個体にセキュア・ファンデーションサービスを制限する方式を提供する。図２１Ｂは、高レベル計算個体の間でのセキュア・ファンデーションサービスの分割を示している。図２１Ｂから、多数の高レベル計算個体２１０２−２１０６は、図２１Ａを参照して上述した認証された呼び出しメカニズム２１１４を介して、多数のセキュア・ファンデーションサービス２１０８−２１１２にアクセスする。認証された呼び出しメカニズム２１１４は、サービス２１０８が計算個体ａ２１０２によってのみアクセス可能となり、サービス２１０９が計算個体ａ、ｂ、及びｃによってのみアクセス可能となり、サービス２１１０が計算個体ｃによってのみアクセス可能となり、サービス２１１１が計算個体ｅによってのみアクセス可能となり、さらに、サービス２１１２が計算個体ｄによってのみアクセス可能となるようにするために用いることができる。特定のサービスがシステム・インスタンス化時間で割り当てられるそれらの計算個体だけが、そのようなサービスにアクセスすることができる。したがって、呼び出し認証は、特権命令の実行に基づいて、すべての特権化されたサービスに厳しいアクセス制御を提供する。図２１Ａの呼び出しテーブルエントリ２１１６は、呼び出し個体に割り当てられたメモリ区画にアクセスするために、呼び出し個体によって必要となる保護キー２１３２を付加的に含むことができる。呼び出し認証ルーチンは、呼び出し個体に割り当てられたメモリ区画への呼び出し個体によるアクセスをイネーブルするため、呼び出しテーブルエントリ２１１６に含まれた保護キーをローディングすることができる。呼び出しの完了時に、メモリ区画をディスエーブルするために、保護キー・レジスタから保護キーを除去し、フローテーブルからインデックス２１３０を出現させるために呼び出し認証ルーチンが起動されて、後続の実行ルーチンがメモリ区画にアクセスすることを防止することができる。先の論議において、ゲスト・オペレーティングシステム・ルーチンがセキュア・ファンデーションサービスに直接にアクセスするものと示されているが、前記ルーチンは、たびたび、セキュア・ファンデーションサービスへの第２の認証された呼び出しを行うＶＭＭへの初期呼び出しを介して、セキュア・ファンデーションサービスに間接的にアクセスすることができる。
【００６４】
図２２Ａ−Ｃは、認証された呼び出しメカニズムを通じたメモリ区画の制御を、他の方式で示している。図２２Ａで、ゲスト・オペレーティングシステムは、認証された呼び出し２２０４を実行する前に、ＰＬ０で、さらに設定されたＰＳＲ．ｖｍとともに２２０２を実行している。図２２Ｂに示されているように、認証された呼び出し２２０４がゲスト・オペレーティングシステム・ルーチンによって成功的に行われたとき、セキュア・ファンデーションコードは、クリアされたＰＳＲ．ｖｍとともにＰＬ０で実行される。いったん認証されると、呼び出しは、呼び出し認証によって付加的に認証されるサービスまたはＶＭＭルーチンを起動することができる。これは、ＶＭＭによってＶＭＭアクセス可能な専用メモリ、及び状態変化をもたらす特権化されたサービスへのアクセスを許容する。また、認証された呼び出しの間に呼び出しテーブルエントリに含まれた保護キーのローディングは、メモリ区画２２０８が、ゲスト・オペレーティングシステムに代わってアクセスされることができるようにする。図２２Ｃに示されているように、呼び出しが完了されたとき、メモリ区画は、これ以上アクセスが不可能であり、特権レベルが、設定されたＰＳＲ．ｖｍとともに、ＰＬ０に復元される。したがって、認証された呼び出しの間にだけ、ＶＭＭによる保安データへのアクセスを許容するように、メモリ区画２２０８が少しの間開放される。
【００６５】
図２３は、本発明の実施形態を表わすＶＭＭの１つの基本的な特徴が示されている。図２３に示されているように、ＶＭＭは、インスタンス化されたゲスト・オペレーティングシステム・コードが、正確であり、損傷されていないことを初期に検証してから、ゲスト・オペレーティングシステムの無効な状態転移または潜在的な保安脅威の任意の兆候及び表示に対して、ゲスト・オペレーティングシステムに入力されて、前記ゲスト・オペレーティングシステムから出力されたデータを持続的に監視することができる、完全に埋め込まれたゲスト・オペレーティングシステム・モニタ２３０４を含むことができる。ゲスト・オペレーティングシステム・モニタ２３０４は、ＶＭＭ内に完全に含まれるため、ＶＭＭ及びセキュア・ファンデーションの外部の計算個体によってアクセスされたり、観測されたり、損傷されたり、あるいは影響を受けることがない。したがって、ゲスト・オペレーティングシステム・モニタは、ゲスト・オペレーティングシステム内に不可避に存在する多くの保安欠点を閉鎖するように実装することができる。
【００６６】
図２４は、本発明の実施形態を表わす仮想マシンモニタのさらに別の基本的な特徴が示されている。現在のＶＭＭに基づくコンピュータシステムの深刻な問題点は、ゲスト・オペレーティングシステムによって用いられた臨界データ構造が、ゲスト・オペレーティングシステム及び他の計算個体によって完全に保護されることができないことである。しかしながら、本発明によって提供されたＶＭＭ環境は、ゲスト・オペレーティングシステムに代わって、臨界データ構造の完全な保安格納及び管理を提供する。ゲスト・オペレーティングシステムの臨界データ構造２０４２は、ＶＭＭアクセス専用のメモリ区画２４０４に格納される。臨界データ構造２４０２にアクセスするためには、ゲスト・オペレーティングシステムは、先ず、ＶＭＭサービス２４０６に認証された呼び出しを行わなければならない。その後、ＶＭＭサービスは、ゲスト・オペレーティングシステムに代わって、ゲスト・オペレーティングシステム臨界データ構造２４０２にアクセスするために、セキュア・ファンデーションに認証された呼び出し２４０８を行うことができる。ゲスト・オペレーティングシステムは、臨界データ構造に直接アクセスすることはできないものの、ＶＭＭサービスを介してのみ臨界データ構造から読み取って、臨界データ構造に書き込むことができる。したがって、ＶＭＭは、これらの臨界データ構造は、ゲスト・オペレーティングシステム内の広く公知されており、認証されている地点からだけ正確にアクセスされるということを保証することができる。不当な個体または誤ったスレッドを介して臨界データ構造にアクセスしたり、あるいは前記臨界データ構造を変更することのできるメカニズムは、存在しない。
【００６７】
図２５は、マルチコア・プロセッサのコアの間での、ＶＭＭに基づくコンピュータシステムの計算作業の分割が示されている。図２５に示されているように、１つのコアは、セキュア・ファンデーションネットワークＩ／Ｏスタック２５０２専用とすることができ、第２のコア２５０４は、アプリケーションの実行専用とすることができ、２つの付加的なコア２５０６及び２５０８は、ゲスト・オペレーティングシステム、及び該ゲスト・オペレーティングシステム上で実行されるアプリケーション・プログラムのＶＭＭに基づいた実行専用とすることができる。マルチコア・プロセッサの利用可能性によって、セキュア・ファンデーションネットワークＩ／Ｏスタックによる同時的な監視及びファイアウォールのようなモニタリングだけではなく、特定のアプリケーション、大きなプロセッシング帯域幅、及び計算オーバーヘッドを必要とするセキュア・ファンデーションへの直接のインタフェーシングとともに、ゲスト・オペレーティングシステム及びアプリケーション・プログラムが、効率的に実行される。
【００６８】
本発明によるＶＭＭの実装は、多くの付加的な考慮事項及び特徴を含む。例えば、仮想メモリは、従来のオペレーティングシステムとはかなり異なるように割り当てられてもよい。実行プロセスによって任意の所定の時間に必要となるＴＬＢエントリの数を最小化し、スレッドの実行の間に発生するＴＬＢミスの数を最小化するために、可変サイズの割り当てユニットが用いられてもよい。アプリケーションは、復旧可能に設計されてもよい。メモリの厳格な区画のためにエラーが発生したとき、アプリケーション・プログラムがエラー時に識別のためのエントリポイントを提供する場合、ＶＭＭに基づくコンピュータシステムは、アプリケーションデータを再初期化して、アプリケーションを効率的に再開することができる。本発明のＶＭＭにおいて用いられた呼び出し認証方法は、ＶＭＭの実行及びゲスト・オペレーティングシステムに、計算オーバーヘッドをほとんど付加せず、非常に効率的である。
【００６９】
以上、本発明を特定の実施形態によって説明したが、本発明は、これらの実施形態に限定されるものではない。本発明の本質内での修正は、当業者には明らかであるだろう。例えば、本質的に多数の異なるＶＭＭ及びセキュア・ファンデーションが、異なるモジュール式構成、制御構造、データ構造、プログラミング言語を用いて、その他のこのようなプログラミング及び実装特性とパラメーターを変化させることにより、本発明によって実装されることができる。上述した論議は、本発明により提供された多数の有用な特徴に焦点が合わせられているが、多くの付加的な特徴及び実装の詳細事項は、本発明の方法によるＶＭＭ及びセキュア・ファンデーションの任意の特定の実装例の特徴を示すようになる。特に、アイテニアム−２・プロセッサ・アーキテクチャが本発明によるＶＭＭを実装することに好適であるが、未来のプロセッサ・アーキテクチャは、確実に、本発明によるＶＭＭを実装する適切なプラットフォームを提供するはずである。
【００７０】
説明のために上述した技術は、本発明を徹底的に理解させるために特定の名称を用いた。しかし、当該分野における当業者には、特定の詳細事項が本発明を実行させるために必要ではないことが理解できるはずである。本発明の特定の実施形態の上記記述は、説明のために提供される。上記記述は、開示された特定の形態に本発明を制限したり、局限しようとするものではない。明らかに、上述した教示の観点から、多様な修正及び変形が可能となる。実施形態は、本発明の原理及びその実際の応用を最も適切に説明することにより、特定の用途に適した種々の修正を含め、当業者が、本発明及び多様な実施形態を最もうまく利用することができるように提示されて、記述される。本発明の範囲は、添付の請求の範囲及びその等価物によって規定されるものである。
【図面の簡単な説明】
【００７１】
【図１】仮想マシンモニタの起動及び展開を示した図である。
【図２】最新のコンピューティング環境において仮想マシンモニタを用いるための多数の動機を示した図である。
【図３】ＶＭＭの仮想的抽象化を示したブロック図である。
【図４】悪意のある又は誤った計算個体によって攻撃を受けたりまたは損傷されやすい、ＶＭＭに基づくコンピュータシステムの多くの異なる態様を示した図である。
【図５】結合されたオペレーティングシステム／ハードウェアシステムによって提供される仮想メモリを示した図である。
【図６】多数の同時実行されるオペレーティングシステムを支援するための、仮想モニタに基づく方式を示した図である。
【図７Ａ】アイテニアム・プロセッサ内のレジスタを示した図である。
【図７Ｂ】アイテニアム・プロセッサ内のレジスタを示した図である。
【図８】アイテニアム・コンピュータ・アーキテクチャのメモリ及び仮想アドレス変換アーキテクチャを示した図である。
【図９】アイテニアム・コンピュータ・アーキテクチャのメモリ及び仮想アドレス変換アーキテクチャを示した図である。
【図１０】アイテニアム・コンピュータ・アーキテクチャのメモリ及び仮想アドレス変換アーキテクチャを示した図である。
【図１１】アイテニアム・コンピュータ・アーキテクチャのメモリ及び仮想アドレス変換アーキテクチャを示した図である。
【図１２Ａ】領域レジスタの内容及びＶＨＰＴロングフォーマット・エントリの内容の詳細事項を示した図である。
【図１２Ｂ】領域レジスタの内容及びＶＨＰＴロングフォーマット・エントリの内容の詳細事項を示した図である。
【図１３Ａ】仮想メモリの物理的なメモリへの変換キャッシュ及び変換キャッシュ・エントリの内容に対する付加的な詳細事項を示した図である。
【図１３Ｂ】仮想メモリの物理的なメモリへの変換キャッシュ及び変換キャッシュ・エントリの内容に対する付加的な詳細事項を示した図である。
【図１４】保護キー・レジスタの内容に関する付加的な詳細事項を示した図である。
【図１５】図５に関連して上述したアイテニアム・アーキテクチャによって提供される、仮想アドレス変換メカニズムを示した図である。
【図１６Ａ】コンピュータメモリ及び記憶装置の部分とコンピュータメモリの部分で実行可能なプログラムの一部を示した図である。
【図１６Ｂ】分岐命令のコンテキストにおける即値オペランド（ｉｍｍｅｄｉａｔｅ  ｏｐｅｒａｎｄ）及びレジスタ・オペランドを示した図である。
【図１７Ａ】アイテニアム命令をさらに示した図である。
【図１７Ｂ】アイテニアム命令をさらに示した図である。
【図１７Ｃ】アイテニアム命令をさらに示した図である。
【図１７Ｄ】アイテニアム命令をさらに示した図である。
【図１８】典型的な中世の城を示した図である。
【図１９】本発明の実施形態を表わす、セキュアなＶＭＭ及びその基礎となるセキュア・ファンデーションの全体の戦略及びアーキテクチャを示した図である。
【図２０Ａ】本発明の実施形態によるＶＭＭに基づくコンピュータシステムのコンポーネントのインスタンス化に固有の信頼チェーンを示した図である。
【図２０Ｂ】本発明の実施形態によるＶＭＭに基づくコンピュータシステムのコンポーネントのインスタンス化に固有の信頼チェーンを示した図である。
【図２０Ｃ】本発明の実施形態によるＶＭＭに基づくコンピュータシステムのコンポーネントのインスタンス化に固有の信頼チェーンを示した図である。
【図２０Ｄ】本発明の実施形態によるＶＭＭに基づくコンピュータシステムのコンポーネントのインスタンス化に固有の信頼チェーンを示した図である。
【図２０Ｅ】本発明の実施形態によるＶＭＭに基づくコンピュータシステムのコンポーネントのインスタンス化に固有の信頼チェーンを示した図である。
【図２０Ｆ】本発明の実施形態によるＶＭＭに基づくコンピュータシステムのコンポーネントのインスタンス化に固有の信頼チェーンを示した図である。
【図２１Ａ】上位レベル個体によって用いられた臨界データを格納するＶＭＭメモリ区画を含む、各種計算資源へのアクセスを厳しく制御し、高レベル計算個体の間でＶＭＭサービス及びセキュア・ファンデーションを分割する本発明の実施形態によって用いられた呼び出し認証方法を示した図である。
【図２１Ｂ】上位レベル個体によって用いられた臨界データを格納するＶＭＭメモリ区画を含む、各種計算資源へのアクセスを厳しく制御し、高レベル計算個体の間でＶＭＭサービス及びセキュア・ファンデーションを分割する本発明の実施形態によって用いられた呼び出し認証方法を示した図である。
【図２２Ａ】認証された呼び出しメカニズムを通じたメモリ区画の制御を、また他の方式で示した図である。
【図２２Ｂ】認証された呼び出しメカニズムを通じたメモリ区画の制御を、また他の方式で示した図である。
【図２２Ｃ】認証された呼び出しメカニズムを通じたメモリ区画の制御を、また他の方式で示した図である。
【図２３】本発明の実施形態を表わすＶＭＭの１つの基本的な特徴を示した図である。
【図２４】本発明の実施形態を表わす仮想マシンモニタのさらに別の基本的な特徴を示した図である。
【図２５】マルチコア・プロセッサのコアの間での、ＶＭＭに基づくコンピュータシステムの計算作業の分割を示した図である。
【図１】
2009514104.tif 000002
【図２】
2009514104.tif 000003
【図３】
2009514104.tif 000004
【図４】
2009514104.tif 000005
【図５】
2009514104.tif 000006
【図６】
2009514104.tif 000007
【図７Ａ】
2009514104.tif 000008
【図７Ｂ】
2009514104.tif 000009
【図８】
2009514104.tif 000010
【図９】
2009514104.tif 000011
【図１０】
2009514104.tif 000012
【図１１】
2009514104.tif 000013
【図１２Ａ】
2009514104.tif 000014
【図１２Ｂ】
2009514104.tif 000015
【図１３Ａ】
2009514104.tif 000016
【図１３Ｂ】
2009514104.tif 000017
【図１４】
2009514104.tif 000018
【図１５】
2009514104.tif 000019
【図１６Ａ】
2009514104.tif 000020
【図１６Ｂ】
2009514104.tif 000021
【図１７Ａ】
2009514104.tif 000022
【図１７Ｂ】
2009514104.tif 000023
【図１７Ｃ】
2009514104.tif 000024
【図１７Ｄ】
2009514104.tif 000025
【図１８】
2009514104.tif 000026
【図１９】
2009514104.tif 000027
【図２０Ａ】
2009514104.tif 000028
【図２０Ｂ】
2009514104.tif 000029
【図２０Ｃ】
2009514104.tif 000030
【図２０Ｄ】
2009514104.tif 000031
【図２０Ｅ】
2009514104.tif 000032
【図２０Ｆ】
2009514104.tif 000033
【図２１Ａ】
2009514104.tif 000034
【図２１Ｂ】
2009514104.tif 000035
【図２２Ａ】
2009514104.tif 000036
【図２２Ｂ】
2009514104.tif 000037
【図２２Ｃ】
2009514104.tif 000038
【図２３】
2009514104.tif 000039
【図２４】
2009514104.tif 000040
【図２５】
2009514104.tif 000041