JP5180373B2 - 仮想化環境における割り込みメッセージ終了のレイジー処理 - Google Patents

仮想化環境における割り込みメッセージ終了のレイジー処理 Download PDF

Info

Publication number
JP5180373B2
JP5180373B2 JP2011516674A JP2011516674A JP5180373B2 JP 5180373 B2 JP5180373 B2 JP 5180373B2 JP 2011516674 A JP2011516674 A JP 2011516674A JP 2011516674 A JP2011516674 A JP 2011516674A JP 5180373 B2 JP5180373 B2 JP 5180373B2
Authority
JP
Japan
Prior art keywords
interrupt
eoi
hypervisor
virtual
apic
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.)
Active
Application number
JP2011516674A
Other languages
English (en)
Other versions
JP2011526390A (ja
JP2011526390A5 (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 JP2011526390A publication Critical patent/JP2011526390A/ja
Publication of JP2011526390A5 publication Critical patent/JP2011526390A5/ja
Application granted granted Critical
Publication of JP5180373B2 publication Critical patent/JP5180373B2/ja
Active 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/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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、仮想化環境における割り込みメッセージ終了のレイジー処理に関する。
コンピューター産業は、ハードウェアレベルにおいて、より一層仮想化に向かう傾向にある。これらの環境において、オペレーティングシステムは、仮想マシンのモニタまたはハイパーバイザの上に実行されて、ゲストオペレーティングシステムによるコンピューターハードウェアとのインタラクションは、仮想化レイヤーにより実現する。このことにより、複数のゲストオペレーティングシステム(OS)を、同時に単一のコンピューター上実行することを可能にして、複数のワークロードを同一の物理マシン上実行させることを可能にさせる。各ワークロードは、異なるゲストOS上、ゲストOS間においてはっきりと分離して実行できる。このことは、情報技術(IT)部門、または複数のワークロードまたは複数のサーバーアプリケーションを実行する必要があるあらゆるオペレーションにとって特に有益である。
複数のゲストOSを単一のコンピューター上に実行することを可能にすることを、ハードウェア資源を各ゲストOSに安全にさらに効果的な方法において配分することにより達成できる。従来、ハイパーバイザは、ハードウェアデバイスを仮想ハードウェアデバイスとして各ゲストOSに明らかにすることにより、ハードウェア資源を配分している。いくつかの物理ハードウェアデバイスは、物理ハードウェアデバイスへの直接的なアクセスを実現することにより、仮想化される。他の物理ハードウェアデバイスは、原デバイスへの要求をインターセプトすること、および原ハードウェアデバイスを関連付ける方法において用いることによって要求される機能を実装することによって仮想化される。さらに他の物理ハードウェアデバイスは、完全にエミュレートされる。仮想ハードウェアデバイスを実装するのに必要な介入およびエミュレーションの量に依存して、仮想ハードウェアデバイス上に機能を実行する追加のコストは、著しく変わる。物理ハードウェアデバイスへのアクセスを実現することが、控えめな割合によりコンピューティングコストを増加させる一方、物理ハードウェアデバイスのソフトウェアエミュレーションは、極めてコストがかかる。
例えば、ゲストOSが、仮想ハードディスクにアクセスしてデータのブロックを読み込むとき、ハイパーバイザは、ファンクションコールをインターセプトできる。ハイパーバイザは、ハードディスクへの直接アクセスを可能にすることにより、または代替として仮想化ハードディスクのコンテンツを含むファイルからデータのブロックを読み込むことにより、機能を実装できる。これらの2つのレベルのハイパーバイザの介入は、ファンクションコールを完了させるのに必要なシステム資源を控えめに増加させることができる。一方、例えばAPIC(Advanced Programmable Interrupt Controller)等のハードウェアデバイスの仮想化は、物理APICにアクセスするのに必要な多くの複数のシステム資源を必要とすることがある。
本明細書は、割り込み終了(EOI)メッセージをゲストOSからハイパーバイザにおいて実行するI/O APIC(Input/Output Advanced Programmable Interrupt Controller)仮想化モジュールへレイジーに(lazily)通信できる技法を説明する。EOIをレイジーに通信することは、EOIが発生されたことを示すメモリへの書き込みを必要として、I/O APIC仮想化モジュールが後にメモリを読み込むことを可能にする。いくつかの実装により、ハイパーバイザとゲストOSとの間において共有されるメモリページを用いて、EOIがゲストOSを実行中の仮想化CPU上に起こったときにレイジーに通信する。さらに、いくつかの実装により、EOIをレイジーに通信できるときにハイパーバイザに共有メモリページを用いてゲストOSと通信できる。いくつかの実装により、よくわかっているEOIハンドラを実行中のよくわかっているゲストOSを用いて、ハイパーバイザにより与えられる表示に従ってEOIメッセージを処理する。従って、技法により、多くのEOIメッセージが、ゲストOSにより生成されるEOIメッセージをインターセプトおよびエミュレートするハイパーバイザの不必要なコストなしにハイパーバイザにより処理できる。
詳細な説明を、添付の図面を参照して説明する。図面において、参照符号の(複数の)最左桁は、参照符号が最初に現れる図面を識別する。同一の参照符号を異なる図面に使用して、同様または同一の項目を示す。
仮想CPUにより生成されるEOIをハイパーバイザによりエミュレートされる仮想I/O APICによりレイジーに評価できる例示的な環境を示す図である。 割り込み要求を受信して割り込み要求をCPUに転送するための例示的な仮想I/O APICを示す図である。 いつインターセプトを生成してEOIを処理すべきかおよびいつEOIにレイジー処理をすべきかを決定するための例示的なプロセスを示す図である。 APICにおいて割り込み要求を受信して要求をCPUに送信してCPUからの割り込みに対応するEOIを受信してEOIを処理するための例示的なプロセスを示す図である。 APICにおいて割り込み要求を受信して要求をCPUに送信してCPUからの割り込みに対応するEOIを受信してEOIを処理するための例示的なプロセスを示す図である。 いつハイパーバイザがEOIをI/O APIC仮想化モジュールに即時に送信しなければならないかを決定できるかを決定するための追加の例示的なプロセスを示す図である。 いつハイパーバイザがEOIをI/O APIC仮想化モジュールに即時に送信しなければならないかを決定できるかを決定するための追加の例示的なプロセスを示す図である。 いつハイパーバイザがEOIをI/O APIC仮想化モジュールに即時に送信しなければならないかを決定できるかを決定するための追加の例示的なプロセスを示す図である。 例示的なエッジトリガーおよびレベルトリガーの割り込みを示す図である。
EOIメッセージを仮想アプリケーション・プログラミング・インターフェース(API)に送信すべきかどうかを決定するための例示的なプロセスを示す図である。
(概要)
以下の説明は、EOIメッセージをゲストOSからI/O APIC仮想化モジュールへレイジーに通信できる技法を目標とする。上記の技法は、不必要にハイパーバイザにEOI通信をトラップおよびインターセプトさせることなく、ゲストOSが、割り込み要求を正確により効果的に処理することを可能にする。上記の技法は、共有メモリページを利用して、ハイパーバイザとゲストOSとの間の通信を容易にすることができる。共有メモリページを使用して、ハイパーバイザは、EOIを即時にハイパーバイザに伝送しなければならないときに、または代替としてEOIをハイパーバイザによりレイジーに検索することができるときにゲストOSと通信できる。さらに、ハイパーバイザがEOIにレイジー処理をすることを示したときに、およびゲストOSを実行している仮想化CPUがEOIを発行するときに、ゲストOSは、共有メモリを使用してEOIが発生したことを示すことができる。ハイパーバイザは、他の理由で実行している間に上記の表示をチェックすることができて、EOIの即時の送信をトラップおよびインターセプトするコストを節約する。
第1節表題「例示的な仮想化動作環境」は、これらおよび他の働きを可能にすることができる環境を説明する。「例示的な仮想I/O APIC環境および割り込み処理プロセス」の節が続いて、どのように仮想I/O APICにより受信される割り込みを処理できるかを説明する。第3節表題「例示的な割り込み処理」は、仮想I/O APICが割り込みを処理するときに行うことができる例示的なステップを示す。第4節表題「いつEOIをハイパーバイザと即時に通信すべきかの決定」は、ハイパーバイザが、EOIメッセージをハイパーバイザに即時に送信すべきであることをゲストOSに示すことができる条件を説明する。第5節表題「グラフィカルな割り込み表現」は、2つの共通の割り込みタイプを示す。
上記の簡潔な導入部は読者の便宜のために提供されるものであり、特許請求の範囲を制限することを意図せず、後に続く節を制限することも意図しない。
(例示的な仮想化動作環境)
以下の説明は、例示的な仮想動作環境を説明して、読み手が、技法の種々の側面を用いることができるいくつかの方法を理解するのを支援する。以下に説明される環境は、一例を構成するだけであり、技法の応用をあらゆる1つの特定の動作環境に制限することは意図しない。他の環境を、主張される主題の精神および範囲から逸脱することなく使用できる。
図1は、ユーザー104により操作されるコンピューティングデバイス102を含む1つの上記仮想化環境100を示す。サーバーコンピューターとして示すが、代替として、コンピューティングデバイス102は、デスクトップコンピューター、ラップトップコンピューター、または他のあらゆるコンピューティングデバイスとすることができる。一実施例において、コンピューティングデバイス102は、ハイパーバイザ112(仮想マシンマネージャとしても既知である)の上に、ルートオペレーティングシステム106、ゲストオペレーティングシステム108、およびゲストオペレーティングシステム110を同時に実行することができる。これらのオペレーティングシステムは、あらゆるバージョンの本願発明の特許出願人のウィンドウズ(登録商標)、リナックス(登録商標)、サンのソラリス(登録商標)、またはあらゆる他のオペレーティングシステムとすることができる。加えて、または代替えとして、ゲストオペレーティングシステムは、単独でコンピューティングデバイス102上で実行することができる。
一実施例において、ハイパーバイザ112は、コンピューティングデバイス102に連結される物理ハードウェアデバイス上で直接実行し、これらの物理ハードウェアデバイスの管理および割り付けをする。加えて、または代替えとして、ルートOS106は、コンピューティングデバイス102に連結される物理ハードウェアデバイスを所有することができる。一実施例において、コンピューティングデバイス102は、物理メモリ118に連結される物理中央処理装置(CPU)114を含む。物理CPU114は、物理ローカルAPIC116を含むことができて、物理I/O APIC122に連結することができる。
ハードウェアデバイスは、CPU114がその現在の実行を中断して割り込みハードウェアデバイスにサービスを提供するよう、要求することができる。従来、2つのタイプの割り込みがある。すなわち、レベルトリガー割り込みおよびエッジトリガー割り込みである。エッジトリガー割り込みは、「ファイアアンドフォーゲット(fire and forget)割り込み」とも呼ばれ、割り込みデバイスが、そのラインに正の電圧をアサートし、続いて即時にそのラインをデアサートすることにより、エッジトリガー割り込みをI/O APICに送信する。この電圧の変化が、APICにより割り込みと解釈され得るエッジを生成する。割り込みが送信されると、デバイスからAPICへのラインはデアサートされたままになる。レベルトリガー割り込みもまた、割り込みデバイスをAPICに接続するラインに正の電圧をアサートすることにより開始される。エッジトリガー割り込みとは異なり、レベルトリガー割り込みを送信するときに割り込みデバイスは、CPUから発生する、その割り込みが処理されたという表示を割り込みデバイスが受信するまで、ラインをデアサートしない。従って、CPUがEOIを送信する1つの目的は、割り込みが完了したことを、割り込みデバイスに信号で伝えることであり、その結果アサートしているデバイスがそのラインをデアサートすることができる。レベルトリガー割り込みは、PCIバス等のいくつかのバス上で使用されるため、処理中に割り込みが失われることはない。第1のエッジが第2のエッジと重なり、第2のエッジが受信I/O APICにより見つけられない場合は、エッジトリガー割り込みは、失われるかもしれない。
物理I/O APIC122は、割り込み信号をハードディスクドライブ124またはシリアルポート126等のハードウェアデバイスから受信することができる。例えば、ハードディスクドライブ124は、割り込みを使用して、非同期DMA転送が完了したことを物理CPU114に対して示すことができる。このシナリオにおいて、ハードディスクドライブ124は、割り込みを物理I/O APIC122に送信して、物理CPU114がハードディスクドライブ124に関連する割り込み要求ハンドラを実行することを要求する。次に物理I/O APIC122は物理CPU114を中断することができ、物理CPU114に、現在の実行コンテキストをセーブさせ、かつ、ハードディスクドライブ124に関連する割り込み要求ハンドラの実行を開始させる。
物理I/O APIC122は、割り込み要求信号が受信される多数のピンを有することができる。一実施例において、物理I/O APIC122は、255本のピンを有し、各ピンは0から255のベクタに対応するが、異なるピン数のI/O APICも考えられる。一実施例において、オペレーティングシステムには、ベクタを各ハードウェアデバイスに割り当てるが、ここでプライオリティのより高いデバイスは、プライオリティのより低いデバイスよりも大きな番号のベクタが割り当てられる。一実施例において、ハードウェアデバイスからの割り込み要求は、そのハードウェアデバイスに割り当てられるベクタにより識別される。I/O APICの動作を、図2において以下により詳細に説明する。
加えて、または代替えとして、I/O APICは、プロセッサ間割り込み(IPI)を与える。物理I/O APIC122は、物理CPU114がおそらくマルチプロセッサシステムの一部として、別のCPUに割り込みを送信するための機構を提供することができる。IPIを実行するために、CPUは、割り込み制御レジスタ(ICR))に書き込み、これが今度は、送り先のプロセッサに割り込みを送信する。加えて、または代替えとして、物理CPU114は、ICRを介して自分自身に対する割り込みを要求することができる。
一実施例において、物理CPU114は、物理ローカルAPIC116を含むことができる。物理ローカルAPIC116は、255本のピンを備えることができ、それぞれが0から255のベクタに対応する。他の実施形態において、異なる数のピンが考えられ、通常、物理I/O APIC122が含むピンの数に対応する。物理ローカルAPIC116は、メッセージを物理I/O APIC122から受信し、またメッセージを物理I/O APIC122に送信することもできる。
一実施例において、ハイパーバイザ112は、コンピューティングデバイス102に連結される物理デバイスを仮想化し、仮想ハードウェアデバイスをハイパーバイザ112の上に実行する各ゲストOSに与えることができる。一実施例において、仮想ハードウェアデバイスは、その非仮想の同等のものと同一またはほぼ同一の機能を提供する。一実施例において、ルートOS106は、物理CPU114、物理メモリ118、物理I/O APIC122、ハードディスクドライブ124、およびシリアルポート126等のコンピューティングデバイス102に含まれる全ての物理ハードウェアデバイスを所有する。本実施形態において、ルートOS106は、仮想ハードウェアデバイスを他のゲストオペレーティングシステムに提供する。加えて、または代替えとして、ハイパーバイザ112は、コンピューティングデバイス102に含まれる全ての物理ハードウェアデバイスを所有することができて、仮想ハードウェアデバイスをゲストオペレーティングシステム108および110に提供することができる。
一実施例において、ルートOS106は、仮想CPU128をゲストOS108に、および仮想CPU134をゲストOS110に提供する。仮想CPU128および仮想CPU134は、仮想ローカルAPIC130および仮想ローカルAPIC123をそれぞれ含むことができる。一実施形態において、仮想CPU128および仮想CPU134は、ゲストOSが原物理CPU114に直接アクセスすることを可能にする、薄くラップされた仮想デバイスである。一実施形態において、仮想ローカルAPIC130および仮想ローカルAPIC123を、ルートOS106においてソフトウェアでエミュレートすることができる。エミュレーションの性質上、仮想ローカルAPIC130および123における割り込みの受信および処理は、物理ローカルAPIC116により実行される場合よりかなりコストがかかるものである。
加えて、または代替えとして、メモリ仮想化モジュール136は、ゲストOS108に関連する仮想メモリ138およびゲストOS110に関連する仮想メモリ140等の仮想メモリを、各ゲストOSに提供することができる。仮想CPU128および仮想CPU134は、それぞれ、仮想I/O APIC142および仮想I/O APIC144に連結することができる。仮想ローカルAPICと同様に、仮想I/O APICを、ルートOS106またはハイパーバイザ112において、I/O APIC仮想化モジュール154によりエミュレートすることができる。
一実施例において、ハードウェアデバイスにより生成される割り込みは、仮想I/O APIC142により受信され、仮想ローカルAPIC130に転送され、仮想CPU128により処理される。割り込みを受信すると、仮想CPU128は、その実行コンテキストを割り込みに関連するサービスルーチンに変更する。サービスルーチンは、一実施例においては、割り込みを送信したデバイスと通信することにより割り込みを処理することに関与する。仮想CPU128がサービスルーチンの実行を終了すると、仮想CPU128は、仮想I/O APIC142に、割り込みが処理されたことをEOIの確認(ACK)を使用して通知する。
従来のコンピューターでは、物理CPU114等のCPUが、EOIメッセージをメモリマップI/Oインターフェース120を介して物理I/O APIC122に送信する。従来のコンピューターでは、メモリマップI/Oインターフェース120は、物理CPU114が、メモリのページであるようにみえるが実際は物理I/O APIC122と通信する手段であるものに書き込みを行うことにより、物理I/O APIC118と通信することを可能にする。仮想化された環境において、複数の仮想CPUが、それぞれ、異なる仮想メモリにアクセスすることができ、各仮想メモリは、単一の物理メモリ118により支持されている。複数の仮想CPUが、同時に物理I/O APIC122に単純にアクセスできた場合、物理I/O APIC122、さらには、コンピューティングデバイス102全体がクラッシュする可能性がある。これを避けるために、I/O APIC仮想化モジュール154は、メモリ・インターセプト・モジュール146をメモリマップI/Oページl48およびメモリマップI/Oページ150に組み込み、物理I/O APIC120と通信する仮想CPUによるあらゆる試みが、I/O APIC仮想化モジュール154へトラップされるようにする。次に、APIC仮想化ソフトウェア154は、ルートOS106あるいはハイパーバイザ112のコンテキストにおいて実行して、物理APICをソフトウェアでエミュレートすることができる。
例えば、仮想CPU128は、メモリマップI/Oページ148に書き込みを行うことによって自己割り込みを発行することができる。このメモリのページへの書き込みが物理I/O APIC122へ通信されることを見込んで、仮想CPU128をプログラミングすることができる。代わりに、物理I/O APIC122により受信されることが意図されるメモリ動作が、ルートOS106において実行するI/O APIC仮想化モジュール154によりトラップされる。そしてI/O APIC仮想化モジュール154は、物理I/O APIC122をエミュレートすることができる。自己割り込みの場合、I/O APIC仮想化モジュール154は、即時に、ハイパーバイザ112に仮想ローカルAPIC130への割り込みを発行させることができ、これもソフトウェアでエミュレートされる。このシナリオにおいて、仮想CPU128により発行された自己割り込みは、物理I/O割り込み122または物理ローカル割り込み116を使用せずに処理することができる。
別の実施形態において、仮想CPU128は、仮想CPU128等のマルチプロセッサ(MP)システム内の1つまたは全てのプロセッサに、プロセッサ間割り込み(IPI)を発行することができる。この場合、ルートOS106内のメモリ・インターセプト・モジュール146は、物理I/O APIC122対して意図される命令をトラップする。上述の自己割り込みの処理と同様に、I/O APIC仮想化モジュール154は、ハイパーバイザに仮想ローカルAPIC130への割り込みを発行させることができる。
一実施例において、仮想I/O APIC142により受信される割り込みは、メモリ・インターセプト・モジュール146におけるインターセプトをトリガーすることができる。そして、I/O APIC仮想化モジュール154は、受信した割り込みを処理して、仮想I/O APIC142をエミュレートする。これらのインターセプトは、頻繁に起こり得、1秒に数万回であることもある。仮想I/O APIC142により受信され処理されるどの割り込みも、仮想CPU128から仮想I/O APIC142に送信されるEOIが後に続く。在来のシステムでは、EOIは、高くつくものではなく、物理CPU114から物理I/O APIC122に単に伝えられる。しかし、仮想化された環境においては、インターセプトを実行するのに必要とされるCPUサイクルに加えて、I/O APIC仮想化モジュール154においてEOIをエミュレートするのに数千回の物理CPUのサイクルを要する。
一実施例において、ハイパーバイザ112は、ゲストOS108がEOIを仮想I/O APIC142に送信すべきかすべきでないかを示す1つの情報を共有ページ152に加える。ハイパーバイザ112が、ゲストOS108にEOIを送信するよう命じる場合、ゲストOS108は、メモリマップI/Oページ148に書き込みを行うことによってインターセプトを生成し、一方で、仮想I/O APIC142との通信を試みる。その一方、ハイパーバイザ112が、EOIにレイジー処理をするよう、共有ページ152を介してゲストOS108に命じる場合、ゲストOS108は、インターセプトを生成せず、代わりに、共有ページ152にEOIが発生したことを示す書き込みを行うことができる。
ひとたびゲストOS108が共有ページ152にフラグを立てることによりEOIの発生を示すと、ハイパーバイザ112は、後で共有ページ152を読み込み、EOIが生成されたかどうかを決定することができる。ハイパーバイザ112は、EOIが仮想CPU128により生成されたと決定する場合、I/O APIC仮想化モジュール154に通知し、I/O APIC仮想化モジュール154は、図2を参照して以下で説明するように、その状態を更新することができる。本実施形態において、EOIが発生したという事実が、I/O APIC仮想化モジュール154に送信され、これにより、潜在的に時間を消費するインターセプトを不必要に生成しない、仮想I/O APIC142が実現される。
(例示的な仮想I/O APIC環境および割り込み処理プロセス)
図2は、例示的なI/O APIC環境200を示す。ハイパーバイザ202は、物理コンピューターハードウェアの上に実行して、仮想CPU206上にゲストOS204の実行を可能にする。仮想I/O APIC208は、多数のピン210(a)、210(b)、・・・、210(n)を表し、これらは、仮想シリアルポート232および仮想ネットワークカード234等のハードウェアデバイスに接続させることができる。ゲストOS204は、各ハードウェアデバイスにプライオリティ、すなわちベクタ、を割り当てることができる。一実施例において、仮想I/O APIC208は、255本のピンを有することができ、ゲストOSは、0(最低のプライオリティ)から255(最高のプライオリティ)までのプライオリティをハードウェアデバイスに割り当てることができる。一実施形態において、仮想シリアルポート232には、プライオリティ0が割り当てられ、一方、仮想ネットワークカード234にはプライオリティ3が割り当てられている。
仮想I/O APIC208は、仮想ローカルAPIC214を含む仮想CPU206に連結される。一実施例において、仮想CPU206は、共有ページ218およびメモリマップI/Oページ148を含む仮想メモリ216に接続させることができる。加えて、仮想メモリ216は、仮想シリアルポート割り込みサービスルーチン222 222(a)および仮想ネットワークカード割り込みサービスルーチン222 222(b)を備えることができる。
仮想I/O APIC208は、2つのレジスタを備えることができ、各レジスタは、ピン210のそれぞれに対して1ビットを含む。一実施例において、2つのレジスタはそれぞれ、256ビットを含む。1つのレジスタを、割り込み要求レジスタ(Interrupt Request Register(IRR))224とすることができ、これにはビット228 228(a)・・・228 228(n)が含まれる。他方のレジスタは、割り込みサービスレジスタ(Interrupt Service Register(ISR))226とすることができ、これにはビット230(a)・・・230(n)が含まれる。一実施例において、割り込みは、仮想シリアルポート232から仮想I/O APIC208によりピン210(a)で受信される。一実施例において、割り込みを受信したピン210(a)に対応するビット228 228(a)が、1に設定され、割り込みが受信されたことを示す。次に、割り込みは仮想CPU206上に配置される仮想ローカルAPIC214に転送され、仮想ローカルAPIC214が、今度は、仮想CPU206の実行を「中断する」ことができる。
仮想ローカルAPIC214が仮想CPU206を「中断する」と、仮想CPU206は、割り込みを受信したというACKを仮想I/O APIC208に送り、仮想I/O APIC208に、ビット228 228(b)を、値を0に設定してクリアさせる。さらに、仮想I/O APIC208は、割り込みを受信したピンに対応するISR230内のビットを設定することができる。このシナリオにおいて、ビット230(a)は1に設定される。ビット228 228(a)がクリアされ、ビット230(a)が設定されると、仮想CPU206は、割り込みを処理するプロセスに入る。仮想CPU206が割り込みを処理している間、第2の割り込みを、仮想I/O APIC208によりピン210(a)において受信できる。
割り込みを受信すると、仮想CPU206は、そのレジスタの現在の状態であるその現在の実行コンテキストをセーブして、割り込みに関連する仮想シリアルポート割り込みサービスルーチン222 222(a)を呼び出すことができる。仮想CPU206が、仮想シリアルポート割り込みサービスルーチン222 222(a)の実行を終了すると、仮想CPU206は、メモリマップI/Oページ138に書き込みを行うことによって仮想I/O APIC208に通知して、ハイパーバイザ202によりインターセプトさせることができる。一実施例において、この通知は、End Of InterruptのACKまたはEOIを含む。EOIは、仮想I/O APIC208に、仮想CPU206が、最高のプライオリティの処理を完了しており、従って、ごく最近完了したということを通知して、割り込みがペンディングされる。EOIに応答して、仮想I/O APIC208は、ISR内の最高のプライオリティのビットをクリアする。上記の例においては、仮想I/O APIC208は、ビット230(b)をクリアする。
一実施形態において、ゲストOS204は、ハイパーバイザ202により立てられたフラグから、EOIを即時に送信すべきかどうか、またはEOIをレイジーに評価すべきかどうかを推測することができる。ハイパーバイザ202は、仮想I/O APIC208の状態に基づき、EOIを即時に送信しなければならないかどうかを決定することができる。以下に続くものは、いつEOIを即時に送信しなければならないかの例示的な3つのシナリオである。
一シナリオにおいて、2つのデバイスが仮想I/O APIC208に割り込みを送信することができる。例として、ネットワークカード234およびシリアルポート232が、同じクロックサイクル中に、それぞれ割り込みベクタXおよび割り込みベクタYを送信することができる。一実施例において、割り込みベクタYのプライオリティが、割り込みベクタXのプライオリティより大きい。一実施例において、仮想I/O APIC208は、IRR224において割り込みXに対応するビットを1に設定し、また、IRR224において割り込みYに対応するビットを1に設定することができる。そして、各クロックサイクルにて、仮想I/O APIC208は、IRR224において設定される最大の番号のビットを決定することができる。次に、仮想I/O APIC208は仮想ローカルAPIC214を介して、最高のプライオリティの割り込みである割り込みYで、CPUを中断させる。仮想CPU206が、割り込みYの受信にACKを返すと、仮想I/O APIC208は、Yに対応するISRのビットを1に設定し、Yに対応するIRRのビットを0に設定して、Yが仮想CPU203により処理されていることを示す。
シナリオを続けると、割り込みベクタXは、より高いプライオリティの割り込みYが終了するのを待ち受けているままになっており、仮想CPU206が、Yが完了したことを仮想I/O APIC208に対して示すまで待ち続ける。割り込みYが、仮想I/O APIC208において単にペンディングしているだけの割り込みであるならば、ゲストOSがEOIをレイジーに評価することができることを、ハイパーバイザ202が共有ページ218を介して示す。しかし、割り込みXは処理されることを待っているため、EOIをレイジーに更新することにより、割り込みXが処理される時間が遅延され、システム性能を低下させる。従って、ハイパーバイザ202が、I/O APIC仮想化モジュール154を介して、第2の、より低いプライオリティの割り込みが仮想I/O APIC208においてペンディング中であることを検出するとき、ハイパーバイザ202は、仮想CPU206により生成されるあらゆるEOIが、即時に送信されなければならないことを、共有ページ218を介して示すことができる。
第1の割り込みが仮想CPU206により処理されており、第2のより高いプライオリティの割り込みが仮想I/O APIC208により受信されるときに、別の共通のシナリオが発生する。このシナリオにおいて、仮想I/O APIC208は、ISR226を使用して、仮想CPU206上で実行されているネストされた割り込みハンドラのスタックを保持する。例として、割り込みXが仮想CPU206により処理されており、かつ、仮想I/O APIC208が割り込みY(YはXより高いプライオリティを有する)を受信する場合、仮想I/O APIC208は、割り込みYでCPUを中断させる。
割り込みYは、仮想CPU206がXのサービス要求ハンドラの実行を終了する前に、Xのサービス要求ハンドラの実行を文字通り中断する。Xのサービス要求ハンドラは、サービス要求ハンドラのスタック上に置かれる。割り込み要求XおよびYの両方が仮想CPU206に送信されてしまうと、これらの割り込みに関連するIRRのビットが0に設定され、一方、割り込みに関連するISRのビットは1に設定され、両割り込みが仮想CPU206に送信されたことを示す。一実施形態において、共有ページ218は、EOIが発生したかどうかを示す1ビットを含むことができる。ペンディング中の2つの割り込みと、1ビットのみの情報が存在するため、ハイパーバイザ202は、1つまたは両方の割り込みがEOIを生成したのかどうかを決定することができない。従って、ゲストOS204が、2つの割り込みのうちの第1の割り込みが完了するときにEOIを送信するよう構成される。
例を続けると、割り込みYに対するサービス要求ハンドラが完了すると、少なくとも2ビットがISR226に設定されるため、仮想CPU206は、EOIを仮想化されたI/O APIC208に戻す。仮想化されたI/O APIC208は、割り込みYに関連するISRのビットをクリアし、CPUは、割り込みXに対するサービス要求ハンドラの処理を継続する。割り込みYに対するEOIを処理すると、仮想I/O APIC208は、プライオリティを再度設定し、仮想CPU206においてペンディング中の割り込みが1つだけであることを決定する。従って、ハイパーバイザが、ゲストOSがEOIをレイジーに評価するということを示すビットを共有ページ218において設定する。
レベルトリガー割り込みは、処理のためにEOIをハイパーバイザに即時に送信するようゲストOSに要求する第3のシナリオを備える。割り込みをトリガーするハードウェアデバイスが、必要以上に長くそのラインのアサートを継続し、従って、後に続く割り込みを発行することが回避されるため、レベルトリガー割り込みはレイジーに評価されない。その結果、ハイパーバイザ202は、レベルトリガー割り込みに関連するEOIが即時に送信されることを要求し、インターセプトがハイパーバイザにおいて生成され、そのため割り込みデバイスがそのラインをデアサートすることができる。
(例示的な割り込み処理)
図3は、いつインターセプトを生成してEOIを処理すべきか、およびいつEOIにレイジー処理をすべきかを決定するための例示的なプロセスを示す。プロセス300は、動作302が割り込み要求を、例えば仮想ネットワークカード234等、仮想ハードウェアデバイスから受信するときに開始される。動作304にて、その間、割り込みが仮想CPU206に送信され処理される。一実施形態において、受信された割り込みは、仮想I/O APIC208において現在単にペンディングしているだけの割り込みであり、一方、仮想CPU206によって現在処理されている割り込みは無い。動作306にて、その間、仮想CPU206が、EOIを生成して、そのEOIをゲストOS204に送信する。動作308にて、ゲストOS204は、共有ページ218を読み込むことにより、NoEOIRequiredビットが1に設定されたかどうかを決定する。設定されたと決定される場合、ゲストOSは、共有メモリ218にEOIOccurredビットを設定することにより応答する。その後、ハイパーバイザ202が何らかの他の理由で実行しているとき、ハイパーバイザ202は、共有ページ218を読み込み、EOIが発生したと決定することができる。一実施例において、I/O APIC仮想化モジュール154は、仮想I/O APIC203のISRから動作302にて受信される割り込みに関連するビットをクリアすることにより、EOIの発生を処理する。一方、NoEOIRequiredビットがクリアされるか、または設定されていないと、ゲストOS204がEOIを生成し、ハイパーバイザ202にEOIをインターセプトさせて、それを即時に処理させる。
図4は、従来の物理I/O APICが割り込みの受信にどのように応答するかを決定するための例示的なプロセス400を説明する。プロセス400は、動作402にて、シリアルポート126等の物理ハードウェアデバイスからの割り込み要求の受信と共に開始される。割り込みは、エッジトリガー割り込みまたはレベルトリガー割り込みとすることができる。動作404では、その間、割り込みを受信したピンに関連する割り込み要求レジスタ(IRR)ビットを1に設定する。割り込みがエッジトリガー割り込みであった場合、シリアルポート126は、シリアルポート126が割り込みを送信したラインをデアサートする。一方、割り込みがレベルトリガー割り込みであった場合、シリアルポート126は、CPUが割り込みの処理を完了した、という通知をシリアルポート126が受けるまで、ラインのアサートを継続する。動作406にて、APICは、1に設定される最高のプライオリティのIRRビットが、1に設定される最高のプライオリティISRビットより高いプライオリティを有するかどうかを決定する。多くのシナリオにおいて、ISRのどのビットも設定されないが、これは、対象のCPUが通常、割り込みを素早く処理し、1つの割り込みが、別の割り込みが処理されている間に受信される可能性を下げるからである。別のシナリオにおいて、既に処理中の割り込みは、受信されたばかりの割り込みより高いプライオリティを有する。この場合、受信された割り込みは、動作408に示すように、より高いプライオリティの割り込みが終了するのを待ち受けなければならない。
動作410にて、最高のプライオリティのIRRビットのプライオリティは、最高のプライオリティのISRビットのプライオリティより大きく、I/O APICに、受信された割り込みをCPUへ送信させる。動作412にて、APICは、受信された割り込みに関連するIRRおよびISRを更新し、IRR内のビットを0に、ISR内のビットを1に設定する。これらのビットは、割り込みがAPICにおいてもはやペンディング中ではなく(IRRビット=0)、かつ、割り込みが現在CPUにより実行されている(ISRビット=1)ことを示す。
図5は、従来の物理APICが物理CPUからのEOIの受信にどのように応答するかを決定するための例示的なプロセス500を説明する。プロセス500は、動作502にて、CPUからのEOIの受信と共に開始される。EOIは、CPUにより処理されている最高のプライオリティの割り込みが、完了したことを示すことができる。動作504では、その間、受信されたEOIに関連するビットを0に設定することによりクリアする。一実施例において、I/O APICは、最高のプライオリティのビットをクリアするが、これはCPUが、常に割り込みをそのプライオリティの順に実行するからである。そして、一実施例において、I/O APICは、あらゆるペンディング中の割り込みのプライオリティを再度設定し、次に高いプライオリティの割り込みを処理のためにCPUに送信する。
動作506では、その間、EOIが受信されたばかりの割り込みがエッジトリガー割り込みまたはレベルトリガー割り込みであったかどうかを決定する。動作508にて、EOIが応答している割り込みがエッジトリガー割り込みであるときに、APICは、EOIの処理を終了する。しかし、動作510は、割り込みがレベルトリガー割り込みであったときに実行されて、その時点で、I/O APICが、割り込み要求が完了したこと、およびデバイスがI/O APICへそのラインをデアサートできることを、割り込みをアサートしたデバイスに信号で伝える。
(いつEOIをハイパーバイザと即時に通信すべきかの決定)
図6は、仮想CPU128により生成されるEOIが、ハイパーバイザ112に直に通信されて、レイジーに更新されない一条件を示す例示的なプロセス600を説明する。プロセス600は、動作602にて、仮想I/O APIC142における第1のプライオリティを有する第1の割り込みの受信と共に、開始される。仮想I/O APIC142は、ハイパーバイザ112またはルートOS106によりソフトウェアでエミュレートでき、実行のためにゲストOS108に対して明らかにされるだけであることに留意すべきである。動作604にて、第1の割り込みが、仮想化されたCPU128に投入される。動作606にて、その間、仮想I/O APIC142が、第1の割り込みより低いプライオリティを有する第2の割り込みを受信することができ、第2の割り込みは、第1の割り込みが仮想CPU128により処理されている間に受信される。動作608にて、その間、ハイパーバイザ112が、共有ページ152に記憶されるNoEOIRequiredフラグをクリアすることができる。NoEOIRequiredフラグをクリアすることは、ゲストOS108に対して、ゲストOS108がEOIをハイパーバイザに送信すべきであることを示し、仮想CPU128が割り込みの処理を完了するとすぐにインターセプトを生成する。EOIは、送信より低いプライオリティの割り込みがI/O APIC仮想化モジュール154においてEOIを受信すると投入されるだけであるので、即時に送信されるべきである。仮想I/O APIC142をこのシナリオにおいてレイジーに更新することは、より低いプライオリティの割り込みの処理を不必要に遅延させる。動作610にて、その間、I/O APIC仮想化モジュール154が、第1の割り込みが完了するときに生成されるEOIを受信する。一実施例において、仮想I/O APIC142は、第1の割り込みに関連するISRビットをクリアすることができ、割り込みが処理を終了したことが記録される。動作612にて、その間、仮想I/O APIC142が、EOIの受信に応答して第2の割り込みを仮想化されたCPU128に投入することができる。動作614にて、その間、ハイパーバイザ112は、もはやペンディング中の割り込みが無いため、NoEOIRequiredビットを1に設定することができる。
図7は、仮想CPU128により生成されるEOIがハイパーバイザ112に直に通信されて、レイジーに更新されない別の条件を示す例示的なプロセス700を説明する。プロセス700は、動作702にて、仮想I/O APIC142における第1のプライオリティを有する第1の割り込みの受信と共に、開始される。動作704にて、第1の割り込みは、仮想化されたCPU128に投入される。動作706にて、その間、仮想I/O APIC142は、第1の割り込みより高いプライオリティを有する第2の割り込みを受信することができ、第2の割り込みは、第1の割り込みが仮想CPU128により処理されている間に受信される。動作708にて、その間、ハイパーバイザ112は、共有ページ152に記憶されるNoEOIRequiredフラグを0に設定することによりクリアすることができる。NoEOIRequiredフラグをクリアすることは、ゲストOS108に対して、ゲストOS108がEOIをハイパーバイザに送信すべきであることを示し、仮想CPU128が割り込みの処理を完了するとすぐにインターセプトを生成する。EOIは、即時に送信されるべきであるが、これは、仮想CPU128が、完了がペンディング中の2つの割り込みを有するが、共有ページ152が、EOIが1ビットで処理されたかどうかを記憶するのみであるからである。従って、EOIが各割り込みに対して仮想I/O APIC142により処理されることを確実にするために、ゲストOSは、第1の生成されたEOIをハイパーバイザ112に送信しなければならず、インターセプトを生成する。動作710にて、その間、仮想I/O APIC142は、第2のより高いプライオリティの割り込みを仮想CPU128に投入できる。仮想CPU128は、第2の割り込みを即時に処理することができ、第2の割り込みが完了するまで第1の割り込みの完了を遅延させる。動作712にて、その間、仮想CPU128は、第2の割り込みを完了するとEOIを送信することができる。このEOIは、ハイパーバイザに即時に送信することができ、インターセプトをトリガーする。これでペンディング中の割り込みは1つだけになり、それをレイジーに評価することができるので、動作714にて、その間、I/O APIC仮想化モジュール154は、NoEOIRequiredビットを1に設定することにより、受信されたEOIに応答することができる。
図8は、仮想CPU104により生成されるEOIがハイパーバイザ112に直に通信されて、レイジーに更新されない別の条件を示す例示的なプロセス800を記載する。プロセス800は、動作802にて、仮想I/O APIC142におけるレベルトリガー割り込みの受信と共に開始される。動作804にて、ハイパーバイザ112は、NoEOIRequiredビットを0に設定することができ、ゲストOS108がこのレベルトリガー割り込みに対するEOIを送信しなければならない、ことを示す。動作806にて、その間、ハイパーバイザ112内のI/O APIC仮想化モジュール154は、インターセプトを介してゲストOS108からEOIを受信することができる。次に、ハイパーバイザは、NoEOIRequiredビットを1に設定することができ、後に続くレベルトリガーのEOIをレイジーに評価することができることを示す。
(グラフィカルな割り込み表現)
図9は、例示的なエッジトリガーおよびレベルトリガーの割り込み900を示す。一実施例において、エッジトリガー割り込み902は、ハードディスクドライブ124等のハードウェアデバイスから仮想I/O APIC142等の仮想I/O APICに送信される。一実施例において、別のエッジトリガー割り込み904が、同じラインに送信され、エッジオーバーラップ906を引き起こす。仮想I/O APIC142に対してラインが一貫してアサートされるため、仮想I/O APIC142は、重なっているエッジトリガー割り込み902と904を1つのエッジトリガー割り込みとみなす。
レベルトリガー割り込み908は、割り込みが完了したという表示がハードディスクドライバ124により受信されるまでラインをアサートすることにより、ハードディスクドライブ124から仮想I/O APIC142へ通信される。
図10は、EOIにレイジー処理をすべきかどうかを決定する例示的なプロセス1000を記載する。プロセス1000は、動作1002にて、第1のプライオリティを有する第1の割り込みサービス要求の受信と共に、開始される。一実施形態において、割り込みは、仮想I/O APIC142において受信される。動作1004にて、受信された割り込みは、CPUに送信される。一実施形態において、CPUは仮想CPU128である。動作1006にて、その間、End Of Interrupt(EOI)のACKがCPUから受信される。CPUは、受信された割り込み処理が完了するとEOIを送信することができる。動作1008にて、その間、ゲストOSが、EOIをレイジーに送信すべきかどうか、または、EOIを即時に送信すべきかどうか、について決定し、ハイパーバイザにEOIのACKをインターセプトさせる。一実施形態において、EOIを即時に送信することにより、ハイパーバイザにEOIをインターセプトさせ、かつ、処理させる。動作1010にて、その間、EOIをレイジー処理すべきであると、ゲストOSは、共有メモリページに書き込みを行うことができる。動作1012にて、その間、EOIをレイジー処理すべきでないと、ゲストOSは、ハイパーバイザを呼び出して、EOIを直接送信することができる。
さらに、本明細書に記載されるあらゆる方法のあらゆる動作は、1つまたは複数のコンピューター可読媒体上に記憶される命令に基づき、プロセッサまたは他のコンピューターデバイスにより実装することができる。コンピューター可読媒体は、必要に応じてハイパーバイザ、ゲストOS、および/またはI/O APIC仮想化モジュールによりアクセス可能なあらゆる利用可能な媒体とすることができる。コンピューター可読媒体には、コンピューター可読命令、データ構造、プログラムモジュールまたは他のデータ等の情報を記憶するためのあらゆる方法または技術で実装される、揮発性および不揮発性、着脱可能および着脱不可能、の媒体が含まれる。コンピューター可読媒体には、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、DVD(digital versatile disk)もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、所望の情報を記憶するために使用可能であり、かつ、ハイパーバイザ、ゲストOS、および/またはI/O APIC仮想化モジュールによりアクセス可能な、あらゆる他の媒体、が含まれるが、これに限定されない。上記の内のあらゆるものの組み合わせも、コンピューター可読媒体の範囲内に含まれるべきである。
(結論)
主題を、構造的特徴および/または方法的動作に特有の言語において説明したが、添付の特許請求の範囲に定義される主題が必ずしも上述の特有の特徴または動作に制限されないことを理解すべきである。むしろ、上述の特有の特徴および動作を、特許請求の範囲を実装する例示的な形として開示する。

Claims (18)

  1. コンピューター実行可能命令を記憶する1つまたは複数のコンピューター可読記憶媒体であって、前記命令が、1つまたは複数のプロセッサ上で実行されると、
    ハイパーバイザ上で動作するゲストオペレーティングシステムの仮想APICが、前記ハイパーバイザから第1の割り込みサービス要求を受信すること
    前記仮想APICが、前記第1の割り込みサービス要求を前記ハイパーバイザ上で動作するゲストオペレーティングシステムを実行する仮想CPUに送信すること、
    仮想APICが、EOIを前記ハイパーバイザに即時に送信すべきかレイジーに送信することが可能かを判定することであって、前記判定することは
    前記仮想APICが、前記第1の割り込みサービス要求と同時に、第2の割り込みサービス要求を受信する場合、
    前記仮想APICが、前記第1の割り込みサービス要求を受信した後に、第3の割り込みサービス要求を受信する場合、又は、
    前記仮想APICが受信した前記第1の割り込みサービス要求が、レベルトリガー割り込みの割り込みサービス要求である場合、
    に、前記EOIを前記ハイパーバイザに即時に送信すべきと判定することと、
    前記仮想APICが、前記第1、第2又は第3の割り込みサービス要求に対するEOIのACKを、前記仮想CPUから受信することと、
    EOIを前記ハイパーバイザにレイジーに送信することができると判断した場合、前記仮想APICが、前記ハイパーバイザと共有されるメモリに前記EOIをレイジーに送信することが可能であることを示す値を書き込むこと、
    EOIを前記ハイパーバイザに即時に送信すべきと判断した場合、前記仮想APICが、前記EOIを前記ハイパーバイザに送信すること
    を含む動作を実行することを特徴とするコンピューター可読記憶媒体。
  2. メモリに書き込まれる前記値が1ビットから成ることを特徴とする請求項1に記載の1つまたは複数のコンピューター可読記憶媒体。
  3. 前記ハイパーバイザに前記EOIを送信することが、メモリマップI/Oページに書き込むことを含み、前記ハイパーバイザ内で実行するI/O APIC仮想化モジュールが前記メモリマップI/Oページへの前記書き込みをトラップすることを特徴とする請求項1に記載の1つまたは複数のコンピューター可読記憶媒体。
  4. 前記ハイパーバイザと共有される前記メモリが、ゲストオペレーティングシステムの仮想メモリのページおよびハイパーバイザの仮想メモリのページに同時にマッピングされる物理メモリのページを含むことを特徴とする請求項1に記載の1つまたは複数のコンピューター可読記憶媒体。
  5. 前記メモリに値を書き込むことは、前記EOIの処理の遅延を可能にすることを特徴とする請求項1に記載の1つまたは複数のコンピューター可読記憶媒体。
  6. 処理の基準が満たされるかどうかを決定することは、前記EOIが共有メモリからレイジー処理をされうるかどうかを示す値を読み込むことをさらに含むことを特徴とする請求項1に記載の1つまたは複数のコンピューター可読記憶媒体。
  7. 前記共有メモリは、前記ハイパーバイザと共有されて、前記ハイパーバイザは、
    前記の割り込みサービス要求の割り込みが、前記第1の割り込みのプライオリティより低いプライオリティを含んでいるとき、及び、
    前記仮想CPUが前記第1の割り込みサービス要求の割り込みを処理しているとき、
    EOIを即時に送信すべきことを前記共有メモリにおいて示すことを特徴とする請求項6に記載の1つまたは複数のコンピューター可読記憶媒体。
  8. 前記共有メモリは前記ハイパーバイザと共有されて、前記ハイパーバイザは、
    前記第2の割り込みサービス要求の割り込みが、前記第1の割り込みのプライオリティより高いプライオリティを含んでいるとき、および、
    前記仮想CPUが前記第2の割り込みサービス要求の割り込みを優先的に処理して、前記第1の割り込みの処理を遅延するとき、
    EOIを即時送信すべきことを前記共有メモリにおいて示すことを特徴とする請求項6に記載の1つまたは複数のコンピューター可読記憶媒体。
  9. ハイパーバイザ上で動作するゲストオペレーティングシステムの仮想APICが割り込みサービス要求を受信するステップと、
    前記仮想APICが、前記第1の割り込みサービス要求を前記ハイパーバイザ上で動作するゲストオペレーティングシステムを実行する仮想CPUに送信するステップと、
    前記仮想APICが、EOIを前記ハイパーバイザに即時に送信すべきかレイジー処理をすることが可能かどうかを判定するステップであって、
    仮想APICが、前記EOIを前記ハイパーバイザに即時に送信すべきかレイジーに送信することが可能かを判定することであって、前記判定することは、
    前記仮想APICが、前記第1の割り込みサービス要求と同時に、第2の割り込みサービス要求を前記ハイパーバイザから受信する場合、
    前記仮想APICが、前記第1の割り込みサービス要求を受信した後に、第3の割り込みサービス要求を受信する場合、又は、
    前記仮想APICが受信した前記第1の割り込みサービス要求が、レベルトリガー割り込みの割り込みサービス要求である場合、
    に、前記EOIを前記ハイパーバイザに即時に送信すべきと判定することと、
    前記仮想APICが、前記第1、第2又は第3の割り込みサービス要求に対するEOIのACKを、前記仮想CPUから受信する、ステップと、
    前記仮想APICが、前記第1、第2又は第3の割り込みサービス要求に対するEOIのACKを、前記仮想CPUから受信するステップと、前記仮想APICがEOIのACKにレイジー処理をすることできると判断したとき、前記ゲストオペレーティングシステムと共有されるメモリに前記EOIをレイジーに処理することが可能であることを示す値を設定して、前記ゲストオペレーティングシステムがEOIにレイジー処理をすることができることを示すステップと、
    前記仮想APIC前記EOIを即時に送信すべきと判断したとき、前記ゲストOSとハイパーバイザとの間で共有されるメモリに前記EOIを即時に送信すべきことを示す値を設定して、前記ゲストオペレーティングシステムが前記EOIを即時に送信すべきことを示すステップと
    を備えたことを特徴とする方法。
  10. 前記ゲストオペレーティングシステムは、
    前記第2の割り込みが、前記第1の割り込みのプライオリティより低いプライオリティを含んでいるとき、及び、
    前記仮想CPUが前記第1の割り込みを処理しているとき、
    EOIを即時に送信するよう構成されることを特徴とする請求項に記載の方法。
  11. 前記ゲストオペレーティングシステムは、
    前記第2の割り込みが、前記第1の割り込みのプライオリティより高いプライオリティを含んでいるとき、及び、
    前記仮想CPUが前記第2の割り込みを優先的に処理して前記第1の割り込みの処理を遅延するとき、
    EOIを即時に送信するよう構成されることを特徴とする請求項に記載の方法。
  12. 前記ゲストオペレーティングシステムは、前記割り込みが単に処理されているだけの割り込みであるとき、EOIのACKにレイジー処理をすることができることを特徴とする請求項9に記載の方法。
  13. ハイパーバイザが、前記ゲストオペレーティングシステムからEOIを直接受信するステップをさらに含むことを特徴とする請求項に記載の方法。
  14. 前記ゲストオペレーティングシステムと共有されるメモリに記憶される、EOIが発生したかどうかを示す値を検索するステップであって、前記値はEOIに応答すること以外で検索される、ステップをさらに含むことを特徴とする請求項に記載の方法。
  15. メモリ・インターセプト・モジュールがメモリのページに組み込まれて、前記メモリのページは、物理APICと通信する前記仮想CPUにより使用されるメモリマップI/Oページを含むことを特徴とする請求項に記載の方法。
  16. 1つまたは複数のプロセッサと、
    前記1つまたは複数のプロセッサによりアクセス可能なメモリと、
    メモリ内に記憶されるハイパーバイザであって、前記1つまたは複数のプロセッサ上、
    割り込みを受信することと、
    EOIを前記ハイパーバイザに即時に送信すべきかレイジーに送信することが可能かどうかを判定することであって、前記判定することは、
    前記第1の割り込みと同時に、第2の割り込みを受信する場合、
    前記第1の割り込みを受信した後に、第3の割り込みを受信する場合、又は、
    前記第1の割り込みが、レベルトリガー割り込みである場合、
    に、前記EOIを前記ハイパーバイザに即時に送信すべきと判定することと、
    前記EOIを前記ハイパーバイザにレイジーに送信することができると判断した場合に前記EOIをレイジーに送信することが可能であるということを示す値を共有メモリに設定することと、
    前記EOIを前記ハイパーバイザに即時に送信すべきと判断した場合、前記割り込みの処理を完了すると前記EOIを前記ハイパーバイザに転送しなければならないことを示す値を共有メモリに設定することと、
    前記割り込みを、前記ハイパーバイザ上で動作する前記ゲストオペレーティングシステムを実行する仮想CPUに送信することと
    が実行可能なハイパーバイザと、
    メモリに記憶される前記ゲストオペレーティングシステムの仮想APICであって、前記1つまたは複数のプロセッサ上、
    前記第1、第2又は第3の割り込みが実行されたことを示す前記EOIを前記仮想CPUから受信することと、
    前記ハイパーバイザが前記EOIを前記ハイパーバイザに即時に送信すべきと判断した場合、前記EOIを前記ハイパーバイザに送信することと、
    前記ハイパーバイザが前記EOIを前記ハイパーバイザにレイジーに送信することができると判断した場合、前記EOIが発生したことを示す値を前記共有メモリに設定して、前記ハイパーバイザに、後に前記EOIに応答することを可能にすることと
    が実行可能な仮想APIC
    を備えたコンピューターシステム。
  17. 前記割り込みに対するEOIのACKを、
    前記第1の割り込みがレベルトリガー割り込みでなく、単にアクティブな割り込みであるとき、レイジーに評価することができることを特徴とする請求項16に記載のコンピューターシステム。
  18. 前記第1、第2又は第3の割り込みは、自己割り込みであり、前記ハイパーバイザは、前記自己割り込みを前記仮想CPUに関連する仮想ローカルAPICに通信することを特徴とする請求項16に記載のコンピューターシステム。
JP2011516674A 2008-06-27 2009-06-25 仮想化環境における割り込みメッセージ終了のレイジー処理 Active JP5180373B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/163,891 US8032680B2 (en) 2008-06-27 2008-06-27 Lazy handling of end of interrupt messages in a virtualized environment
US12/163,891 2008-06-27
PCT/US2009/048707 WO2009158528A2 (en) 2008-06-27 2009-06-25 Lazy handling of end of interrupt messages in a virtualized environment

Publications (3)

Publication Number Publication Date
JP2011526390A JP2011526390A (ja) 2011-10-06
JP2011526390A5 JP2011526390A5 (ja) 2012-03-22
JP5180373B2 true JP5180373B2 (ja) 2013-04-10

Family

ID=41445306

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011516674A Active JP5180373B2 (ja) 2008-06-27 2009-06-25 仮想化環境における割り込みメッセージ終了のレイジー処理

Country Status (6)

Country Link
US (2) US8032680B2 (ja)
EP (1) EP2316069B1 (ja)
JP (1) JP5180373B2 (ja)
CN (1) CN102067083B (ja)
TW (1) TWI442322B (ja)
WO (1) WO2009158528A2 (ja)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8984199B2 (en) * 2003-07-31 2015-03-17 Intel Corporation Inter-processor interrupts
US8032680B2 (en) 2008-06-27 2011-10-04 Microsoft Corporation Lazy handling of end of interrupt messages in a virtualized environment
JP5169731B2 (ja) * 2008-10-24 2013-03-27 富士通セミコンダクター株式会社 マルチプロセッサシステムlsi
US8132168B2 (en) * 2008-12-23 2012-03-06 Citrix Systems, Inc. Systems and methods for optimizing a process of determining a location of data identified by a virtual hard drive address
US9424211B2 (en) * 2008-12-31 2016-08-23 Intel Corporation Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
US8566492B2 (en) * 2009-12-31 2013-10-22 Intel Corporation Posting interrupts to virtual processors
US8549182B2 (en) 2010-06-23 2013-10-01 International Business Machines Corporation Store/store block instructions for communicating with adapters
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8745292B2 (en) 2010-06-23 2014-06-03 International Business Machines Corporation System and method for routing I/O expansion requests and responses in a PCIE architecture
US8504754B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Identification of types of sources of adapter interruptions
US8417911B2 (en) 2010-06-23 2013-04-09 International Business Machines Corporation Associating input/output device requests with memory associated with a logical partition
US8639858B2 (en) 2010-06-23 2014-01-28 International Business Machines Corporation Resizing address spaces concurrent to accessing the address spaces
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8656228B2 (en) 2010-06-23 2014-02-18 International Business Machines Corporation Memory error isolation and recovery in a multiprocessor computer system
US8416834B2 (en) 2010-06-23 2013-04-09 International Business Machines Corporation Spread spectrum wireless communication code for data center environments
US8918573B2 (en) 2010-06-23 2014-12-23 International Business Machines Corporation Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment
US8510599B2 (en) 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US8671287B2 (en) 2010-06-23 2014-03-11 International Business Machines Corporation Redundant power supply configuration for a data center
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8505032B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Operating system notification of actions to be taken responsive to adapter events
US8645767B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Scalable I/O adapter function level error detection, isolation, and reporting
US8468284B2 (en) 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8683108B2 (en) 2010-06-23 2014-03-25 International Business Machines Corporation Connected input/output hub management
US8478922B2 (en) 2010-06-23 2013-07-02 International Business Machines Corporation Controlling a rate at which adapter interruption requests are processed
US8650335B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US8621112B2 (en) 2010-06-23 2013-12-31 International Business Machines Corporation Discovery by operating system of information relating to adapter functions accessible to the operating system
US8677180B2 (en) 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US8650337B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8645606B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Upbound input/output expansion request and response processing in a PCIe architecture
US8566480B2 (en) 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8615622B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Non-standard I/O adapters in a standardized I/O architecture
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8612659B1 (en) * 2010-12-14 2013-12-17 Vmware, Inc. Hardware interrupt arbitration in virtualized computer systems
US8910158B2 (en) * 2011-12-14 2014-12-09 Intel Corporation Virtualizing interrupt priority and delivery
CN102799465B (zh) * 2012-06-30 2015-05-27 华为技术有限公司 分布式虚拟化***的虚拟中断管理方法及装置
US9329880B2 (en) 2013-02-13 2016-05-03 Red Hat Israel, Ltd. Counter for fast interrupt register access in hypervisors
US10331589B2 (en) * 2013-02-13 2019-06-25 Red Hat Israel, Ltd. Storing interrupt location for fast interrupt register access in hypervisors
US9069741B2 (en) * 2013-02-25 2015-06-30 Red Hat, Inc. Emulating level triggered interrupts of physical devices assigned to virtual machine
US9292331B2 (en) * 2013-03-15 2016-03-22 Bracket Computing, Inc. Expansion of services for a virtual data center guest
US9535686B2 (en) 2013-03-15 2017-01-03 International Business Machines Corporation Dynamic library replacement
US9697031B2 (en) * 2013-10-31 2017-07-04 Huawei Technologies Co., Ltd. Method for implementing inter-virtual processor interrupt by writing register data in a single write operation to a virtual register
JP6190471B2 (ja) * 2013-12-27 2017-08-30 株式会社日立製作所 パーティション実行制御装置、パーティション実行制御方法及び計算機に読み込み可能な記憶媒体
CN105095128B (zh) 2014-05-22 2020-04-03 中兴通讯股份有限公司 中断处理方法及中断控制器
US9910699B2 (en) 2014-10-28 2018-03-06 Intel Corporation Virtual processor direct interrupt delivery mechanism
KR20170032502A (ko) 2015-09-14 2017-03-23 삼성전자주식회사 스토리지 장치 및 그것의 인터럽트 발생 방법
US9747123B2 (en) * 2015-09-25 2017-08-29 Intel Corporation Technologies for multi-level virtualization
US10282327B2 (en) * 2017-01-19 2019-05-07 International Business Machines Corporation Test pending external interruption instruction
US10248595B2 (en) * 2017-08-10 2019-04-02 Infineon Technologies Ag Virtual machine monitor interrupt support for computer processing unit (CPU)
US11675611B2 (en) 2018-10-29 2023-06-13 Nutanix, Inc. Software service intervention in a computing system
CN114356812B (zh) * 2021-12-31 2022-08-26 元心信息科技集团有限公司 中断处理方法、装置、电子设备及计算机可读存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367661A (en) * 1992-11-19 1994-11-22 International Business Machines Corporation Technique for controlling channel operations in a host computer by updating signals defining a dynamically alterable channel program
US6219741B1 (en) * 1997-12-10 2001-04-17 Intel Corporation Transactions supporting interrupt destination redirection and level triggered interrupt semantics
US6470408B1 (en) * 1999-04-14 2002-10-22 Hewlett-Packard Company Apparatus and method for delivering interrupts via an APIC bus to IA-32 processors
US6279046B1 (en) * 1999-05-19 2001-08-21 International Business Machines Corporation Event-driven communications interface for logically-partitioned computer
US6766398B2 (en) * 2001-04-17 2004-07-20 International Business Machines Corporation Method for processing PCI interrupt signals in a logically partitioned guest operating system
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
US7000051B2 (en) * 2003-03-31 2006-02-14 International Business Machines Corporation Apparatus and method for virtualizing interrupts in a logically partitioned computer system
US7281075B2 (en) * 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
US7784060B2 (en) * 2003-11-06 2010-08-24 Intel Corporation Efficient virtual machine communication via virtual machine queues
US20050228921A1 (en) * 2004-03-31 2005-10-13 Prashant Sethi Sharing of interrupts between operating entities
JP2005309553A (ja) * 2004-04-19 2005-11-04 Hitachi Ltd 計算機
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
US7707341B1 (en) * 2004-05-11 2010-04-27 Advanced Micro Devices, Inc. Virtualizing an interrupt controller
US7143223B2 (en) * 2004-10-14 2006-11-28 International Business Machines Corporation Method, system and program product for emulating an interrupt architecture within a data processing system
CN100365604C (zh) * 2005-12-02 2008-01-30 北京中星微电子有限公司 一种中断控制处理装置和方法
US8286162B2 (en) * 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor
US8176485B2 (en) * 2006-05-15 2012-05-08 Microsoft Corporation Launching hypervisor under running operating system
US7873770B2 (en) * 2006-11-13 2011-01-18 Globalfoundries Inc. Filtering and remapping interrupts
US7533207B2 (en) * 2006-12-06 2009-05-12 Microsoft Corporation Optimized interrupt delivery in a virtualized environment
US7853744B2 (en) * 2007-05-23 2010-12-14 Vmware, Inc. Handling interrupts when virtual machines have direct access to a hardware device
US8032680B2 (en) 2008-06-27 2011-10-04 Microsoft Corporation Lazy handling of end of interrupt messages in a virtualized environment

Also Published As

Publication number Publication date
EP2316069B1 (en) 2018-02-14
EP2316069A4 (en) 2012-06-13
TWI442322B (zh) 2014-06-21
WO2009158528A2 (en) 2009-12-30
CN102067083B (zh) 2013-12-04
CN102067083A (zh) 2011-05-18
TW201003526A (en) 2010-01-16
JP2011526390A (ja) 2011-10-06
US8032680B2 (en) 2011-10-04
US20090328035A1 (en) 2009-12-31
EP2316069A2 (en) 2011-05-04
US8103815B2 (en) 2012-01-24
WO2009158528A3 (en) 2010-03-25
US20110307641A1 (en) 2011-12-15

Similar Documents

Publication Publication Date Title
JP5180373B2 (ja) 仮想化環境における割り込みメッセージ終了のレイジー処理
US10073711B2 (en) Virtual machine monitor configured to support latency sensitive virtual machines
CN107273199B (zh) 用于管理虚拟化环境中的中断的体系结构和方法
US20180121366A1 (en) Read/write request processing method and apparatus
US9110741B2 (en) Warning track interruption facility
US8544010B2 (en) Providing notification to speculatively waking up target virtual machine for an I/O event using multiple virtual machines and processors
US9098358B2 (en) Use of a warning track interruption facility by a program
US11435958B2 (en) Shared memory mechanism to support fast transport of SQ/CQ pair communication between SSD device driver in virtualization environment and physical SSD
US20130132620A1 (en) Usb redirection for write streams
WO2015062199A1 (zh) 一种虚拟处理器之间的中断的实现方法、相关装置和***
US10241829B2 (en) Information processing device, information processing method, recording medium, calculation processing device, calculation processing method
US9098431B2 (en) USB redirection for interrupt transactions
US10545697B1 (en) Reverse order request queueing by para-virtual device drivers
US20220365729A1 (en) Shared memory mechanism to support fast transport of sq/cq pair communication between ssd device driver in virtualization environment and physical ssd
EP3853724B1 (en) I/o completion polling for low latency storage device
US20230033583A1 (en) Primary input-output queue serving host and guest operating systems concurrently
KR102160414B1 (ko) 하위 호환성을 위한 레거시 버스 동작 시뮬레이션
US20200218459A1 (en) Memory-mapped storage i/o

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120202

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120202

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20120202

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20120224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120807

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121107

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130110

R150 Certificate of patent or registration of utility model

Ref document number: 5180373

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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