JP2006018819A - 64ビットx86プロセッサ上でレガシ32ビットx86仮想マシンを実行するためのシステムおよび方法 - Google Patents

64ビットx86プロセッサ上でレガシ32ビットx86仮想マシンを実行するためのシステムおよび方法 Download PDF

Info

Publication number
JP2006018819A
JP2006018819A JP2005171364A JP2005171364A JP2006018819A JP 2006018819 A JP2006018819 A JP 2006018819A JP 2005171364 A JP2005171364 A JP 2005171364A JP 2005171364 A JP2005171364 A JP 2005171364A JP 2006018819 A JP2006018819 A JP 2006018819A
Authority
JP
Japan
Prior art keywords
mode
page
processor
bit
architecture
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.)
Granted
Application number
JP2005171364A
Other languages
English (en)
Other versions
JP4156611B2 (ja
JP2006018819A5 (ja
Inventor
Rene Antonio Vega
アントニオ ベガ レーン
Eric P Traut
ピー.トラウト エリック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006018819A publication Critical patent/JP2006018819A/ja
Publication of JP2006018819A5 publication Critical patent/JP2006018819A5/ja
Application granted granted Critical
Publication of JP4156611B2 publication Critical patent/JP4156611B2/ja
Expired - Fee Related 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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
    • 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/1009Address translation using page tables, e.g. page table structures
    • 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/45554Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1004Compatibility, e.g. with legacy hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】 x86−64アーキテクチャにおいてロングスーパーモードとレガシスーパーモードの間で、リアルタイムで遷移を行うための仮想化されたコンピューティングシステムおよび方法を提供する。
【解決手段】 一時的プロセッサモードコンテキスト切り替えを実行するために、仮想マシンモニタが、「仮想=現実」ページをセットアップするステップと、そのページ上にプロセッサモードコンテキスト切り替えを実行するための遷移コードを置くステップと、そのページにジャンプするステップと、x86−64コンピュータハードウェアのMMU(メモリ管理ユニット)を無効にするステップと、モード制御レジスタを変更して、ロングスーパーモードビットまたはレガシスーパーモードビットに設定するステップと、新たなページテーブルを読み込むステップと、x86−64コンピュータハードウェアのMMUを再アクチベートするステップとを実行する。
【選択図】図5

Description

本発明は、一般に、仮想マシン(「プロセッサ仮想化」としても知られる)、および仮想マシン環境において実行されるソフトウェアの分野に関する。より具体的には、本発明は、64ビットのホストオペレーティングシステムのプロセッサモードとは異なるプロセッサモードでレガシ32ビット仮想マシンを実行する方法に直接に関連する。
コンピュータは、特定のシステム命令セットを実行するように設計されたCPU群(汎用中央処理装置群)を含む。類似したアーキテクチャまたは設計仕様を有する一群のプロセッサは、同一のプロセッサファミリのメンバであると見なすことができる。現在のプロセッサファミリの例には、アリゾナ州フェニックス所在のモトローラ株式会社によって製造されるMotorola 680X0、カリフォルニア州サニーベールのインテル株式会社によって製造されるIntel 80X86プロセッサファミリ、およびモトローラ株式会社によって製造され、カリフォルニア州キューパーティーノ所在のアップルコンピュータ株式会社によって製造されるコンピュータにおいて使用されるPowerPCプロセッサファミリが含まれる。一群のプロセッサは、類似したアーキテクチャおよび設計上の配慮(design considerations)のために同一ファミリに入っている可能性があるが、プロセッサは、プロセッサのクロック速度、およびその他の性能パラメータに従ってファミリ内で大きく異なる可能性がある。
各ファミリのマイクロプロセッサは、そのプロセッサファミリに固有である命令群を実行する。プロセッサ、またはプロセッサのファミリが実行することができる全体的な命令セットが、プロセッサの命令セットとして知られる。例として、Intel 80X86プロセッサファミリによって使用される命令セットは、PowerPCプロセッサファミリによって使用される命令セットと互換性がない。Intel 80X86命令セットは、CISC(Complex Instruction Set Computer)フォーマットに基づく。Motorola PowerPC命令セットは、RISC(Reduced Instruction Set Computer)フォーマットに基づく。CISCプロセッサ群は、一部はかなり複雑な機能を実行することができるが、実行するのに多くのクロックサイクルを一般に要する、多数の命令を使用する。RISCプロセッサ群は、より少数の利用可能な命令を使用して、はるかに高速で実行されるより単純な機能セットを実行する。
コンピュータシステム間におけるプロセッサファミリの固有性は、通常、コンピュータシステムのハードウェアアーキテクチャのその他の要素間における非互換性ももたらす。Intel 80X86プロセッサファミリからのプロセッサを使用して製造されたコンピュータシステムは、PowerPCプロセッサファミリからのプロセッサを使用して製造されたコンピュータシステムのハードウェアアーキテクチャとは異なるハードウェアアーキテクチャを有する。プロセッサ命令セットおよびコンピュータシステムのハードウェアアーキテクチャの固有性のため、アプリケーションソフトウェアプログラム群は、通常、特定のオペレーティングシステムを実行する特定のコンピュータシステム上で実行されるように書かれる。
コンピュータ製造業者は、コンピュータ製造業者の製品系列に関連するマイクロプロセッサファミリ上で、より少ないアプリケーションではなく、より多くのアプリケーションを実行させることにより、自らの市場占有率を最大化することを望む。コンピュータシステム上で実行することができるオペレーティングシステムおよびアプリケーションプログラムの数を拡張するため、ホストと呼ばれるあるタイプのCPUを有する所与のコンピュータが、ゲストと呼ばれる関連のないタイプのCPUの命令をホストコンピュータがエミュレートすることを可能にするエミュレータプログラムを含むようにする技術分野が開発されている。このため、ホストコンピュータは、所与のゲスト命令に応答して1つまたは複数のホスト命令が呼び出されるようにするアプリケーションを実行する。このため、ホストコンピュータは、ホストコンピュータ独自のハードウェアアーキテクチャ向けに設計されたソフトウェアと、関連のないハードウェアアーキテクチャを有するコンピュータ向けに書かれたソフトウェアをともに実行することができる。より具体的な例として、例えば、アップルコンピュータによって製造されたコンピュータシステムは、PCベースのコンピュータシステム向けに書かれたオペレーティングシステム群およびプログラムを実行することができる。また、エミュレータプログラムを使用して、単一のCPU上で互換性のないオペレーティングシステム群を同時に動作させることもできる可能性がある。この構成では、各オペレーティングシステムは、他方のオペレーティングシステムと互換性がないが、エミュレータプログラムが、2つのオペレーティングシステムの1つをホストし、そうでなければ互換性のないオペレーティングシステム群が、同一コンピュータシステム上で同時に実行されることを可能にすることができる。
ゲストコンピュータシステムがホストコンピュータシステム上でエミュレートされる場合、ゲストコンピュータシステムは、仮想マシンであると言われる。というのは、ホストコンピュータシステムは、ゲストコンピュータシステムのハードウェアアーキテクチャの動作のソフトウェア表現としてだけ存在するからである。エミュレータ、仮想マシン、およびプロセッサエミュレーションという用語は、ときとして、互いに区別なく使用されて、コンピュータシステム全体のハードウェアアーキテクチャを模倣する、つまりエミュレートする能力を表す。例として、カリフォルニア州サンマテオ所在のコネクティクス(Connectix)株式会社によって作成されたVirtual PCソフトウェアは、Intel 80X86 Pentium(登録商標)プロセッサ、および様々なマザーボードコンポーネントおよびカードを含むコンピュータ全体をエミュレートする。それらのコンポーネントの動作は、ホストマシン上で実行される仮想マシンにおいてエミュレートされる。PowerPCプロセッサを有するコンピュータシステムなどのホストコンピュータのオペレーティングシステムソフトウェア上、およびハードウェアアーキテクチャ上で実行されるエミュレータプログラムが、ゲストコンピュータシステム全体の動作を模倣する。
エミュレータプログラムは、ホストマシンのハードウェアアーキテクチャと、エミュレートされる環境内で実行されるソフトウェアによって伝送される命令の間のやりとりとして作用する。このエミュレータプログラムは、物理的なコンピュータハードウェア上で直接に実行されるオペレーティングシステムである、HOS(ホストオペレーティングシステム)であることが可能である。代替として、エミュレートされる環境も、ハードウェアの上で直接に実行され、VMM(仮想マシンモニタ)が仮想化しているハードウェアと同一であるインターフェース群を公開することにより、マシンのすべてのリソースを仮想化するソフトウェアレイヤである、VMMであることも可能である(これにより、VMMが、VMMの上で実行されているオペレーティングシステムレイヤ群に気付かれないことが可能になる)。ホストオペレーティングシステムとVMMは、同一の物理的ハードウェア上で並行に実行されることが可能である。
インテル株式会社(カリフォルニア州サンタクララ所在)によるx86アーキテクチャの開発の進化は、16ビットプロセッサ(x86−16)で始まり、次に32ビットプロセッサ(x82−32)に拡張され、現在、64ビットプロセッサ(x86−64)に拡張されている。x86−64アーキテクチャの一般名で知られている64ビットx86アーキテクチャは、インテルによってだけでなく、カリフォルニア州サニーベール所在のAMD(Advanced Micro Devices)社によっても開発されている。例えば、AMD64ビット製品は、AMD64という商品名で知られている。しかし、以下の説明の64ビットx86アーキテクチャと、IA64として知られる、ヒューレットパッカード(カリフォルニア州パロアルト所在)社およびインテル社によって共同で開発された別の64ビット製品は、区別される。IA64は、Itanium(登録商標)プロセッサ群において実装される64ビット命令セットアーキテクチャを有する。一般に、IA64アーキテクチャは、下位互換性をまったく有さず、このため、x86アーキテクチャのソフトウェアは、異なる命令セットのためにIA64アーキテクチャ上で実行されない。したがって、64ビットアーキテクチャの本明細書における説明は、IA64アーキテクチャについてではなく、x86−64アーキテクチャだけに限って述べる。
32ビットのレガシOS向けに書かれた仮想マシンが、64ビットOS上で実行されることを可能にする下位互換性を提供することは、ソフトウェア製造業者には、重要である。というのは、下位互換性により、新たな32ビット製品群を商品化するまでの期間を短縮化することが可能になり、レガシ32ビットアプリケーション群の使用が延長されるからである。x86−64アーキテクチャは、以下に概説する、従来の32ビットx86アーキテクチャの動作モードを含む、いくつかの異なる動作モードをサポートする。
Figure 2006018819
(注:本明細書で使用する「モード」、「サブモード」、および「スーパーモード」という用語は、異なるアーキテクチャの異なるモードレイヤをよりよく区別するために使用するが、当業者には周知であり、容易に理解されるとおり、これらのバリエーションのすべては、相対的構造にかかわらず、単に「モード」と呼ばれることが非常に多い。)
一般に、リアルモードは、1度に1つのプログラムだけの実行しか許さない動作モードである。リアルモードでは、プログラム群は、1024Kだけのメモリにしかアクセスすることができず、16ビットデータパスを使用する。プロテクトモードは、仮想メモリおよびマルチタスキング(一度に複数のプログラムを実行すること)のサポートを提供する。プロテクトモードのプログラム群は、1024Kを超えるアドレスにアクセスすることができ、32ビットデータパスを使用することができる。リアルモードは、各プログラムが、実行されるのに全メモリを必要とし、同時に別のアプリケーションの実行を許さない、プロテクトモードの原型となったモード(precursor)である。プロテクトモードは、リング0サブモード、リング1サブモード、リング2サブモード、リング3サブモード、およびV86サブモード(仮想8086)をさらに含む。(一般に、リング1サブモードおよびリング2サブモードは、現在のアプリケーション群によっては使用されない。)
リング0サブモードは、Intel 80286プロテクトモードアーキテクチャを参照する。リング0サブモードは、最も特権の多い(most privileged)レベルであり、すべてのシステムリソースへのアクセスを有する。リング0サブモードは、OS、およびOSのドライバ群によって使用され、高い信頼レベルを有する最も特権の多いコードである。リング3サブモードも、Intel 80286プロテクトモードアーキテクチャを参照する。リング3サブモードは、低い信頼レベルを有し、すべてのユーザアプリケーションによって使用されるコードに関して使用される最も特権の少ない(least privileged)レベルである。V86サブモードは、Intel 80386プロテクトモードアーキテクチャを参照し、CPUが、8086リアルモードアドレス指定をエミュレートするが、ページングおよび一部のアクセス制限のサポートを維持するサブモードである。
これに対して、x86−64アーキテクチャは、以下に概説する2つの主要なスーパーモード、すなわち、レガシスーパーモードおよびロング(LONG)スーパーモードをサポートする。
Figure 2006018819
x86−64アーキテクチャのレガシスーパーモードは、従来の32ビットx86アーキテクチャのすべてのモードおよびサブモード、すなわち、リアルモード、プロテクトモードなどを含む。さらに、x86−64アーキテクチャのロングスーパーモードは、ネイティブロングモードおよび互換モードを含む。ネイティブロングモードは、64ビットリング0コードを実行することを可能にする。互換モードは、32ビットリング3アプリケーション群が、64ビットネイティブロングモードを実行しているOSの上で実行されること、すなわち、混合環境を可能にする。したがって、32ビットアプリケーションは、64ビットアプリケーションが、ネイティブロングモードで同時に実行されながら、互換モードを実行することができる。
しかし、x86−64アーキテクチャの互換モードは、リング3サブモードだけしかサポートしないという点で問題が存在する。互換モードは、V86サブモードまたはリング0サブモードをサポートせず、これらの少なくともどちらか(場合によっては、両方)が、32ビットハードウェア環境を完全に、シームレスにエミュレート/仮想化するのに、32ビットVM(仮想マシン)に必須である。したがって、必要とされているのは、従来の32ビットモード群、すなわち、リアルモードおよびプロテクトモード(V86サブモード、リング0サブモード、およびリング3サブモード)に依拠する仮想マシン群が、64ビットプロセッサ上の他のアプリケーション群と並行に実行されるが、それでも、リング0コードを実行することができるとともに、V86サブモードの諸機能(features)にアクセスすることができる方法である。
1つの問題解決法は、x86−64アーキテクチャで動作している仮想マシン環境が、ロングスーパーモードとレガシスーパーモードの間で自由に行き来するように遷移し、例えば、64ビットプロセッサ上で、32ビットOSを実行しているゲストと64ビットOSを実行しているホストの間で行き来するように遷移できることである。しかし、例えば、AMD64マシンの実施形態は、ロングスーパーモードとレガシスーパーモードの間を行き来する遷移を予期していない。代わりに、AMD64マシンの実施形態は、マシンが、レガシスーパーモードで始動し、OSが読み込まれると、ロングスーパーモードへの単一回の遷移を行い、レガシスーパーモードに決して戻らないことを前提としている。必要とされているのは、x86−64アーキテクチャにおいてロングスーパーモードとレガシスーパーモードの間で行き来するように切り替えを行う方法である。
本発明は、x86−64アーキテクチャにおいてネイティブロングモードとレガシプロテクトモードの間においてリアルタイムで切り替えを行う、すなわち、「プロセッサモードコンテキスト切り替え」ためのシステム、および方法を提供する。この目的で、本発明の様々な実施形態は、x86−64アーキテクチャにおいてロングスーパーモードとレガシスーパーモードの間で行き来するように遷移するための機構を介して、64ビットx86プロセッサ上で、従来の32ビットモード群、すなわち、リアルモードおよびプロテクトモード(V86サブモード、リング0サブモード、およびリング3サブモード)に依拠するレガシ32ビットx86仮想マシンを実行するためのシステムおよび方法を対象とする。
本発明の一部の実施形態は、x86−64アーキテクチャにおいてロングスーパーモードとレガシスーパーモードの間で遷移するための仮想化されたコンピューティングシステムを対象とする。これを行うことで、仮想マシンは、x86−64コンピュータハードウェア(すなわち、64ビット)上で、他のアプリケーション群と並行に実行されることが可能である。一時的プロセッサモードコンテキスト切り替えを実行する方法は、(a)「仮想=現実」ページ(「切り替えページ」)をセットアップするステップと、(b)そのページ上にプロセッサモードコンテキスト切り替えを実行するための遷移コードを置くステップと、(c)そのページにジャンプするステップと、(d)x86−64コンピュータハードウェアのMMU(メモリ管理ユニット)を無効にするステップと、(e)モード制御レジスタを変更して、ロングスーパーモードビットまたはレガシスーパーモードビットに設定するステップと、(f)新たなページテーブルを読み込むステップと、(g)x86−64コンピュータハードウェアのMMUを再アクチベートするステップとを含み、「一時的」とは、例えば、初期化の時点からシャットダウンの時点までのコンピュータシステムの動作中に、ロングスーパーモードで実行されているシステムが、レガシスーパーモードに遷移し、その後、最終的にはロングスーパーモード(または他の何らかのモード)に遷移して戻り、説明する方法をそれぞれが利用する,少なくとも2つのモード遷移を完了することが見込まれるという意味においてである。本発明のいくつかの実施形態の場合、以上のステップの1つまたは複数は、VMMによって実行され、一部の実施形態の場合、7つすべてのステップが、VMMによって実行される。
以上の概要、および好ましい諸実施形態の以下の詳細な説明は、添付の図面と併せて読むことで、よりよく理解される。本発明を例示する目的で、図面には、本発明の典型的な構成が示されているが、本発明は、開示する特定の方法および手段(instrumentalities)に限定されない。
本発明の対象物を、法的要件を満たすように具体的に説明する。ただし、説明自体は、本特許の範囲を限定するものではない。むしろ、本発明者は、請求の対象物が他の形で実施されて、他の現在の技術、または将来の技術と連携して、本明細書で説明するステップと異なるステップ、または類似するステップの組合せを含むことも可能であることを企図している。さらに、「ステップ」という用語は、使用する方法の異なる要素を表すように本明細書で使用される可能性があるが、個々のステップの順序を明示的に説明しない限り、またそうする場合を除き、この用語が、本明細書で開示する様々なステップの間における特定の順序を暗示しているものと解釈してはならない。
コンピュータ環境
本発明の多数の実施形態が、コンピュータ上で実行されることが可能である。図1、および以下の説明は、本発明を実施することができる適切なコンピューティング環境の簡単な一般的説明を提供することを目的とする。必須ではないが、本発明は、クライアントワークステーションまたはサーバなどのコンピュータによって実行される、プログラムモジュールなどの、コンピュータ実行可能命令の一般的な文脈で説明する。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品またはプログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む、他のコンピュータシステム構成を使用して実施してもよいことが当業者には認められよう。また、本発明は、通信網を介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境において実施してもよい。分散コンピューティング環境では、プログラムモジュール群は、ローカルメモリ記憶装置とリモートメモリ記憶装置の両方の中に配置することができる。
図1に示すとおり、典型的な汎用コンピューティングシステムは、処理装置21、システムメモリ22、ならびにシステムメモリから処理装置21までを含む様々なシステムコンポーネントを結合するシステムバス23を含む、慣用のパーソナルコンピュータ20などを含む。システムバス23は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含め、いくつかのタイプのバス構造のいずれであることも可能である。システムメモリは、ROM(読み取り専用メモリ)24およびRAM(ランダムアクセスメモリ)25を含む。始動中などにパーソナルコンピュータ20内部の要素間で情報を転送するのを助ける基本ルーチンを含むBIOS(基本入出力システム)26が、ROM24の中に格納される。パーソナルコンピュータ20は、図示していないハードディスクに対して読み取りおよび書き込みを行うためのハードディスクドライブ27、リムーバブルな磁気ディスク29に対して読み取りまたは書き込みを行うための磁気ディスクドライブ28、およびCD−ROMまたは他の光媒体などのリムーバブルな光ディスク31に対して読み取りまたは書き込みを行うための光ディスクドライブ30をさらに含むことが可能である。ハードディスクドライブ27、磁気ディスクドライブ28、および光ディスクドライブ30は、それぞれ、ハードディスクドライブインターフェース32、磁気ディスクドライブインターフェース33、および光ドライブインターフェース34でシステムバス23に接続される。以上のドライブ、および関連するコンピュータ可読媒体により、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性ストレージがパーソナルコンピュータ20に提供される。本明細書で説明する典型的な環境は、ハードディスク、リムーバブルな磁気ディスク29、およびリムーバブルな光ディスク31を使用するが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、RAM(ランダムアクセスメモリ)、ROM(読み取り専用メモリ)などの、データを格納することができ、コンピュータがアクセス可能な他のタイプのコンピュータ可読媒体も、典型的な動作環境において使用できることが当業者には認められよう。
オペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、その他のプログラムモジュール群37、およびプログラムデータ38を含め、いくつかのプログラムモジュールが、ハードディスク、磁気ディスク29、光ディスク31、ROM24、またはRAM25に格納されることが可能である。ユーザは、キーボード40やポインティングデバイス42などの入力デバイス群を介して、コマンドおよび情報をパーソナルコンピュータ20に入力することができる。その他の入力デバイス群(図示せず)には、マイク、ジョイスティック、ゲームパッド、サテライトディスク、スキャナなどが含まれることが可能である。以上、およびその他の入力デバイス群は、しばしば、システムバスに結合されたシリアルポートインターフェース46を介して処理装置21に接続されるが、パラレルポート、ゲームポート、またはUSB(ユニバーサルシリアルバス)などの他のインターフェース群で接続してもよい。モニタ47、またはその他のディスプレイデバイスも、ビデオアダプタ48などのインターフェースを介してシステムバス23に接続される。モニタ47に加え、パーソナルコンピュータは、通常、スピーカやプリンタなどの他の周辺出力デバイス(図示せず)も含む。図1の典型的なシステムは、ホストアダプタ55、SCSI(スモールコンピュータシステムインターフェース)バス56、ならびにSCSIバス56に接続された外部記憶装置62も含む。
パーソナルコンピュータ20は、リモートコンピュータ49のような1つまたは複数のリモートコンピュータに対する論理接続を使用するネットワーク化された環境において動作することができる。リモートコンピュータ49は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の一般的なネットワークノードであることが可能であり、通常、パーソナルコンピュータ20に関連して前述した諸要素の多く、またはすべてを含むが、メモリ記憶装置50だけを図1に示す。図1に示す論理接続は、LAN(ローカルエリアネットワーク)51およびWAN(ワイドエリアネットワーク)52を含む。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。
LANネットワーキング環境で使用される場合、パーソナルコンピュータ20は、ネットワークインターフェースまたはネットワークアダプタ53を介してLAN51に接続される。WANネットワーキング環境で使用される場合、パーソナルコンピュータ20は、通常、インターネットなどのワイドエリアネットワーク52を介して通信を確立するためのモデム54、または他の手段を含む。内部にあることも、外部にあることも可能なモデム54は、シリアルポートインターフェース46を介してシステムバス23に接続される。ネットワーク化された環境では、パーソナルコンピュータ20に関連して示したプログラムモジュール群、またはプログラムモジュール群の諸部分は、リモートメモリ記憶装置の中に格納することができる。図示したネットワーク接続は、典型的であり、コンピュータ間で通信リンクを確立する他の手段も使用できることが認められよう。さらに、本発明の多数の実施形態は、コンピュータ化されたシステムに特によく適していることが構想されているが、本発明をそのような諸実施形態に限定することを意図するものはまったく本明細書に存在しない。
仮想マシン
概念的に見ると、コンピュータシステムは、一般に、基礎的なハードウェアレイヤ上で実行される1つまたは複数のソフトウェアレイヤを含む。この階層化(layering)は、抽象化のために行われる。所与のソフトウェアレイヤに関するインターフェースを定義することにより、そのレイヤより上位の他のレイヤ群とは異なる形でそのレイヤが実施されることが可能である。うまく設計されたコンピュータシステムでは、各レイヤは、そのレイヤの1つ下のレイヤについてだけ知っている(またそのようなレイヤだけに依拠する)。これにより、レイヤ、または「スタック」(複数の隣接するレイヤ)を、前記レイヤまたは前記スタックより上位のレイヤ群に悪影響を与えることなしに、置き換えることが可能になる。例えば、ソフトウェアアプリケーション群(上位レイヤ群)は、通常、オペレーティングシステムの下位レベル(下位レイヤ)に依拠して、何らかの形態の永久ストレージにファイルを書き込み、これらのアプリケーションは、フロッピー(登録商標)ディスク、ハードドライブ、またはネットワークフォルダにデータを書き込むことの間の違いを理解する必要がない。その下位レイヤが、ファイルを書き込むための新たなオペレーティングシステムコンポーネント群で置き換えられた場合、上位レイヤのソフトウェアアプリケーション群の動作は、影響を受けないままである。
階層化されたソフトウェアの柔軟性により、VM(仮想マシン)が、実際には別のソフトウェアレイヤである仮想ハードウェアレイヤを提示することが可能になる。このようにして、VMは、VMより上位のソフトウェアレイヤ群に、前記ソフトウェアレイヤ群が独自の専用コンピュータシステム上で実行されているという錯覚をもたらすことができ、このため、VMは、複数の「ゲストシステム」が単一の「ホストシステム」上で同時に実行されることを可能にすることができる。
図2は、コンピュータシステムにおけるエミュレートされた動作環境に関するハードウェアおよびソフトウェアのアーキテクチャの論理的な階層化を示す図である。エミュレーションプログラム94が、ホストオペレーティングシステムおよび/またはハードウェアアーキテクチャ92上で実行される。エミュレーションプログラム94は、ゲストハードウェアアーキテクチャ96およびゲストオペレーティングシステム98をエミュレートする。ソフトウェアアプリケーション100が、ゲストオペレーティングシステム98上で実行される。図2のエミュレートされた動作環境では、エミュレーションプログラム94が動作しているため、ソフトウェアアプリケーション100は、ホストオペレーティングシステムおよびハードウェアアーキテクチャ92と全体的に互換性のないオペレーティングシステム上で実行されるように設計されているものの、コンピュータシステム90上で実行されることが可能である。
図3Aは、物理的コンピュータハードウェア102のすぐ上で実行されるホストオペレーティングシステムソフトウェアレイヤ104を含む、仮想化されたコンピューティングシステムを示し、ホストOS(ホストオペレーティングシステム)104は、ホストOSが仮想化しているハードウェアと同一であるインターフェース群を公開することにより、マシンのすべてのリソースを仮想化する(これにより、ホストOSが、ホストOS上で実行されているオペレーティングシステムレイヤ群に気付かれないことが可能になる)。
代替として、仮想マシンモニタソフトウェアレイヤ、つまりVMMソフトウェアレイヤ104’が、ホストOS104”の代わりに、または並行に実行されていることも可能であり、並行に実行されているオプションを図3Bに示す。簡明にするため、以降のすべての説明(具体的には、ホストオペレーティングシステム104に関する)は、図3Aに示した実施形態を対象とするが、そのような説明のすべての態様は、図3BのVMM104’が、以下に説明する図3Aのホストオペレーティングシステム104の役割に、機能レベルで基本的に取って代わる、図3Bの実施形態にも同様に適用されることになる。
図3Aを再び参照すると、ホストOS104(またはVMM104’)の上には、例えば、仮想化されたIntel 386プロセッサであることが可能なVM A108、および、例えば、Motorola 680X0ファミリのプロセッサの1つの仮想化されたバージョンであることが可能なVM B110という2つの仮想マシン(VM)実施形態が存在する。VM A108およびVM B110のそれぞれの上には、ゲストOS(ゲストオペレーティングシステム)A112およびB114がそれぞれ存在する。ゲストOS A112の上では、アプリケーションA1 116およびアプリケーションA2 118という2つのアプリケーションが実行されており、ゲストOS B114の上には、アプリケーションB1 120が存在する。
x86−64プロセッサ上で実行される仮想マシン群
図4は、x86−64ホストオペレーティングシステムと並行に実行される仮想マシンモニタを含む、仮想化されたコンピューティングシステムの別の代替の実施形態を示す。図4の仮想化されたコンピューティングシステムは、x86ベースの64ビットプロセッサ(図示せず)を含むx86−64コンピュータハードウェア124の上で実行される、x86−64ベースのOSであるx86−64ホストOS122を含むこと以外は、すべての点で図3Bのシステムと同一である。図4の仮想化されたコンピューティングシステムのVMM104’、VM A108、VM B110、ゲストOS A112、およびゲストOS B114は、x86−64コンピュータハードウェア124上の仮想マシン環境において、レガシOS群およびレガシアプリケーション群を実行するためにx86−64ホストOS122と並行に実行される、32ビットx86仮想マシンを代表する。
VMM104’を使用して、本発明は、x86−64アーキテクチャにおいてロングスーパーモードとレガシスーパーモードの間においてリアルタイムで行き来するように切り替えを行う方法を提供する。これを行うことで、例えば、従来の32ビットモード群、すなわち、リアルモードおよびプロテクトモード(V86サブモード、リング0サブモード、およびリング3サブモード)に依拠するVM A108が、x86−64コンピュータハードウェア124の64ビットプロセッサ上で他のアプリケーション群と並行して実行されることが可能である。
一般に、「コンテキスト切り替え」は、ホストOSにおけるサービス群を呼び出す必要があることをVMMが認識することとして説明される。したがって、VMMは、一時的に制御をホストOSに引き渡し、ホストOSが、ホストOSのタスクを実行し、その後、ホストOSは、制御をVMMに再び引き渡す。今日の32ビットVMにおけるコンテキスト切り替えは、単に、状態をスワップアウトすることに関わる。しかし、本発明に従ってx86の64ビットプロセッサ上でレガシ32ビットVMを実行するため、本発明のシステムおよび方法には、コンテキスト切り替え操作内でプロセッサモードを切り替えることが関わる。つまり、ロングスーパーモードのネイティブロングモードで実行されているホストOSが、レガシスーパーモードのプロテクトモードに(ロングスーパーモードの互換モードにではなく)切り替わり、ゲストOSを実行することである。この「プロセッサモードコンテキスト切り替え」操作は、図5を参照して説明するとおり、VMM104’およびx86−64ホストOS122によって達せられる。
図5は、x86の64ビットプロセッサ上でレガシ32ビット仮想マシンを実行するために一時的プロセッサモードコンテキスト切り替え操作をリアルタイムで実行するための方法130の流れ図を示す。ロングスーパーモード(64ビットモード)またはレガシスーパーモード(32ビットモード)で動作するx86−64システムにおいて、方法130は、この2つのスーパーモード間で遷移して、ロングスーパーモード単独では存在しない機能にアクセスする仕方を提供する。
一般に、方法130のステップは、VMM104’が32ビットモードで実行され、x86−64ホストOS122が、64ビットモードで実行されながら、VMM104’によって実行される。(注:特定のステップが、特定のx86−64プロセッサによって要求されるが、一般的なステップを以下に説明する。)
ステップ132で、VMM104’が、「仮想=現実」ページ(つまり、そのページに対して使用される仮想アドレス指定が、メモリ内の現実のメモリアドレスと同一であるページ)をセットアップし、次に、プロセッサモードコンテキスト切り替えを実行するための遷移コードをそのページにコピーし、次に、コード実行がそのページに「ジャンプ」して、コンテキスト切り替えを実行する。ステップ134で、制御レジスタ0(CR0)を使用して、VMM104’が、x86−64コンピュータハードウェア124の64ビットプロセッサのMMUを無効にする。MMUは、メインプロセッサによって要求されたメモリアクセスを扱うことを担うハードウェアデバイスである。これには、通常、仮想アドレスの物理アドレスへの変換、キャッシュ制御、バスアービトレーション(arbitration)、メモリ保護、および様々な例外の発生が関わる。MMUを無効にすることが要求されるのは、コードが、MMUによって定義されたアドレス空間内で実行されており、このため、MMUがオフにされた場合、次の命令で生じることは、アドレス変換が突然に変わっているために疑問の余地があるからである。したがって、次の命令を実行しようとする際、論理アドレスが物理アドレスと同一であるページ上でコードが実行されていることが確実にされない限り、誤った命令ストリームが処理される。したがって、これは、ステップ132で設定されるとおり、V=Rマッピング(仮想=現実マッピング)を要する。
ステップ136で、VMM104’は、レガシスーパーモードビットおよびロングスーパーモードビットを含むモード制御レジスタ(異なるプロセッサアーキテクチャの場合、異なる可能性がある)を変更する。方法130’が、ロングスーパーモード(64ビットモード)からレガシスーパーモード(32ビットモード)への遷移を提供する場合、モード制御レジスタのロングスーパーモードビットが無効にされ、レガシスーパーモードビットが設定されて、ホストコンテキストからVMコンテキストへの遷移が実行される。方法130’が、レガシスーパーモード(32ビットモード)からロングスーパーモード(64ビットモード)への遷移を提供する場合、モード制御レジスタのレガシスーパーモードビットが無効にされ、ロングスーパーモードビットが設定されて、VMコンテキストからホストコンテキストへの遷移が実行される。
ステップ138で、VMM104’は、新たなモードの新たなページテーブルを読み込み、このテーブルは、仮想メモリシステム内のデータ構造であり、このデータ構造により、仮想アドレスと物理アドレスの間のマッピングを行うことが一般的である。(注:新たなページテーブルは、「仮想=現実」ページ(前記ページに対して使用される仮想アドレスが、前記ページの現実のメモリアドレスである)と、コードが移されようとしているVMMの仮想アドレスの間におけるマッピングを作成するために読み込まれる。)新しいページテーブルはまた新しいモードのフォーマット、すなわち異なる2つのモードのページテーブルのフォーマットを反映し、したがってさもなければ適応できない。ステップ140で、VMM104’が、x86−64コンピュータハードウェア124の64ビットプロセッサのMMUを再アクチベートし、方法は、終了する。
本明細書で使用する「一時的」という用語は、コンピュータシステムの実行中の何らかの時点で、少なくとも2回のモード遷移が行われることを単に暗示するに過ぎず、例えば、ロングスーパーモードで実行されているシステムが、レガシスーパーモードに遷移し、次に、少し後に、ロングスーパーモードに(またはまったく別のモードに)遷移して戻り、各行程が説明した方法を利用する少なくとも2回のモード遷移を完了させる場合である。さらに、「一時的」という用語は、一時的な特質(どれぐらいの時間であるか)を暗示することも、始まりのモードが終りのモードであることを暗示することもなく、やはり、実行中に少なくとも2回のモード遷移が行われることを暗示しているに過ぎない。この関連で、特定のモードに関する「一時的モード」という用語は、システム起動時における最初のモードではなく、システムシャットダウン時における最後のモードでもなかった、動作中の任意のモードを指す。
結論
本明細書で説明する様々なシステム、方法、および技術は、ハードウェアで、またはソフトウェアで、あるいは、適切な場合、ハードウェアとソフトウェアの組合せで実施することができる。このため、本発明の方法および装置、または方法および装置のいくつかの態様または部分は、フロッピー(登録商標)ディスケット、CD−ROM、ハードドライブ、または他の任意のマシン可読記憶媒体などの実体のある媒体で実体化されたプログラムコード(すなわち、命令群)の形態をとることができ、プログラムコードは、コンピュータなどのマシンに読み込まれ、マシンによって実行されると、そのマシンが、本発明を実施するための装置になる。プログラマブルコンピュータ上のプログラムコード実行のケースでは、コンピュータは、一般に、プロセッサ、プロセッサが読み取り可能な記憶媒体(揮発性メモリおよび不揮発性メモリ、および/または記憶要素を含む)、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを含む。1つまたは複数のプログラムが、好ましくは、高級手続き言語、またはオブジェクト指向プログラミング言語で実装されて、コンピュータシステムと通信する。ただし、プログラムは、所望される場合、アセンブリ言語または機械語で実装することもできる。いずれにしても、言語は、コンパイルされる言語、または解釈される言語であることが可能であり、ハードウェア実施形態と組み合わせられることが可能である。
本発明の方法および装置は、電気配線またはケーブル配線を介して、光ファイバを介して、または他の任意の形態の伝送を介してなど、何らかの伝送媒体を介して伝送されるプログラムコードの形態で実施することもでき、プログラムコードが、EPROM、ゲートアレイ、PLD(プログラマブル論理デバイス)、クライアントコンピュータ、ビデオレコーダなどのマシンによって受信され、読み込まれて、実行されると、そのマシンが、本発明を実施するための装置になる。汎用プロセッサ上に実装される場合、プログラムコードは、プロセッサと一緒になって、本発明のインデックス作成(indexing)機能を実行するように動作する独自の装置を提供する。
本発明を様々な図の好ましい諸実施形態に関連して説明してきたが、本発明を逸脱することなく、本発明と同一の機能を実行するために、他の類似した諸実施形態を使用すること、または説明した実施形態に変更または追加を行うことも可能であることを理解されたい。例えば、本発明の典型的な諸実施形態を、パーソナルコンピュータの機能をエミュレートするデジタルデバイス群の文脈で説明したが、本発明は、本出願で説明したようなデジタルデバイス群に限定されず、有線であるか、無線であるかにかかわらず、ゲームコンソール、ハンドヘルドコンピュータ、ポータブルコンピュータなどのいくつもの既存の、または出現しつつあるコンピューティングデバイス、またはコンピューティング環境に適用することができ、通信網を介して接続され、そのネットワークを介して対話するいくつものそのようなコンピューティングデバイスに適用することができることが、当業者には認識されよう。さらに、特に無線ネットワーク化されたデバイスの数が増え続けているなかで、ハンドヘルドデバイスオペレーティングシステム群、およびその他の特定用途向けのハードウェア/ソフトウェアインターフェースシステム群を含む、様々なコンピュータプラットフォームが、本明細書で企図されていることを強調しておかなければならない。したがって、本発明は、いずれの単一の実施形態にも限定されず、むしろ、添付の特許請求の範囲に従う広がりと範囲で解釈されなければならない。
最終的に、本明細書で説明する開示した諸実施形態は、他のプロセッサアーキテクチャ、コンピュータベースのシステム、またはシステム仮想化において使用するように適合させることができ、そのような諸実施形態は、本明細書で行う開示によって明確に予期されており、したがって、本発明は、本明細書で説明する特定の諸実施形態に限定されず、もっとも広く解釈されなければならない。同様に、プロセッサ仮想化以外の諸目的で合成命令群を使用することも、本明細書で行う開示によって予期されており、プロセッサ仮想化以外の文脈における合成命令群のいずれのそのような利用も、本明細書で行う開示に最も広く読み込まれなければならない。
本発明の諸態様を組み込むことができるコンピュータシステムを示すブロック図である。 コンピュータシステムにおけるエミュレートされた動作環境に関するハードウェアおよびソフトウェアのアーキテクチャの論理的な階層化を示す図である。 仮想化されたコンピューティングシステムを示す図である。 ホストオペレーティングシステムと並行に実行される仮想マシンモニタを含む仮想化されたコンピューティングシステムの代替の実施形態を示す図である。 x86−64ホストオペレーティングシステムと並行に実行される仮想マシンモニタを含む、仮想化されたコンピューティングシステムの別の代替の実施形態を示す図である。 x86の64ビットプロセッサ上でレガシ32ビット仮想マシンを実行するための一時的プロセッサモードコンテキスト切り替え操作を実行する方法を示す流れ図である。
符号の説明
20 コンピュータ
21 処理装置
22 システムメモリ
23 システムバス
27 ハードドライブ
28 フロッピー(登録商標)ドライブ
50 フロッピー(登録商標)ドライブ
29 リムーバブルなストレージ
30 光ドライブ
32 ハードディスクドライブI/F
33 磁気ディスクドライブI/F
34 光ドライブI/F
36 アプリケーションプログラム群
36’ アプリケーションプログラム群
37 他のプログラム群
38 プログラムデータ
40 キーボード
42 マウス
46 シリアルポートI/F
47 モニタ
48 ビデオアダプタ
49 リモートコンピュータ
53 ネットワークI/F
54 モデム
55 ホストアダプタ
56 SCSIバス
62 記憶装置

Claims (28)

  1. マルチモードアーキテクチャコンピュータシステム(「コンピュータシステム」)において第1のモードと第2のモードの間で一時的プロセッサモードコンテキスト切り替えを実行するための方法であって、
    「仮想=現実」ページ(「切り替えページ」)を確立するステップであって、前記ページに対して使用される仮想アドレスは、前記ページの現実のメモリアドレスでもあるステップと、
    プロセッサモードコンテキスト切り替えを実行するための遷移コードのセットを前記切り替えページにコピーするステップと、
    継続した実行のために前記切り替えページにジャンプするステップと、
    前記コンピュータシステムのMMU(メモリ管理ユニット)を無効にするステップと、
    モード制御レジスタを変更して、コンテキストビットを前記第1のモードから前記第2のモードに設定するステップと、
    前記第2のモードに関する新たなページテーブルを読み込むステップと、
    前記コンピュータシステムの前記MMUを再アクチベートするステップと
    を含むことを特徴とする方法。
  2. 前記方法の少なくとも1つのステップは、仮想マシンモニタによって実行されることを特徴とする請求項1に記載の方法。
  3. 前記方法は仮想マシンモニタによって実行されることを特徴とする請求項1に記載の方法。
  4. 前記第1のモードは、x86−64アーキテクチャプロセッサに関するロングモードであり、前記第2のモードは、前記x86−64アーキテクチャプロセッサに関するレガシモードであることを特徴とする請求項1に記載の方法。
  5. 前記第2のモードは、x86−64アーキテクチャプロセッサに関するロングモードであり、前記第1のモードは、前記x86−64アーキテクチャプロセッサに関するレガシモードであることを特徴とする請求項1に記載の方法。
  6. x86−64アーキテクチャプロセッサ上でレガシモードで32ビットリング0コードを実行するのに使用されることを特徴とする請求項1に記載の方法。
  7. x86−64アーキテクチャプロセッサ上でレガシモードで32ビットv86モードコードを実行するのに使用されることを特徴とする請求項1に記載の方法。
  8. マルチモードアーキテクチャコンピュータシステム(「コンピュータシステム」)において第1のモードと第2のモードの間で一時的プロセッサモードコンテキスト切り替えを実行するためのシステムであって、
    「仮想=現実」ページ(「切り替えページ」)を確立するためのサブシステムであって、
    前記ページに対して使用される仮想アドレスは、前記ページの現実のメモリアドレスでもあるサブシステムと、
    プロセッサモードコンテキスト切り替えを実行するための遷移コードのセットを前記切り替えページにコピーするためのサブシステムと、
    継続した実行のために前記切り替えページにジャンプするためのサブシステムと、
    前記コンピュータシステムのMMU(メモリ管理ユニット)を無効にするためのサブシステムと、
    モード制御レジスタを変更して、コンテキストビットを前記第1のモードから前記第2のモードに設定するためのサブシステムと、
    前記第2のモードに関する新たなページテーブルを読み込むためのサブシステムと、
    前記コンピュータシステムの前記MMUを再アクチベートするためのサブシステムと
    を含むことを特徴とするシステム。
  9. 前記システムは仮想マシンモニタを含むことを特徴とする請求項8に記載のシステム。
  10. 仮想マシンモニタのためのサブシステムであることを特徴とする請求項8に記載のシステム。
  11. 前記第1のモードは、x86−64アーキテクチャプロセッサに関するロングモードであり、前記第2のモードは、前記x86−64アーキテクチャプロセッサに関するレガシモードであることを特徴とする請求項8に記載のシステム。
  12. 前記第2のモードは、x86−64アーキテクチャプロセッサに関するロングモードであり、前記第1のモードは、前記x86−64アーキテクチャプロセッサに関するレガシモードであることを特徴とする請求項8に記載のシステム。
  13. x86−64アーキテクチャプロセッサ上でレガシモードで32ビットリング0コードを実行するのに使用されることを特徴とする請求項8に記載のシステム。
  14. x86−64アーキテクチャプロセッサ上でレガシモードで32ビットv86モードコードを実行するのに使用されることを特徴とする請求項8に記載のシステム。
  15. マルチモードアーキテクチャコンピュータシステム(「コンピュータシステム」)において第1のモードと第2のモードの間で一時的プロセッサモードコンテキスト切り替えを実行するためのコンピュータ可読命令であって、「仮想=現実」ページ(「切り替えページ」)を確立するための命令であって、前記ページに対して使用される仮想アドレスは、前記ページの現実のメモリアドレスでもある命令と、
    プロセッサモードコンテキスト切り替えを実行するための遷移コードのセットを前記切り替えページにコピーするための命令と、
    継続した実行のために前記切り替えページにジャンプするための命令と、
    前記コンピュータシステムのMMU(メモリ管理ユニット)を無効にするための命令と、
    モード制御レジスタを変更して、コンテキストビットを前記第1のモードから前記第2のモードに設定するための命令と、
    前記第2のモードに関する新たなページテーブルを読み込むための命令と、
    前記コンピュータシステムの前記MMUを再アクチベートするための命令と
    を含むことを特徴とするコンピュータ可読媒体。
  16. 前記方法の少なくとも1つのステップが仮想マシンモニタによって実行される命令をさらに含むことを特徴とする請求項15に記載のコンピュータ可読媒体。
  17. 前記方法が仮想マシンモニタによって実行される命令をさらに含むことを特徴とする請求項15に記載のコンピュータ可読媒体。
  18. 前記第1のモードは、x86−64アーキテクチャプロセッサに関するロングモードであり、前記第2のモードは、前記x86−64アーキテクチャプロセッサに関するレガシモードである命令をさらに含むことを特徴とする請求項15に記載のコンピュータ可読媒体。
  19. 前記第2のモードは、x86−64アーキテクチャプロセッサに関するロングモードであり、前記第1のモードは、前記x86−64アーキテクチャプロセッサに関するレガシモードである命令をさらに含むことを特徴とする請求項15に記載のコンピュータ可読媒体。
  20. x86−64アーキテクチャプロセッサ上でレガシモードで32ビットリング0コードを実行するのに前記方法が使用される命令をさらに含むことを特徴とする請求項15に記載のコンピュータ可読媒体。
  21. x86−64アーキテクチャプロセッサ上でレガシモードで32ビットv86モードコードを実行するのに前記方法が使用される命令をさらに含むことを特徴とする請求項15に記載のコンピュータ可読媒体。
  22. マルチモードアーキテクチャコンピュータシステム(「コンピュータシステム」)において第1のモードと第2のモードの間で一時的プロセッサモードコンテキスト切り替えを実行するためのハードウェア制御デバイスであって、
    「仮想=現実」ページ(「切り替えページ」)を確立するための手段であって、前記ページに対して使用される仮想アドレスは、前記ページの現実のメモリアドレスでもある手段と、
    プロセッサモードコンテキスト切り替えを実行するための遷移コードのセットを前記切り替えページにコピーするための手段と、
    継続した実行のために前記切り替えページにジャンプするための手段と、
    前記コンピュータシステムのMMU(メモリ管理ユニット)を無効にするための手段と、
    モード制御レジスタを変更して、コンテキストビットを前記第1のモードから前記第2のモードに設定するための手段と、
    前記第2のモードに関する新たなページテーブルを読み込むための手段と、
    前記コンピュータシステムの前記MMUを再アクチベートするための手段と
    を含むことを特徴とするハードウェア制御デバイス。
  23. 前記方法の少なくとも1つのステップが仮想マシンモニタによって実行される手段をさらに含むことを特徴とする請求項22に記載のハードウェア制御デバイス。
  24. 前記方法が仮想マシンモニタによって実行される手段をさらに含むことを特徴とする請求項22に記載のハードウェア制御デバイス。
  25. 前記第1のモードは、x86−64アーキテクチャプロセッサに関するロングモードであり、前記第2のモードは、前記x86−64アーキテクチャプロセッサに関するレガシモードである手段をさらに含むことを特徴とする請求項22に記載のハードウェア制御デバイス。
  26. 前記第2のモードは、x86−64アーキテクチャプロセッサに関するロングモードであり、前記第1のモードは、前記x86−64アーキテクチャプロセッサに関するレガシモードである手段をさらに含むことを特徴とする請求項22に記載のハードウェア制御デバイス。
  27. x86−64アーキテクチャプロセッサ上でレガシモードで32ビットリング0コードを実行するのに前記方法が使用される手段をさらに含むことを特徴とする請求項22に記載のハードウェア制御デバイス。
  28. x86−64アーキテクチャプロセッサ上でレガシモードで32ビットv86モードコードを実行するのに前記方法が使用される手段をさらに含むことを特徴とする請求項22に記載のハードウェア制御デバイス。
JP2005171364A 2004-06-30 2005-06-10 64ビットx86プロセッサ上でレガシ32ビットx86仮想マシンを実行するためのシステムおよび方法 Expired - Fee Related JP4156611B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/883,496 US7260702B2 (en) 2004-06-30 2004-06-30 Systems and methods for running a legacy 32-bit x86 virtual machine on a 64-bit x86 processor

Publications (3)

Publication Number Publication Date
JP2006018819A true JP2006018819A (ja) 2006-01-19
JP2006018819A5 JP2006018819A5 (ja) 2008-02-07
JP4156611B2 JP4156611B2 (ja) 2008-09-24

Family

ID=35457210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005171364A Expired - Fee Related JP4156611B2 (ja) 2004-06-30 2005-06-10 64ビットx86プロセッサ上でレガシ32ビットx86仮想マシンを実行するためのシステムおよび方法

Country Status (5)

Country Link
US (1) US7260702B2 (ja)
EP (1) EP1628215A3 (ja)
JP (1) JP4156611B2 (ja)
KR (1) KR20060046262A (ja)
CN (1) CN100530102C (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006196005A (ja) * 2005-01-14 2006-07-27 Intel Corp バーチャルマシーンシステムの物理的メモリのバーチャル化
JP2008171428A (ja) * 2007-01-09 2008-07-24 Internatl Business Mach Corp <Ibm> プロセッサが規格合致するように見えるアーキテクチャ・レベルを選択するための方法および装置
US20120185688A1 (en) * 2011-01-13 2012-07-19 Google Inc. Processor mode locking
CN106133682A (zh) * 2014-03-18 2016-11-16 国际商业机器公司 用于能在多种架构中初始化的控制实用工具的公用引导序列
US9626201B2 (en) 2012-03-27 2017-04-18 Fujitsu Limited Processor emulation device and storage medium
JP2017513113A (ja) * 2014-03-18 2017-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 選択されたアーキテクチャ・ファシリティと関連した処理の管理

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189230B2 (en) * 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US7478388B1 (en) * 2004-04-21 2009-01-13 Vmware, Inc. Switching between multiple software entities using different operating modes of a processor in a computer system
US20060070065A1 (en) * 2004-09-29 2006-03-30 Zimmer Vincent J Memory support for heterogeneous virtual machine guests
US9753754B2 (en) * 2004-12-22 2017-09-05 Microsoft Technology Licensing, Llc Enforcing deterministic execution of threads of guest operating systems running in a virtual machine hosted on a multiprocessor machine
US20060143517A1 (en) * 2004-12-22 2006-06-29 Microsoft Corporation Replicated virtual machine
CN100388195C (zh) * 2006-02-22 2008-05-14 北京金山软件有限公司 一种64位视窗操作系统下获取函数参数的方法及系统
US8099730B2 (en) 2006-03-30 2012-01-17 Intel Corporation Heterogeneous virtualization of host and guest OS having different register sizes using translation layer to extract device port numbers for host OS system memory addresses
US7451298B2 (en) * 2006-08-03 2008-11-11 Apple Inc. Processing exceptions from 64-bit application program executing in 64-bit processor with 32-bit OS kernel by switching to 32-bit processor mode
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US8832679B2 (en) * 2007-08-28 2014-09-09 Red Hat, Inc. Registration process for determining compatibility with 32-bit or 64-bit software
US9652210B2 (en) * 2007-08-28 2017-05-16 Red Hat, Inc. Provisioning a device with multiple bit-size versions of a software component
US8127296B2 (en) * 2007-09-06 2012-02-28 Dell Products L.P. Virtual machine migration between processors having VM migration registers controlled by firmware to modify the reporting of common processor feature sets to support the migration
US7840783B1 (en) * 2007-09-10 2010-11-23 Netlogic Microsystems, Inc. System and method for performing a register renaming operation utilizing hardware which is capable of operating in at least two modes utilizing registers of multiple widths
US8281294B1 (en) * 2007-11-12 2012-10-02 Nvidia Corporation System and method for representing and managing a multi-architecture co-processor application program
US8276132B1 (en) * 2007-11-12 2012-09-25 Nvidia Corporation System and method for representing and managing a multi-architecture co-processor application program
CN100555225C (zh) * 2008-03-17 2009-10-28 中国科学院计算技术研究所 一种支持x86虚拟机的risc处理器装置及方法
CN101609397B (zh) * 2008-06-16 2012-07-04 安凯(广州)微电子技术有限公司 基于无线手持式设备的微内存系统内存交换失效方法
CN101673254B (zh) * 2008-08-15 2011-08-17 北京北大众志微系统科技有限责任公司 嵌入式x86处理器应用于通用片上总线的方法、系统芯片
US20100100692A1 (en) * 2008-10-21 2010-04-22 International Business Machines Corporation Exploiting Register High-Words
US8413136B2 (en) 2009-05-08 2013-04-02 Microsoft Corporation Application virtualization
CN101620547B (zh) * 2009-07-03 2012-05-30 中国人民解放军国防科学技术大学 X86计算机虚拟化的物理中断处理方法
CN102662745B (zh) * 2012-04-18 2015-01-21 国家电网公司 一种虚拟机管理系统与方法
US9348601B2 (en) * 2012-12-26 2016-05-24 Intel Corporation Coalescing adjacent gather/scatter operations
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
CN105094870A (zh) * 2014-05-13 2015-11-25 中标软件有限公司 64位Linux操作系统兼容32位应用软件的方法
GB2522290B (en) * 2014-07-14 2015-12-09 Imagination Tech Ltd Running a 32-bit operating system on a 64-bit machine
US9958932B2 (en) * 2014-11-20 2018-05-01 Apple Inc. Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture
US10235219B2 (en) 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance
US11403099B2 (en) * 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US9727356B2 (en) 2015-08-24 2017-08-08 International Business Machines Corporation Scaling past the java virtual machine thread limit
US9928115B2 (en) 2015-09-03 2018-03-27 Apple Inc. Hardware migration between dissimilar cores
US20170177482A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Computing system having multi-level system memory capable of operating in a single level system memory mode
US9898307B2 (en) * 2015-12-21 2018-02-20 Intel Corporation Starting application processors of a virtual machine
US10303488B2 (en) * 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US10915333B2 (en) * 2016-03-30 2021-02-09 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
US10275239B2 (en) 2016-03-30 2019-04-30 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
US10552172B2 (en) * 2017-08-24 2020-02-04 Vmware, Inc. Virtual appliance supporting multiple instruction set architectures
CN109918188A (zh) * 2019-03-27 2019-06-21 网易(杭州)网络有限公司 游戏模式的切换方法、装置、电子设备及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2001A (en) * 1841-03-12 Sawmill
US4965720A (en) * 1988-07-18 1990-10-23 International Business Machines Corporation Directed address generation for virtual-address data processors
US5182805A (en) * 1989-07-14 1993-01-26 Ncr Corporation Method and system for determining copy-on-write condition
US5255379A (en) 1990-12-28 1993-10-19 Sun Microsystems, Inc. Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor
US5732405A (en) * 1992-10-02 1998-03-24 Motorola, Inc. Method and apparatus for performing a cache operation in a data processing system
US5644755A (en) * 1995-02-24 1997-07-01 Compaq Computer Corporation Processor with virtual system mode
US6412043B1 (en) * 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US7124286B2 (en) 2000-01-14 2006-10-17 Advanced Micro Devices, Inc. Establishing an operating mode in a processor
US6807617B2 (en) 2001-04-02 2004-10-19 Advanced Micro Devices, Inc. Processor, method and apparatus with descriptor table storing segment descriptors of varying size
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
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
US20030212878A1 (en) 2002-05-07 2003-11-13 Chen-Hanson Ting Scaleable microprocessor architecture

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006196005A (ja) * 2005-01-14 2006-07-27 Intel Corp バーチャルマシーンシステムの物理的メモリのバーチャル化
JP2008171428A (ja) * 2007-01-09 2008-07-24 Internatl Business Mach Corp <Ibm> プロセッサが規格合致するように見えるアーキテクチャ・レベルを選択するための方法および装置
US20120185688A1 (en) * 2011-01-13 2012-07-19 Google Inc. Processor mode locking
US9626201B2 (en) 2012-03-27 2017-04-18 Fujitsu Limited Processor emulation device and storage medium
CN106133682A (zh) * 2014-03-18 2016-11-16 国际商业机器公司 用于能在多种架构中初始化的控制实用工具的公用引导序列
JP2017511941A (ja) * 2014-03-18 2017-04-27 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 複数のアーキテクチャにおいて初期化することができる制御ユーティリティのための共通ブート・シーケンス
JP2017513113A (ja) * 2014-03-18 2017-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 選択されたアーキテクチャ・ファシリティと関連した処理の管理
CN106133682B (zh) * 2014-03-18 2019-04-09 国际商业机器公司 用于能在多种架构中初始化的控制实用工具的公用引导序列
US10747582B2 (en) 2014-03-18 2020-08-18 International Business Machines Corporation Managing processing associated with selected architectural facilities
US10747583B2 (en) 2014-03-18 2020-08-18 International Business Machines Corporation Managing processing associated with selected architectural facilities

Also Published As

Publication number Publication date
EP1628215A3 (en) 2009-01-21
KR20060046262A (ko) 2006-05-17
CN1716203A (zh) 2006-01-04
US7260702B2 (en) 2007-08-21
US20060005200A1 (en) 2006-01-05
EP1628215A2 (en) 2006-02-22
CN100530102C (zh) 2009-08-19
JP4156611B2 (ja) 2008-09-24

Similar Documents

Publication Publication Date Title
JP4156611B2 (ja) 64ビットx86プロセッサ上でレガシ32ビットx86仮想マシンを実行するためのシステムおよび方法
JP5079246B2 (ja) 仮想マシン環境におけるマルチレベルインターセプト処理のためのシステムおよび方法
US8612633B2 (en) Virtual machine fast emulation assist
US7558723B2 (en) Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
EP3125113B1 (en) Systems and methods for initializing multiple virtual processors within a single virtual machine
US7555596B2 (en) Systems and methods for attaching a virtual machine virtual hard disk to a host machine
EP1524596B1 (en) Systems and methods for using synthetic instructions in a virtual machine
US7434003B2 (en) Efficient operating system operation on a hypervisor
RU2398267C2 (ru) Иерархическая виртуализация посредством многоуровневого механизма виртуализации
JP2006018814A (ja) 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法
US20080065854A1 (en) Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor
US20090265708A1 (en) Information Processing Apparatus and Method of Controlling Information Processing Apparatus
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
TW201120752A (en) Improving nested virtualization performance in a computer system
TW200813833A (en) Launching hypervisor under running operating system
JP2005322242A (ja) 仮想環境からのハードウェアへの直接アクセスの提供
WO2013159652A1 (en) Restoring from legacy os environment to uefi pre-boot environment
US11693722B2 (en) Fast memory mapped IO support by register switch
Im et al. On-demand virtualization for live migration in bare metal cloud
EP4187387A1 (en) Inter-process communication method and apparatus, and computer storage medium
Early ESPRIT LTR 21917 (Pegasus II) Deliverable 2.1. 2 Pentium Port Report
CN117075974A (zh) 一种基于risc-v服务器cpu的新型edk2启动引导方法
Wang et al. MTX in 32-bit Protected Mode

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071218

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071218

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20071218

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20080219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080521

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: 20080613

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080709

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110718

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4156611

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110718

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120718

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120718

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130718

Year of fee payment: 5

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

LAPS Cancellation because of no payment of annual fees