(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-07-26
(54)【発明の名称】システム及び割り込み処理方法
(51)【国際特許分類】
G06F 9/48 20060101AFI20230719BHJP
G06F 9/455 20180101ALI20230719BHJP
【FI】
G06F9/48 110Z
G06F9/455 150
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022580544
(86)(22)【出願日】2021-06-24
(85)【翻訳文提出日】2023-01-31
(86)【国際出願番号】 CN2021102011
(87)【国際公開番号】W WO2022001808
(87)【国際公開日】2022-01-06
(31)【優先権主張番号】202010604993.9
(32)【優先日】2020-06-29
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ワン、ハイビン
(72)【発明者】
【氏名】ユ、ゼンフイ
(72)【発明者】
【氏名】マ、ジアン
(57)【要約】
本願の実施形態は、コンピューティングデバイスを開示し、コンピューティングデバイスの分野に適用される。本願において、ホストマシンによって取得される仮想割り込みが物理層の物理割り込みにマッピングされ、物理割り込みに対応する仮想割り込み識別子が物理層を用いることによって仮想プロセッサに転送される。ハードウェア層が仮想割り込み識別子を仮想プロセッサに透過的に伝送するとき、仮想プロセッサは終了する必要がない。これは、ソフトウェアが仮想割り込みルーティングを実装するときに、仮想プロセッサの終了に起因する遅延を減少させる。
【特許請求の範囲】
【請求項1】
コンピューティングデバイスであって、前記コンピューティングデバイスは、ハードウェア層と、前記ハードウェア層上で動作するホストマシンとを備え、
前記ホストマシンは、
仮想割り込みを取得することと、
前記仮想割り込みに基づいて、対応する物理割り込み識別子を取得し、前記物理割り込み識別子を前記ハードウェア層に転送することと
を行うように構成されており、
前記ハードウェア層は、
前記物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得することであって、前記仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、前記仮想割り込み識別子及び前記物理割り込み識別子は、前記仮想プロセッサ識別子に一意に対応しており、前記仮想プロセッサ識別子は、前記ターゲット仮想プロセッサを示す、取得することと、
前記仮想割り込み識別子を前記ターゲット仮想プロセッサに転送することと
を行うように構成されている、コンピューティングデバイス。
【請求項2】
前記仮想割り込みは、前記仮想割り込み識別子に一意に対応している、請求項1に記載のコンピューティングデバイス。
【請求項3】
前記コンピューティングデバイスは、前記ハードウェア層に基づいて実装されている、物理割り込み翻訳サービス(ITS)及び物理汎用割り込みコントローラ(GIC)を備え、
前記物理ITSは、前記物理割り込み識別子に基づいて、前記対応する仮想割り込み識別子及び前記対応する仮想プロセッサ識別子を取得するように構成されており、
前記物理GICは、前記仮想割り込み識別子を前記ターゲット仮想プロセッサに転送するように構成されている、
請求項1又は2に記載のコンピューティングデバイス。
【請求項4】
前記ホストマシンは、前記仮想割り込み及び事前設定された第1マッピング関係に基づいて、前記仮想割り込みに対応する前記物理割り込み識別子を取得することであって、前記第1マッピング関係は、複数の仮想割り込みと、それぞれの仮想割り込みと物理割り込み識別子との間の対応とを示す、取得することを行うようにさらに構成されており、
前記ハードウェア層は、前記物理割り込み識別子及び事前設定された第2マッピング関係に基づいて、前記物理割り込み識別子に対応する前記仮想割り込み識別子を取得することであって、前記第2マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想割り込み識別子との間の対応とを示す、取得することを行うようにさらに構成されている、
請求項1から3のいずれか一項に記載のコンピューティングデバイス。
【請求項5】
前記ハードウェア層は、前記物理割り込み識別子及び事前設定された第3マッピング関係に基づいて、前記対応する仮想プロセッサ識別子を取得することであって、前記第3マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想プロセッサ識別子との間の対応とを示す、取得することを行うようにさらに構成されている、請求項1から4のいずれか一項に記載のコンピューティングデバイス。
【請求項6】
前記ハードウェア層は、
前記物理割り込み識別子に基づいて、物理割り込みを生成することと、
前記物理割り込みに基づいて、前記仮想割り込み識別子及び前記仮想プロセッサ識別子を取得することと
を行うようにさらに構成されている、請求項1から5のいずれか一項に記載のコンピューティングデバイス。
【請求項7】
前記仮想割り込みは、仮想デバイス識別子及び仮想割り込みベクトル識別子を備え、
前記ホストマシンは、前記仮想割り込みに基づいて、前記仮想デバイス識別子に対応する物理デバイス識別子と、前記仮想割り込みベクトル識別子に対応する物理割り込みベクトル識別子とを取得することであって、前記物理割り込み識別子は、前記物理デバイス識別子及び前記物理割り込みベクトル識別子を備える、取得することを行うようにさらに構成されている、
請求項1から6のいずれか一項に記載のコンピューティングデバイス。
【請求項8】
前記ハードウェア層は、
前記物理割り込み識別子に対応する割り込み状態情報を取得することであって、前記割り込み状態情報は、前記物理割り込み識別子に対応する前記仮想割り込み識別子が前記ターゲット仮想プロセッサに転送され得るか否かを示す、取得することと、
前記割り込み状態情報に基づいて、前記仮想割り込み識別子が前記ターゲット仮想プロセッサに転送され得ることを決定することと
を行うようにさらに構成されている、請求項1から7のいずれか一項に記載のコンピューティングデバイス。
【請求項9】
前記ホストマシンは、
仮想マシンライブマイグレーション処理において前記ハードウェア層から前記物理割り込み識別子に対応する前記割り込み状態情報を取得することであって、前記割り込み状態情報は、前記物理割り込み識別子に対応する前記仮想割り込み識別子が前記ターゲット仮想プロセッサに転送され得るか否かを示す、取得することと、
前記コンピューティングデバイス以外のコンピューティングデバイスのハードウェア層に、前記割り込み状態情報を書き込むことと
を行うようにさらに構成されている、請求項1から8のいずれか一項に記載のコンピューティングデバイス。
【請求項10】
割り込み処理方法であって、前記割り込み処理方法は、ホストマシンに適用され、前記ホストマシンは、ハードウェア層上で動作し、前記割り込み処理方法は、
仮想割り込みを取得する段階と、
前記仮想割り込みに基づいて、対応する物理割り込み識別子を取得する段階と、
前記物理割り込み識別子を前記ハードウェア層に転送する段階であって、その結果、前記ハードウェア層は、前記物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得し、前記仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、前記仮想割り込み識別子及び前記物理割り込み識別子は、前記仮想プロセッサ識別子に一意に対応し、前記仮想プロセッサ識別子は、前記ターゲット仮想プロセッサを示す、転送する段階と、
前記仮想割り込み識別子を前記ターゲット仮想プロセッサに転送する段階と
を備える、割り込み処理方法。
【請求項11】
前記仮想割り込みは、前記仮想割り込み識別子に一意に対応している、請求項10に記載の割り込み処理方法。
【請求項12】
前記仮想割り込みに基づいて、対応する物理割り込み識別子を前記取得する段階は、
前記仮想割り込み及び事前設定された第1マッピング関係に基づいて、前記仮想割り込みに対応する前記物理割り込み識別子を取得する段階であって、前記第1マッピング関係は、複数の仮想割り込みと、それぞれの仮想割り込みと物理割り込み識別子との間の対応とを示す、取得する段階
を有する、請求項10又は11に記載の割り込み処理方法。
【請求項13】
前記仮想割り込みは、仮想デバイス識別子及び仮想割り込みベクトル識別子を備え、
前記仮想割り込みに基づいて、対応する物理割り込み識別子を前記取得する段階は、
前記仮想割り込みに基づいて、前記仮想デバイス識別子に対応する物理デバイス識別子と、前記仮想割り込みベクトル識別子に対応する物理割り込みベクトル識別子とを取得する段階であって、前記物理割り込み識別子は、前記物理デバイス識別子及び前記物理割り込みベクトル識別子を備える、取得する段階
を有する、請求項10から12のいずれか一項に記載の割り込み処理方法。
【請求項14】
前記割り込み処理方法は、
仮想マシンライブマイグレーション処理において前記ハードウェア層から前記物理割り込み識別子に対応する割り込み状態情報を取得する段階であって、前記割り込み状態情報は、前記物理割り込み識別子に対応する前記仮想割り込み識別子が前記ターゲット仮想プロセッサに転送され得るか否かを示す、取得する段階と、
前記ホストマシンを備えるコンピューティングデバイス以外のコンピューティングデバイスのハードウェア層に、前記割り込み状態情報を書き込む段階と
をさらに備える、請求項10から13のいずれか一項に記載の割り込み処理方法。
【請求項15】
割り込み処理方法であって、前記割り込み処理方法は、コンピューティングデバイスに適用され、前記コンピューティングデバイスは、ハードウェア層と、前記ハードウェア層上で動作するホストマシンとを備え、前記割り込み処理方法は、
前記ハードウェア層が、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得する段階であって、前記物理割り込み識別子は、仮想割り込みに対応し、且つ、前記仮想割り込みに基づいて前記ホストマシンによって取得されて前記ハードウェア層に送信される物理割り込み識別子であり、前記仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、前記仮想割り込み識別子及び前記物理割り込み識別子は、前記仮想プロセッサ識別子に一意に対応しており、前記仮想プロセッサ識別子は、前記ターゲット仮想プロセッサを示す、取得する段階と、
前記仮想割り込み識別子を前記ターゲット仮想プロセッサに転送する段階と
を備える、割り込み処理方法。
【請求項16】
前記仮想割り込みは、前記仮想割り込み識別子に一意に対応している、請求項15に記載の割り込み処理方法。
【請求項17】
前記コンピューティングデバイスは、前記ハードウェア層に基づいて実装されている、物理割り込み翻訳サービス(ITS)及び物理汎用割り込みコントローラ(GIC)を備え、
前記ハードウェア層が、前記物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を前記取得する段階は、
前記物理ITSが、前記物理割り込み識別子に基づいて、前記対応する仮想割り込み識別子及び前記対応する仮想プロセッサ識別子を取得する段階
を有し、
前記仮想割り込み識別子を前記ターゲット仮想プロセッサに前記転送する段階は、
前記物理GICが、前記仮想割り込み識別子を前記ターゲット仮想プロセッサに転送する段階
を有する、
請求項15又は16に記載の割り込み処理方法。
【請求項18】
前記ハードウェア層が、前記物理割り込み識別子に基づいて、対応する仮想割り込み識別子を前記取得する段階は、
前記ハードウェア層が、前記物理割り込み識別子及び事前設定された第2マッピング関係に基づいて、前記物理割り込み識別子に対応する前記仮想割り込み識別子を取得する段階であって、前記第2マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想割り込み識別子との間の対応とを示す、取得する段階
を有する、請求項15から17のいずれか一項に記載の割り込み処理方法。
【請求項19】
前記割り込み処理方法は、
前記物理割り込み識別子及び事前設定された第3マッピング関係に基づいて、前記対応する仮想プロセッサ識別子を取得する段階であって、前記第3マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想プロセッサ識別子との間の対応とを示す、取得する段階
をさらに備える、請求項15から18のいずれか一項に記載の割り込み処理方法。
【請求項20】
前記ハードウェア層が、前記物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を前記取得する段階は、
前記ハードウェア層が、前記物理割り込み識別子に基づいて、物理割り込みを生成する段階と、
前記物理割り込みに基づいて、前記仮想割り込み識別子及び前記仮想プロセッサ識別子を取得する段階と
を有する、請求項15から19のいずれか一項に記載の割り込み処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、コンピュータ分野に関連し、特に、システム及び割り込み処理方法に関連する。
【背景技術】
【0002】
仮想化技術は、物理コンピュータのハードウェアの「仮想化(virtualization)」及び「孤立化(isolation)」を実装すべく、ホストマシン層及び仮想コンピュータ層を含む、特定のソフトウェア層を物理コンピュータに追加する。それぞれのソフトウェア層は、異なる動作モード、例えば、ユーザモード及びカーネルモード、を含む。ソフトウェア層及び動作モードの多様化は、物理コンピュータにおける幾つかの要件に対する処理段階を増加させ、これらの要件を処理する際に遅延が増加する。
【0003】
割り込み処理は、コンピューティングデバイスの重要要件である。コンピューティングデバイスの既存の割り込み処理プロセスにおいて、仮想マシンモニタ(virtual machine monitor,VMM)は、割り込み仮想化技術を用いることによって、仮想割り込みコントローラ及び仮想割り込み翻訳サービスをユーザに提供する。仮想割り込みを仮想プロセッサに転送する処理は、仮想マシンモニタのソフトウェアに基づいて制御される。具体的には、VMMは、仮想割り込みを仮想プロセッサに対応するレジスタに書き込むことによって、処理を実装し得る。しかしながら、既存の実装において、VMMは、仮想マシンの仮想CPUが物理CPUを用いるための許可を再取得すべくスケジューリングされているときにのみ、仮想割り込みを仮想CPUに対応するシステムレジスタに書き込み得る。仮想割り込みをタイムリーに書き込むことを保証すべく、VMMは、仮想マシンの終了(VM-exit)を積極的にトリガし、次の仮想マシンの登録(VM-entry)が発生したとき、仮想割り込みを仮想CPUに対応するシステムレジスタに書き込む。この場合、VMMが仮想割り込みを書き込むたびに、仮想プロセッサは、一時的に動作を停止させる。その結果として、仮想割り込みを処理する際の遅延が増加する。
【発明の概要】
【0004】
第1態様によれば、本願はコンピューティングデバイスを提供する。コンピューティングデバイスは、ハードウェア層と、ハードウェア層上で動作するホストマシンとを含み、ホストマシンは、仮想割り込みを取得するように構成されている。仮想割り込みは、仮想マシン内の仮想デバイスに有効であり得、仮想デバイスは、ソフトウェアによってシミュレートされた仮想デバイス、例えば、ソフトウェアによってシミュレートされたシリアルポート、であり得る。ホストマシン内のバックエンドドライバ(例えば、QEMU)は、仮想マシンの挙動を有効にする仮想割り込みを取得し得、仮想割り込みをトリガし得る。仮想割り込みは、仮想デバイス識別子デバイスID及び仮想割り込みベクトル識別子ベクトルIDを含み得る。割り込みリソースが初期化されるとき、仮想デバイス識別子デバイスID及び仮想割り込みベクトル識別子ベクトルIDは、仮想マシンの仮想プロセッサに割り当てられる。それぞれの仮想プロセッサは、1つの仮想デバイス識別子デバイスID及び複数の仮想割り込みベクトル識別子ベクトルIDに一意に対応する。仮想割り込みにおける仮想デバイス識別子デバイスIDは、どの仮想デバイスが仮想割り込みを有効にするかを示し得、仮想割り込みベクトル識別子ベクトルIDは、仮想デバイスによって割り当てられた複数の仮想割り込みにおける特定の仮想割り込みを示し得る。
【0005】
仮想割り込みをトリガした後、バックエンドドライバ(例えば、QEMU)は、仮想割り込みをVMMに転送し得る。それに応じて、ホストマシン内のVMMは、仮想割り込みを取得し得、仮想割り込みに基づいて、対応する物理割り込み識別子を取得し得、物理割り込み識別子をハードウェア層に転送する。ハードウェア層は、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得することであって、仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、仮想割り込み及び物理割り込み識別子は、仮想プロセッサ識別子に一意に対応しており、仮想プロセッサ識別子は、ターゲット仮想プロセッサを示す、取得することと、仮想割り込み識別子をターゲット仮想プロセッサに転送することとを行うように構成されている。
【0006】
具体的には、ハードウェア層は、物理割り込み翻訳サービス(interrupt translation service,ITS)及び物理汎用割り込みコントローラ(generic interrupt controller,GIC)を含み得る。物理ITSは物理割り込みを取得し得、物理割り込みは仮想CPUを割り込むために用いられる。物理ITSは、物理割り込みに対応する仮想CPUを決定し得、物理割り込みに対応する(特定の仮想割り込みを示し得る)仮想割り込み識別子を決定し得る。物理GICは、仮想割り込み識別子を仮想CPUに送信し得る。物理ITSは、レジスタ及び演算回路を含み得る。レジスタは、物理割り込みと仮想割り込み識別子との間の対応を格納し得(より具体的には、レジスタは、物理割り込みと仮想割り込み識別子との間の対応のベースアドレスを格納する)、物理割り込みと仮想プロセッサ識別子との間の対応を格納し得る(より具体的には、レジスタは、物理割り込みと仮想プロセッサ識別子との間の対応のベースアドレスを格納する)。演算回路は、レジスタから対応を取得し得(演算回路は、レジスタからベースアドレスを取得し得、ベースアドレスに基づいて、物理割り込みと仮想割り込み識別子との間の対応及び物理割り込みと仮想プロセッサ識別子との間の対応をレジスタから取得し得る)、受信した物理割り込み識別子に対応する特定の仮想CPUを決定し得、物理割り込み識別子に対応する仮想割り込み識別子を決定し得る。GICはARMアーキテクチャのチップ内の演算回路に基づいて実装され得、物理GICはアドバンストマイクロコントローラバスアーキテクチャ(advanced microcontroller bus architecture,AMBA)であり、システムオンチップ(SoC)の周辺デバイスはARMアーキテクチャと互換性がある。物理GICは、オンチップAMBAバスインタフェースを有する。
【0007】
ハードウェア層が仮想割り込み識別子をターゲット仮想プロセッサに透過的に伝送するとき、ハードウェア層が仮想割り込み識別子を仮想プロセッサに対応するシステムレジスタに書き込み、その後、仮想プロセッサが再び動作するときに、仮想プロセッサがシステムレジスタから仮想割り込み識別子を取得することが必要ない。代わりに、仮想割り込み識別子がターゲット仮想プロセッサに直接転送される(具体的には、仮想割り込み識別子が、仮想プロセッサに対応し、且つ、物理メモリ内にあるインタフェースに書き込まれ得、仮想プロセッサは、インタフェースに基づいて、仮想割り込み識別子を取得し得る)。したがって、ターゲット仮想プロセッサは終了する必要がない。これは、ソフトウェアが仮想割り込みルーティングを実装するときに、仮想プロセッサの終了に起因する遅延を減少させる。
【0008】
任意の実装において、仮想割り込みは、仮想割り込み識別子に一意に対応している。
【0009】
任意の実装において、コンピューティングデバイスは、ハードウェア層に基づいて実装されている、物理割り込み翻訳サービスITS及び物理汎用割り込みコントローラGICを含む。
【0010】
物理ITSは、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得するように構成されている。
【0011】
物理GICは、仮想割り込み識別子をターゲット仮想プロセッサに転送するように構成されている。
【0012】
任意の実装において、ホストマシンは、仮想割り込み及び事前設定された第1マッピング関係に基づいて、仮想割り込みに対応する物理割り込み識別子を取得することであって、第1マッピング関係は、複数の仮想割り込みと、それぞれの仮想割り込みと物理割り込み識別子との間の対応とを示す、取得することを行うようにさらに構成されている。例えば、第1マッピング関係は、N個の仮想割り込み及びN個の物理割り込み識別子を含み得る。N個の仮想割り込みはN個の物理割り込み識別子に一対一で対応し、N個の仮想割り込みのそれぞれは1個の物理割り込み識別子に対応し、N個の物理割り込み識別子のそれぞれは1個の仮想割り込みに対応する。
【0013】
ハードウェア層は、物理割り込み識別子及び事前設定された第2マッピング関係に基づいて、物理割り込みに対応する仮想割り込み識別子を取得することであって、第2マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想割り込み識別子との間の対応とを示す、取得することを行うようにさらに構成されている。例えば、第2マッピング関係は、N個の物理割り込み識別子及びN個の仮想割り込み識別子を含み得る。N個の物理割り込み識別子はN個の仮想割り込み識別子に一対一で対応し、N個の物理割り込み識別子のそれぞれは1個の仮想割り込み識別子に対応し、N個の仮想割り込み識別子のそれぞれは1個の物理割り込み識別子に対応する。
【0014】
任意の実装において、ハードウェア層は、物理割り込み識別子及び事前設定された第3マッピング関係に基づいて、対応する仮想プロセッサ識別子を取得することであって、第3マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想プロセッサ識別子との間の対応とを示す、取得することを行うようにさらに構成されている。例えば、第3マッピング関係は、N個の物理割り込み識別子及びN個の仮想プロセッサ識別子を含み得、N個の物理割り込み識別子のそれぞれは1個の仮想プロセッサ識別子に対応し、N個の仮想プロセッサ識別子のそれぞれは1又は複数個の物理割り込み識別子に対応する。
【0015】
ハードウェア層を用いることによってVMMにより取得された仮想割り込みを対応する仮想プロセッサに透過的に伝送し、仮想プロセッサが正しい仮想割り込み識別子を受信し得ることを保証すべく、新しいマッピング関係(以下では、第1マッピング関係と称され得る)がVMM上に事前設定される必要があり、新しいマッピング関係(以下では、第2マッピング関係及び第3マッピング関係と称され得る)がハードウェア層上に適応的に構成される。VMM上に構成されるマッピング関係及びハードウェア層上に構成されるマッピング関係が相互に構成され得、その結果、VMMは、第1マッピング関係に基づいて、取得した仮想割り込み(仮想デバイス識別子デバイスID及び仮想割り込みベクトル識別子ベクトルIDを含む)を、ハードウェア層(例えば、物理ITS)によって識別され得る物理割り込み識別子(例えば、物理デバイス識別子デバイスID及び物理割り込みベクトル識別子ベクトルIDを含む)に変換し得る。加えて、ハードウェア層は、事前設定された第2マッピング関係に基づいて物理割り込み識別子に対応する仮想割り込み識別子を決定し得、事前設定された第3マッピング関係に基づいて物理割り込み識別子に対応する仮想プロセッサ識別子を決定し得る。仮想プロセッサ識別子は、ターゲット仮想プロセッサに一意に対応する。
【0016】
仮想プロセッサが正しい仮想割り込み識別子を受信し得ることを保証すべく、事前設定された第2マッピング関係に基づいてハードウェア層によって決定された仮想割り込み識別子は、ソフトウェアを介して実装された仮想割り込み転送においてVMMにより決定された仮想割り込みに対応する仮想割り込み識別子と一致している必要がある。加えて、事前設定された第3マッピング関係に基づいてハードウェア層によって決定された仮想プロセッサ識別子は、ソフトウェアを介して実装された仮想割り込み転送においてVMMにより決定された仮想割り込みに対応する仮想プロセッサ識別子と一致している必要がある。
【0017】
任意の実装において、ハードウェア層は、物理割り込み識別子に基づいて、物理割り込みを生成することと、物理割り込みに基づいて、仮想割り込み識別子及び仮想プロセッサ識別子を取得することとを行うようにさらに構成されている。
【0018】
一実装において、ホストマシンは、物理割り込み識別子を保持する割り込み生成要求をハードウェア層上の物理ITSに転送し得、物理ITSは、物理割り込み識別子を保持する割り込み生成要求に基づいて対応する物理割り込みを生成し得る。
【0019】
他の任意の実装において、ホストマシンは、物理割り込み識別子をハードウェア層に位置するターゲットレジスタに書き込み得、その結果、ターゲットレジスタは、物理割り込みを生成する。
【0020】
本願の本実施形態において、ホストマシンは、物理割り込み識別子をハードウェア層に位置するターゲットレジスタに書き込み得る。ターゲットレジスタはソフトウェアを介して物理割り込みを生成する機能を有し、物理ITSはターゲットレジスタから物理割り込みを取得し得る。
【0021】
任意の実装において、仮想割り込みは、仮想デバイス識別子及び仮想割り込みベクトル識別子を含む。
【0022】
ホストマシンは、仮想割り込みに基づいて、仮想デバイス識別子に対応する物理デバイス識別子と、仮想割り込みベクトル識別子に対応する物理割り込みベクトル識別子とを取得することを行うようにさらに構成されている。物理割り込み識別子は、物理デバイス識別子及び物理割り込みベクトル識別子を含む。
【0023】
任意の実装において、ハードウェア層は、物理割り込み識別子に対応する割り込み状態情報を取得することであって、割り込み状態情報は、物理割り込み識別子に対応する仮想割り込み識別子が仮想プロセッサに転送され得るか否かを示す、取得することを行うようにさらに構成されている。具体的には、割り込み状態情報は、割り込み保留状態、割り込み優先状態、及び、割り込み有効状態のうちの少なくとも1つを含み得る。ハードウェア層は、割り込み状態情報に基づいて、仮想割り込み識別子が仮想プロセッサに転送され得ることを決定することを行うようにさらに構成されている。
【0024】
割り込み保留情報は、仮想割り込みが保留/アクティブ状態にあることを示し得、割り込み優先状態は、全ての処理されるべき仮想割り込みにおける現在の仮想割り込みの優先度を示し得、割り込み有効状態は、割り込みがプロセッサに転送され得るか否かを示し得る。具体的には、物理割り込み識別子が有効状態にあり、且つ、優先状態及び保留状態が条件を満たす場合、物理割り込み識別子に対応する仮想割り込み識別子が仮想プロセッサに転送され得る。
【0025】
任意の実装において、ホストマシンは、仮想マシンライブマイグレーション処理においてハードウェア層から物理割り込み識別子に対応する割り込み状態情報を取得することであって、割り込み状態情報は、物理割り込み識別子に対応する仮想割り込み識別子が仮想プロセッサに転送され得るか否かを示し、割り込み状態情報は、割り込み保留状態、割り込み優先状態、及び、割り込み有効状態のうちの少なくとも1つを含み得る、取得することと、コンピューティングデバイス以外のコンピューティングデバイスのハードウェア層に、割り込み状態情報を書き込むこととを行うようにさらに構成されている。
【0026】
第2態様によれば、本願は、割り込み処理方法を提供する。方法は、ホストマシンに適用され、ホストマシンは、ハードウェア層上で動作し、方法は、仮想割り込みを取得する段階と、仮想割り込みに基づいて、対応する物理割り込み識別子を取得する段階と、物理割り込み識別子をハードウェア層に転送する段階であって、その結果、ハードウェア層は、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得し、仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、仮想割り込み及び物理割り込み識別子は、仮想プロセッサ識別子に一意に対応しており、仮想プロセッサ識別子は、ターゲット仮想プロセッサを示す、転送する段階と、仮想割り込み識別子をターゲット仮想プロセッサに転送する段階とを含む。
【0027】
任意の実装において、仮想割り込みは、仮想割り込み識別子に一意に対応している。
【0028】
任意の実装において、仮想割り込みに基づいて、対応する物理割り込み識別子を取得する段階は、仮想割り込み及び事前設定された第1マッピング関係に基づいて、仮想割り込みに対応する物理割り込み識別子を取得する段階であって、第1マッピング関係は、複数の仮想割り込みと、それぞれの仮想割り込みと物理割り込み識別子との間の対応とを示す、取得する段階を含む。
【0029】
任意の実装において、仮想割り込みは、仮想デバイス識別子及び仮想割り込みベクトル識別子を含み、仮想割り込みに基づいて、対応する物理割り込み識別子を取得する段階は、仮想割り込みに基づいて、仮想デバイス識別子に対応する物理デバイス識別子と、仮想割り込みベクトル識別子に対応する物理割り込みベクトル識別子とを取得する段階であって、物理割り込み識別子は、物理デバイス識別子及び物理割り込みベクトル識別子を含む、取得する段階を含む。
【0030】
任意の実装において、方法は、仮想マシンライブマイグレーション処理においてハードウェア層から物理割り込み識別子に対応する割り込み状態情報を取得する段階であって、割り込み状態情報は、物理割り込み識別子に対応する仮想割り込み識別子が仮想プロセッサに転送され得るか否かを示し、割り込み状態情報は、割り込み保留状態、割り込み優先状態、及び、割り込み有効状態のうちの少なくとも1つを含み得る、取得する段階と、コンピューティングデバイス以外のコンピューティングデバイスのハードウェア層に、割り込み状態情報を書き込む段階とをさらに含む。
【0031】
第3態様によれば、本願は、割り込み処理方法を提供する。方法は、コンピューティングデバイスに適用され、コンピューティングデバイスは、ハードウェア層と、ハードウェア層上で動作するホストマシンとを含み、方法は、ハードウェア層が、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得する段階であって、物理割り込み識別子は、仮想割り込みに対応し、且つ、仮想割り込みに基づいてホストマシンによって取得されてハードウェア層に送信される物理割り込み識別子であり、仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、仮想割り込み及び物理割り込み識別子は、仮想プロセッサ識別子に一意に対応しており、仮想プロセッサ識別子は、ターゲット仮想プロセッサを示す、取得する段階と、仮想割り込み識別子をターゲット仮想プロセッサに転送する段階とを含む。
【0032】
任意の実装において、仮想割り込みは、仮想割り込み識別子に一意に対応している。
【0033】
任意の実装において、コンピューティングデバイスは、ハードウェア層に基づいて実装されている、物理割り込み翻訳サービスITS及び物理汎用割り込みコントローラGICを含む。
【0034】
ハードウェア層が、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得する段階は、物理ITSが、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得する段階を含む。
【0035】
仮想割り込み識別子をターゲット仮想プロセッサに転送する段階は、物理GICが、仮想割り込み識別子をターゲット仮想プロセッサに転送する段階を含む。
【0036】
任意の実装において、ハードウェア層が、物理割り込み識別子に基づいて、対応する仮想割り込み識別子を取得する段階は、ハードウェア層が、物理割り込み識別子及び事前設定された第2マッピング関係に基づいて、物理割り込みに対応する仮想割り込み識別子を取得する段階であって、第2マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想割り込み識別子との間の対応とを示す、取得する段階を含む。
【0037】
任意の実装において、方法は、物理割り込み識別子及び事前設定された第3マッピング関係に基づいて、対応する仮想プロセッサ識別子を取得する段階であって、第3マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想プロセッサ識別子との間の対応とを示す、取得する段階をさらに含む。
【0038】
任意の実装において、ハードウェア層が、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得する段階は、ハードウェア層が、物理割り込み識別子に基づいて、物理割り込みを生成する段階と、物理割り込みに基づいて、仮想割り込み識別子及び仮想プロセッサ識別子を取得する段階とを含む。
【0039】
任意の実装において、方法は、ハードウェア層が、物理割り込み識別子に対応する割り込み状態情報を取得する段階であって、割り込み状態情報は、物理割り込み識別子に対応する仮想割り込み識別子が仮想プロセッサに転送され得るか否かを示す、取得する段階と、割り込み状態情報に基づいて、仮想割り込み識別子が仮想プロセッサに転送され得ることを決定する段階とをさらに含む。
【0040】
任意の実装において、方法は、ホストマシンが、仮想マシンライブマイグレーション処理においてハードウェア層から物理割り込み識別子に対応する割り込み状態情報を取得する段階であって、割り込み状態情報は、物理割り込み識別子に対応する仮想割り込み識別子が仮想プロセッサに転送され得るか否かを示す、取得する段階と、コンピューティングデバイス以外のコンピューティングデバイスのハードウェア層に、割り込み状態情報を書き込む段階とをさらに含む。
【0041】
第4態様によれば、本願は、割り込み処理装置を提供する。装置は、仮想割り込みを取得することと、仮想割り込みに基づいて、対応する物理割り込み識別子を取得することと、物理割り込み識別子をハードウェア層に転送することとを行うように構成されている仮想割り込み処理ユニットと、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得することであって、仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、仮想割り込み及び物理割り込み識別子は、仮想プロセッサ識別子に一意に対応しており、仮想プロセッサ識別子は、ターゲット仮想プロセッサを示す、取得することと、仮想割り込み識別子をターゲット仮想プロセッサに転送することとを行うように構成されている物理割り込み処理ユニットとを含む。
【0042】
割り込み処理装置は、コンピューティングデバイス用いられ得る。コンピューティングデバイスは、ハードウェア層と、ハードウェア層上で動作するホストマシンとを含む。割り込み処理装置は、ホストマシンで展開されている仮想割り込み処理ユニットと、ハードウェア層で展開されている物理割り込み処理ユニットとを含む。
【0043】
任意の実装において、仮想割り込みは、仮想割り込み識別子に一意に対応している。
【0044】
任意の実装において、コンピューティングデバイスは、ハードウェア層に基づいて実装されている、物理割り込み翻訳サービスITS及び物理汎用割り込みコントローラGICを含む。
【0045】
物理ITSは、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得するように構成されている。
【0046】
物理GICは、仮想割り込み識別子をターゲット仮想プロセッサに転送するように構成されている。
【0047】
任意の実装において、仮想割り込み処理ユニットは、仮想割り込み及び事前設定された第1マッピング関係に基づいて、仮想割り込みに対応する物理割り込み識別子を取得することであって、第1マッピング関係は、複数の仮想割り込みと、それぞれの仮想割り込みと物理割り込み識別子との間の対応とを示す、取得することを行うようにさらに構成されている。
【0048】
物理割り込み処理ユニットは、物理割り込み識別子及び事前設定された第2マッピング関係に基づいて、物理割り込みに対応する仮想割り込み識別子を取得することであって、第2マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想割り込み識別子との間の対応とを示す、取得することを行うようにさらに構成されている。
【0049】
任意の実装において、物理割り込み処理ユニットは、物理割り込み識別子及び事前設定された第3マッピング関係に基づいて、対応する仮想プロセッサ識別子を取得することであって、第3マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想プロセッサ識別子との間の対応とを示す、取得することを行うようにさらに構成されている。
【0050】
任意の実装において、物理割り込み処理ユニットは、物理割り込み識別子に基づいて、物理割り込みを生成することと、物理割り込みに基づいて、仮想割り込み識別子及び仮想プロセッサ識別子を取得することとを行うようにさらに構成されている。
【0051】
任意の実装において、仮想割り込みは、仮想デバイス識別子及び仮想割り込みベクトル識別子を含み、仮想割り込み処理ユニットは、仮想割り込みに基づいて、仮想デバイス識別子に対応する物理デバイス識別子と、仮想割り込みベクトル識別子に対応する物理割り込みベクトル識別子とを取得することであって、物理割り込み識別子は、物理デバイス識別子及び物理割り込みベクトル識別子を含む、取得することを行うようにさらに構成されている。
【0052】
任意の実装において、物理割り込み処理ユニットは、物理割り込み識別子に対応する割り込み状態情報を取得することであって、割り込み状態情報は、物理割り込み識別子に対応する仮想割り込み識別子が仮想プロセッサに転送され得るか否かを示す、取得することと、割り込み状態情報に基づいて、仮想割り込み識別子が仮想プロセッサに転送され得ることを決定することとを行うようにさらに構成されている。
【0053】
任意の実装において、仮想割り込み処理ユニットは、仮想マシンライブマイグレーション処理においてハードウェア層から物理割り込み識別子に対応する割り込み状態情報を取得することであって、割り込み状態情報は、物理割り込み識別子に対応する仮想割り込み識別子が仮想プロセッサに転送され得るか否かを示す、取得することと、コンピューティングデバイス以外のコンピューティングデバイスのハードウェア層に、割り込み状態情報を書き込むこととを行うようにさらに構成されている。
【0054】
第5態様によれば、本願の一実施形態は、コンピューティングデバイスを提供する。コンピューティングデバイスは、バスを介して接続されている、プロセッサ及びメモリを含む。プロセッサは、メモリ内のコードを呼び出し、第2態様又は第3態様における任意の割り込み処理方法を実装し得る。
【0055】
本願の一実施形態は、コンピューティングデバイスを提供する。コンピューティングデバイスは、ハードウェア層と、ハードウェア層上で動作するホストマシンとを含む。ホストマシンは、仮想割り込みを取得することと、仮想割り込みに基づいて、対応する物理割り込み識別子を取得することと、物理割り込み識別子をハードウェア層に転送することとを行うように構成されている。ハードウェア層は、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得することであって、仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、仮想割り込み及び物理割り込み識別子は、仮想プロセッサ識別子に一意に対応しており、仮想プロセッサ識別子は、ターゲット仮想プロセッサを示す、取得することと、仮想割り込み識別子をターゲット仮想プロセッサに転送することとを行うように構成されている。前述の方式において、ホストマシンによって取得される仮想割り込みが物理層の物理割り込みにマッピングされ、仮想割り込み識別子が物理層を用いることによって仮想プロセッサに転送される。ハードウェア層が仮想割り込み識別子を仮想プロセッサに透過的に伝送するとき、仮想プロセッサは終了する必要がない。これは、ソフトウェアが仮想割り込みルーティングを実装するときに、仮想プロセッサの終了に起因する遅延を減少させる。
【図面の簡単な説明】
【0056】
【
図1】本願の一実施形態に係るコンピューティングノードのアーキテクチャの概略図である。
【0057】
【
図2a】本願の一実施形態に係るコンピューティングデバイスの概略図である。
【0058】
【
図2b】本願の一実施形態に係る割り込み処理の概略図である。
【0059】
【
図3】本願の一実施形態に係る割り込み処理の概略図である。
【0060】
【
図4】本願の一実施形態に係る割り込み処理の概略図である。
【0061】
【
図5】本願の一実施形態に係る割り込み処理の概略図である。
【0062】
【
図6】本願の一実施形態に係る割り込み処理の概略図である。
【0063】
【
図7】本願の一実施形態に係る割り込み処理の概略図である。
【0064】
【
図8】本願の一実施形態に係る割り込み処理装置の概略図である。
【0065】
【
図9】本願の一実施形態に係るコンピューティングデバイスの概略図である。
【発明を実施するための形態】
【0066】
以下では、添付図面を参照しながら本願の実施形態を説明する。説明される実施形態は、本願の実施形態の全てではなく単に一部に過ぎないことが明らかである。当業者であれば、技術開発及び新しいシナリオの出現と共に、本願の実施形態で提供される技術的解決手段も、同様の技術的課題に適用可能されることを分かり得る。
【0067】
本願の明細書、特許請求の範囲、及び添付図面において、「第1(first)」、「第2(second)」等の用語は、類似のオブジェクトを区別することを意図しているが、必ずしも特定の順序又はシーケンスを示さない。そのような方法で称されるデータは適切な状況で交換可能であり、その結果、本明細書で説明される本願の実施形態が本明細書で示される又は説明される順序以外の順序で実装され得ることが、理解されるべきである。加えて、用語「含む(include)」、「有する(have)」、及びそれらの任意の他の変形は、非排他的包含をカバーすることを意図している。例えば、段階又はモジュールのリストを含む、処理、方法、システム、製品、又はデバイスは、明示的にリスト化されているそれらの段階又はモジュールに必ずしも限定されないが、明示的にリスト化されていない、又は、処理、方法、製品、又はデバイスに固有の他の段階又はモジュールを含み得る。本願における段階の名称又は番号は、方法の手順における段階が名称又は番号によって示される時間的/論理的シーケンスで実行される必要があることを意味しない。同一又は類似の技術的効果が実現され得るという条件で、名称又は番号が付けられた手順における段階の実行シーケンスが、実現されるべき技術的目的に基づいて変更され得る。
【0068】
加えて、本願の説明において、特に明記しない限り、「複数の(a plurality of)」は、2又は2より多いことを意味する。本願における「及び/又は」という用語は、関連するオブジェクトを説明するための連関関係のみを説明し、3つの関係が存在し得ることを表す。例えば、A及び/又はB、又は、A/Bは、以下の3つのケースを表し得る。Aのみが存在する、A及びBの両方が存在する、Bのみが存在する。
【0069】
本願の実施形態を理解することを促進すべく、
図1に示されるコンピューティングノード100は、本願の仮想化分野における幾つかの基本概念を説明するための一例として最初に用いられる。コンピューティングノード100は、本願の実施形態におけるコンピューティングデバイスであり得る。
【0070】
仮想化は、コンピューティングノードのハードウェア層でハードウェアリソース(例えば、プロセッサ及びメモリ内の記憶スペース及びネットワークリソース)を仮想化し、その後、使用のために仮想化ハードウェアリソースを複数の仮想コンピュータと共有することである。仮想コンピュータは、全てのタイプのコンピューティングデバイスでソフトウェアを介して仮想化された動作環境の総称であり、仮想コンピュータは、仮想マシン及びコンテナを含む。
【0071】
図1に示されるように、コンピューティングノード100は、ハードウェア層と、ホストマシン層と、仮想化層とを含み得、仮想化層は2つの仮想マシンを含む。ハードウェア層は、2つのプロセッサ110、メモリ120、及び物理割り込み管理ユニット160等のハードウェアを含む。他の実施形態において、より多い又はより少ないプロセッサ110及び仮想マシンが存在し得る。
【0072】
1又は複数の仮想マシン(virtual machines,VM)が、ソフトウェアを介した物理コンピュータ上のシミュレーションを通じて取得される。これらの仮想マシンは、十分に分離した環境で動作し、実際のコンピュータのように動作する。ゲストオペレーティングシステム(guest operating system,guest OS)は、仮想マシン上にインストールされ得、1又は複数のアプリケーションはゲストオペレーティングシステム上で動作する。仮想マシンはまた、アクセスネットワークリソースであり得る。仮想マシン上で動作するアプリケーションは、実際のコンピュータ上で動作するアプリケーションと同様に動作する。
【0073】
仮想プロセッサ(例えば、
図1における110-v)は、仮想化技術において共有又はスライシング方式における仮想コンピュータに提供される物理処理ユニット、例えば、仮想CPU(virtual central processing unit,vCPU)、の表現である。1つの仮想コンピュータは、仮想コンピュータを供給する1又は複数の仮想プロセッサを有し得る。複数の仮想プロセッサが存在するとき、通常、1つの仮想プロセッサがプライマリ仮想プロセッサであり、他の仮想プロセッサがセカンダリ仮想プロセッサである。
【0074】
ホストマシンオペレーティングシステム170及びVMM180がホストマシンに展開され、VMM180は、ハイパーバイザ又は他の仮想化アーキテクチャにおける他のタイプの仮想モニタ装置に相当する。VMM180はホストマシンオペレーティングシステム170に展開されてもよく、ホストマシンオペレーティングシステム170から切り離して展開されてもよい。VMM180は、VMM180上で動作する1又は複数の仮想マシンを管理することを担う。
【0075】
仮想マシン(VM)は、仮想ハードウェア層と、ゲストオペレーティングシステム190と、複数のアプリケーションとを含む。仮想ハードウェア層は、(図において示されてない)仮想メモリ及び仮想プロセッサ110-v等の仮想ハードウェアを含む。
図1に示されるように、本実施形態は2つの仮想マシンを含み、それぞれの仮想マシンは3つの仮想プロセッサ110-vを含む。仮想プロセッサ110-vは、ソフトウェア及びハードウェアを組み合わせることによって実装される。仮想プロセッサ110-vの動作は、実際には、物理コアによってソフトウェアプログラムを読み取り動作することによって実装される。例えば、1つの物理コアは、ソフトウェアプログラムを読み取り、物理コアのハードウェア支援仮想化の特定モードでソフトウェアプログラムを動作し、仮想プロセッサ110-vを実装する。したがって、仮想プロセッサ110-vは、物理コアにスケジューリングされる必要がある。
【0076】
仮想プロセッサ110-vは、物理コアにバインディングされ得る。具体的には、1つの仮想プロセッサ110-vが物理コア上で固定的に動作し、他の物理コア上で動作するようにスケジューリングされることができない。この場合、仮想プロセッサはコアバインディングである。1つの仮想プロセッサ110-vが要件に従って異なる物理コア上で動作するようにスケジューリングされ得る場合、仮想プロセッサは非コアバインディングである。
【0077】
図1に示される仮想プロセッサ110-vの総数は6であり、物理コアの数4より多い。このシナリオは、物理プロセッサの積極的な介入(povercommitment)と称される。物理プロセッサの積極的な介入の場合において、複数の仮想プロセッサは、時間スライシング方式又は他の方式で同一の物理コアを共有し得る。そのような物理コアは、非排他的コアと称される。確かに、非排他的コアはまた、積極的でない介入(non-overcommitment)の場合に発生し得る。物理コアが仮想プロセッサにバインディングされ、且つ、他の仮想プロセッサによって共有されていない場合、物理コアは排他的コアである。
【0078】
仮想マシンが独立したコンピュータに相当することが理解されるべきであり、仮想マシンによって実行される動作が仮想プロセッサによって実行されるとみなされる場合もある。しかしながら、仮想プロセッサは、ソフトウェアを介して実装される。したがって、仮想プロセッサによって実行される動作は、実際には、仮想プロセッサによって動作する物理プロセッサ又は物理コアによって実行される。本願の複数の実施形態において、現在のシナリオの技術的な表現の習慣に従うべく、前述の表現方式が選択的に用いられる。
【0079】
仮想マシンはコンテナを含み得、コンテナはアプリケーションに相当する。幾つかの他の実施形態において、仮想化層は、軽量仮想化技術、例えば、libOS190、を用いることによって実装される。1つのlibOSは、通常、1つのアプリケーションを含む。libOS全体は、単一アドレス空間イメージを形成すべくアプリケーションにリンクされている、1又は複数のライブラリを含む。本願の実施形態において、従来の仮想化技術を用いることによって実装される仮想マシンは、通常、一例として用いられる。他のタイプの仮想化アーキテクチャについては、仮想マシンの実装を参照する。
【0080】
管理層として、ホストマシンは、ハードウェアリソースを管理及び割り当て、仮想ハードウェアプラットフォームのための仮想マシンに提示し、仮想マシンのスケジューリング及び孤立化、並びに、同様のものを実装するように構成されている。幾つかの実装において、ホストマシン層は、ホストマシンオペレーティングシステムと、仮想モニタ装置、例えば、仮想マシンモニタ(virtual machine monitor,VMM)又はハイパーバイザ、を含む。仮想モニタ装置は、ホストマシンオペレーティングシステムの内部で展開されてもよく、ホストマシンオペレーティングシステムの外部で展開されてもよい。幾つかの他の実装において、「ホストマシン層(host machine layer)」は、1つの特権のある仮想マシン(例えば、仮想化アーキテクチャXen)をさらに含み得る。仮想ハードウェアプラットフォームは、仮想ハードウェアプラットフォーム上で動作する仮想コンピュータ毎に、仮想プロセッサ、仮想メモリ、仮想ディスク、及び仮想ネットワークインタフェースカード等の様々なハードウェアリソースを提供する。仮想コンピュータは、仮想コンピュータ用にホストマシン層によって準備された仮想ハードウェアプラットフォーム上で動作する。本願において、ホストマシン層は、場合によっては、略してホストマシンと称される。
【0081】
ホストマシンは、ユーザによって設定されているキャッシュ設定及びキャッシュポリシー、例えば、キャッシュサイズ、キャッシュタイプ、及びキャッシュ優先度、を解析することを含む、仮想マシン用のキャッシュを用いて仮想ディスクをシミュレートすることと、仮想マシン用のユーザ設定を満たす仮想マシンキャッシュを用いて仮想ディスクをシミュレートすることとを行うように構成されているバックエンドドライバ(例えば、オープンソースQEMU等のソフトウェア)をさらに含み得、フロントエンドドライバによって要求されている第1物理アドレスのシミュレーションを提供し、仮想化管理におけるキャッシュ属性変更に関連する管理動作、例えば、オンラインキャッシュ容量の拡大及び減少等のタスクを開始すること、を担う。バックエンドドライバは、仮想マシンの挙動を有効にする仮想割り込みを取得し得、対応する仮想割り込みをトリガし得、仮想割り込みをVMMに転送し得る。
【0082】
図1に示されるホストマシンに含まれるQEMUが単に一例に過ぎないことが、理解されるべきである。実際のアプリケーションにおいて、ホストマシンは、他のタイプのバックエンドドライバをさらに含み得る。
【0083】
仮想モニタ装置として、VMM180は、それぞれの仮想マシンVMの仮想プロセッサ110-vをスケジューリングすることを担う。例えば、カーネルベースの仮想マシン(kernel-based virtual machine,KVM)は、典型的なVMMである。
【0084】
仮想割り込み管理ユニット181は、ホストマシン層で展開される。VMM180がホストマシンオペレーティングシステム170で展開されるとき、仮想割り込み管理ユニット181は、ホストマシンオペレーティングシステム170に展開されてもよく、VMM180に展開されてもよく、ホストマシンオペレーティングシステム170に部分的に展開され、且つ、VMM180に部分的に展開されてもよい。VMM180がホストマシンオペレーティングシステム170に展開されるとき、仮想割り込み管理ユニット181は、VMM180に展開されてもよく、VMM180以外のホストマシンオペレーティングシステム170の空間に展開されてもよく、VMM180に部分的に展開され、且つ、VMM180以外のホストマシンオペレーティングシステム170の空間に部分的に展開されてもよい。
【0085】
仮想割り込み管理ユニット181は、本願の実施形態における割り込み処理方法においてホストマシンに関連する段階を実装し得る。
【0086】
ハードウェア層は、仮想化環境が動作するハードウェアプラットフォームである。ハードウェア層は、複数のタイプのハードウェアを含み得る。例えば、物理コンピュータのハードウェア層は、プロセッサ及びメモリを含み得、割り込みコントローラ、ネットワークインタフェースカード(network interface card,NIC)、入力/出力(input/output I/O)デバイス、及び同様のものをさらに含み得る。
【0087】
プロセッサ110は、物理プロセッサとも称され得る。物理コアは、プロセッサ内の最小の処理ユニットを表す。
図1に示されるように、本実施形態におけるプロセッサは、2つの物理コア、すなわち、コア0及びコア1と、複数のレジスタとを有し得る。幾つかの他の実施形態において、プロセッサはより多い又はより少ないコアを含み得、プロセッサは異なる数のコアを含み得る。複数の物理コアを有するプロセッサは、マルチコアプロセッサと称される。カーネルアーキテクチャに基づいて、プロセッサは、同一のアーキテクチャ及び複数のコアを有するプロセッサと、異なるアーキテクチャ及び複数のコアを有するプロセッサとに分類され得る。仮想プロセッサは、物理コアにバインディングされ得る。具体的には、仮想プロセッサが物理コア上で固定的に動作し、他の物理コア上で動作するようにスケジューリングされることができない。この場合、仮想プロセッサはコアバインディングである。1つの仮想プロセッサが要件に従って異なる物理コア上で動作するようにスケジューリングされ得る場合、仮想プロセッサは非コアバインディングである。
【0088】
物理割り込み管理ユニット160は、物理割り込み要求(物理割り込みとも称され得る)を収集すること、及び、これらの物理割り込み要求をそれぞれのプロセッサ110に送信すること、又は、特定のルールに従ってこれらの物理割り込み要求をそれぞれのプロセッサ上の仮想プロセッサに透過的に伝送することを担う。物理割り込み管理ユニット160が本願の割り込み処理方法においてハードウェア層に関連する幾つかの段階を実行し得ることが、留意されるべきである。
【0089】
割り込みはソフトウェア又はハードウェアによって生成されるイベントであり、割り込みは仮想割り込み及び物理割り込みを含むことが、留意されるべきである。物理割り込みは、ハードウェアによって生成されるイベントである。ハードウェアは、イベントをプロセッサに送信する。イベントを受信したとき、プロセッサは、現在のプログラムの実行を一時的に停止し、イベントに対応するプログラムを実行する。ハードウェアによって生成される割り込み要求は、ハードウェアによってトリガされてもよく、ソフトウェアによってトリガされてもよい。コンピュータ内の幾つかのハードウェア(ネットワークアダプタ、オーディオアダプタ、マウス、及びハードディスク等)は、プロセッサを介在することなく特定の作業を完了し得る。しかしながら、これらのハードウェアは、いまだにプロセッサを定期的に割り込む必要があり、その結果、プロセッサは、ハードウェアのために幾つかの特定の作業を実行する。
【0090】
仮想化環境において、VMMは、仮想マシンに、物理割り込みアーキテクチャと同様の仮想割り込みアーキテクチャを提示する必要がある。この場合、物理割り込みは仮想割り込み(仮想化割り込みとも称され得る)に対応し、仮想割り込みは、仮想マシン内のフロントエンドドライバによって有効にされ得、ホストマシン内のバックエンドドライバ(例えば、QEMU)によって取得及びトリガされる。
【0091】
割り込み要求をトリガするハードウェアとプロセッサとの間に配置される割り込みコントローラは、それぞれのハードウェアによって生成される割り込みを収集することと、特定の優先度又は他のルールに基づいて割り込みをプロセッサに送信することとを行うように主に構成されている。
【0092】
割り込みアフィニティは、割り込みと、割り込み要求を処理する処理エンティティ(物理処理エンティティ又は仮想処理エンティティ、例えば、物理コア、であり得る)との間の対応を意味する。割り込みコントローラは、割り込みアフィニティに基づいて、割り込み要求を、割り込み要求に対応する1又は複数の物理処理エンティティに送信し得る。
【0093】
図2aは、本願の一実施形態に係るコンピューティングデバイスを示す。
図2aに示されるように、コンピューティングデバイスは、ホストマシン200及びハードウェア層203を含む。
【0094】
本願の本実施形態において、仮想マシン内の仮想デバイスは、仮想割り込みを有効にし得、仮想デバイスは、ソフトウェアを介してシミュレートされた仮想デバイス、例えば、ソフトウェアを介してシミュレートされたシリアルポート、であり得る。ホストマシン内のバックエンドドライバ(例えば、QEMU)は、仮想マシンによる仮想割り込みを有効にする挙動を取得し得、仮想割り込みをトリガし得る。仮想割り込みは、仮想デバイス識別子デバイスID及び仮想割り込みベクトル識別子ベクトルIDを含み得る。割り込みリソースが初期化されるとき、仮想デバイス識別子デバイスID及び仮想割り込みベクトル識別子ベクトルIDは、仮想マシンの仮想プロセッサに割り当てられる。それぞれの仮想プロセッサは、1つの仮想デバイス識別子デバイスID及び複数の仮想割り込みベクトル識別子ベクトルIDに一意に対応する。仮想割り込みにおける仮想デバイス識別子デバイスIDは、どの仮想デバイスが仮想割り込みを有効にするかを示し得、仮想割り込みベクトル識別子ベクトルIDは、仮想デバイスによって割り当てられた複数の仮想割り込みにおける特定の仮想割り込みを示し得る。
【0095】
仮想割り込みをトリガした後、バックエンドドライバ(例えば、QEMU)は、仮想割り込みをVMMに転送し得る。それに応じて、ホストマシン200内のVMMは、仮想割り込みを取得し得る。
【0096】
本願の本実施形態において、ホストマシン内のVMMは、仮想割り込みを取得し得、仮想割り込みに基づいて対応する物理割り込み識別子を取得し得、物理割り込み識別子をハードウェア層203に転送し得る。詳細について、より詳細を示す
図2bを参照する。
【0097】
ハードウェア層を用いることによって、VMMにより取得された仮想割り込みを対応する仮想プロセッサに透過的に伝送すべく、仮想割り込みが、ハードウェア層によって識別及び処理され得る物理割り込みに変換される必要がある。
【0098】
具体的には、ハードウェア層は、物理割り込み翻訳サービス(interrupt translation service,ITS)及び物理汎用割り込みコントローラ(generic interrupt controller,GIC)を含み得る。物理ITSは物理割り込みを取得し得、物理割り込みは仮想CPUを割り込むために用いられる。物理ITSは、物理割り込みに対応する仮想CPUを決定し得、物理割り込みに対応する(特定の仮想割り込みを示す)仮想割り込み識別子を決定し得る。物理GICは、仮想割り込み識別子を仮想CPUに送信し得る。
【0099】
以下では、VMMが、仮想割り込みを、ハードウェア層によって識別及び処理され得る物理割り込みにどのように変換するかを説明する。これは、仮想プロセッサが正しい仮想割り込み識別子を受信し得ることを保証し得る。
【0100】
ソフトウェアを介して実装された仮想割り込み転送処理の観点から、仮想割り込み(仮想デバイス識別子デバイスID及び仮想割り込みベクトル識別子ベクトルIDを含む)を取得した後に、VMMは、物理ITSに基づいて、仮想割り込みに対応する仮想割り込み識別子及び仮想プロセッサ識別子を決定し得る。本明細書の仮想割り込み識別子は、仮想デバイス識別子デバイスID及び仮想割り込みベクトル識別子ベクトルIDとは異なる場合があることが、留意されるべきである。ARMアーキテクチャ規格において規定されているGICv4が一例として用いられ、仮想割り込み識別子がvINTIDである。仮想プロセッサ識別子は、ターゲット仮想プロセッサを一意に示す。
【0101】
ハードウェア層を用いることによってVMMにより取得された仮想割り込みを対応する仮想プロセッサに透過的に伝送し、仮想プロセッサが正しい仮想割り込み識別子を受信し得ることを保証すべく、新しいマッピング関係(以下では、第1マッピング関係と称され得る)がVMM上に事前設定される必要があり、新しいマッピング関係(以下では、第2マッピング関係及び第3マッピング関係と称され得る)がハードウェア層上に適応的に構成される。VMM上に構成されるマッピング関係及びハードウェア層上に構成されるマッピング関係が相互に構成され得、その結果、VMMは、第1マッピング関係に基づいて、取得した仮想割り込み(仮想デバイス識別子デバイスID及び仮想割り込みベクトル識別子ベクトルIDを含む)を、ハードウェア層(例えば、物理ITS)によって識別され得る物理割り込み識別子(例えば、物理デバイス識別子デバイスID及び物理割り込みベクトル識別子ベクトルIDを含む)に変換し得る。加えて、ハードウェア層は、事前設定された第2マッピング関係に基づいて物理割り込み識別子に対応する仮想割り込み識別子を決定し得、事前設定された第3マッピング関係に基づいて物理割り込み識別子に対応する仮想プロセッサ識別子を決定し得る。仮想プロセッサ識別子は、ターゲット仮想プロセッサに一意に対応する。
【0102】
仮想プロセッサが正しい仮想割り込み識別子を受信し得ることを保証すべく、事前設定された第2マッピング関係に基づいてハードウェア層によって決定された仮想割り込み識別子は、ソフトウェアを介して実装された仮想割り込み転送においてVMMにより決定された仮想割り込みに対応する仮想割り込み識別子と一致している必要がある。加えて、事前設定された第3マッピング関係に基づいてハードウェア層によって決定された仮想プロセッサ識別子は、ソフトウェアを介して実装された仮想割り込み転送においてVMMにより決定された仮想割り込みに対応する仮想プロセッサ識別子と一致している必要がある。具体的には、仮想割り込み転送がソフトウェアを介して実装されるとき、VMMは、ハードウェア層を用いることによって、VMMにより取得された仮想割り込みを対応する仮想プロセッサに透過的に伝送する解決手段において、A(仮想割り込み)に基づいてB(仮想割り込み識別子)及びC(仮想プロセッサ識別子)を決定し得、VMMは、A(仮想割り込み)に基づいてD(物理割り込み識別子)を決定し得、物理層は、D(物理割り込み識別子)に基づいてB(仮想割り込み識別子)及びC(仮想プロセッサ識別子)を決定し得る。
【0103】
より具体的には、前述の処理をVMM上で実装すべく、対応する物理デバイスの抽象化が仮想デバイス毎に事前設定され得る。物理デバイスが実際には存在しない場合があるので抽象化は物理デバイスの抽象化と称され、物理デバイスによって割り当てた割り込みリソースのみがVMMに格納され、割り込みリソースは物理割り込み識別子を含み得る。本実施形態において、VMMは、仮想デバイスに対応する複数の仮想割り込みのそれぞれに対応する物理割り込み識別子を事前に格納し得る。例えば、仮想割り込みは仮想デバイス識別子デバイスID及び仮想割り込みベクトル識別子ベクトルIDを含み得、VMMは仮想デバイス識別子デバイスIDに対応する物理デバイス識別子デバイスID及び仮想割り込みベクトル識別子ベクトルIDに対応する物理割り込みベクトル識別子ベクトルIDを取得し得る。
【0104】
一実装において、VMMは、事前設定された第1マッピング関係を維持し得る。第1マッピング関係は、仮想割り込みと物理割り込み識別子との間のマッピング関係を含み得る。VMMは、第1マッピング関係に基づいて、仮想割り込みに対応する物理割り込み識別子を取得し得る。より具体的には、第1マッピング関係は、2つのテーブル(テーブル1及びテーブル2)を含み得る。テーブル1は、複数の仮想デバイス識別子デバイスID及びそれぞれの仮想デバイス識別子デバイスIDに対応するポインタを含む。VMMは、ポインタを用いることによって仮想デバイス識別子デバイスIDに対応するテーブル2を発見し得る。テーブル2は、仮想デバイス識別子デバイスIDに対応する複数の仮想割り込みベクトル識別子ベクトルID及びそれぞれの仮想割り込みベクトル識別子ベクトルIDに対応する物理割り込みベクトル識別子ベクトルIDを含み得る。前述の方式において、VMMは、仮想割り込みに対応する物理割り込み識別子を決定し得る。
【0105】
VMMが仮想割り込みに対応する物理割り込み識別子を取得した後、ホストマシンは、物理割り込み識別子をハードウェア層に転送し得る。具体的には、ホストマシンは、物理割り込み識別子をハードウェア層上の物理ITSに転送し得る。
【0106】
ハードウェア層上の物理ITSは、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得し得る。ここで、仮想割り込み識別子は、仮想割り込みを一意に示し、仮想プロセッサ識別子は、ターゲット仮想プロセッサを示す。ハードウェア層上の物理GICは、仮想プロセッサ識別子に対応する仮想割り込み識別子をターゲット仮想プロセッサに転送し得る。
【0107】
任意の実装において、ハードウェア層は、物理割り込み識別子に基づいて、物理割り込みをさらに生成し得る。
【0108】
本願の本実施形態において、ホストマシンは、物理割り込み識別子を保持する割り込み生成要求をハードウェア層にさらに転送し得、ハードウェア層は、割り込み生成要求に基づいて物理割り込みを生成し得る。
【0109】
一実装において、ホストマシンは、物理割り込み識別子を保持する割り込み生成要求をハードウェア層上の物理ITSに転送し得、物理ITSは、物理割り込み識別子を保持する割り込み生成要求に基づいて対応する物理割り込みを生成し得る。
【0110】
他の任意の実装において、ホストマシンは、物理割り込み識別子をハードウェア層に位置するターゲットレジスタに書き込み得、その結果、ターゲットレジスタは、物理割り込みを生成する。
【0111】
本願の本実施形態において、ホストマシンは、物理割り込み識別子をハードウェア層に位置するターゲットレジスタに書き込み得る。ターゲットレジスタはソフトウェアを介して物理割り込みを生成する機能を有し、物理ITSはターゲットレジスタから物理割り込みを取得し得る。
【0112】
本願の本実施形態において、ハードウェア層は、物理割り込み識別子及び事前設定された第2マッピング関係に基づいて、対応する仮想割り込み識別子を取得し得る。
【0113】
一実装において、ハードウェア層上の物理ITSは、事前設定されたマッピング関係を維持し得る。ここで、マッピング関係は、物理割り込み識別子、仮想割り込み識別子、及び仮想プロセッサ識別子の間のマッピング関係を含み得る。具体的には、ハードウェア層は、第2マッピング関係を維持し得る。ここで、第2マッピング関係は、物理割り込み識別子と仮想割り込み識別子との間のマッピング関係を含む。ハードウェア層は、第2マッピング関係に基づいて、物理割り込み識別子に対応する仮想割り込み識別子を取得し得る。ハードウェア層は、第3マッピング関係を維持し得る。ここで、第3マッピング関係は、物理割り込み識別子と仮想プロセッサ識別子との間のマッピング関係を含む。ハードウェア層は、第3マッピング関係に基づいて、物理割り込み識別子に対応する仮想プロセッサ識別子を取得し得る。ここで、仮想プロセッサ識別子は、ターゲット仮想プロセッサを示す。
【0114】
本願の本実施形態において、第2マッピング関係及び第3マッピング関係は、事前設定処理においてハードウェア層上で設定され得る。第2マッピング関係及び第3マッピング関係に基づいて、ハードウェア層は、VMMから取得された物理割り込み識別子に対応する仮想プロセッサ識別子を決定し得、物理割り込み識別子に対応する仮想割り込み識別子を決定し得る。仮想割り込み識別子(例えば、vINTID)は、仮想割り込みを一意に示し得る。ハードウェア層は、仮想割り込み識別子をターゲット仮想プロセッサに転送し得る。
【0115】
仮想割り込みは、対応するターゲット仮想プロセッサを割り込むために用いられる。割り込みルーティングの正確性を保証すべく、仮想割り込みと物理割り込み識別子とのものであり、且つ、VMMにより維持されるマッピング関係、及び、物理割り込み識別子とターゲット仮想プロセッサとのものであり、且つ、ハードウェア層により維持されるマッピング関係が、組み合わせられ得、その結果、ハードウェア層により最後に決定されるターゲット仮想プロセッサは、仮想割り込みにより割り込まれる対応するターゲット仮想プロセッサである。ルートエンドポイント(ターゲット仮想プロセッサ)の正確性を保証することに加えて、仮想割り込みの内容の正確性も保証される必要がある。したがって、物理割り込み識別子をマッピングすることによってハードウェア層により取得される仮想割り込み識別子は、仮想割り込みを一意に示す必要がある。このように、それは、ターゲット仮想プロセッサが正しい仮想割り込み識別子を受信することに相当する。仮想プロセッサの観点から、前述の方式は、VMMソフトウェアを介して仮想割り込みルーティングを実装する既存の方式と一致する。
【0116】
本願の本実施形態において、物理ITSのルーティングテーブル(前述の実施形態における第2マッピング関係及び第3マッピング関係)が、GICv4仕様において定義される。1つのチャネルがハードウェア層上の仮想割り込み用に開かれており、チャネルは、ハードウェア層からの仮想割り込みをターゲット仮想プロセッサに透過的に伝送し得る。
ハードウェア層が仮想割り込み識別子をターゲット仮想プロセッサに透過的に伝送するとき、ハードウェア層が仮想割り込み識別子を仮想プロセッサに対応するシステムレジスタに書き込み、その後、仮想プロセッサが再び動作するときに、仮想プロセッサがシステムレジスタから仮想割り込み識別子を取得することが必要ない。代わりに、仮想割り込み識別子がターゲット仮想プロセッサに直接転送される。したがって、ターゲット仮想プロセッサは、終了する必要がない。これは、ソフトウェアが仮想割り込みルーティングを実装するときに、仮想プロセッサの終了に起因する遅延を減少させる。
【0117】
一実装において、ハードウェア層は、物理割り込み識別子に対応する割り込み状態情報を取得することであって、割り込み状態情報は、物理割り込み識別子に対応する仮想割り込み識別子が仮想プロセッサに転送され得るか否かを示し、割り込み状態情報は、割り込み保留情報、割り込み優先状態、及び、割り込み有効状態のうちの少なくとも1つを含み得る、取得することと、割り込み状態情報に基づいて、仮想割り込み識別子が仮想プロセッサに転送され得ることを決定することとを行うようにさらに構成されている。割り込み保留情報は、仮想割り込みが保留/アクティブ状態にあることを示し得、割り込み優先状態は、全ての処理されるべき仮想割り込みにおける現在の仮想割り込みの優先度を示し得、割り込み有効状態は、割り込みがプロセッサに転送され得るか否かを示し得る。具体的には、物理割り込み識別子が有効状態にあり、且つ、優先状態及び保留状態が条件を満たす場合、物理割り込み識別子に対応する仮想割り込み識別子が仮想プロセッサに転送され得る。
【0118】
本願の本実施形態において、ハードウェア層上の物理汎用割り込みコントローラは、物理割り込み識別子に対応する割り込み状態情報を取得することであって、割り込み状態情報は、物理割り込み識別子に対応する仮想割り込み識別子が仮想プロセッサに転送され得るか否かを示し、割り込み状態情報は、割り込み保留情報、割り込み優先状態、及び、割り込み有効状態のうちの少なくとも1つを含む、取得することと、割り込み状態情報に基づいて、仮想割り込み識別子が仮想プロセッサに転送され得ることを決定することとを行い得る。具体的な詳細ついては、ARM又は他の規格における物理層での物理端末コントローラによって規定される関連する説明を参照する。詳細は本明細書で再び説明されない。
【0119】
本願の一実施形態は、コンピューティングデバイスを提供する。コンピューティングデバイスは、ハードウェア層と、ハードウェア層上で動作するホストマシンとを含む。ホストマシンは、仮想割り込みを取得することと、仮想割り込みに基づいて対応する物理割り込み識別子を取得することと、物理割り込み識別子をハードウェア層に転送することとを行うように構成されている。ハードウェア層は、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得することであって、仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、仮想割り込み及び物理割り込み識別子は、仮想プロセッサ識別子に一意に対応しており、仮想プロセッサ識別子は、ターゲット仮想プロセッサを示す、取得することと、仮想割り込み識別子をターゲット仮想プロセッサに転送することとを行うように構成されている。前述の方式において、ホストマシンによって取得される仮想割り込みが物理層の物理割り込みにマッピングされ、仮想割り込み識別子が物理層を用いることによって仮想プロセッサに転送される。ハードウェア層が仮想割り込み識別子を仮想プロセッサに透過的に伝送するとき、仮想プロセッサは終了する必要がない。これは、ソフトウェアが仮想割り込みルーティングを実装するときに、仮想プロセッサの終了に起因する遅延を減少させる。
【0120】
図3は、より具体的な実施形態を示す。
図3に示されるように、VMMは、シャドウマッピング2021及びシャドウデバイス2022を含み得、割り込みシステムは、シャドウ割り込みドメイン2023を含み得る。シャドウマッピング2021及びシャドウデバイス2022は、仮想マシンの仮想デバイス毎に、「シャドウオブジェクト(shadow object)」の抽象化を提供し得る。仮想マシン内のフロントエンドドライバ(例えば、VirtIOドライバ)は、複数の仮想割り込みを仮想デバイスに割り当てる。シャドウマッピング2021及びシャドウデバイス2022は、仮想デバイスのそれぞれの仮想割り込みをホスト上の1つの物理割り込みにリンクさせることを担う。仮想マシンのフロントエンドドライバが仮想割り込みを有効にするとき(言い換えれば、仮想デバイスが割り込みをトリガするとき)、仮想割り込みルーティングを調節する(言い換えれば、仮想割り込みと仮想プロセッサとの間のマッピング関係を修正する)とき、仮想割り込み設定を修正する(言い換えれば、仮想割り込みと仮想割り込み識別子との間のマッピング関係を修正する)とき等、VMMは、これらの動作を妨害し得、仮想マシン上で構成された割り込み情報(例えば、フロントエンドドライバによって仮想割り込みを有効にすることに関連する情報、仮想割り込みルーティングを調節することに関連する情報、及び、仮想割り込み設定を修正することに関連する情報を含む)を対応するシャドウマッピング2021及び対応するシャドウデバイス2022に同期させ得る。具体的には、シャドウマッピング2021は、仮想デバイスによって登録された重要情報、例えば、仮想デバイスのデバイス識別子、仮想割り込みベクトル識別子、仮想プロセッサによって処理され得る仮想割り込みの数の上限、並びに、仮想割り込み識別子及びそれぞれの仮想割り込みに対応する仮想プロセッサ等のデバイスの仮想割り込みの仮想ルーティング情報、を含み得る。
【0121】
シャドウデバイス2022は、仮想デバイス毎にホスト上の物理割り込み識別子等の物理割り込みリソースに適用され得る。
【0122】
シャドウ割り込みドメイン2023は、物理割り込み識別子を物理層の物理ITSに転送し得る。
【0123】
図3に示されるように、ハードウェア層での物理ITSは物理割り込みルーティングテーブル2041を含み得、ハードウェア層は物理汎用割り込みコントローラ2042を含み得る。物理割り込みルーティングテーブル2041は、事前設定されたマッピング関係であり得、マッピング関係は、物理割り込み識別子、仮想割り込み識別子、及び仮想プロセッサの間のマッピング関係を含み得る。具体的には、ハードウェア層は、第2マッピング関係を維持し得る。第2マッピング関係は、物理割り込みルーティングテーブル2041の一部であり得る。第2マッピング関係は、物理割り込み識別子と仮想割り込み識別子との間のマッピング関係を含む。ハードウェア層は、第2マッピング関係に基づいて、物理割り込み識別子に対応する仮想割り込み識別子を取得し得る。ハードウェア層は、第3マッピング関係を維持し得る。第3マッピング関係は、物理割り込みルーティングテーブル2041の一部であり得る。第3マッピング関係は、物理割り込み識別子と仮想プロセッサとの間のマッピング関係を含み得る。ハードウェア層は、第3マッピング関係に基づいて、物理割り込み識別子に対応する仮想プロセッサを取得し得る。
【0124】
物理汎用割り込みコントローラ2042は、物理割り込み識別子と割り込み状態情報との間の対応に基づいて、物理割り込み識別子に対応する割り込み状態情報を取得し得、割り込み状態情報に基づいて、仮想割り込み識別子が仮想プロセッサに転送され得ることを決定し得る。
【0125】
図4は、
図3より詳細を示す。
図4に示されるように、VMMは、物理割り込み識別子をハードウェア層に位置するターゲットレジスタ2043に書き込み得、その結果、ターゲットレジスタ2043は、物理割り込みを生成する。ターゲットレジスタはソフトウェアを介して物理割り込みを生成し得、ITSはターゲットレジスタから物理割り込みを取得し得る。
【0126】
前述の効果を実装すべく、VMM及びハードウェア層が事前設定される必要がある。一実装において、仮想マシン内の仮想VirtIOデバイスドライバがロード及び初期化され、仮想割り込みのソフトウェアルーティングテーブルを確立すべく、関連する動作がVMMによって妨害される。仮想マシン内の仮想VirtIOデバイスドライバは、ペリフェラルコンポーネントインターコネクト(peripheral component interconnect,PCI)規格コンフィギュレーション空間を書き込むことによって仮想デバイス機能を有効にする。この書き込み動作は、VMMによって妨害される。VMMは、プロトコルに従って、VMMを有する仮想デバイスの重要情報(仮想デバイスのデバイス識別子、仮想割り込みベクトル識別子、仮想プロセッサによって処理され得る仮想割り込みの数の上限、及び同様のもの)を登録し得る。VMMは、登録済みの仮想デバイスに1つのシャドウオブジェクトを作成し、登録済みの仮想デバイス情報に基づいてシャドウデバイスを作成し、物理ホストデバイス識別子及び物理割り込み識別子リソースを占有することを申請する。申請された物理割り込み識別子リソースが、管理のためにシャドウ割り込みドメインで登録される。VMMは、登録済みの仮想デバイスを用いることによって、ターゲット仮想割り込みルーティングデバイス、仮想割り込み識別子、及び、ターゲット仮想プロセッサ等の情報を含む、仮想デバイスのそれぞれの仮想割り込みのルーティング情報を解析し得る。シャドウオブジェクトは、仮想割り込みルーティング関係を解析し、物理割り込みルーティングデバイスのフォーマットを翻訳及び構築し、シャドウデバイスに対応する物理割り込みを用いることによりシャドウ割り込みドメインを管理することを通じて対応する仮想デバイスの物理割り込みの物理デバイス割り込みルーティングテーブルを確立する。VMMは、登録済みの仮想デバイスを用いることによって、ターゲット仮想割り込みルーティングデバイス、仮想割り込み識別子、及びターゲット仮想プロセッサ等の情報を含む、仮想デバイスのそれぞれの仮想割り込みのルーティング情報を解析する。仮想割り込みの他の属性(有効化、優先度、及びアフィニティ等)がシャドウオブジェクトを用いることによって翻訳され、シャドウデバイスの割り込み設定テーブルがシャドウ割り込みドメインを管理することを通じて構成又は修正される。
【0127】
任意の実装において、ホストマシンは、仮想マシンライブマイグレーション処理においてハードウェア層から物理割り込み識別子に対応する割り込み状態情報を取得することであって、割り込み状態情報は、割り込み保留情報、割り込み優先状態、及び、割り込み有効状態のうちの少なくとも1つを含む、取得することと、コンピューティングデバイス以外のコンピューティングデバイスのハードウェア層に、割り込み状態情報を書き込むこととをさらに行い得る。
図5は、本願の一実施形態に係るコンピューティングデバイスの一例を示す。
図5に示されるように、割り込み状態情報は、ハードウェア層及びVMMの両方によってアクセスされ得るエリア501に格納され得、その結果、ハードウェア層上の物理割り込み処理ユニット204は、割り込み状態情報を取得し得、割り込み状態情報に基づいて仮想割り込み識別子が対応する仮想プロセッサに転送される必要があるか否かを決定し得る。加えて、仮想マシンライブマイグレーション処理において、VMM201はまた、ハードウェア層から物理割り込み識別子に対応する割り込み状態情報を取得し得、コンピューティングデバイス以外の他のコンピューティングデバイスのハードウェア層に、割り込み状態情報を書き込み得る。
【0128】
以下では、
図6を参照しながら本願の一実施形態で提供されるコンピューティングデバイスを説明する。
図6に示されるように、本願の本実施形態で提供されるコンピューティングデバイスは、仮想マシンと、ホストマシンと、ハードウェア層とを含む。仮想マシン内の仮想デバイスは割り込みをトリガし得、対応するフロントエンドドライバは仮想割り込みを有効にする。ホストマシン内のバックエンドドライバは、フロントエンドドライバによる仮想割り込みを有効にする挙動を取得し得、仮想割り込みをトリガし得る。IRQFDサブシステムは、バックエンドドライバによってトリガされた仮想割り込みを受信し得、仮想割り込みをシャドウデバイスモジュールに転送し得る。シャドウデバイスモジュールは仮想割り込みの物理割り込み識別子を決定し得、シャドウ割り込みドメインは物理ITSドライバを用いることによって物理割り込み識別子をハードウェア層上の物理ITSに転送する。物理ITSは物理割り込み識別子に対応する仮想割り込み識別子及びターゲット仮想プロセッサを決定し得、物理GICは仮想割り込み識別子をターゲット仮想プロセッサVCPUに転送する。以下では、
図7を参照しながら本願の一実施形態で提供されるコンピューティングデバイスを説明する。
図7に示されるように、本願の本実施形態で提供されるコンピューティングデバイスは、仮想マシンと、ホストマシンと、ハードウェア層とを含む。ソフトウェアとハードウェアとの間の割り込み状態の一貫性を保証すべく、VMM内の仮想GICは、物理GIC内の割り込み状態情報を取得し、対応する仮想割り込みの割り込み状態情報を更新する必要がある。具体的には、
図7に示されるように、バックエンドドライバは、ステータス同期要求をトリガし得る。ここで、当該要求は、同期される必要がある仮想割り込みに関連する情報を保持する。シャドウマッピング及びシャドウオブジェクトは、仮想デバイスの仮想割り込み情報をデコードし得、仮想割り込み情報を対応する物理割り込み識別子に変換し得、シャドウ割り込みドメインは、物理割り込み識別子を物理層の物理ITSに転送する。物理GICは、物理割り込み識別子に関連する割り込み状態情報を、割り込み状態情報をホストマシンに格納するテーブル(例えば、保留テーブル)に転送し得る。さらに、状態同期システムは、物理割り込み識別子に関連する割り込み状態情報を仮想GICに転送し得、その結果、仮想GICは、仮想割り込みの割り込み状態情報を更新する。
【0129】
図8は、本願の一実施形態に係る割り込み処理装置800の構造の概略図である。コンピューティングデバイスは、ハードウェア層と、ハードウェア層上で動作するホストマシンとを含む。割り込み処理装置は、ホストマシンで展開される仮想割り込み処理ユニット801と、ハードウェア層で展開される物理割り込み処理ユニット802とを含む。
【0130】
仮想割り込み処理ユニット801は、仮想割り込みを取得することと、仮想割り込みに基づいて対応する物理割り込み識別子を取得することと、物理割り込み識別子をハードウェア層に転送することとを行うように構成されている。
【0131】
物理割り込み処理ユニット802は、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得することであって、仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、仮想割り込み及び物理割り込み識別子は、仮想プロセッサ識別子に一意に対応しており、仮想プロセッサ識別子は、ターゲット仮想プロセッサを示す、取得することと、仮想割り込み識別子をターゲット仮想プロセッサに転送することとを行うように構成されている。
【0132】
仮想割り込み処理ユニット801は、
図1に示される仮想割り込み管理ユニット181、
図2a及び
図2bに示される仮想割り込み処理ユニット202、並びに、
図3から
図7に示されるシャドウマッピング、シャドウデバイス、シャドウ割り込みドメインに相当し得る。
【0133】
物理割り込み処理ユニット802は、
図1に示される物理割り込み管理ユニット160、
図2a及び
図2bに示される物理割り込み処理ユニット204、並びに、
図3から
図7に示される物理ITS及び物理汎用割り込みコントローラGICに相当し得る。
【0134】
任意の実装において、仮想割り込みは、仮想割り込み識別子に一意に対応している。
【0135】
任意の実装において、コンピューティングデバイスは、ハードウェア層に基づいて実装されている、物理割り込み翻訳サービスITS及び物理汎用割り込みコントローラGICを含む。
【0136】
物理ITSは、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得するように構成されている。
【0137】
物理GICは、仮想割り込み識別子をターゲット仮想プロセッサに転送するように構成されている。
【0138】
任意の実装において、仮想割り込み処理ユニット801は、仮想割り込み及び事前設定された第1マッピング関係に基づいて、仮想割り込みに対応する物理割り込み識別子を取得することであって、第1マッピング関係は、複数の仮想割り込みと、それぞれの仮想割り込みと物理割り込み識別子との間の対応とを示す、取得することを行うようにさらに構成されている。
【0139】
物理割り込み処理ユニット802は、物理割り込み識別子及び事前設定された第2マッピング関係に基づいて、物理割り込みに対応する仮想割り込み識別子を取得することであって、第2マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想割り込み識別子との間の対応とを示す、取得することをようにさらに構成されている。
【0140】
任意の実装において、物理割り込み処理ユニット802は、物理割り込み識別子及び事前設定された第3マッピング関係に基づいて、対応する仮想プロセッサ識別子を取得することであって、第3マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想プロセッサ識別子との間の対応とを示す、取得することを行うようにさらに構成されている。
【0141】
任意の実装において、物理割り込み処理ユニット802は、物理割り込み識別子に基づいて、物理割り込みを生成することと、物理割り込みに基づいて、仮想割り込み識別子及び仮想プロセッサ識別子を取得することを行うようにさらに構成されている。
【0142】
任意の実装において、仮想割り込みは、仮想デバイス識別子及び仮想割り込みベクトル識別子を含む。
【0143】
仮想割り込み処理ユニット801は、仮想割り込みに基づいて、仮想デバイス識別子に対応する物理デバイス識別子と、仮想割り込みベクトル識別子に対応する物理割り込みベクトル識別子とを取得することであって、物理割り込み識別子は、物理デバイス識別子及び物理割り込みベクトル識別子を含む、取得することを行うようにさらに構成されている。
【0144】
任意の実装において、物理割り込み処理ユニット802は、物理割り込み識別子に対応する割り込み状態情報を取得することであって、割り込み状態情報は、物理割り込み識別子に対応する仮想割り込み識別子が仮想プロセッサに転送され得るか否かを示し、割り込み状態情報は、割り込み保留状態、割り込み優先状態、及び、割り込み有効状態のうちの少なくとも1つを含む、取得することと、割り込み状態情報に基づいて、仮想割り込み識別子が仮想プロセッサに転送され得ることを決定することとを行うようにさらに構成されている。
【0145】
任意の実装において、仮想割り込み処理ユニット801は、仮想マシンライブマイグレーション処理においてハードウェア層から物理割り込み識別子に対応する割り込み状態情報を取得することであって、割り込み状態情報は、物理割り込み識別子に対応する仮想割り込み識別子が仮想プロセッサに転送され得るか否かを示し、割り込み状態情報は、割り込み保留状態、割り込み優先状態、及び、割り込み有効状態のうちの少なくとも1つを含む、取得することと、コンピューティングデバイス以外のコンピューティングデバイスのハードウェア層に、割り込み状態情報を書き込むこととを行うようにさらに構成されている。
【0146】
本願は、不揮発性コンピュータ可読記憶媒体をさらに提供する。不揮発性コンピュータ可読記憶媒体は、割り込み処理方法を実行するために用いられるコンピュータ命令を含む。方法は、ホストマシンに適用され、ホストマシンは、コンピューティングデバイスに位置し、コンピューティングデバイスは、ハードウェア層を含む。不揮発性コンピュータ可読記憶媒体は、仮想割り込みを取得するために用いられる第1コンピュータ命令を含む。
【0147】
不揮発性コンピュータ可読記憶媒体は、仮想割り込みに基づいて対応する物理割り込み識別子を取得し、物理割り込み識別子をハードウェア層に転送するために用いられる第2コンピュータ命令を含む。
【0148】
一実装において、第1コンピュータ命令は、仮想割り込み及び事前設定された第1マッピング関係に基づいて、対応する物理割り込み識別子を取得するために用いられる。
【0149】
一実装において、仮想割り込みは、仮想デバイス識別子及び仮想割り込みベクトル識別子を含む。
【0150】
第1コンピュータ命令は、仮想割り込みに基づいて、仮想デバイス識別子に対応する物理デバイス識別子と、仮想割り込みベクトル識別子に対応する物理割り込みベクトル識別子とを取得するように構成されている。物理割り込み識別子は、物理デバイス識別子及び物理割り込みベクトル識別子を含む。
【0151】
一実装において、不揮発性コンピュータ可読記憶媒体は、仮想マシンライブマイグレーション処理においてハードウェア層から物理割り込み識別子に対応する割り込み状態情報を取得することであって、割り込み状態情報は、保留情報、優先度情報、及び、有効情報のうちの少なくとも1つを含む、取得することと、コンピューティングデバイス以外のコンピューティングデバイスのハードウェア層に、割り込み状態情報を書き込むこととを行うために用いられる第3コンピュータ命令をさらに含む。
【0152】
本願は、不揮発性コンピュータ可読記憶媒体をさらに提供する。不揮発性コンピュータ可読記憶媒体は、コンピュータ命令を含む。コンピュータ命令がコンピュータによって実行されるとき、前述の実施形態における割り込み処理方法が実装され得る。
【0153】
図9は、本願の一実施形態に係るコンピューティングデバイス900の概略図である。
図9に示されるように、コンピューティングデバイス900は、バスを介して接続されている、プロセッサ901及びメモリ902を含む。プロセッサ901は、メモリ902内のコードを呼び出し、前述の実施形態における割り込み処理方法を実装し得る。
【0154】
簡便且つ簡潔な説明の目的ために、前述のシステム、装置、及びユニットの詳細な作業処理については、前述の方法の実施形態における対応する処理を参照できることが、当業者によって明確に理解され得る。詳細は本明細書で再び説明されない。
【0155】
本願で提供される複数の実施形態において、開示されたシステム、装置、及び方法は、他の方式で実装され得ることが、理解されるべきである。例えば、前述の装置の実施形態は、単に例示に過ぎない。例えば、ユニットへの分割は、単に論理的機能による分割に過ぎず、実際の実装では他の分割であり得る。例えば、複数のユニット又はコンポーネントが、組み合わせられてもよいし他のシステムに統合されてもよく、幾つかの特徴が無視されてもよいし実行されなくてもよい。加えて、表示又は論じられた相互結合又は直接結合又は通信接続は、幾つかのインタフェースを通じて実装され得る。装置間又はユニット間の間接結合又は通信接続は、電子的形態、機械的形態、又は、他の形態で実装され得る。
【0156】
別個の部品として説明されたユニットは、物理的に別個であってもなくてもよく、ユニットとして表示された部品は、物理ユニットであってもなくてもよく、1カ所に位置していてもよく、複数のネットワークユニットに分散されていてもよい。ユニットのうちの一部又は全部は、実施形態の解決手段の目的を実現すべく、実際の必要性に従って選択され得る。
【0157】
加えて、本願の実施形態における機能ユニットが1つの処理ユニットに統合されてもよく、ユニットのそれぞれが物理的に孤立して存在してもよく、2又はそれより多くのユニットが1つのユニットに統合される。統合されたユニットは、ハードウェアの形態で実装されてもよく、ソフトウェア機能ユニットの形態で実装されてもよい。
【0158】
統合されたユニットがソフトウェア機能ユニットの形態で実装され、独立した製品として販売又は用いられるとき、機能はコンピュータ可読記憶媒体に格納され得る。そのような理解に基づいて、本願の技術的解決手段、本質的に、又は、従来技術に寄与する部分、又は、技術的解決手段の全部若しくは一部が、ソフトウェア製品の形態で実装され得る。コンピュータソフトウェア製品が記憶媒体に格納され、コンピュータデバイス(パーソナルコンピュータ、サーバ、又は他のネットワークデバイスであり得る)に、本願の
図2aの実施形態における方法の段階の全部又は一部を実行することを命令するための複数の命令を含む。前述の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、リードオンリメモリ(read-only memory、ROM)、ランダムアクセスメモリ(random access memory、RAM)、磁気ディスク、又は、光ディスク等の、プログラムコードを格納し得る任意の媒体を含む。
【0159】
結論として、前述の実施形態は、単に、本願の技術的解決手段を説明するために意図しているに過ぎない。本願は前述の実施形態を参照しながら詳細に説明されているが、当業者であれば、本願の実施形態の技術的解決手段の範囲から逸脱することなく、前述の実施形態で説明された技術的解決手段にさらに修正を行い得る、又は、その幾つかの技術的特徴に想到する置換を行い得ることを理解すべきである。
[その他の可能な項目]
[項目1]
コンピューティングデバイスであって、前記コンピューティングデバイスは、ハードウェア層と、前記ハードウェア層上で動作するホストマシンとを備え、
前記ホストマシンは、
仮想割り込みを取得することと、
前記仮想割り込みに基づいて、対応する物理割り込み識別子を取得し、前記物理割り込み識別子を前記ハードウェア層に転送することと
を行うように構成されており、
前記ハードウェア層は、
前記物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得することであって、前記仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、前記仮想割り込み及び前記物理割り込み識別子は、前記仮想プロセッサ識別子に一意に対応しており、前記仮想プロセッサ識別子は、前記ターゲット仮想プロセッサを示す、取得することと、
前記仮想割り込み識別子を前記ターゲット仮想プロセッサに転送することと
を行うように構成されている、コンピューティングデバイス。
[項目2]
前記仮想割り込みは、前記仮想割り込み識別子に一意に対応している、項目1に記載のコンピューティングデバイス。
[項目3]
前記コンピューティングデバイスは、前記ハードウェア層に基づいて実装されている、物理割り込み翻訳サービスITS及び物理汎用割り込みコントローラGICを備え、
前記物理ITSは、前記物理割り込み識別子に基づいて、前記対応する仮想割り込み識別子及び前記対応する仮想プロセッサ識別子を取得するように構成されており、
前記物理GICは、前記仮想割り込み識別子を前記ターゲット仮想プロセッサに転送するように構成されている、
項目1又は2に記載のコンピューティングデバイス。
[項目4]
前記ホストマシンは、前記仮想割り込み及び事前設定された第1マッピング関係に基づいて、前記仮想割り込みに対応する前記物理割り込み識別子を取得することであって、前記第1マッピング関係は、複数の仮想割り込みと、それぞれの仮想割り込みと物理割り込み識別子との間の対応とを示す、取得することを行うようにさらに構成されており、
前記ハードウェア層は、前記物理割り込み識別子及び事前設定された第2マッピング関係に基づいて、前記物理割り込みに対応する前記仮想割り込み識別子を取得することであって、前記第2マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想割り込み識別子との間の対応とを示す、取得することを行うようにさらに構成されている、
項目1から3のいずれか一項に記載のコンピューティングデバイス。
[項目5]
前記ハードウェア層は、前記物理割り込み識別子及び事前設定された第3マッピング関係に基づいて、前記対応する仮想プロセッサ識別子を取得することであって、前記第3マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想プロセッサ識別子との間の対応とを示す、取得することを行うようにさらに構成されている、項目1から4のいずれか一項に記載のコンピューティングデバイス。
[項目6]
前記ハードウェア層は、
前記物理割り込み識別子に基づいて、物理割り込みを生成することと、
前記物理割り込みに基づいて、前記仮想割り込み識別子及び前記仮想プロセッサ識別子を取得することと
を行うようにさらに構成されている、項目1から5のいずれか一項に記載のコンピューティングデバイス。
[項目7]
前記仮想割り込みは、仮想デバイス識別子及び仮想割り込みベクトル識別子を備え、
前記ホストマシンは、前記仮想割り込みに基づいて、前記仮想デバイス識別子に対応する物理デバイス識別子と、前記仮想割り込みベクトル識別子に対応する物理割り込みベクトル識別子とを取得することであって、前記物理割り込み識別子は、前記物理デバイス識別子及び前記物理割り込みベクトル識別子を備える、取得することを行うようにさらに構成されている、
項目1から6のいずれか一項に記載のコンピューティングデバイス。
[項目8]
前記ハードウェア層は、
前記物理割り込み識別子に対応する割り込み状態情報を取得することであって、前記割り込み状態情報は、前記物理割り込み識別子に対応する前記仮想割り込み識別子が前記仮想プロセッサに転送され得るか否かを示す、取得することと、
前記割り込み状態情報に基づいて、前記仮想割り込み識別子が前記仮想プロセッサに転送され得ることを決定することと
を行うようにさらに構成されている、項目1から7のいずれか一項に記載のコンピューティングデバイス。
[項目9]
前記ホストマシンは、
仮想マシンライブマイグレーション処理において前記ハードウェア層から前記物理割り込み識別子に対応する前記割り込み状態情報を取得することであって、前記割り込み状態情報は、前記物理割り込み識別子に対応する前記仮想割り込み識別子が前記仮想プロセッサに転送され得るか否かを示す、取得することと、
前記コンピューティングデバイス以外のコンピューティングデバイスのハードウェア層に、前記割り込み状態情報を書き込むことと
を行うようにさらに構成されている、項目1から8のいずれか一項に記載のコンピューティングデバイス。
[項目10]
割り込み処理方法であって、前記方法は、ホストマシンに適用され、前記ホストマシンは、ハードウェア層上で動作し、前記方法は、
仮想割り込みを取得する段階と、
前記仮想割り込みに基づいて、対応する物理割り込み識別子を取得する段階と、
前記物理割り込み識別子を前記ハードウェア層に転送する段階であって、その結果、前記ハードウェア層は、前記物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得し、前記仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、前記仮想割り込み及び前記物理割り込み識別子は、前記仮想プロセッサ識別子に一意に対応しており、前記仮想プロセッサ識別子は、前記ターゲット仮想プロセッサを示す、転送する段階と、
前記仮想割り込み識別子を前記ターゲット仮想プロセッサに転送する段階と
を備える、方法。
[項目11]
前記仮想割り込みは、前記仮想割り込み識別子に一意に対応している、項目10に記載の方法。
[項目12]
前記仮想割り込みに基づいて、対応する物理割り込み識別子を前記取得する段階は、
前記仮想割り込み及び事前設定された第1マッピング関係に基づいて、前記仮想割り込みに対応する前記物理割り込み識別子を取得する段階であって、前記第1マッピング関係は、複数の仮想割り込みと、それぞれの仮想割り込みと物理割り込み識別子との間の対応とを示す、取得する段階
を有する、項目11又は12に記載の方法。
[項目13]
前記仮想割り込みは、仮想デバイス識別子及び仮想割り込みベクトル識別子を備え、
前記仮想割り込みに基づいて、対応する物理割り込み識別子を前記取得する段階は、
前記仮想割り込みに基づいて、前記仮想デバイス識別子に対応する物理デバイス識別子と、前記仮想割り込みベクトル識別子に対応する物理割り込みベクトル識別子とを取得する段階であって、前記物理割り込み識別子は、前記物理デバイス識別子及び前記物理割り込みベクトル識別子を備える、取得する段階
を有する、項目10から12のいずれか一項に記載の方法。
[項目14]
前記方法は、
仮想マシンライブマイグレーション処理において前記ハードウェア層から前記物理割り込み識別子に対応する割り込み状態情報を取得する段階であって、前記割り込み状態情報は、前記物理割り込み識別子に対応する前記仮想割り込み識別子が前記仮想プロセッサに転送され得るか否かを示す、取得する段階と、
前記コンピューティングデバイス以外のコンピューティングデバイスのハードウェア層に、前記割り込み状態情報を書き込む段階と
をさらに備える、項目10から13のいずれか一項に記載の方法。
[項目15]
割り込み処理方法であって、前記方法は、コンピューティングデバイスに適用され、前記コンピューティングデバイスは、ハードウェア層と、前記ハードウェア層上で動作するホストマシンとを備え、前記方法は、
前記ハードウェア層が、物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得する段階であって、前記物理割り込み識別子は、仮想割り込みに対応し、且つ、前記仮想割り込みに基づいて前記ホストマシンによって取得されて前記ハードウェア層に送信される物理割り込み識別子であり、前記仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、前記仮想割り込み及び前記物理割り込み識別子は、前記仮想プロセッサ識別子に一意に対応しており、前記仮想プロセッサ識別子は、前記ターゲット仮想プロセッサを示す、取得する段階と、
前記仮想割り込み識別子を前記ターゲット仮想プロセッサに転送する段階と
を備える、方法。
[項目16]
前記仮想割り込みは、前記仮想割り込み識別子に一意に対応している、項目15に記載の方法。
[項目17]
前記コンピューティングデバイスは、前記ハードウェア層に基づいて実装されている、物理割り込み翻訳サービスITS及び物理汎用割り込みコントローラGICを備え、
前記ハードウェア層が、前記物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を前記取得する段階は、
前記物理ITSが、前記物理割り込み識別子に基づいて、前記対応する仮想割り込み識別子及び前記対応する仮想プロセッサ識別子を取得する段階
を有し、
前記仮想割り込み識別子を前記ターゲット仮想プロセッサに前記転送する段階は、
前記物理GICが、前記仮想割り込み識別子を前記ターゲット仮想プロセッサに転送する段階
を有する、項目15又は16に記載の方法。
[項目18]
前記ハードウェア層が、前記物理割り込み識別子に基づいて、対応する仮想割り込み識別子を前記取得する段階は、
前記ハードウェア層が、前記物理割り込み識別子及び事前設定された第2マッピング関係に基づいて、前記物理割り込みに対応する前記仮想割り込み識別子を取得する段階であって、前記第2マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想割り込み識別子との間の対応とを示す、取得する段階
を有する、項目15から17のいずれか一項に記載の方法。
[項目19]
前記方法は、
前記物理割り込み識別子及び事前設定された第3マッピング関係に基づいて、前記対応する仮想プロセッサ識別子を取得する段階であって、前記第3マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想プロセッサ識別子との間の対応とを示す、取得する段階
をさらに備える、項目15から18のいずれか一項に記載の方法。
[項目20]
前記ハードウェア層が、前記物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を前記取得する段階は、
前記ハードウェア層が、前記物理割り込み識別子に基づいて、物理割り込みを生成する段階と、
前記物理割り込みに基づいて、前記仮想割り込み識別子及び前記仮想プロセッサ識別子を取得する段階と
を有する、項目15から19のいずれか一項に記載の方法。
[項目21]
前記方法は、
前記ハードウェア層が、前記物理割り込み識別子に対応する割り込み状態情報を取得する段階であって、前記割り込み状態情報は、前記物理割り込み識別子に対応する前記仮想割り込み識別子が前記仮想プロセッサに転送され得るか否かを示す、取得する段階と、
前記割り込み状態情報に基づいて、前記仮想割り込み識別子が前記仮想プロセッサに転送され得ることを決定する段階と
をさらに備える、項目15から20のいずれか一項に記載の方法。
[項目22]
仮想割り込みを取得することと、前記仮想割り込みに基づいて対応する物理割り込み識別子を取得することと、前記物理割り込み識別子をハードウェア層に転送することとを行うように構成されている仮想割り込み処理ユニットと、
前記物理割り込み識別子に基づいて、対応する仮想割り込み識別子及び対応する仮想プロセッサ識別子を取得することであって、前記仮想割り込みは、ターゲット仮想プロセッサを割り込むように構成されており、前記仮想割り込み及び前記物理割り込み識別子は、前記仮想プロセッサ識別子に一意に対応しており、前記仮想プロセッサ識別子は、前記ターゲット仮想プロセッサを示す、取得することと、前記仮想割り込み識別子を前記ターゲット仮想プロセッサに転送することとを行うように構成されている物理割り込み処理ユニットと
を備える、割り込み処理装置。
[項目23]
前記仮想割り込みは、前記仮想割り込み識別子に一意に対応している、項目22に記載の装置。
[項目24]
コンピューティングデバイスは、前記ハードウェア層に基づいて実装されている、物理割り込み翻訳サービスITS及び物理汎用割り込みコントローラGICを備え、
前記物理ITSは、前記物理割り込み識別子に基づいて、前記対応する仮想割り込み識別子及び前記対応する仮想プロセッサ識別子を取得するように構成されており、
前記物理GICは、前記仮想割り込み識別子を前記ターゲット仮想プロセッサに転送するように構成されている、
項目22又は23に記載の装置。
[項目25]
前記仮想割り込み処理ユニットは、前記仮想割り込み及び事前設定された第1マッピング関係に基づいて、前記仮想割り込みに対応する前記物理割り込み識別子を取得することであって、前記第1マッピング関係は、複数の仮想割り込みと、それぞれの仮想割り込みと物理割り込み識別子との間の対応とを示す、取得することを行うようにさらに構成されており、
前記物理割り込み処理ユニットは、前記物理割り込み識別子及び事前設定された第2マッピング関係に基づいて、前記物理割り込みに対応する前記仮想割り込み識別子を取得することであって、前記第2マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想割り込み識別子との間の対応とを示す、取得することを行うようにさらに構成されている、
項目22から24のいずれか一項に記載の装置。
[項目26]
前記物理割り込み処理ユニットは、前記物理割り込み識別子及び事前設定された第3マッピング関係に基づいて、前記対応する仮想プロセッサ識別子を取得することであって、前記第3マッピング関係は、複数の物理割り込み識別子と、それぞれの物理割り込み識別子と仮想プロセッサ識別子との間の対応とを示す、取得することを行うようにさらに構成されている、項目22から25のいずれか一項に記載の装置。
[項目27]
前記物理割り込み処理ユニットは、
前記物理割り込み識別子に基づいて、物理割り込みを生成することと、
前記物理割り込みに基づいて、前記仮想割り込み識別子及び前記仮想プロセッサ識別子を取得することと
を行うようにさらに構成されている、項目22から26のいずれか一項に記載の装置。
[項目28]
前記仮想割り込みは、仮想デバイス識別子及び仮想割り込みベクトル識別子を備え、
前記仮想割り込み処理ユニットは、前記仮想割り込みに基づいて、前記仮想デバイス識別子に対応する物理デバイス識別子と、前記仮想割り込みベクトル識別子に対応する物理割り込みベクトル識別子とを取得することであって、前記物理割り込み識別子は、前記物理デバイス識別子及び前記物理割り込みベクトル識別子を備える、取得することを行うようにさらに構成されている、
項目22から27のいずれか一項に記載の装置。
[項目29]
前記物理割り込み処理ユニットは、
前記物理割り込み識別子に対応する割り込み状態情報を取得することであって、前記割り込み状態情報は、前記物理割り込み識別子に対応する前記仮想割り込み識別子が前記仮想プロセッサに転送され得るか否かを示す、取得することと、
前記割り込み状態情報に基づいて、前記仮想割り込み識別子が前記仮想プロセッサに転送され得ることを決定することと
を行うようにさらに構成されている、項目22から28のいずれか一項に記載の装置。
[項目30]
前記仮想割り込み処理ユニットは、
仮想マシンライブマイグレーション処理において前記ハードウェア層から前記物理割り込み識別子に対応する前記割り込み状態情報を取得することであって、前記割り込み状態情報は、前記物理割り込み識別子に対応する前記仮想割り込み識別子が前記仮想プロセッサに転送され得るか否かを示す、取得することと、
前記コンピューティングデバイス以外のコンピューティングデバイスのハードウェア層に、前記割り込み状態情報を書き込むことと
を行うようにさらに構成されている、項目22から29のいずれか一項に記載の装置。
[項目31]
命令を備えるコンピュータ可読媒体であって、前記命令は、処理装置の1又は複数のプロセッサによって実行されるとき、前記コンピュータ可読媒体が、項目10から21のいずれか一項に記載の方法を実行するように動作される、コンピュータ可読媒体。
【国際調査報告】