Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4882005B2 - 仮想環境における最適化した割り込み送信 - Google Patents
[go: Go Back, main page]

JP4882005B2 - 仮想環境における最適化した割り込み送信 - Google Patents

仮想環境における最適化した割り込み送信 Download PDF

Info

Publication number
JP4882005B2
JP4882005B2 JP2009540365A JP2009540365A JP4882005B2 JP 4882005 B2 JP4882005 B2 JP 4882005B2 JP 2009540365 A JP2009540365 A JP 2009540365A JP 2009540365 A JP2009540365 A JP 2009540365A JP 4882005 B2 JP4882005 B2 JP 4882005B2
Authority
JP
Japan
Prior art keywords
interrupt
virtual
message
operating system
partition
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
JP2009540365A
Other languages
English (en)
Other versions
JP2010512577A5 (ja
JP2010512577A (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 JP2010512577A publication Critical patent/JP2010512577A/ja
Publication of JP2010512577A5 publication Critical patent/JP2010512577A5/ja
Application granted granted Critical
Publication of JP4882005B2 publication Critical patent/JP4882005B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、仮想環境における最適化した割り込み送信に関する。
バーチャルマシン(VM)は、エミュレートされたマシンまたはシステムを提供するためにコンピューターデバイスなど(例えば、ホスト)で動作するソフトウェア構成またはそれと同種のものである。一般に、必ずではないが、VMはアプリケーションなどであり、ホスト上で使用して利用アプリケーションなどをインスタンス化し、同時に上記利用アプリケーションを上記ホスト装置から、または上記ホスト上の他のアプリケーションから隔離することができる。1つの一般的な状況では、ホストは配備されている複数のVMを収容することができ、それぞれのVMはホストから利用可能なリソースを用いて何らかの所定の機能を実行する。
特に、コンピューターデバイス上にホストされるそれぞれのVMは、仮想的な形ではあるが実質的にコンピューティングマシンであり、従ってその利用アプリケーションおよび外部の両方に対して自身をコンピューティングマシンの様に見せる。例えば、VMおよび/またはその利用アプリケーションは、VMにハードウェアリソースが実際にはなくても、VMのハードウェアリソースにハードウェア要求を発行することができ、実際にそうしている。理解できるように、上記ハードウェア要求は遮断されるか、またはホストにリダイレクトされ、上記ホストがそのハードウェアリソースに基づいて上記ハードウェア要求を処理する。このことを、要求したVMおよび/またはその利用アプリケーションは、一般に全く認識しない。
一般に、必ずではないが、ホストはそのそれぞれのVMを別々のパーティション、アドレス空間、処理領域、などに展開する。上記ホストは、仮想マシンモニター(「VMM」)などを有する仮想化層を含むことができる。VMMは監視アプリケーションまたは「ハイパーバイザ」として動作し、仮想化層はホストのそれぞれのVMの監視態様を監督および/または管理する。さらにVMMは、それぞれのVMと外部との間を接続しうるものとして動作する。VMMは、自分のアドレス空間で実行される独立したアプリケーションとすることができ、または、直接的に、もしくはデバイスドライバなどのある種のオペレーティングシステム拡張として、VMをホストオペレーティングシステムと、より密接に統合することができる。特にホストのVMMは、ホストのそれぞれのVMおよび/またはその利用アプリケーションからのハードウェア要求を遮断またはリダイレクトすることができ、少なくともその要求処理を支援することができるが、先と同様にこのことを、要求したVMおよび/またはその利用アプリケーションは全く認識しない。
多くのコンピューティングシステムは複数のプロセッサーを含む。マルチプロセッサーの仮想マシン環境内のプロセッサーは、ゲストモードまたはVMMモードで動作することができる。ゲストモードで実行されるとき、プロセッサーは仮想マシンの定義を使用して、仮想マシンのゲストオペレーティングシステムとアプリケーションとを管理し、VMMからの干渉を受けずに引数を変換し、システムリソースを管理する。時々、ゲストオペレーティングシステムまたはアプリケーションが、VMMによる管理が必須のシステムリソースを必要とする場合がある。例えば、VMMがエラー処理、システム障害、または割り込み処理を要求される可能性がある。これらの状況では、プロセッサーはVMMモードで動作する。
近代の処理システムでは割り込みがサポートされ、それによりプロセッサーに外部のイベントを通知することができる。例えば、ユーザーがキーボードのキーを押下し、またはネットワークパケットが電線から到着すると、対応する割り込みが生成されてプロセッサーに送信される。一般に、割り込みによりプロセッサーは現在実行中のものを停止し、現在の実行位置を記録する。それによりプロセッサーは割り込み処理後に実行を再開し、特定の割り込みサービスルーチンを実行することができる。
コンピューティングシステムは、システム内での割り込みの流れを指示および調停する1つまたは複数の割り込みコントローラーを含むことができる。割り込みコントローラーのロジックを別々のハードウェアコンポーネントに具現化すること、プロセッサーに統合すること、または仮想化することができる。割り込みコントローラーは、特に、マルチプロセッサー環境において割り込み優先度を決定し、割り込みを適切なプロセッサーへ送信する責任を有する。仮想環境では、プロセッサーおよび割り込みコントローラーを仮想化することができる。これは一般に、仮想マシンモニターのようなソフトウェアと、ハードウェアが提供する仮想化支援機構(virtualization assist)との組合せにより実現される。
一般に、割り込みを処理した後、割り込み終了(EOI)命令を介して割り込みコントローラーに通知する。EOI命令は、前の割り込みの処理中に送信が保留された可能性がある他の割り込みを、この時点で送信できることを割り込みコントローラーに伝える。EOI命令は、一般にレジスタからの読み取りまたはレジスタへの書き込みなど、I/OポートまたはメモリーマップドI/Oアクセスを通して割り込みコントローラーに送信される。物理割り込みコントローラーに関しては、EOI命令の処理により何十何百ものサイクルが消費される可能性がある。仮想割り込みコントローラーに関しては、EOI命令の処理により何千ものサイクルが消費される可能性がある。
仮想マシンモニターの中には、割り込みをパーティション間メッセージングの基礎として使用するものがある。1つのパーティション内で実行されるソフトウェアが同一物理マシン上の第2のパーティション内で実行されるソフトウェアと通信する必要がある場合、パーティション間メッセージングを用いて行うことができる。或るプロセッサーがメッセージを送信すると、仮想マシンモニターはメッセージの受信者であるプロセッサーに割り込みを送信し、受信プロセッサーの割り込みサービスルーチンにメッセージを処理させ、その内容に応答させることができる。
本概要は、以下の発明の詳細な説明でさらに説明されている選択した概念を簡略化した形式で紹介するために提供するものである。本概要は、請求項に記載されている主題事項の重要な特徴または本質的な特徴を特定することを目的とするものでも、請求項に記載されている主題事項の範囲を決定に際して、補助として使用することを目的とするものでもない。
本明細書では、マルチプロセッサーの仮想環境において割り込みを効率的に処理する機構を説明する。いくつかの実施形態では、ゲストオペレーティングシステムは或る割り込み源を「自動割込み終了」(自動EOI)としてプログラムすることができる。自動EOIを処理する際、仮想割り込みコントローラーは明示的な割り込み終了(EOI)命令を待たずに、送信された割り込みに対応する割り込みサービスレジスタ内のビットをクリアする。自動EOI割り込みにより、他の割り込みの送信をブロックすることはできない。
割り込みを使用してパーティション間通信を実施することができる。ゲストオペレーティングシステムがパーティション間メッセージに関連する割り込みを受信すると、ゲストオペレーティングシステムの割り込みサービスルーチンが指定のメッセージスロットからメッセージを読み取り、そのメッセージタイプとペイロードとに基づいて動作を実行する。以下で詳述するように、ゲストオペレーティングシステムは、別のメッセージが同一メッセージスロットに対する待ち行列内にある場合に限り、明示的なメッセージ終了(「EOM」)命令をメッセージ処理完了時に送信することで、パーティション間メッセージの処理により被るオーバヘッドを幾らか排除することができる。EOM命令の計算コストは、大まかにEOIの計算コストと等しいが、EOMが送信されるのは、追加のメッセージが待ち行列内にあるという稀なケースに限られる。これにより、パーティション間通信に対する割り込み処理の平均的なコストを大幅に削減することができる。
割り込みは様々な優先度を有することができる。一般に、高優先度の割り込みは低優先度の割り込み処理に割り込むことができるが、逆は不可能である。仮想環境では、サービス中の最高優先度の割り込みではない割り込みに対して、ゲストオペレーティングシステムがEOI命令を発行することが可能である。本明細書では、仮想割り込みコントローラーが、着信中のEOI命令がサービス中の最高優先度の割り込みに対応するかどうかをチェックする機構を説明する。着信中のEOI命令がサービス中の最高優先度の割り込みに対応しない場合、仮想割り込みコントローラーは、着信中のEOI命令に対する割り込みベクトルを、後にEOIの発行が必要な割り込みの集合に加える。着信中のEOI命令がサービス中の最高優先度の割り込みに対応する場合、仮想割り込みコントローラーは対応する割り込みに対するEOI命令を処理するだけでなく、後にEOIを発行するために前もってマークした全ての他の割り込みに対するEOI命令も処理する。
コンピューターシステムにおける仮想動作環境に対するハードウェアおよびソフトウェアアーキテクチャの論理階層を表すブロック図である。 仮想化がホストオペレーティングシステムにより(直接またはハイパーバイザを介して)行われる仮想コンピューティングシステムを表すブロック図である。 ホストオペレーティングシステムと並行して実行される仮想マシンモニターにより仮想化が行われる、代替的な仮想コンピューティングシステムを表すブロック図である。 ホストオペレーティングシステムとは独立に動作するバーチャライザーにより仮想化が行われる、別の代替的な仮想コンピューティングシステムを表すブロック図である。 割り込みコントローラーを有するコンピューティングシステムの一部を示すブロック図である。 割り込み要求の処理方法を示すフローチャートである。 割り込み優先度の例に対するタイムラインを示す図である。 本明細書の教示に従って自動EOIを用いた割り込み要求の処理方法を示すフローチャートである。 本明細書の教示に従ってプロセッサー間メッセージの処理方法を示すフローチャートである。
或る特定の詳細を、以下の記述および図面で説明して、本発明の様々な実施形態の徹底的な理解を与える。コンピューティング技術およびソフトウェア技術に関連することの多い或る公知な詳細は、様々な実施形態を不必要に不明瞭とすることを回避するため、以下の開示では説明していない。さらに、当業者は、後述する1つまたは複数の詳細がなくとも他の実施形態を実践できることを理解するであろう。最後に、以下の開示におけるステップおよび順序を参照して様々な方法を説明するが、そのような説明は本発明の実施形態を明確に実施するためであり、そのステップおよびステップの順序が本発明を実践するための要件であると捉えるべきではない。
本明細書で説明されている様々な技術を、ハードウェアもしくはソフトウェア、または必要に応じてその両方の組み合わせと関連させて実施できることは理解されるべきである。従って、方法および装置、またはその或る態様もしくは一部は、有形媒体で具現化したプログラムコード(例えば、命令)の形態を取ることができ、当該有形媒体には、フロッピー(登録商標)ディスク、CD−ROM、ハードドライブ、または任意の他の機械読取可能記憶媒体などがある。プログラムコードをコンピューターなどのマシンにロードして実行すると、そのマシンは本発明を実践する装置となる。プログラム可能なコンピューター上でプログラムコードを実行する場合、コンピューターデバイスは、一般にプロセッサー、プロセッサーにより読み取り可能な記憶媒体(揮発性および不揮発性のメモリーおよび/または記憶要素を含む)を含み、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。1つまたは複数のプログラムは、例えばAPI、再利用可能コントロールなどを使用して、本発明に関して説明されているプロセスを実施または利用することができる。コンピューターシステムと通信するには、上記プログラムを、高レベルの手続き型言語またはオブジェクト指向プログラミング言語で実施することが望ましい。ただし、必要に応じてプログラムをアセンブリ言語または機械語で実施することができる。いずれにせよ、言語はコンパイル言語またはインタープリタ型言語に変換される言語であってもよく、ハードウェア装置と組み合わされてもよい。
例示的な実施形態は、1つまたは複数のスタンドアロンコンピューターシステムが存在する状況での本発明の態様の利用に関することができるが、本発明はそのようには限定されず、ネットワークまたは分散コンピューティング環境などの任意のコンピューティング環境と関連して実施することができる。さらに、本発明の態様を複数の処理チップまたは装置内で、またはそれらに渡って実施することができ、同様に複数の装置に渡って記憶装置に影響を及ぼすことができる。上記装置には、パーソナルコンピューター、ネットワークサーバー、ハンドヘルド装置、スーパーコンピューター、または自動車および航空機などの他のシステムに統合されるコンピューターを含めることができる。
概要
仮想マシン環境内で割り込みを効率的に処理する様々な方法およびシステムを説明する。割り込みは、現代のコンピューティングシステムにおいて、一例として、プロセッサーに外部イベントを通知すること、マルチプロセッサーシステムのプロセッサー間通信を促進することを含む、様々な目的で使用されている。一般に、割り込みは、通常の処理に割り込んで、一時的に制御フローを割り込みサービスルーチン(「ISR」)に回す。コンピューティングシステムの様々な活動が割り込みを引き起こす可能性がある。いくつかの例として、キーボードのキーの押下、ネットワークパケットの受信、およびディスクの読み書きがある。プロセッサー間割り込み(「IPI」)は一種の割り込みであり、それによりマルチプロセッサー環境において或るプロセッサーは別のプロセッサーに割り込むことができる。IPIをプロセッサー間メッセージングの基礎として使用することができる。
コンピューティングシステムは、一般にシステム内の割り込みの流れを指示および調停する1つまたは複数の割り込みコントローラーを含む。割り込みコントローラーは着信した割り込みの優先付け、それらの割り込みをマルチプロセッサー内の適切なプロセッサーに割り当てる責任を有する。割り込みコントローラーをハードウェアで実現することができ、従って割り込みコントローラーは別々のコンポーネントとすることができ、またはプロセッサーに統合することができる。割り込みコントローラーを仮想化してもよい。割り込みコントローラーの仮想化は、一般にソフトウェアと、ハードウェアが与える仮想化支援機構とを組み合わせて実現される。ソフトウェアは、物理割り込みコントローラーと同一の基本機能を行う仮想マシンモニターの一部であってもよい。
一般に、それぞれの割り込み源は、指定の割り込み優先度を有する。一実施例として、これらの優先度に0から255の番号を付与することができる。255は最高優先度であり、0は最低優先度である。高優先度の割り込みは、低優先度の割り込みを処理する割り込みサービスルーチンに割り込むことができるが、低優先度の割り込みは高優先度の割り込みに割り込むことはできない。割り込みサービスルーチンが実行を完了すると、それを実行していたプロセッサーは一般にEOI命令を発行して、割り込みコントローラーに割り込みの処理が完了したこと、および保留された低優先度の割り込みをこの時点で送信できることを知らせる。
仮想割り込みコントローラーでは、EOI命令は、物理割り込みコントローラーがEOI命令に応答して行うものと同一の動作を行うソフトウェアで実施される。これには一般に、EOIポートまたはレジスタへのアクセスを遮断してソフトウェアハンドラを呼び出すことが含まれる。遮断およびソフトウェアハンドラを組み合わせると、一般にEOI命令の処理に何千何万ものサイクルが必要となり、仮想環境における割り込みサービスルーチンの動作に大量のオーバヘッドが加わる。
本明細書で説明する方法およびシステムにより、割り込みを効率的に処理する機構が実現される。多くの場合において、EOI命令を省略し、割り込み送信に関する仮想化オーバヘッドを大幅に削減することができる。プロセッサー間メッセージングに用いるIPIの場合、丁度処理したメッセージを含むスロットに対して第2のメッセージが既に待ち行列内にあるときに限り、メッセージEOIの終了を送信する必要がある。いくつかの場合、物理割り込みに対して選択的にEOIを送信することができるが、これはその物理割り込みがサービス中の最高優先度の割り込みであるかどうかに無関係である。
一般的な仮想化
オペレーティングシステムおよびプロセッサーの命令セットにおける多様性のため、ソフトウェアの相互運用性が低下する可能性がある。高レベル言語およびオペレーティングシステム双方におけるメモリーおよびI/O抽象化により、ハードウェアリソースへの依存性を幾分削減することができるが、幾分かの依存性は残ることになる。多くのオペレーティングシステムが特定のシステムアーキテクチャに対して開発され、ハードウェアリソースを直接管理するように設計されている。これにより、利用可能なソフトウェアおよびオペレーティングシステムに関してコンピューターシステムの柔軟性が限定される可能性があり、特にシステムが複数ユーザーにより共有されるとき、セキュリティおよび障害隔離に悪影響を及ぼす可能性がある。
仮想化により、セキュリティおよび信頼性を高めつつ柔軟性を向上させる機構が実現される。プロセッサー、メモリー、およびI/O装置は、仮想化できるサブシステムの例である。サブシステムを仮想化すると、仮想インターフェースと、その仮想インターフェースを通して利用可能な仮想リソースとが、仮想化を実施した実システムのインターフェースとリソースとにマッピングされる。仮想化を、サブシステムだけでなくマシン全体に適用することができる。仮想マシンのアーキテクチャは、実マシン上のソフトウェア層で実施される。
概念的観点からは、コンピューターシステムは、一般に基本的なハードウェア層で実行される1つまたは複数のソフトウェア層を含む。この階層化は抽象化のために行われている。所与のソフトウェア層に対してインターフェースを定義することで、その層をそれより上の他の層と別々に実施することができる。良く設計されたコンピューターシステムでは、それぞれの層は直下の層に関してのみ知っている(および、直下の層にのみ依存する)。これにより層または「スタック」(複数の隣接層)を、上記層またはスタックより上の層に悪影響を及ぼすことなく置換することができる。例えば、ソフトウェアアプリケーション(上層)は、一般に低レベルのオペレーティングシステム(低層)に依存して何らかの形の永久記憶装置にファイルを書き込むが、これらのアプリケーションはフロッピー(登録商標)ディスク、ハードドライブ、またはネットワークフォルダへデータを書き込むことの違いを理解する必要はない。この低層を、ファイル書き込み用の新しいオペレーティングシステムのコンポーネントで置換しても、上層のソフトウェアアプリケーションの動作は、影響を受けないままである。
階層化したソフトウェアの柔軟性により、VM(virtual machine)は、実際は別のソフトウェア層にある仮想ハードウェア層を表現することができる。このように、VMはそれより上のソフトウェア層に対して、自分がプライベートなコンピューターシステム上で実行されているかのように錯覚させることができ、従って、VMにより複数の「ゲストシステム」を単一の「ホストシステム」上で並列に実行することができる。
図1は、コンピューターシステム内の仮想環境に対するハードウェアおよびソフトウェアアーキテクチャの論理階層を表す図である。図1で、仮想化プログラム110は、物理ハードウェアアーキテクチャ112上で直接的または間接的に実行される。仮想化プログラム110は、(a)ホストオペレーティングシステムと並行に実行される仮想マシンモニターとすることもでき、または(b)ハイパーバイザコンポーネントを有するホストオペレーティングシステムとすることができる。この場合、ハイパーバイザコンポーネントが仮想化を行う。仮想マシンモニターという用語は、様々な種類の仮想化プログラムのうち何れかに対する一般的な用語として用いる。仮想化プログラム110は、(このコンポーネントがパーティションまたは「仮想マシン」である事実を表すため点線で示してある)ゲストハードウェアアーキテクチャ108を仮想化する。即ち、ハードウェアは実際には存在しないが、その代わりに仮想化プログラム110により仮想化される。ゲストオペレーティングシステム106を、ゲストハードウェアアーキテクチャ108上で実行し、ソフトウェアアプリケーション104を、ゲストオペレーティングシステム106上で実行することができる。図1の仮想化した動作環境では、ソフトウェアアプリケーション104が、ホストオペレーティングシステムおよびハードウェアアーキテクチャ112と一般に非互換であるオペレーティングシステム上で実行するように設計されていても、ソフトウェアアプリケーション104をコンピューターシステム102内で実行することができる。
次に、図2は、物理コンピューターハードウェア202の直上で実行されるホストオペレーティングシステム(ホストOS)のソフトウェア層204を含む仮想コンピューティングシステムを示す。ここで、ホストOS 204は、オペレーティングシステムA 212およびオペレーティングシステムB 214によりそれぞれ使用されるパーティションA 208およびパーティションB 210にインターフェースを公開することで、物理コンピューターハードウェア202のリソースへのアクセスを提供する。これによりホストOS 204は、その上で実行されるオペレーティングシステム層212および214に注目されずに済む。繰り返しになるが、仮想化を行うため、ホストOS 204はネイティブな仮想化機能を持つ特殊設計のオペレーティングシステムとすることができ、あるいは仮想化を行うための組み込みのハイパーバイザコンポーネントを持つ標準的なオペレーティングシステムとすることができる(図示せず)。
再度図2を参照する。ホストOS 204の上には、2つのパーティション、パーティションA 208およびパーティションB 210がある。パーティションA 208は、例えば仮想のインテル386プロセッサーとすることができ、パーティションB 210は、例えばモトローラ680X0系プロセッサーの1つを仮想化したものとすることができる。それぞれのパーティション208およびパーティション210内には、それぞれゲストオペレーティングシステム(ゲストOS)A 212およびゲストOS B 214がある。ゲストOS A 212上では2つのアプリケーション、アプリケーションA1 216およびアプリケーションA2 218が実行され、ゲストOS B 214上ではアプリケーションB1 220が実行されている。
図2に関して、(点線で示す)パーティションA 208とパーティションB 214とは、ソフトウェア構造としてのみ存在する仮想コンピューターハードウェア表現であることに留意することが重要である。これらは、特殊な仮想化ソフトウェアを実行することで可能となるものである。当該ソフトウェアは、パーティションA 208およびパーティションB 210をそれぞれゲストOS A 212およびゲストOS B 214に提示するだけでなく、ゲストOS A 212およびゲストOS B 214が実物理コンピューターハードウェア202と間接的に相互作用するために必要な、全てのソフトウェアステップも実行する。物理コンピューターハードウェア202は、単一プロセッサー環境の場合は単一のCPU(central processing unit)222を、マルチプロセッサー環境の場合は複数のCPU222、224、226を含むことができる。
図3は、ホストオペレーティングシステム306と並行に実行される仮想マシンマネージャ304により仮想化が行われる、代替的な仮想コンピューティングシステムを示す。或る場合、仮想マシンマネージャ304は、ホストオペレーティングシステム306上で実行され、ホストオペレーティングシステム306を通してのみコンピューターハードウェア302と相互作用するアプリケーションとすることができる。図3に示すような他の場合、仮想マシンマネージャ304は、代わりに部分的に独立したソフトウェアシステムを含むことができる。当該ソフトウェアシステムは、いくつかのレベルではホストオペレーティングシステム306を介してコンピューターハードウェア302と間接的に相互作用するが、他のレベルでは、仮想マシンマネージャ304は(ホストオペレーティングシステムがコンピューターハードウェアと直接相互作用するのと同様に)コンピューターハードウェア302と直接相互作用する。さらに他の場合、仮想マシンマネージャ304は、完全に独立したソフトウェアシステムを含むことができる。当該ソフトウェアシステムは、ホストオペレーティングシステム306を利用せずに、(ホストオペレーティングシステムがコンピューターハードウェアと直接相互作用するのと同様に)全てのレベルでコンピューターハードウェア302と直接相互作用する(しかしながら、コンピューターハードウェア302の使用を調整し、衝突を回避するなどのため、ホストオペレーティングシステム306とも相互作用する)。
図3に示す実施例では、2つのパーティション、パーティションA 308およびパーティションB 310は、概念的に仮想マシンマネージャ304の上にある。それぞれのパーティション308およびパーティション310内には、それぞれゲストオペレーティングシステム(ゲストOS)A 312およびゲストOS B 314がある。ゲストOS A 312上では2つのアプリケーション、アプリケーションA1 316およびアプリケーションA2 318が実行され、ゲストOS B 314上ではアプリケーションB1 320が実行されている。物理コンピューターハードウェア302は、単一プロセッサー環境の場合は単一のCPU(central processing unit)322を、マルチプロセッサー環境の場合は複数のCPU322、324、326を含むことができる。
図4は、ハイパーバイザ404により仮想化が行われる別の代替的な仮想コンピューティングシステムを示す。ハイパーバイザ404は、ホストオペレーティングシステムを用いずにコンピューターハードウェア402と直接相互作用できる独立したソフトウェアシステムを含む。物理コンピューターハードウェア402は、単一プロセッサー環境の場合は単一のCPU(central processing unit)422を、マルチプロセッサー環境の場合は複数のCPU422、424、426を含むことができる。
図4に示す実施例では、2つのパーティション、パーティションA 408およびパーティションB 410は、概念的に仮想マシンマネージャ404の上にある。それぞれのパーティション408およびパーティション410内には、それぞれゲストオペレーティングシステム(ゲストOS)A 412およびゲストOS B 414がある。ゲストOS A 412上では2つのアプリケーション、アプリケーションA1 416およびアプリケーションA2 418が実行され、ゲストOS B 414上ではアプリケーションB1 420が実行されている。ゲストOS A 412はホストOSのサービスを提供する。物理コンピューターハードウェア402は、単一プロセッサー環境の場合は単一のCPU(central processing unit)422を、マルチプロセッサー環境の場合は複数のCPU422、424、426を含むことができる。
上述のパーティションを実施するこれらの変形の全ては例示的な実施例に過ぎず、本開示の発明を特定の仮想化の態様に限定するものと解釈すべきではない。
一般的な割り込み処理
図5は、割り込みコントローラーを有するマルチプロセッサーコンピューティングシステムの一部分の実施例を示すブロック図である。任意の数の装置502、504、506、508が、割り込み要求源の役割を果たすことができる。装置502、504、506、508は、例えばキーボード、ディスクドライブ、ネットワークカードなどの物理装置とすることができ、または仮想装置とすることができる。割り込み要求を、プロセッサー510、512、514の何れかにより生成してもよい。
割り込みコントローラー516は、割り込み要求の処理を調停および指示する。割り込みコントローラー516は、プログラム可能な割り込みコントローラー(「PIC」)または高度なプログラム可能な割り込みコントローラー(「APIC」)などの物理装置とすることができる。あるいは、割り込みコントローラー516を仮想化してもよく、この場合、その機能はVMM内のソフトウェアハンドラなどのソフトウェアにより実行される。
大部分の割り込みコントローラーは、要求されたサービス中の割り込み要求を追跡する。これは2つのビットベクトルを用いてしばしば行われ、それぞれのビットは個々の割り込み源を表す。第1のビットベクトルは割り込み要求レジスタ518と呼ばれ、第2のビットベクトルは割り込みサービスレジスタ520と呼ばれる。割り込みコントローラー516が割り込みの要求を受信すると、割り込み要求レジスタ518内の対応ビットをセットする。割り込みコントローラー516が割り込みをプロセッサー510、512、または514に送信すると、割り込みコントローラー516は割り込み要求レジスタ518内の対応ビットをクリアして、割り込みサービスレジスタ520内の対応ビットをセットする。割り込みコントローラー516がEOIを受信すると、割り込みコントローラー516は、対応する割り込みがもはや行われていないことを知り、従って割り込みサービスレジスタ520内の対応ビットをクリアする。この時点で、割り込みコントローラー516は割り込み要求レジスタ518をスキャンして、まだサービスされていない、要求された最高優先度の割り込みを決定する。上記割り込みの優先度がサービス中の最高優先度の割り込みより高い場合、割り込みコントローラーはサービス中の低優先度の割り込みの割り込みサービスルーチンに割り込む。
従来の割り込み要求のライフサイクルを図6に示す。装置またはソフトウェアは割り込み要求(「IRQ」)をアサートすることで処理を開始する(602)。割り込み要求を多様な情報源により生成することができる。限定するためではなく例として、情報源にはキーボード、マウス、音源カード、モデム、通信ポート、時間測定装置、およびソフトウェア命令を含めることができる。「レベルトリガ」割り込みでは、割り込みを知らせたい装置は、割り込み要求の電圧を「アクティブ」と定義される規定のレベルまで上げ、割り込みが処理されるまでそのレベルに保つ。「エッジトリガ」割り込みでは、割り込み要求は割り込み要求ラインのレベル遷移により送信され、割り込みを送信したい装置は割り込み要求ラインにパルスを駆動して、その後ラインを休止状態に戻す。
割り込みコントローラーがIRQを検出すると(604)、割り込みコントローラーは、IRQが現在サービス中のどの割り込みよりも高い優先度を持つかどうかを判定する(606)。この判定は、割り込みサービスレジスタ520(図5)を検証することで可能である。IRQの検出時により優先度が高い割り込みがサービス中である場合、割り込みコントローラーは割り込み要求レジスタ内の対応ビットのフラグを立て、保留されたIRQを記録する(608)。要求された割り込みがサービス中のどの割り込みよりも高い優先度を有する場合、割り込みコントローラーは割り込みサービスレジスタ内の対応ビットのフラグを立て(610)、対応する割り込みサービスルーチンを実行するよう適切なプロセッサーに知らせる(612)。割り込みサービスルーチンの実行完了後(614)、プロセッサーは、一般にI/Oポートまたはメモリーマップドレジスタを読み書きすることで、割り込みが処理されたことを割り込み装置に示すことができる(616)。プロセッサーは、割り込みコントローラーにEOI命令を送信することで、割り込みが処理されたことを知らせる(618)。当該EOI命令は、一般にレジスタ読み書きなどの、I/OポートまたはメモリーマップドI/Oアクセスを通して送信される。割り込みコントローラーはEOI命令を処理し、割り込みサービスレジスタ内の対応するフラグをクリアする(620)。EOI命令は、割り込みコントローラーに、保留された低優先度の割り込みがこの時点で送信できることを伝える。例えば、高優先度のキーボード割り込みが処理されている間にネットワークパケットが到着して割り込みを引き起こす場合に、割り込みコントローラーにより高優先度のキーボード割り込みが完全に処理されるまで、ネットワークパケットの割り込み要求を保留しておくことができる。EOI命令の処理には、物理割り込みコントローラーに対して何十または何百ものサイクルを要し、仮想割り込みコントローラーに対しては何千ものサイクルを要する可能性がある。
図7は、割り込み優先度の一般的な概念を示す例であり、限定を意図するものではない。時刻t1に優先度10の割り込み源が、割り込みを要求すると仮定する(702)。割り込みコントローラーはプロセッサーに割り込み、当該プロセッサーがその割り込み源に関連する割り込みサービスルーチンを呼び出す(704)。ここで、優先度10の割り込みに対するISRが処理を完了する前の時刻t2に、優先度200の割り込み源が、同一プロセッサー宛ての割り込みを要求すると仮定する(706)。割り込みコントローラーは再度プロセッサーに割り込み、優先度200の割り込みに対するISR708の実行を開始し、優先度10の割り込みに対するISRを一時停止する(710)。優先度200のISR708が完了する前の時刻t3に、第3の割り込み源が、優先度50で割り込みを要求すると仮定する(712)。割り込みコントローラーは、プロセッサーが優先度200のISRの実行を時刻t4で完了するまで、この割り込みの送信を保留する(714)。優先度50のISRは、優先度200のISR708が完了した後に呼び出される(716)。優先度50のISR716が完了すると、時刻t5で優先度10のISRを再開し(718)、時刻t6で完了する。
仮想割り込みコントローラー
仮想環境では、プロセッサーおよび割り込みコントローラーを仮想化することができる。これは、ソフトウェア(例えば、VMM)とハードウェアが提供する仮想化支援機構との組合せにより行われる。一般的な構成では、EOI命令はVMMによりエミュレートされる。これは、EOIポートまたはレジスタへのアクセスを遮断することで行われる。この遮断によりVMM内で、EOIに応答して物理割り込みコントローラーと同一の機能を実行するソフトウェアハンドラが呼び出される。遮断およびソフトウェアハンドラの組合せにより、何千何万ものサイクルが必要とされる可能性がある。これにより、仮想環境内での実行時にISRに対して大量のオーバヘッドが加わる。
一般にVMMは割り込みを受け入れ、仮想割り込みとしてゲストオペレーティングシステムにリダイレクトする。割り込みを様々な情報源から生成することができ、当該情報源には限定するためではなく例として、物理ハードウェア装置、ハードウェア装置をエミュレートするパーティション、メッセージを送りたい、またはイベントを別のパーティションに送信したいパーティション、またはパーティションに信号を送りたいVMMが含まれる。VMMは、一般に割り込みを受け入れた後に、EOI命令を物理割り込みコントローラーに発行する。レベルトリガ割り込みに対して、ゲストオペレーティングシステム内のISRがEOI命令を仮想割り込みコントローラーに対して実行および発行するまで、EOI命令を発行するのは、一般に安全ではない。APICのような或る物理割り込みコントローラーは、サービス中の最高優先度の割り込みに対してのみEOIを発行することを可能とする。しかしながら或る状況では、VMMは、サービス中の最高優先度の割り込みではない割り込みに、選択的にEOIを発行する必要がある場合がある。例として、最初の割り込みの優先度が低い2つのレベルトリガ割り込みが次々と到着する際に生ずることを考える。VMMは第1の割り込みを受入れ、ゲストオペレーティングシステムにリダイレクトする。ゲスト内のISRがEOI命令を発行する前に、第2の割り込みが到着する。その後、ゲストオペレーティングシステムが、第1の割り込みにEOI命令を発行する。この場合、VMMは第1の割り込みにEOIを発行することはできない。なぜならば、最高優先度の割り込みが既にサービス中であり、EOI命令を物理割り込みコントローラーに発行すると、その最高優先度の割り込みにEOIを発行することになるからである。
本明細書の開示によると、ゲストオペレーティングシステムはいくつかの割り込み源を「自動EOI」としてプログラムすることができる。割り込み源を自動EOIとマークすると、従来の割り込み優先度の振る舞いが修正される。自動EOI割り込みにより、他の割り込みの送信はブロックされない。従って、他の自動EOI割り込みを含む任意の他の割り込みがその関連するISRの実行に割り込み可能という点で、実質的に自動EOI割り込みは、最低優先度の割り込みと同様に振舞う。
自動EOI割り込みが送信されると、割り込みサービスレジスタ内の自動EOI割り込みに関連するビットは、即座にクリアされる。効果的に、自動EOI割り込みが送信された時点で、仮想割り込みコントローラーがEOIを自動生成する。自動EOI割り込みを用いて、割り込み源が自身を管理し、前の割り込みが処理されたことを知るまで後続の割り込みを要求しないことが望ましい。そうでなければ、それぞれの後続の割り込みが前のISRに割り込み、プロセッサーのスタックをオーバーフローさせる可能性がある。
一実施形態では、自動EOIのプロパティを、SINT(synthetic interrupt source)に関連する仮想レジスタ内で指定する。仮想レジスタのフォーマットは以下の通りである。
Figure 0004882005
仮想プロセッサーの生成時に、全てのSINTレジスタのデフォルト値は、0x0000000000010000である。このように、全てのSINTはデフォルトでマスクされる。ゲストは、適切なベクトルでプログラミングし第16ビットをクリアすることでそれらのマスクを取らなければならない。
自動EOIフラグは、割り込みを仮想プロセッサーに送信するとき暗黙的なEOI発行をVMMが行わなければならないことを示す。さらに、VMMは、仮想割り込みコントローラー内のサービス中のレジスタにある対応フラグを自動的にクリアする。ゲストがこの振る舞いを可能とする場合、ゲストはその割り込みサービスルーチン内で明示的なEOI発行を行ってはならない。
図8は、本明細書の開示に従う自動EOI割り込み要求のライフサイクルを示す。装置またはソフトウェアは、IRQをアサートすることで処理を開始する(802)。割り込みコントローラーは、IRQを検出すると(804)、IRQが、現在サービス中とマークされているどの割り込みよりも高い優先度を持つかどうかを判定する(806)。この判定は、割り込みサービスレジスタ520(図5)を検証することで可能である。IRQの検出時に高優先度の割り込みがサービス中とマークされている場合、割り込みコントローラーは割り込み要求レジスタ内の対応ビットのフラグを立て、その保留中の要求を記録する(808)。要求された割り込みがサービス中とマークされたどの割り込みよりも高い優先度を有する場合、割り込みコントローラーは適切なプロセッサーに、対応する割り込みサービスルーチンを実行するよう伝え(810)、割り込みサービスレジスタ内の対応ビットをクリアする(812)。プロセッサーが割り込みサービスルーチンの実行を完了した後(814)、一般にI/Oポートまたはメモリーマップドレジスタを読み書きすることで、プロセッサーは割り込み装置に割り込みが処理されたことを伝えることができる(816)。
従って、自動EOI割り込み要求により、プロセッサーが明示的なEOI命令を発行する必要はない。割り込みをプロセッサーに送信したとき割り込みサービスレジスタ内の対応ビットはクリアされているので(812)、自動EOI割り込みにより他の割り込みの送信がブロックされることはない。割り込みの送信時にその割り込みに対して効率的にEOIが発行されるので、EOI命令の処理に通常必要な計算サイクルは使用されない。
仮想割り込みコントローラーを使用することで、物理割り込みコントローラーがそのような機能をサポートしないときに、VMMは物理割り込みに対して選択的にEOIを発行することができる。これは、保留EOIのリスト、即ち、後にEOIを発行する必要がある割り込みを保持することで実現することができる。例えば、ゲストオペレーティングシステムがEOI命令を発行すると、VMMは、EOIが発行されている割り込みが本当に物理割り込みコントローラー内でサービス中の最高優先度の割り込みであるかどうかをチェックすることができる。最高優先度の割り込みでない場合、VMMは、単に割り込みを保留EOIのリストに追加する。他方、EOIを発行されている割り込みがサービス中の最高優先度の割り込みである場合、VMMは現在の割り込みにEOIを発行するだけでなく、保留EOIのリストにある他の割り込みにもEOIを発行する。
パーティション間メッセージング
VMMの中には、割り込みをパーティション間メッセージングの基礎として用いるものもある。パーティションはVMMが置いた分離境界であり、仮想マシンに対する「コンテナ」である。或るパーティション内で実行されるソフトウェアが同一マシン上の第2のパーティション内で実行されているソフトウェアと通信する必要がある場合、パーティション間メッセージを用いて通信を行うことができる。これらのメッセージは、一般に少量のペイロードを含む。例えば、或る公知のハイパーバイザの場合、メッセージは、最大240バイトのメッセージペイロード、および16バイトのヘッダを含むことができる。メッセージが送信されると、宛先パーティションに関連する仮想プロセッサーが実行可能となるまで、そのメッセージはハイパーバイザにより待ち行列に入れられる。その時点で、ハイパーバイザは割り込みをその仮想プロセッサーに送信することができる。これにより、対応するISRが呼び出される。ISRはメッセージの読み取り、およびその内容に対処する責任を有する。上述のように、ISRは、一般に割り込みの処理後にその割り込みに対して「EOI発行」しなければならない。この場合、EOIはメッセージの読み取り後に送信される。パーティション間メッセージングは、可能な限り高速でなければならない。従来のEOI機構では、好ましくないオーバヘッドを加え、恐らく何万ものサイクルを使用しないと、メッセージが読み出されたこと、および後続のメッセージならびに低優先度の保留された割り込みが送信可能であることを仮想割り込みコントローラーに通知することができない。
本明細書の開示によると、パーティション間メッセージが処理されたことを伝えるための、従来のEOI機構のオーバヘッドを回避することができる。一実施形態では、メッセージスロットをそれぞれのSINTに与え、メッセージのレイアウトを以下の表1で記述するデータ構造により定義する。
表1
typedef struct
{
UINT8 MessagePending:l;
UINT8 Reserved:7;
} HV_MESSAGE_FLAGS;

typedef struct
{
HV_MESSAGE_TYPE MessageType;
UINT8PayloadSize;
HV_MESSAGE_FLAGS MessageFlags
UINT8Reserved[2];
union
{
HV_PARTITION_ID Sender;
HV_PORT_ID Port;
};
} HV_MESSAGE_HEADER;

#defme HV_MESSAGE_MAX_PAYLOAD_BYTE_COUNT 240
#defme HV_MESSAGE_MAX_PAYLOAD_QWORD_COUNT 30

typedef struct
{
HV_MESSAGE_HEADER Header;
UINT64
Payload[HV_MESSAGE_MAX_PAYLOAD_QWORD_COUNT];
} HV_MESSAGE;
図9は、本明細書の開示に従ってプロセッサー間メッセージを処理する実施形態を示すフローチャートである。送信プロセッサーは、自動EOIと指定した特定のSINTに対応するプロセッサー間メッセージを送る(902)。VMMはメッセージをメッセージ待ち行列に追加し(904)、特定のSINTに対応するメッセージスロットが空かどうかを判定する(906)。前のメッセージがメッセージスロット内にまだ存在する場合、VMMはスロットにあるメッセージのヘッダ内のメッセージ保留ビットをセットする(908)。メッセージスロットが空である場合、VMMはメッセージをメッセージスロットにコピーし(910)、特定のSINTに関連する割り込みを受信プロセッサーに送信する(912)。受信プロセッサー上で実行されているゲストOSがSINTに関連する割り込みを受信すると、そのISRはメッセージを対応するメッセージスロットから読み取り、メッセージタイプおよびペイロードに基づいて動作を行う(914)。メッセージの処理が完了すると、ISRはメッセージタイプをクリアする(916)。例えば、表1に定義したデータ構造によると、ISRは特定の値をHV_MESSAGE_TYPEに書き込むことで、メッセージタイプをクリアすることができる。ISRは次いで、丁度処理したメッセージのメッセージ保留ビットを調べる(918)。メッセージ保留ビットがセットされていない場合、これはメッセージスロットに対する待ち行列にメッセージがないことを意味し、ISRが必要とする動作はない(920)。これが最もよくある場合であろう。特に、ISRがEOI命令を送信する必要はなく、従って大量の計算オーバヘッドが回避される。
メッセージ保留ビットがセットされている場合、ISRは仮想割り込みコントローラーにメッセージ終了(「EOM」)命令を送信し(922)、待ち行列に入れたメッセージの送信を再試行するようVMMに伝える。EOM命令の計算コストは大まかにEOI命令と同じであるが、EOMは、追加のメッセージがメッセージスロットに対する待ち行列に入れられる稀な場合にのみ送信される。従って、プロセッサー間メッセージを処理する平均的なコストは大幅に削減される。
本開示を様々な実施形態に関連して説明し、様々な図面で示したが、本開示から逸脱することなく、同様な態様を使用し、または開示した実施形態の記載された態様に対して修正および追加を行って本開示の同一機能を実行することができることは理解される。例えば、本開示の様々な態様において、仮想環境における割り込み処理の動作効率を向上させる機構を開示した。しかしながら、これら説明した態様と同等な他の機構も、本明細書の教示により考慮されている。従って、本開示はどの態様にも限定されず、添付の特許請求の範囲に従って広範囲に解釈されるべきである。

Claims (20)

  1. 仮想コンピューティングシステムに対する割り込みを処理する方法であって、前記仮想コンピューティングシステムは少なくとも1つのプロセッサー、仮想マシンモニター、およびゲストオペレーティングシステムと仮想割り込みコントローラーとを含む少なくとも1つの仮想マシンを備え、前記方法は
    仮想割り込みコントローラーが、前記仮想マシンモニターから第1の割り込み要求を受信するステップと、
    前記仮想割り込みコントローラーが、前記第1の割り込み要求に対応する割り込みサービスフラグを立て、前記第1の割り込み要求が、ゲストオペレーティングシステムにより自動EOIとしてプログラムされている場合、前記第1の割り込み要求をプロセッサーに送信すると、前記割り込みサービスフラグをクリアするステップと
    を含むことを特徴とする方法。
  2. 前記第1の割り込み要求を受信したプロセッサーが、前記第1の割り込み要求により規定される動作を実行するステップをさらに含み、前記割り込みサービスフラグをクリアするステップは、前記第1の割り込み要求が規定した動作が完全に実行される前に、前記第1の割り込み要求に対応する前記割り込みサービスフラグをクリアするステップを含むことを特徴とする請求項1に記載の方法。
  3. 前記第1の割り込み要求を受信したプロセッサーが、前記第1の割り込み要求が規定した動作を実行するステップと、
    前記第1の割り込み要求が規定した前記動作を実行する間、前記仮想割り込みコントローラーが、他の割り込み要求を受信するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  4. 前記第1の割り込み要求が規定した動作を実行するステップは、前記仮想マシンモニターにより調停されることを特徴とする請求項3に記載の方法。
  5. 前記仮想コンピューティングシステムは、第1のゲストオペレーティングシステムと、第2のゲストオペレーティングシステムとを備え、前記仮想マシンモニターは、前記第1のゲストオペレーティングシステムを含む第1のパーティションと、前記第2のゲストオペレーティングシステムを含む第2のパーティションを定義し、
    前記第1の割り込み要求は、前記第1のパーティションから前記第2のパーティションへの第1のパーティション間メッセージに対する要求に対応することを特徴とする請求項1に記載の方法。
  6. 各ゲストオペレーティングシステムが、仮想プロセッサーと関連する少なくとも1つのメッセージスロットを備え、
    前記第1のパーティション間メッセージの処理が完了する前に第2のパーティション間メッセージが前記第1の割り込み要求の仮想プロセッサーに関連する前記メッセージスロットに対する待ち行列に入れられる場合、前記仮想マシンモニターが、前記第1のパーティション間メッセージに関連するメッセージ保留フラグをセットするステップ
    をさらに含むことを特徴とする請求項5に記載の方法。
  7. 前記パーティション間メッセージに関連するメッセージ保留フラグがセットされる場合、前記パーティション間メッセージを受信する仮想プロセッサーが、パーティション間メッセージの処理が完了した後にメッセージ終了命令を前記仮想割り込みコントローラーに送信するステップをさらに含むことを特徴とする請求項6に記載の方法。
  8. 仮想コンピューティングシステムに対する割り込みを処理する方法であって、前記仮想コンピューティングシステムは仮想マシンモニター、および仮想割り込みコントローラーゲストオペレーティングシステムとを含む少なくとも1つの仮想マシンを備え、前記方法は
    前記仮想マシンモニターが、割り込みを前記ゲストオペレーティングシステムにリダイレクトするステップと、
    前記仮想割り込みコントローラーが、前記リダイレクトされたゲストオペレーティングシステムから割り込み終了命令を受信するステップと、
    前記仮想割り込みコントローラーが、前記割り込み終了命令は、サービス中としてフラグを立てた最高優先度の割り込みに対応しないことを判定するステップと、
    前記仮想割り込みコントローラーが、前記受信した割り込み終了命令に対応する前記割り込みを特定する情報を記録するステップと、
    サービス中としてフラグを立てた最高優先度の割り込みに対する割り込み終了命令を受信した後に、前記仮想割り込みコントローラーが、前記割り込み終了命令を処理するステップと
    を含むことを特徴とする方法。
  9. サービス中の最高優先度の割り込みに対する割り込み終了命令の処理が完了した際に、前記仮想割り込みコントローラーが、前記記録した情報に対応する割り込みに対する割り込み終了命令を処理するステップをさらに含むことを特徴とする請求項8に記載の方法。
  10. 少なくとも1つのプロセッサーと、
    仮想マシンモニターと、
    ゲストオペレーティングシステムおよび仮想割り込みコントローラーを含む仮想マシンと
    を備えたシステムであって、
    前記仮想割り込みコントローラーは、前記仮想マシンモニターから割り込み要求を受信した後に、前記割り込み要求に対応する割り込みサービスフラグを立て、前記第1の割り込み要求が、ゲストオペレーティングシステムにより自動EOIとしてプログラムされている場合、前記第1の割り込み要求をプロセッサーに送信すると、前記割り込みサービスフラグをクリアすることを特徴とするシステム。
  11. 前記仮想割り込みコントローラーは、第1の割り込み要求が規定した動作が完全に実行される前に、前記割り込み要求に対応する割り込みサービスフラグをクリアすることを特徴とする請求項10に記載のシステム。
  12. 前記仮想コンピューティングシステムは、第1のゲストオペレーティングシステムと、第2のゲストオペレーティングシステムとを備え、前記仮想マシンモニターは、前記第1のゲストオペレーティングシステムを含む第1のパーティションと、前記第2のゲストオペレーティングシステムを含む第2のパーティションを定義し、前記第1の割り込み要求は、前記第1のパーティションから前記第2のパーティションへの第1のパーティション間メッセージに対する要求に対応し、
    前記仮想マシンモニターは、記第1のパーティションから前記第2のパーティションへの第1のパーティション間メッセージの処理が完了する前に第2のパーティション間メッセージが待ち行列に入れられる場合、前記第1のパーティション間メッセージにフラグを立て、前記第1のパーティション間メッセージにフラグが立てられている場合に限り、前記パーティション間メッセーを受信するプロセッサーが前記第1のパーティション間メッセージの処理完了時に前記仮想割り込みコントローラーに信号を送ることを特徴とする請求項10に記載のシステム。
  13. 割り込みをゲストオペレーティングシステムにリダイレクトする仮想マシンモニターと、
    ゲストオペレーティングシステムおよび仮想割り込みコントローラーを含む少なくとも1つの仮想マシンと
    を備えたシステムであって、
    前記仮想割り込みコントローラーは、前記リダイレクトされたゲストオペレーティングシステムから割り込み終了命令を受信し、前記割り込み終了命令は、サービス中としてフラグを立てた最高優先度の割り込みに対応しないことを判定し、前記受信した割り込み終了命令に対応する割り込みを特定する情報を記録して、サービス中のより高い優先度の割り込み処理完了後に前記受信した割り込み終了命令を処理可能とすることを特徴とするシステム。
  14. コンピューターに、仮想コンピューティングシステムとして機能させるためのプログラムを備えたコンピューター読み取り可能な記録媒体であって、前記仮想コンピューティングシステムは、少なくとも1つのプロセッサー、仮想マシンモニター、およびゲストオペレーティングシステムと仮想割り込みコントローラーとを含む少なくとも1つの仮想マシンを備え、
    前記仮想割り込みコントローラーは、前記仮想マシンモニターから割り込みサービス要求を受信した後に、前記割り込みサービス要求に対応する割り込みサービスフラグを立て、前記第1の割り込み要求が、ゲストオペレーティングシステムにより自動EOIとしてプログラムされている場合、前記割り込みサービス要求をプロセッサーに送信すると、前記割り込みサービスフラグをクリアするよう動作することを特徴とするコンピューター読み取り可能な記録媒体。
  15. 前記コンピューターに、割り込みサービス要求が規定した動作を実行させるためのプログラムをさらに備え、
    前記仮想割り込みコントローラーは、前記コンピューターが前記割り込みサービス要求が規定した前記動作を実行する間、他の割り込みサービス要求を受信するようさらに動作することを特徴とする請求項14に記載のコンピューター読み取り可能な記録媒体。
  16. 前記仮想マシンモニターは、第1のプロセッサー間メッセージの処理が完了する前に、第2のプロセッサー間メッセージが前記第1のプロセッサー間メッセージを受信するプロセッサーに対する待ち行列に入れられる場合、前記第1のプロセッサー間メッセージに関連するメッセージ保留フラグをセットするよう動作することを特徴とする請求項14に記載のコンピューター読み取り可能な記録媒体。
  17. 第1のプロセッサー間メッセージに関連する前記メッセージ保留フラグを、前記第1のプロセッサー間メッセージのヘッダ内のビットとして具現化したことを特徴とする請求項16に記載のコンピューター読み取り可能な記録媒体。
  18. 前記プロセッサー間メッセージを受信するプロセッサーは、プロセッサー間メッセージに関連するメッセージ保留フラグがセットされている場合、前記プロセッサー間メッセージの処理が完了した後に仮想割り込みコントローラーに信号を送るよう動作することを特徴とする請求項16に記載のコンピューター読み取り可能な記録媒体。
  19. コンピューターに、仮想マシンモニター、およびゲストオペレーティングシステムと仮想割り込みコントローラーとを含む少なくとも1つの仮想マシンを備えた仮想コンピューティングシステムとして機能させるためのプログラムを備えたコンピューター読み取り可能な記録媒体であって、
    前記仮想マシンモニターは、割り込みを前記ゲストオペレーティングシステムにリダイレクトするよう動作し、
    前記仮想割り込みコントローラーは、前記リダイレクトされたゲストオペレーティングシステムから割り込み終了命令を受信し、前記割り込み終了命令を受信したときに処理中である最高優先度の割り込みに前記割り込み終了命令が対応しない場合、後に処理する前記割り込み終了命令を待ち行列に入れるよう動作することを特徴とするコンピューター読み取り可能な記録媒体。
  20. 前記仮想割り込みコントローラーは、待ち行列に入れた割り込み終了命令に対応する割り込みより優先度が高い割り込みに対応する割り込み終了命令の処理後、前記待ち行列に入れた割り込み終了命令を処理するようさらに動作することを特徴とする請求頃19に記載のコンピューター読み取り可能な記録媒体。
JP2009540365A 2006-12-06 2007-11-13 仮想環境における最適化した割り込み送信 Expired - Fee Related JP4882005B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/635,455 2006-12-06
US11/635,455 US7533207B2 (en) 2006-12-06 2006-12-06 Optimized interrupt delivery in a virtualized environment
PCT/US2007/084522 WO2008070410A1 (en) 2006-12-06 2007-11-13 Optimized interrupt delivery in a virtualized environment

Publications (3)

Publication Number Publication Date
JP2010512577A JP2010512577A (ja) 2010-04-22
JP2010512577A5 JP2010512577A5 (ja) 2010-12-02
JP4882005B2 true JP4882005B2 (ja) 2012-02-22

Family

ID=39492588

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009540365A Expired - Fee Related JP4882005B2 (ja) 2006-12-06 2007-11-13 仮想環境における最適化した割り込み送信

Country Status (6)

Country Link
US (1) US7533207B2 (ja)
EP (1) EP2122474B1 (ja)
JP (1) JP4882005B2 (ja)
KR (1) KR101514088B1 (ja)
CN (1) CN101553792B (ja)
WO (1) WO2008070410A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7562173B2 (en) * 2007-03-23 2009-07-14 Intel Corporation Handling shared interrupts in bios under a virtualization technology environment
JP4864817B2 (ja) 2007-06-22 2012-02-01 株式会社日立製作所 仮想化プログラム及び仮想計算機システム
US8612973B2 (en) * 2007-09-26 2013-12-17 Hewlett-Packard Development Company, L.P. Method and system for handling interrupts within computer system during hardware resource migration
US8032680B2 (en) * 2008-06-27 2011-10-04 Microsoft Corporation Lazy handling of end of interrupt messages in a virtualized environment
GB2462258B (en) * 2008-07-28 2012-02-08 Advanced Risc Mach Ltd Interrupt control for virtual processing apparatus
US20100174841A1 (en) * 2008-12-31 2010-07-08 Zohar Bogin Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
KR101242661B1 (ko) * 2009-12-11 2013-03-12 한국전자통신연구원 컴퓨터 시스템에서 인터럽트 컨트롤러의 가상화 장치 및 방법
US8312195B2 (en) * 2010-02-18 2012-11-13 Red Hat, Inc. Managing interrupts using a preferred binding between a device generating interrupts and a CPU
US8806481B2 (en) * 2010-08-31 2014-08-12 Hewlett-Packard Development Company, L.P. Providing temporary exclusive hardware access to virtual machine while performing user authentication
US9043562B2 (en) 2011-04-20 2015-05-26 Microsoft Technology Licensing, Llc Virtual machine trigger
US8972642B2 (en) * 2011-10-04 2015-03-03 Qualcomm Incorporated Low latency two-level interrupt controller interface to multi-threaded processor
US9594703B2 (en) * 2012-03-29 2017-03-14 Intel Corporation Architecture and method for managing interrupts in a virtualized environment
US9229884B2 (en) 2012-04-30 2016-01-05 Freescale Semiconductor, Inc. Virtualized instruction extensions for system partitioning
US9152587B2 (en) * 2012-05-31 2015-10-06 Freescale Semiconductor, Inc. Virtualized interrupt delay mechanism
US9436626B2 (en) * 2012-08-09 2016-09-06 Freescale Semiconductor, Inc. Processor interrupt interface with interrupt partitioning and virtualization enhancements
US9442870B2 (en) * 2012-08-09 2016-09-13 Freescale Semiconductor, Inc. Interrupt priority management using partition-based priority blocking processor registers
US9075789B2 (en) * 2012-12-11 2015-07-07 General Dynamics C4 Systems, Inc. Methods and apparatus for interleaving priorities of a plurality of virtual processors
US9063918B2 (en) 2013-02-15 2015-06-23 International Business Machines Corporation Determining a virtual interrupt source number from a physical interrupt source number
US9836418B2 (en) 2013-03-13 2017-12-05 Dornerworks, Ltd. System and method for deterministic time partitioning of asynchronous tasks in a computing environment
JP6029550B2 (ja) * 2013-07-19 2016-11-24 株式会社日立製作所 計算機の制御方法及び計算機
WO2015097839A1 (ja) * 2013-12-27 2015-07-02 株式会社日立製作所 優先度割込み対応リアルタイムハイパバイザ
US9665509B2 (en) * 2014-08-20 2017-05-30 Xilinx, Inc. Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system
US9772868B2 (en) 2014-09-16 2017-09-26 Industrial Technology Research Institute Method and system for handling interrupts in a virtualized environment
US9697029B2 (en) 2014-10-30 2017-07-04 Red Hat Israel, Ltd. Guest idle based VM request completion processing
US9697151B2 (en) * 2014-11-19 2017-07-04 Nxp Usa, Inc. Message filtering in a data processing system
US9727500B2 (en) * 2014-11-19 2017-08-08 Nxp Usa, Inc. Message filtering in a data processing system
US9965412B2 (en) * 2015-10-08 2018-05-08 Samsung Electronics Co., Ltd. Method for application-aware interrupts management
US10248595B2 (en) * 2017-08-10 2019-04-02 Infineon Technologies Ag Virtual machine monitor interrupt support for computer processing unit (CPU)
US11487574B2 (en) 2017-09-19 2022-11-01 Microsoft Technology Licensing, Llc Targeted interrupts for virtual processors
CN108369604B (zh) * 2017-12-28 2021-12-03 深圳前海达闼云端智能科技有限公司 一种多操作系统共享文件系统的方法、装置和电子设备
EP3924822B1 (en) * 2019-02-14 2024-12-18 International Business Machines Corporation Directed interrupt virtualization with blocking indicator
WO2022226511A1 (en) * 2021-04-20 2022-10-27 Electroknox Corporation Devices, systems, and methods for developing vehicle architecture-agnostic software

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0193830A (ja) * 1987-10-05 1989-04-12 Nec Corp 仮想計算機システムにおける割り込み制御方式
JPH01191234A (ja) * 1988-01-26 1989-08-01 Fujitsu Ltd 仮想計算機間通信方式
JPH0365734A (ja) * 1989-08-04 1991-03-20 Fujitsu Ltd 仮想計算機システムにおけるvm間通信方式
JPH0540643A (ja) * 1991-08-06 1993-02-19 Nec Corp 複数os同時動作時のh/w割込み制御方式
JPH0683642A (ja) * 1992-09-01 1994-03-25 Nec Corp 割込み制御装置
JPH0997184A (ja) * 1995-09-29 1997-04-08 Internatl Business Mach Corp <Ibm> 効率的な割込み処理を含む情報処理システム

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4975836A (en) * 1984-12-19 1990-12-04 Hitachi, Ltd. Virtual computer system
JPS61206043A (ja) * 1985-03-11 1986-09-12 Hitachi Ltd 仮想計算機システムにおける割込制御方法
WO1993009494A1 (en) * 1991-10-28 1993-05-13 Digital Equipment Corporation Fault-tolerant computer processing using a shadow virtual processor
JP2765411B2 (ja) * 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
US5872982A (en) * 1994-12-28 1999-02-16 Compaq Computer Corporation Reducing the elapsed time period between an interrupt acknowledge and an interrupt vector
US6412035B1 (en) * 1997-02-03 2002-06-25 Real Time, Inc. Apparatus and method for decreasing the response times of interrupt service routines
US6240483B1 (en) * 1997-11-14 2001-05-29 Agere Systems Guardian Corp. System for memory based interrupt queue in a memory of a multiprocessor system
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US7103529B2 (en) * 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
WO2004114132A1 (ja) * 2003-06-20 2004-12-29 Fujitsu Limited 割り込み制御方法、割り込み制御装置及び割り込み制御プログラム
US7287197B2 (en) * 2003-09-15 2007-10-23 Intel Corporation Vectoring an interrupt or exception upon resuming operation of a virtual machine
US7237051B2 (en) * 2003-09-30 2007-06-26 Intel Corporation Mechanism to control hardware interrupt acknowledgement in a virtual machine system
US7177967B2 (en) * 2003-09-30 2007-02-13 Intel Corporation Chipset support for managing hardware interrupts in a virtual machine system
US7784060B2 (en) * 2003-11-06 2010-08-24 Intel Corporation Efficient virtual machine communication via virtual machine queues
US7139857B2 (en) * 2003-11-12 2006-11-21 Standard Microsystems Corporation Method and apparatus for handling interrupts
CN1312588C (zh) * 2004-04-02 2007-04-25 清华大学 基于目标机上的ejtag部件的交叉调试器实现方法
US20050246453A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation Providing direct access to hardware from a virtual environment
US7209994B1 (en) * 2004-05-11 2007-04-24 Advanced Micro Devices, Inc. Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US7849327B2 (en) * 2005-01-19 2010-12-07 Leung Hin L Technique to virtualize processor input/output resources
US20060184713A1 (en) * 2005-02-16 2006-08-17 Hob Gmbh & Co. Kg Method for operating a virtual machine computer system running guest operating systems on a central processing means virtualized by a host system having register stack engine functionality
US20060200616A1 (en) * 2005-03-02 2006-09-07 Richard Maliszewski Mechanism for managing resources shared among virtual machines
US8286162B2 (en) * 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0193830A (ja) * 1987-10-05 1989-04-12 Nec Corp 仮想計算機システムにおける割り込み制御方式
JPH01191234A (ja) * 1988-01-26 1989-08-01 Fujitsu Ltd 仮想計算機間通信方式
JPH0365734A (ja) * 1989-08-04 1991-03-20 Fujitsu Ltd 仮想計算機システムにおけるvm間通信方式
JPH0540643A (ja) * 1991-08-06 1993-02-19 Nec Corp 複数os同時動作時のh/w割込み制御方式
JPH0683642A (ja) * 1992-09-01 1994-03-25 Nec Corp 割込み制御装置
JPH0997184A (ja) * 1995-09-29 1997-04-08 Internatl Business Mach Corp <Ibm> 効率的な割込み処理を含む情報処理システム

Also Published As

Publication number Publication date
US20080141277A1 (en) 2008-06-12
CN101553792A (zh) 2009-10-07
US7533207B2 (en) 2009-05-12
EP2122474A1 (en) 2009-11-25
JP2010512577A (ja) 2010-04-22
KR101514088B1 (ko) 2015-04-21
KR20090095634A (ko) 2009-09-09
EP2122474A4 (en) 2010-06-30
CN101553792B (zh) 2013-11-27
WO2008070410A1 (en) 2008-06-12
EP2122474B1 (en) 2015-07-15

Similar Documents

Publication Publication Date Title
JP4882005B2 (ja) 仮想環境における最適化した割り込み送信
JP6126312B2 (ja) 待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ
US10452572B2 (en) Automatic system service resource management for virtualizing low-latency workloads that are input/output intensive
EP2372542B1 (en) Virtual machine, virtual machine monitor and computer control method
US6961941B1 (en) Computer configuration for resource management in systems including a virtual machine
EP4050477B1 (en) Virtual machine migration techniques
US7689747B2 (en) Systems and methods for an augmented interrupt controller and synthetic interrupt sources
CN102207886B (zh) 虚拟机快速仿真辅助
EP1804164A1 (en) Delivering interrupts directly to a virtual processor
KR20080047372A (ko) 멀티레벨 가상화 메카니즘을 이용하는 계층적 가상화
JP2004326743A (ja) グローバル割込み待ち行列の仮想化
JP2013516021A (ja) プロセッサコアのハイパーバイザ離隔
US20120030677A1 (en) Method and apparatus for supporting universal serial bus devices in a virtualized environment
US9424211B2 (en) Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
EP2585917B1 (en) Stack overflow prevention in parallel execution runtime
US11429424B2 (en) Fine-grained application-aware latency optimization for virtual machines at runtime
US20100174841A1 (en) Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
CN111880891A (zh) 基于微内核的可扩展虚拟机监控器及嵌入式系统
US11928502B2 (en) Optimized networking thread assignment
US11934890B2 (en) Opportunistic exclusive affinity for threads in a virtualized computing system
US20200218459A1 (en) Memory-mapped storage i/o
WO2026066083A1 (zh) 虚拟机状态切换方法、装置、设备集群及可读存储介质
Sankh et al. Survey of Approaches to Improve Inter Virtual Machine Communication Efficiency on Xen Platform

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101015

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101015

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20101015

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20101208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101224

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110324

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110420

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110715

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20110728

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110728

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111012

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4882005

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20141209

Year of fee payment: 3

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

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