JP4610307B2 - 実際のハードウェアベースのデバイスおよび理想化されたハードウェアベースのデバイスにおけるバイモーダルデバイス仮想化のためのシステムおよび方法 - Google Patents

実際のハードウェアベースのデバイスおよび理想化されたハードウェアベースのデバイスにおけるバイモーダルデバイス仮想化のためのシステムおよび方法 Download PDF

Info

Publication number
JP4610307B2
JP4610307B2 JP2004329651A JP2004329651A JP4610307B2 JP 4610307 B2 JP4610307 B2 JP 4610307B2 JP 2004329651 A JP2004329651 A JP 2004329651A JP 2004329651 A JP2004329651 A JP 2004329651A JP 4610307 B2 JP4610307 B2 JP 4610307B2
Authority
JP
Japan
Prior art keywords
mode
hardware
bimodal
operating system
function
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.)
Expired - Fee Related
Application number
JP2004329651A
Other languages
English (en)
Other versions
JP2005174307A (ja
Inventor
トラウト エリック
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 JP2005174307A publication Critical patent/JP2005174307A/ja
Application granted granted Critical
Publication of JP4610307B2 publication Critical patent/JP4610307B2/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
    • 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/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、一般に、コンピュータシステム内の仮想デバイス(virtual devices)に関するものであり、より詳細には、必要に応じてハードウェア仮想デバイス(hardware virtual device)または理想化された仮想デバイス(idealized virtual device)として選択的に動作するコンピュータシステム内の機能強化された仮想デバイスに関するものである。
仮想デバイスは、ソフトウェアで実現され、ある種の実際の(actual)または理想化された(idealized)物理デバイス(physical device)に対応する論理デバイス(logical device)である。仮想デバイスをモデル化する方法としては、一般に、既存のハードウェアを直接モデル化する「ハードウェア仮想デバイス(hardware virtual device)」手法(approach)と、物理ハードウェアの単なる反映(reflection)ではなく、VM環境(environment)向けに最適化(optimize)された「理想化された仮想デバイス(idealized virtual device)」手法の2つがある。
ハードウェア仮想デバイス手法には互換性に関して利点がある。すなわち、仮想デバイスはあらゆる面で実デバイス(real device)とまったく同じように動作するため、そのデバイスと相互作用するように設計されているソフトウェア(例えば、ドライバ)は変更なしでハードウェア仮想デバイスと共に動作する。しかし、ハードウェア仮想デバイスは、パフォーマンスに関しては不利である。すなわち、一般的にハードウェア設計者は仮想化に関する問題を考慮してないため物理ハードウェア(physical hardware)は著しいオーバーヘッドコスト(および不効率)を被ることなく仮想デバイスでエミュレート(emulate)することが困難なことが多く、したがって、ハードウェア仮想デバイスは、しばしば、対応するハードウェア実デバイス(real hardware counterpart)に比べて目立って低速(slower)である。
一方、理想化された仮想デバイス(idealized virtual device)では、開発者は、実施しやすくかつ使用効率のよい仮想デバイスをかなり自由に設計することができる。理想化された仮想デバイスの設計は物理ハードウェア設計により課される制限に従う必要がないため、理想化された仮想デバイスはVM環境内での使用に合わせて最適化できる。さらに、理想化された仮想デバイスの開発者は、正しく動作するために既存のソフトウェアが依拠する可能性のある微妙な副作用(タイミング、状態変化(state change)など)を懸念しなくてもよい。その上、開発者は、実際には存在していないハードウェアに類似する理想化された仮想デバイス、例えば、ゲストシステムとホストシステムとの間の通信を可能にする仮想デバイスを作成することもできる。しかし、欠点は、仮想デバイス(virtual device)が実際にはあらゆる点で実デバイス(real device)とまったく同じように動作するわけではないため、理想化された仮想デバイス手法(idealized virtual device approach)に関する互換性問題(compatibility issues)が発生する可能性があり、またその物理デバイスと相互作用するように設計されているソフトウェア(例えば、ドライバ(driver))が、変更(modification)なしでは理想化された仮想デバイスと共に正常にまたはまったく動作しない可能性があるという点である。
従って、上述した2つの既存の手法の利点を備え、ほとんど制限がない、仮想化デバイスの手法が求められている。
本発明を適用した様々な実施形態は、それぞれの弱みを補いながらハードウェアおよび理想化されたデバイス仮想化の手法(idealized device virtualization approaches)の相対的な強み(relative strength)を組み合わせたバイモーダル仮想デバイス手法(bimodal virtual device approach)(すなわち、「バイモーダルデバイス(bimodal devices)」)を対象とする。いくつかの実施形態では、バイモーダルデバイスは、実ハードウェア(real piece of hardware)に主に基づく仮想デバイスであり、ゲスト環境(guest environment)で実行(running)中のソフトウェアと広範(broad degree)な互換性(compatibility)を実現する(ハードウェアデバイス仮想化手法と類似)。しかし、ハードウェア仮想デバイスにつきまとう不十分なパフォーマンスという問題を克服するために、これらの実施形態では、オリジナルのハードウェアベースのデバイスには見られない理想化された(idealized)「高性能モード(high-performance mode)」をも提供する。オリジナルのハードウェアデバイス(original hardware device)と相互作用(interact)するように開発され、高性能モードを認識(unaware)しない(および使用(use)できない)ソフトウェアドライバ(software driver)(およびその他のソフトウェア)では、そのまま「レガシーモード(legacy mode)」(ハードウェア仮想化(hardware virtualization))を使用し続けるが、ゲストソフトウェアの機能強化版(enhanced version)は高性能モード(理想化された仮想化)を認識して利用することができる。
好ましい実施形態の詳細な説明は、付属の図面と併せて読むことより、よく理解できる。本発明は、以下に開示されている特定の方法および手段に限定されるものではない。すなわち、以下の説明自体は特許の範囲を制限することを意図していない。むしろ、異なるステップまたは本書で説明されているステップと類似のステップの組み合わしを含むことも可能である。さらに、「ステップ」という用語は、本明細書では、採用されている方法の異なる要素を意味するために使用される場合があるが、この用語は、個々のステップの順序が明示的に説明されていない限り、かつ説明されている場合を除き、本明細書で開示されている様々なステップの間に特定の順序があることを暗示するものではない。
コンピュータ環境(computer environment)
本発明の様々な実施形態は、コンピュータ上で実行可能である。図1および以下の説明は、本発明を実施することができる適切なコンピューティング環境について簡潔に述べた一般的な説明である。本発明の一実施形態として、クライアントワークステーションまたはサーバなどのコンピュータによって実行されるプログラムモジュールなどコンピュータ実行可能命令の一般的状況において説明してある。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、当業者であれば、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な家電、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどをはじめとする、他のコンピュータシステム構成でも実施することができることを理解するであろう。また、本発明は、通信ネットワークを通じてリンクされているリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルとおよびリモートの両方のメモリ記憶デバイス内に配置することができる。
図1に示されているように、汎用コンピューティングシステムの一例は、処理ユニット21、システムメモリ22、およびシステムメモリを含む様々なシステムコンポーネントを処理ユニット21に結合するシステムバス23を備える、従来のパーソナルコンピュータ20などを含む。システムバス23には、メモリバスまたはメモリコントローラ、周辺機器バス、および様々なバスアーキテクチャを使用するローカルバスを含む数種類のバス構造がある。システムメモリは、読み取り専用メモリ(ROM)24およびランダムアクセスメモリ(RAM)25を含む。起動時などにパーソナルコンピュータ20内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム26(BIOS)は通常、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(Small Computer System interface)バス56、およびSCSIバス56に接続されている外部記憶デバイス62を含む。
パーソナルコンピュータ20は、リモートコンピュータ49などの1つまたは複数のリモートコンピュータへの論理接続を使用することによりネットワーク環境で動作することも可能である。リモートコンピュータ49は、他のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の共通ネットワークノードでもよく、通常は、パーソナルコンピュータ20に関係する上述の要素の多くまたはすべてを含むが、メモリ記憶デバイス50だけが図1に例示されている。図1で説明されている論理接続は、ローカルエリアネットワーク(LAN)51とワイドエリアネットワーク(WAN)52を含む。このようなネットワーキング環境は、オフィス、企業全体にわたるコンピュータネットワーク、イントラネット、およびインターネットでは一般的なものである。
LANネットワーキング環境で使用する場合は、パーソナルコンピュータ20はネットワークインターフェースまたはアダプタ53を介してLAN51に接続される。WANネットワーキング環境で使用する場合、パーソナルコンピュータ20は、通常、モデム54またはインターネットなどのワイドエリアネットワーク52上で通信を確立するためのその他の手段を備える。モデム54は、内蔵でも外付けでもよく、シリアルポートインターフェース46を介してシステムバス23に接続される。ネットワーク環境では、パーソナルコンピュータ20またはその一部に関して述べたプログラムモジュールは、リモートメモリ記憶デバイスに格納されることができる。図に示されているネットワーク接続は例であり、コンピュータ間に通信リンクを確立するのに他の手段が使用できることは理解されるであろう。さらに、本発明の多数の実施形態は、コンピュータ化システムに特によく適しているが、本明細書いずれの内容も、本発明をそのような実施形態に制限することを意図されていない。
仮想マシン(virtual machines)
概念的な観点からは、コンピュータシステムは、一般に、ハードウェアの基礎となる層で実行されるソフトウェアの1つまたは複数の層を含む。この層化(layering)は、抽象化(abstraction)のため行われる。ソフトウェアの所定の層に対しインターフェースを定義すると、その層はその上の他の層により異なる方式で実施することができる。適切に設計されたコンピュータシステムであれば、それぞれの層はその下の中間層のみ認識する(およびそれのみに依存する)。これにより、層すなわち「スタック(stack)」(複数の隣接する層)は前記層またはスタックの上の層に悪影響を及ぼすことなく置き換えられることができる。例えば、ソフトウェアアプリケーション(上位層)は、通常、ファイルを何らかの形の恒久的ストレージに書き込むために、オペレーティングシステムの下位のいくつかのレベル(下位層)に依存しており、これらのアプリケーションでは、データを磁気ディスクに書き込むのか、ハードドライブに書き込むのか、またはネットワークフォルダに書き込むのかの違いを理解する必要はない。このような下位の層がファイルの書き込みを行う新しいオペレーティングシステムコンポーネントと置き換えられても、上位層のソフトウェアアプリケーションのオペレーションは影響を受けない。
層化されたソフトウェア(layered software)の持つ柔軟性(flexibility)は、仮想マシン(VM:virtual machine)が実際には別のソフトウェア層である仮想ハードウェア層を提示することを可能にする。このため、VMはその上のソフトウェア層が専用のプライベートコンピュータシステム上で実行中だと前記ソフトウェア層に思いこませることができ、したがってVMを使用すると、複数の「ゲストシステム(guest system)」を単一の「ホストシステム(host system)」上で同時に実行することができる。
図2は、コンピュータシステム内でエミュレートされる動作環境のハードウェアおよびソフトウェアアーキテクチャの論理的層化を表す図である。エミュレーションプログラム94は、ホストオペレーティングシステムおよび/またはハードウェアアーキテクチャ92上で実行される。エミュレーションプログラム94は、ゲストハードウェアアーキテクチャ96およびゲストオペレーティングシステム98をエミュレートする。さらに、ソフトウェアアプリケーション100は、ゲストオペレーティングシステム98上で実行される。図2のエミュレートされている動作環境では、エミュレーションプログラム94が動作するので、ソフトウェアアプリケーション100は、ホストオペレーティングシステムおよびハードウェアアーキテクチャ92と一般に互換性のないオペレーティングシステム上で実行するように設計されているとしてもコンピュータシステム90上で実行することができる。
図3Aは、物理(physical)コンピュータハードウェア102のすぐ上で実行されるホストオペレーティングシステムソフトウェア層104を備える仮想化されたコンピューティングシステムを例示しており、ホストオペレーティングシステム(ホストOS)104は、ホストOSが仮想化しようとしているハードウェアと同じであるインターフェースを公開することによりマシンのすべてのリソースを仮想化する(このため、その上で実行されているオペレーティングシステム層によりホストOSが気づかないままにできる)。
他の実施形態として、仮想マシンモニタ、すなわちVMMは、ソフトウェア層104’は、ホストオペレーティングシステム104”の代わりに、またはそれと共に、実行中の可能性があり、後者のオプションは図3Bに示されている。簡単のため、これ以降のすべての考察(特に、ホストオペレーティングシステム104については)は、図3Aに例示されている実施形態を対象とするものとする。しかし、このような考察のあらゆる面が、図3Bの実施形態に等しく当てはまるものとし、図3BのVMM104’は本質的に、機能レベルにおいて、後述の図3Aのホストオペレーティングシステム104の役割を置き換える。
図3Aを再び参照すると、ホストOS 104(またはVMM 104’)は、2つの仮想マシン(VM)実施、例えば仮想化されたIntel 386プロセッサとすることができるVM A 108および例えばMotorola 680X0ファミリのプロセッサのうちの1つの仮想化されたプロセッサとすることができるVM B 110である。VM 108および110のそれぞれの上に、ゲストオペレーティングシステム(ゲストOS)A 112およびB 114がある。ゲストOS A 112の上で、2つのアプリケーション、すなわちアプリケーションA1 116およびアプリケーションA2 118が実行されており、ゲストOS B 114の上に、アプリケーションB1 120がある。
仮想デバイス(virtual devices)
物理ハードウェアデバイスに関して、VMはソフトウェアアプリケーションが前記ハードウェアデバイスを利用するためのいくつかのオプションを用意する。いくつかVMシステムでは、ハードウェアデバイス(ハードドライブまたはネットワークアダプタなど)は、単一のVM、およびVMがそのハードウェアデバイスを利用できるという点で実行されているソフトウェア(専用デバイスアーキテクチャ)のみに割り当てられることができる。しかし、この設計では、異なるVM間だけでなく、VMとホストシステムとの間でもハードウェアデバイスの共有が妨げられる。このような理由から、多くのVM実施形態では、代わりに「仮想デバイス」を使用する。
仮想デバイスは、ソフトウェアで実現(implement)され、ある種の実際の(actual)または理想化された(idealized)物理デバイスに対応する論理デバイス(logical device)である。仮想デバイスは、一般に、例えばレジスタ設定、バッファリングされたデータ、保留コマンドキューなどを含む固有の一組のデバイス状態を保有する。制限のない例を使用すると、仮想ネットワークアダプタに関して、仮想アダプタに関連するソフトウェアはネットワークアダプタがVM内で実行中のコードによりアクセスされるときに呼び出され、その後、仮想アダプタは実アダプタカードに適合する方法でコマンドに応答することが可能である。このようにして、VM内で実行中のコードは、それが実アダプタではなく仮想アダプタ(virtual adapter)と「交信している(talking to)」ということを意識せず、仮想アダプタは直接または間接的に実アダプタ(real adapter)と相互作用し、その結果、実アダプタは望み通りの動作をする。
多くの場合、仮想デバイスへの要求は対応するホストデバイス上にマッピングされる。例えば、仮想ネットワークアダプタから送信されるネットワーキングパケットは、ホストにインストールされた実ネットワークアダプタの1つへ経路指定されることができる。この点に関して、仮想デバイスアーキテクチャは、前述の専用デバイスアーキテクチャのと似た機能を備える。しかし、専用デバイスアーキテクチャとは異なり、仮想デバイスアーキテクチャでは、複数の仮想デバイスが単一のホストデバイス(single host device)(実デバイス(real device))にマッピング(map)されることができる。例えば、3つの独立のVMがあるとすると、それぞれ仮想ネットワークアダプタを備え、3つの仮想アダプタはすべて単一のホストアダプタを共有することができるが、専用デバイスアーキテクチャでは、1つのVMのみがホストアダプタを使用することができる。
図4Aは、さらにドライバ、仮想デバイス、およびハードウェアを含む図3の仮想化コンピューティングシステムを例示している。ゲストOS A 112は、ドライバA 122を備え、仮想マシンA 108は、ドライバA 122に対応する仮想デバイスA 124を備える。同様に、ゲストOS B 114は、ドライバB 126を備え、仮想マシンB 110は、ドライバB 126に対応する仮想デバイスB 128を備える。さらに、ホストOS 104は、ドライバX 130を備え、コンピュータハードウェア102は、ドライバX 130に対応するハードウェアデバイスX 132を備える。
図4Bは、ゲストオペレーションシステム上で実行中のアプリケーションからコンピュータハードウェア内のハードウェアデバイスへの動作経路を例示している。アプリケーションA1 116は、ドライバA 122とインターフェースし(134)、さらにこのドライバは、仮想デバイスA 124とインターフェースする(136)。その後、この仮想デバイスA 124は、(ホストOS 104内の)ドライバX 130とインターフェースし(138)、これはさらに、ハードウェアデバイスX 132と直接通信する(140)。図5は、図4Bに示されているようにドライバ、仮想デバイス、およびハードウェアの間の同じ相互関係をさらに簡単にして例示している。
バイモーダルデバイス(bimodal device)
仮想デバイスをモデル化する方法としては、一般に、ハードウェアの既存の個々の部分を直接モデル化する「ハードウェア仮想デバイス(hardware virtual device)」手法(approach)と物理ハードウェア(physical hardware)の単なる反映(reflection)ではない、VM環境向けに最適化された、「理想化された仮想デバイス(idealized virtual device)」手法の2つがある。ハードウェア仮想デバイス手法には互換性に関する利点がある、すなわち、仮想デバイスはあらゆる点で実デバイスとまったく同じように動作するため、そのデバイスと相互作用するように設計されているソフトウェア(例えば、ドライバ)は変更なしでハードウェア仮想デバイスと共に動作する。しかし、ハードウェア仮想デバイスは、パフォーマンスに関しては不利である、すなわち、一般的にハードウェア設計者は仮想化に関する問題を考慮しないため物理ハードウェアは著しいオーバーヘッドコスト(および不効率)を被ることなく仮想デバイスでエミュレートすることが困難なことが多く、したがって、ハードウェア仮想デバイスは、多くの場合、対応するハードウェア実デバイスに比べて目立って低速である。
一方、理想化された仮想デバイスでは、開発者は、実施しやすくかつ使用効率のよい仮想デバイスをかなり自由に設計することができる。理想化された仮想デバイスの設計は物理ハードウェア設計により課される制限に従う必要がないため、理想化された仮想デバイスはVM環境内での使用に合わせて最適化できる。さらに、理想化された仮想デバイスの開発者は、正しく動作するために既存のソフトウェアが依拠する可能性のある微妙な副作用(タイミング、状態変化など)を懸念しなくてもよい。その上、開発者は、実際には存在していないハードウェアに類似する理想化された仮想デバイス、例えば、ゲストシステムとホストシステムとの間の通信を可能にする仮想デバイスを作成することもできる。しかし、欠点は、仮想デバイスが実際にはあらゆる点で実デバイスとまったく同じように動作するわけではないため、理想化された仮想デバイス手法に関する互換性問題が発生する可能性があり、またその物理デバイスと相互作用するように設計されているソフトウェア(例えば、ドライバ)が、変更なしでは理想化された仮想デバイスと共に正常にまたはまったく動作しない可能性があるという点である。
本発明の様々な実施形態は、それぞれの弱みを補いながらハードウェアおよび理想化されたデバイス仮想化の手法の相対的な強みを組み合わせたバイモーダル仮想デバイス手法(すなわち、「バイモーダルデバイス」)を対象とする。いくつかの実施形態では、バイモーダルデバイスは、ハードウェアの個々の実部分に主に基づく仮想デバイスであり、ゲスト環境で実行中のソフトウェアと広範な互換性を実現する(ハードウェアデバイス仮想化手法と類似)。しかし、ハードウェア仮想デバイスにつきまとう不十分なパフォーマンスという問題を克服するために、これらの実施形態では、オリジナルのハードウェアベースのデバイスには見られない理想化された「高性能モード(high-performance mode)」をも提供する。オリジナルのハードウェアデバイスと相互作用するように開発され、高性能モードを意識しない(および使用できない)ソフトウェアドライバ(およびその他のソフトウェア)では、そのまま「レガシーモード(legacy mode)」(ハードウェア仮想化(hardware viutualization))を使用し続けるが、ゲストソフトウェアの機能強化版は高性能モード(理想化された仮想化)を認識して利用することができる。
いくつかの実施形態では、高性能モードは、仮想デバイスのレガシーモードのオリジナル機能とは完全に独立したものとすることができる。他の実施形態として、高性能モードはオリジナル機能の拡張または代替を含むこともできる。いずれにせよ、高性能モードは、レガシーモード機能と無関係であろうと代替であろうと、理想化されたプロセッサ仮想化手法によく似ている。さらに、使用する実施形態に応じて、高性能モードへの切り替えで、レガシーモードを完全にディスエーブル(disable)にする、レガシーモードの一部をディスエーブルにする、かつ/またはレガシーモードの機能を拡張することができることにも留意されたい。
本発明のいくつかの実施形態では、高性能モードは、仮想デバイスのレジスタ内の予約ビット(reserved bit)を使用することによりイネーブル(enable)にすることができるが、他の実施形態では、代わりに、新しいレジスタ(例えば、1つまたは複数の仮想デバイスにより使用するため特に作成されたレジスタ)を追加するか、または何らかの形式のハンドシェーキングを実施し、所定のコマンドまたはデータのシーケンスが従来レジスタに書き込まれるようにすることができる。
次に、Ethernet(登録商標)NICバイモーダルデバイスについて述べる。レガシーモードでは、Ethernet(登録商標)カードに情報を1パケット分送信することは、従来のI/Oレジスタへの最大8回の個別書き込みを伴うことがある。これらのI/Oアクセスは、DMAアドレス(すなわち、パケットデータが見つかるRAM内の位置)、転送の長さ、および他のパラメータが指定されてから転送を開始するコマンドバイトを含むパケット転送に対しパラメータを設定する必要がある。しかし、I/Oレジスタへのこれらの書き込みはそれぞれ、VM内では比較的コストが高く、これらのI/Oアクセスを仮想化するために必要な合計時間は著しく長く、その結果パフォーマンスの損失が大きくなる。しかし、「理想化された」仮想Ethernet(登録商標)カード−すなわち、高性能モードで実行中の仮想カード−では、パケット送信を開始するために1回I/Oアクセスする必要があり、したがって高性能モードで強化されたEthernet(登録商標)カードバイモーダルデバイス(例えば、DEC21140チップセットに基づくデバイス)では、高性能モードを使用することができる場合にはパフォーマンスが著しく高まる。
いくつかの実施形態では、高性能モードは、ゲストオペレーティングシステム環境内でインストールされた特別な修正済みドライバを使用することによりイネーブルにされることができ、高性能モードがイネーブルにされると、ドライバでは、パケット送信を開始するのにより最適なメカニズムを使用することができる。しかし、修正済みドライバがゲスト内に存在しない場合でも、従来ドライバは、高性能モードにより可能なパフォーマンス最適化が行われていないとしてもネットワーキング機能を提供することができる。
図6Aは、図5のサブシステム内の仮想デバイスの代わりにバイモーダルデバイスを使用することを例示しており、前記バイモーダルデバイスはレガシーモードで動作する。この図では、従来ドライバA’122’は、ハードウェア仮想化のためのレガシーモード152および理想化された仮想化のための高性能モード154の両方を備えるバイモーダルデバイス150とインターフェースする(136’)。従来ドライバA’122’は、バイモーダルデバイス150の高性能モード154により実現される理想化された仮想化と連携するように設計されていないため、その代わり、(図のように)バイモーダルデバイス150のレガシーモード152により実現されるハードウェア仮想化と連携し、さらにこのバイモーダルデバイスは、ホストOSドライバX 130とインターフェースする(138’)。
これと対照的に、図6Bは、高性能モードで動作するバイモーダルデバイスを例示している。この図において、高性能ドライバA”122”はバイモーダルデバイス150とインターフェースする(136”)。高性能ドライバA”122”はバイモーダルデバイス150の高性能モード154により実現される理想化された仮想化と連携することができるため、(図に示されているように)そのように実行し、さらに、バイモーダルデバイス150は、ホストOSドライバX 130とインターフェースする(138”)。
ハードウェアベースの「バイモーダル」手法は、新しい機能を古い機能と他の方法では非互換であるハードウェアデバイスに追加するために異なる技術分野において使用されている。例えば、従来のPS/2マウスは、3バイトの情報(X座標、Y座標、およびボタン状態)をコンピュータに送信するが、マウスメーカーが「スクロールホイール」をマウスに追加したときに、スクロールホイール状態を含む4バイトパケットの情報に切り替える必要が生じた。スクロールホイールを認識しないマウスドライバとの後方互換性を維持するため、新しいマウスは「レガシーモード」で起動し、3バイトの情報を送るだけであるが、新しいスタイルのドライバがロードされたときには、このドライバは、マウスに4バイトパケットの送信を開始するよう指示することにより「スクロールホイールモード(scroll-wheel mode)」をイネーブルする。
バイモーダルデバイスの技法(bimodal device techniques)
ゲストモードドライバ(guest-mode driver)がバイモーダルデバイスを識別(identify)できる(すなわち、実(real)ハードウェアデバイスと、追加(additional)オペレーションモードをサポートするためのエミュレートされてたデバイス(emulated device)とを区別する)ための技法がいくつかある。以下の技法があるが、これらに限られるわけではない。
・固有のデバイスバージョン番号:多くのデバイスがソフトウェアからアクセス可能なデバイスバージョン識別子を持つ。これらの値は、ときには、I/Oポートまたはメモリマップトレジスタを通じて直接アクセス可能な場合もある。別のときは、デバイスに特定のコマンドが送信されることで、バージョン情報の返却を要求することができる。これらの場合、既存の実ハードウェアに応答しないようにバージョン番号を修正することが可能なこともある。大半のドライバは、バージョン番号を無視するか、または最小バージョン番号のテストを行うので、既存の従来ドライバとの互換性に影響を及ぼすことなく新しい固有のバージョン番号を選択することが可能でなければならない。
・未使用レジスタ:いくつかのデバイスでは、I/Oポートまたはメモリマップトレジスタの範囲を定義するが、その範囲の部分範囲しか使用していない。これは、範囲は、通常、2の累乗個のブロック単位で割り当てられ、さらにエンジニアは、通常、将来の拡張に必要とする以上に割り当てるため、よくあることである。その範囲の中で「未定義」または「予約済み」レジスタを識別子として使用することが可能である。実ハードウェアは、通常、予約済みレジスタが読み出されたときに0x00または0xFFを返す。エミュレートされたバイモーダルデバイスは、異なる区別可能な値を返すことができる。
・ハンドシェーキング:上の2つの技法が実施可能でなければ、通常、何らかの形式の裏口から「ハンドシェーキング」を設計することが可能である。これは、現実世界の利用の仕方にはまず見られないレジスタアクセスまたはデバイスコマンドの特定のシーケンスを伴う。例えば、デバイスがディスクコントローラであった場合、ハンドシェーキング技法は、特定の順序(例えば、0、3、および7)でセクタの特定のあらかじめ定められているリストを開始する複数の0バイトを読み込むコマンドシーケンスを送信することを伴う。実コントローラでは、これは、何の効果ももたらさない(0バイトの読み取りはno−opとして定義されているからである)。しかし、バイモーダルデバイスでは、このようなシーケンスは、他の何らかの副作用を引き起こす可能性がある(例えば、ステータスレジスタ内の特定のステータスビットがセットされる)。
当然のことながら、バイモーダルオペレーションが可能なエミュレートされたデバイスを識別するために使用される同じ技法も、前記デバイスの「機能強化(enhanced)」モードを自動的にイネーブルにするために使用することが可能である。
結論:
本明細書で説明されている様々なシステム、方法、および技法は、ハードウェアまたはソフトウェアで、あるいは適切であれば、それらの組み合わせにより実施することができる。したがって、本発明の方法および装置、またはその態様または一部は、磁気ディスク、CD−ROM、ハードドライブ、または他のマシン可読記憶媒体などの有形媒体内に実現されるプログラムコード(すなわち、命令)の形をとることができ、プログラムコードがコンピュータなどのマシンにロードされ実行されるときに、そのマシンは本発明を実施する装置となる。プログラム可能コンピュータ上でプログラムコードを実行する場合、コンピュータは、一般に、プロセッサ、プロセッサにより読み取り可能な記憶媒体(揮発性および不揮発性メモリおよび/または記憶素子)、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを備える。コンピュータシステムと通信する1つまたは複数のプログラムは、高水準手続き型またはオブジェクト指向型プログラミング言語で実施するのが好ましい。しかし、プログラムは、必要ならば、アセンブリ言語またはマシン語で実施することができる。いずれの場合も、言語はコンパイル型言語またはインタプリタ型言語であり、ハードウェアの実施と組み合わせられる。
本発明の方法および装置は、電気配線またはケーブル配線、光ファイバ、または他の形態の伝送などの、何らかの伝送媒体を介して伝送されるプログラムコードの形で実現されることも可能であり、プログラムコードがEPROM、ゲートアレイ、プログラム可能論理回路(PLD)、クライアントコンピュータ、ビデオレコーダなどのマシンによりロードされ実行されるときに、マシンは本発明を実施する装置となる。汎用プロセッサで実施する場合、プログラムコードはプロセッサと連携して、本発明のインデックス作成機能を実行する動作をする独自装置を実現する。
本発明については、様々な図の好ましい実施形態に基づいて説明してきたが、本発明から逸脱することなく本発明の同じ機能を実行するために、他の類似の実施形態を使用することができる。また、修正および追加を、これまで説明してきた実施形態に加えることができることが理解されるであろう。例えば、本発明の実施例はパーソナルコンピュータの機能をエミュレートするデジタルデバイスに関して説明されているが、当業者であれば、本発明は、本出願で説明されているように、そのようなデジタルデバイスに限定されず、有線無線を問わずゲーム機、ハンドヘルドコンピュータ、携帯型コンピュータなど任意の数の既存のまたはこれから現れるコンピューティングデバイスまたは環境に適用することができ、通信ネットワークを介して接続され、ネットワーク上で相互作用するそのような任意の数のコンピューティングデバイスに適用されることができる。さらに、ハンドヘルドデバイスのオペレーティングシステムおよびその他のアプリケーション特有のハードウェア/ソフトウェアインターフェースシステムを含む、様々なコンピュータプラットフォームは、特に無線ネットワーク接続デバイスの数が増え続けるため、本明細書において考察されることが強調されなければならない。したがって、本発明は、単一の実施形態に限られるべきではなく、むしろ付属の請求項による広がりと範囲において解釈すべきである。
最後に、本明細書で説明されている実施形態は、他のプロセッサアーキテクチャ、コンピュータベースのシステム、またはシステム仮想化での使用に適合させることができ、そのような実施形態は、本明細書で行われる開示により明確に予想され、したがって、本発明は本明細書で説明されている規定の実施形態に限られず、その代わりに最も広く解釈されるべきである。同様に、プロセッサ仮想化以外の目的に合成命令を使用することも、本明細書で行われる開示により予想され、プロセッサ仮想化以外の状況における合成命令のそのような利用は、本明細書で行われる開示に最も広く読み込まれるべきである。
本発明を実施するためのコンピュータシステムを例示したブロック図である。 コンピュータシステム内でエミュレートされる動作環境のハードウェアおよびソフトウェアアーキテクチャを示す論理的層図である。 仮想化コンピューティングシステムの一例を示す図である。 ホストオペレーティングシステムと共に動作する仮想マシンモニタを備えた仮想化コンピューティングシステムの他の実施形態を示す図である。 ドライバ、仮想デバイス、およびハードウェアを更に含んだ仮想化コンピューティングシステムを示す図である。 ゲストオペレーティングシステム上で実行中のアプリケーションから図4Aのコンピュータハードウェア内のハードウェアデバイスへの動作パスを示す図である。 図4Bに示されているドライバ、仮想デバイス、およびハードウェアの間の相互関係を示す図である。 図5に示したサブシステム内の仮想デバイスの代わりにバイモーダルデバイスを使用し、このバイモーダルデバイスがレガシーモードで動作していることを示す図である。 高性能モードで動作する図6Aのバイモーダルデバイスを示す図である。
符号の説明
20 コンピュータ
21 処理ユニット
22 システムメモリ
23 システムバス
27 ハードドライブ
28 磁気ディスクドライブ
29 取り外し可能ストレージ
30 光ドライブ
32 ハードディスクドライブI/F
33 磁気ディスクドライブI/F
34 光ドライブI/F
36 アプリケーションプログラム
37 その他のプログラム
38 プログラムデータ
40 キーボード
42 マウス
46 シリアルポートI/F
47 モニタ
48 ビデオアダプタ
53 ネットワークI/F
54 モデム
55 ホストアダプタ
56 SCSIバス
62 ストレージデバイス

Claims (20)

  1. ゲストオペレーティングシステムとホストオペレーティングシステムとの間の通信を可能とする方法であって、
    前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとの間にバイモーダルデバイスが接続されている場合、前記ゲストオペレーティングシステムのドライバが、前記バイモーダルデバイスの動作モードを識別するステップと、
    ここで、前記バイモーダルデバイスは、第1の動作モードでは前記ホストオペレーティングシステムに接続されたハードウェアデバイスが有する所定のオリジナルオペレーション機能を実行するためのハードウェア仮想デバイスとして、第2の動作モードでは前記所定のオリジナルオペレーション機能に追加された追加オペレーション機能をも実行するための理想化されたハードウェア仮想デバイスとして選択的に動作し、ここで、該理想化されたハードウェア仮想デバイスは、前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとの間の通信を可能にする設計された仮想デバイスとして構成され、該設計された仮想デバイスは、所定の実際の又は設計された物理デバイスに対応する論理デバイスであり、該論理デバイスは、ソフトウェアとしての所定のドライバに従って前記実際の又は設計された物理デバイスとして動作するものであり、
    前記ゲストオペレーティングシステムのドライバが、前記第2の動作モードで動作する前記バイモーダルデバイスと通信できないときは、前記ハードウェアデバイスが、前記追加オペレーション機能を実行することなく前記所定のオリジナルオペレーション機能を実行できるように、前記バイモーダルデバイスは、前記ハードウェア仮想デバイスとして選択的に動作するステップと、
    前記ゲストオペレーティングシステムのドライバが、前記第2の動作モードで動作する前記バイモーダルデバイスと通信できるときは、前記ハードウェアデバイスが、前記所定のオリジナルオペレーション機能の実行と共に前記追加オペレーション機能の実行も同時にできるように、前記バイモーダルデバイスは、前記理想化されたハードウェア仮想デバイスとして選択的に動作するステップと
    を具えたことを特徴とする方法。
  2. 前記第2の動作モードの機能は、前記第1の動作モードのオリジナルオペレーション機能を拡張することを特徴とする請求項1記載の方法。
  3. 前記第2の動作モードの機能は、前記第1の動作モードのオリジナルオペレーション機能から独立していることを特徴とする請求項1記載の方法。
  4. 前記第2の動作モードの機能は、前記第1の動作モードのオリジナルオペレーション機能をディスエーブルにすることを特徴とする請求項3記載の方法。
  5. 前記第2の動作モードの機能は、前記第1の動作モードのオリジナルオペレーション機能の一部をディスエーブルにすることを特徴とする請求項3記載の方法。
  6. 前記第2の動作モードは、前記バイモーダルデバイスにおける前記ハードウェア仮想デバイスレジスタ内の少なくとも1つのビットを使用することによりイネーブルにされることを特徴とする請求項1記載の方法。
  7. 前記第2の動作モードは、前記バイモーダルデバイスにおける1つまたは複数の前記ハードウェア仮想デバイスによる利用のため特に作成されたレジスタ内の少なくとも1つのビットを使用することによりイネーブルにされることを特徴とする請求項1記載の方法。
  8. 前記第2の動作モードは、前記バイモーダルデバイスにおける少なくとも1つのレジスタ内の値を変更する所定のコマンドまたはデータのシーケンスを使用することによりイネーブルにされることを特徴とする請求項1記載の方法。
  9. 前記第2の動作モードは、ゲストオペレーティングシステム環境内にインストールされた第2の動作モードドライバを使用することによりイネーブルにされ、
    前記第2の動作モードドライバが存在していない場合、第1の動作モードドライバが代わりにイネーブルにされることを特徴とする請求項1記載の方法。
  10. コンピュータに、請求項1ないし9のいずれかに記載の方法を実行させることが可能な命令を有するコンピュータプログラム。
  11. 請求項10記載のコンピュータプログラムを有するコンピュータ読取り可能な記録媒体。
  12. ゲストオペレーティングシステムとホストオペレーティングシステムとの間の通信を可能とするシステムであって、
    前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとの間にバイモーダルデバイスが接続されている場合、前記ゲストオペレーティングシステムのドライバが、前記バイモーダルデバイスの動作モードを識別する手段と、
    ここで、前記バイモーダルデバイスは、第1の動作モードでは前記ホストオペレーティングシステムに接続されたハードウェアデバイスが有する所定のオリジナルオペレーション機能を実行するためのハードウェア仮想デバイスとして、第2の動作モードでは前記所定のオリジナルオペレーション機能に追加された追加オペレーション機能をも実行するための理想化されたハードウェア仮想デバイスとして選択的に動作し、ここで、該理想化されたハードウェア仮想デバイスは、前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとの間の通信を可能にする設計された仮想デバイスとして構成され、該設計された仮想デバイスは、所定の実際の又は設計された物理デバイスに対応する論理デバイスであり、該論理デバイスは、ソフトウェアとしての所定のドライバに従って前記実際の又は設計された物理デバイスとして動作するものであり、
    前記ゲストオペレーティングシステムのドライバが、前記第2の動作モードで動作する前記バイモーダルデバイスと通信できないときは、前記ハードウェアデバイスが、前記追加オペレーション機能を実行することなく前記所定のオリジナルオペレーション機能を実行できるように、前記バイモーダルデバイスは、前記ハードウェア仮想デバイスとして選択的に動作する手段と、
    前記ゲストオペレーティングシステムのドライバが、前記第2の動作モードで動作する前記バイモーダルデバイスと通信できるときは、前記ハードウェアデバイスが、前記所定のオリジナルオペレーション機能の実行と共に前記追加オペレーション機能の実行も同時にできるように、前記バイモーダルデバイスは、前記理想化されたハードウェア仮想デバイスとして選択的に動作する手段と
    を具えたことを特徴とするシステム。
  13. 前記第2の動作モードの機能は、前記第1の動作モードのオリジナルオペレーション機能を拡張することを特徴とする請求項12記載のシステム。
  14. 前記第2の動作モードの機能は、前記第1の動作モードのオリジナルオペレーション機能から独立していることを特徴とする請求項12記載のシステム。
  15. 前記第2の動作モードの機能は、前記第1の動作モードのオリジナルオペレーション機能をディスエーブルにすることを特徴とする請求項14記載のシステム。
  16. 前記第2の動作モードの機能は、前記第1の動作モードのオリジナルオペレーション機能の一部をディスエーブルにすることを特徴とする請求項14記載のシステム。
  17. 前記第2の動作モードは、前記バイモーダルデバイスにおける前記ハードウェア仮想デバイスのレジスタ内の少なくとも1つのビットを使用することによりイネーブルにされることを特徴とする請求項12記載のシステム。
  18. 前記第2の動作モードは、前記バイモーダルデバイスにおける1つまたは複数の前記ハードウェア仮想デバイスによる利用のため特に作成されたレジスタ内の少なくとも1つのビットを使用することによりイネーブルにされることを特徴とする請求項12記載のシステム。
  19. 前記第2の動作モードは、前記バイモーダルデバイスにおける少なくとも1つのレジスタ内の値を変更する所定のコマンドまたはデータのシーケンスを使用することによりイネーブルにされることを特徴とする請求項12記載のシステム。
  20. 前記第2の動作モードは、ゲストオペレーティングシステム環境内にインストールされた第2の動作モードのドライバを使用することによりイネーブルにされ、
    前記第2の動作モードのドライバが存在していない場合、第1の動作モードのドライバが代わりにイネーブルにされることを特徴とする請求項12記載のシステム。
JP2004329651A 2003-12-12 2004-11-12 実際のハードウェアベースのデバイスおよび理想化されたハードウェアベースのデバイスにおけるバイモーダルデバイス仮想化のためのシステムおよび方法 Expired - Fee Related JP4610307B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/734,450 US7558723B2 (en) 2003-12-12 2003-12-12 Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices

Publications (2)

Publication Number Publication Date
JP2005174307A JP2005174307A (ja) 2005-06-30
JP4610307B2 true JP4610307B2 (ja) 2011-01-12

Family

ID=34552773

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004329651A Expired - Fee Related JP4610307B2 (ja) 2003-12-12 2004-11-12 実際のハードウェアベースのデバイスおよび理想化されたハードウェアベースのデバイスにおけるバイモーダルデバイス仮想化のためのシステムおよび方法

Country Status (13)

Country Link
US (1) US7558723B2 (ja)
EP (1) EP1548589B1 (ja)
JP (1) JP4610307B2 (ja)
KR (1) KR20050059409A (ja)
CN (1) CN100449488C (ja)
AU (1) AU2004220769A1 (ja)
BR (1) BRPI0404496A (ja)
CA (1) CA2485239A1 (ja)
ES (1) ES2664817T3 (ja)
MX (1) MXPA04011275A (ja)
RU (1) RU2406113C2 (ja)
TW (1) TW200519632A (ja)
ZA (1) ZA200409138B (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838743B2 (en) * 2004-02-13 2014-09-16 Intel Corporation Apparatus and method for a dynamically extensible virtual switch
US20060005190A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for implementing an operating system in a virtual machine environment
US8249853B2 (en) * 2006-03-31 2012-08-21 Intel Corporation Exposing device features in partitioned environment
JP4945186B2 (ja) * 2006-07-28 2012-06-06 株式会社東芝 記憶装置およびこれを含むメモリシステム
US8099274B2 (en) * 2007-03-30 2012-01-17 International Business Machines Corporation Facilitating input/output processing of one or more guest processing systems
US7793307B2 (en) * 2007-04-06 2010-09-07 Network Appliance, Inc. Apparatus and method for providing virtualized hardware resources within a virtual execution environment
US20080320041A1 (en) * 2007-06-21 2008-12-25 Motorola, Inc. Adding virtual features via real world accessories
KR100917687B1 (ko) * 2007-06-26 2009-09-21 문창선 가상 인터페이스를 제공하기 위한 시스템 및 방법
US9043553B2 (en) * 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
US8219989B2 (en) 2007-08-02 2012-07-10 International Business Machines Corporation Partition adjunct with non-native device driver for facilitating access to a physical input/output device
US8645974B2 (en) 2007-08-02 2014-02-04 International Business Machines Corporation Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device
US8010763B2 (en) 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
JP5056334B2 (ja) * 2007-10-15 2012-10-24 富士通株式会社 管理プログラム、管理装置、および管理方法
US7743389B2 (en) * 2007-11-06 2010-06-22 Vmware, Inc. Selecting between pass-through and emulation in a virtual machine environment
JP2009134601A (ja) * 2007-11-30 2009-06-18 Fujitsu Ltd ディスクアクセス方式切替装置
US8230155B2 (en) 2008-06-26 2012-07-24 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8151032B2 (en) * 2008-06-26 2012-04-03 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8566565B2 (en) * 2008-07-10 2013-10-22 Via Technologies, Inc. Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications
US8239938B2 (en) * 2008-12-08 2012-08-07 Nvidia Corporation Centralized device virtualization layer for heterogeneous processing units
US8989802B2 (en) * 2009-01-27 2015-03-24 Symbol Technologies, Inc. Methods and apparatus for a mobile unit with device virtualization
TWI433527B (zh) 2009-09-11 2014-04-01 Shih Pi Ta Technology Ltd 一種建立通訊連線之方法及其系統
KR101275293B1 (ko) * 2009-10-26 2013-06-14 한국전자통신연구원 네트워크 장치 및 네트워크 가상화 지원 방법
US9529615B2 (en) 2010-11-24 2016-12-27 International Business Machines Corporation Virtual device emulation via hypervisor shared memory
US20120167082A1 (en) * 2010-12-23 2012-06-28 Sanjay Kumar Direct sharing of smart devices through virtualization
JPWO2012102002A1 (ja) * 2011-01-24 2014-06-30 パナソニック株式会社 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、記録媒体、及び集積回路
US9804864B1 (en) * 2011-10-07 2017-10-31 BlueStack Systems, Inc. Method of mapping inputs and system thereof
US9329887B2 (en) 2011-10-19 2016-05-03 Hob Gmbh & Co. Kg System and method for controlling multiple computer peripheral devices using a generic driver
US9442732B2 (en) 2012-03-19 2016-09-13 Via Technologies, Inc. Running state power saving via reduced instructions per clock operation
US8904388B2 (en) * 2013-01-10 2014-12-02 Vce Company, Llc Scripting language executor service for applications
US9330011B2 (en) 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
US10019260B2 (en) 2013-09-20 2018-07-10 Via Alliance Semiconductor Co., Ltd Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match
US9575778B2 (en) 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
US9755902B2 (en) 2014-05-20 2017-09-05 Via Alliance Semiconductor Co., Ltd. Dynamic system configuration based on cloud-collaborative experimentation
KR102160414B1 (ko) * 2016-01-22 2020-09-28 주식회사 소니 인터랙티브 엔터테인먼트 하위 호환성을 위한 레거시 버스 동작 시뮬레이션
CN113490292B (zh) * 2021-07-16 2023-04-28 联想(北京)有限公司 通信处理方法和电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0212340A (ja) * 1988-06-29 1990-01-17 Nec Corp 仮想計算機
JPH05151084A (ja) * 1991-11-26 1993-06-18 Nec Corp Tlbエントリクリア方式
JPH07244628A (ja) * 1994-01-21 1995-09-19 Microsoft Corp プロテクト・モード・デバイス・ドライバを供給する方法及び装置
US5548783A (en) * 1993-10-28 1996-08-20 Dell Usa, L.P. Composite drive controller including composite disk driver for supporting composite drive accesses and a pass-through driver for supporting accesses to stand-alone SCSI peripherals
JP2001256153A (ja) * 2000-03-09 2001-09-21 Canon Inc ネットワークデバイス制御装置および方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0610677A3 (en) * 1993-02-12 1995-08-02 Ibm Communication device management module operating in two modes.
US5459869A (en) * 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5940613A (en) * 1996-05-01 1999-08-17 Sun Microsystems, Inc. Method for creating a single binary virtual device driver for a windowing operating system
US5958022A (en) * 1997-03-21 1999-09-28 International Business Machines Corporation System and method for I/O access mode selection
RU99122746A (ru) * 1997-04-02 2001-09-20 Майкрософт Корпорейшн (Us) Способ интеграции виртуальной машины с редакторами способов ввода
US6785894B1 (en) * 1999-04-09 2004-08-31 Sun Microsystems, Inc. Virtual device driver
US7308717B2 (en) * 2001-02-23 2007-12-11 International Business Machines Corporation System and method for supporting digital rights management in an enhanced Java™ 2 runtime environment
US7272831B2 (en) * 2001-03-30 2007-09-18 Intel Corporation Method and apparatus for constructing host processor soft devices independent of the host processor operating system
US20030061401A1 (en) * 2001-09-25 2003-03-27 Luciani Luis E. Input device virtualization with a programmable logic device of a server
US7103529B2 (en) * 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0212340A (ja) * 1988-06-29 1990-01-17 Nec Corp 仮想計算機
JPH05151084A (ja) * 1991-11-26 1993-06-18 Nec Corp Tlbエントリクリア方式
US5548783A (en) * 1993-10-28 1996-08-20 Dell Usa, L.P. Composite drive controller including composite disk driver for supporting composite drive accesses and a pass-through driver for supporting accesses to stand-alone SCSI peripherals
JPH07244628A (ja) * 1994-01-21 1995-09-19 Microsoft Corp プロテクト・モード・デバイス・ドライバを供給する方法及び装置
JP2001256153A (ja) * 2000-03-09 2001-09-21 Canon Inc ネットワークデバイス制御装置および方法

Also Published As

Publication number Publication date
RU2004133169A (ru) 2006-04-27
EP1548589A3 (en) 2007-06-06
EP1548589A2 (en) 2005-06-29
AU2004220769A1 (en) 2005-06-30
CA2485239A1 (en) 2005-06-12
ES2664817T3 (es) 2018-04-23
EP1548589B1 (en) 2018-02-28
BRPI0404496A (pt) 2005-08-23
TW200519632A (en) 2005-06-16
RU2406113C2 (ru) 2010-12-10
US7558723B2 (en) 2009-07-07
MXPA04011275A (es) 2005-06-16
KR20050059409A (ko) 2005-06-20
ZA200409138B (en) 2006-07-26
US20050131668A1 (en) 2005-06-16
JP2005174307A (ja) 2005-06-30
CN1627263A (zh) 2005-06-15
CN100449488C (zh) 2009-01-07

Similar Documents

Publication Publication Date Title
JP4610307B2 (ja) 実際のハードウェアベースのデバイスおよび理想化されたハードウェアベースのデバイスにおけるバイモーダルデバイス仮想化のためのシステムおよび方法
JP4156611B2 (ja) 64ビットx86プロセッサ上でレガシ32ビットx86仮想マシンを実行するためのシステムおよび方法
RU2412468C2 (ru) Системы и способы многоуровневой обработки перехватов в виртуальной машинной среде
US9003418B2 (en) System and method for accelerating input/output access operation on a virtual machine
US7725305B2 (en) Partial virtualization on computing device
US8312212B2 (en) Systems and methods for attaching a virtual machine virtual hard disk to a host machine
JP5139975B2 (ja) 複数の経路最適化を備える関数レベルジャストインタイム変換エンジン
CN102541619B (zh) 虚拟机管理装置和方法
JP2006018814A (ja) 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法
CN105204393B (zh) 基于虚核单片机的单片机生产研发工具及其实现方法
CN107430570B (zh) 具有SR-IOV和xHCI-IOV的附加安全执行环境
US8117346B2 (en) Configuration space virtualization
US20180074843A1 (en) System, method, and computer program product for linking devices for coordinated operation
KR20140018316A (ko) 가상 디스크 스토리지 기술
CN109408193B (zh) 虚拟机实现方法、装置及计算机设备
KR20240098553A (ko) 저장 장치
JP2023064327A (ja) 仮想マシンコンテナ装置、仮想マシンコンテナの制御方法、プログラム及び記録媒体
WO2020183121A1 (en) Apparatus for forwarding a mediated request to processing circuitry in response to a configuration request
JP2005056019A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100908

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

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

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

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4610307

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

LAPS Cancellation because of no payment of annual fees