JP5802841B2 - 仮想化処理の方法及び装置並びにコンピュータ・システム - Google Patents

仮想化処理の方法及び装置並びにコンピュータ・システム Download PDF

Info

Publication number
JP5802841B2
JP5802841B2 JP2014537456A JP2014537456A JP5802841B2 JP 5802841 B2 JP5802841 B2 JP 5802841B2 JP 2014537456 A JP2014537456 A JP 2014537456A JP 2014537456 A JP2014537456 A JP 2014537456A JP 5802841 B2 JP5802841 B2 JP 5802841B2
Authority
JP
Japan
Prior art keywords
cache
host
dma
hpa
gpa
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
JP2014537456A
Other languages
English (en)
Other versions
JP2014531093A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2014531093A publication Critical patent/JP2014531093A/ja
Application granted granted Critical
Publication of JP5802841B2 publication Critical patent/JP5802841B2/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/002Specific input/output arrangements not covered by G06F3/01 - G06F3/16

Landscapes

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

Description

本発明は、コンピュータ技術の分野に関し、特に、仮想化処理の方法及び装置、並びに仮想化処理に基づくコンピュータ・システムに関する。
仮想化技術は、下位レイヤのハードウェア・デバイスを上位レイヤのオペレーティング・システム及びアプリケーション・プログラムから分離するための分離技術であり、図1を参照すると、仮想マシン・モニタ(VMM, Virtual Machine Monitor)層が導入されており、当該VMMにより、下位レイヤのハードウェア・リソースを管理し、上位レイヤのオペレーティング・システム及びアプリケーション・プログラムの実行に使用するために、下位レイヤのハードウェアとは無関係の仮想マシン(VM, Virtual Machine)を作成することができる。
仮想化技術は、現在普及しているクラウド・コンピューティング(Cloud Computing)基盤をサポートする重要な技術の1つとして、物理デバイスのリソース使用効率を大幅に向上させることができる。従来の物理サーバに比べ、仮想マシンは物理ハードウェアからのより良い隔離状態及びアプリケーション実行環境のカプセル化を実現する機能を有し、仮想マシンに関するスナップショット、バックアップ、クローン化、及び送達などの動作を実行するのに便利なように、仮想マシン全体の情報を仮想ディスク・イメージ(VDI, Virtual Disk Image)に保存することが可能である。
x86プロセッサの進化に伴い、中央演算処理ユニット(CPU, Central Processing Unit)及びメモリの仮想化技術は、常にオーバヘッドを低減させながら次第に完成されてきた。最新のプロセッサに基づき、ほとんどのアプリケーションについて、CPU及びメモリを仮想化することによるオーバヘッドは10%未満となっている。入出力(I/O, Input/Output)仮想化分野では、高性能及び低遅延の仮想化I/Oソリューションは、依然として仮想化分野における重要な技術的課題である。従来のI/O仮想化ソリューションは、2つのタイプ、すなわちソフトウェア・ソリューション及びハードウェア・ソリューションを含む。
しかしながら従来のソフトウェア・ソリューション及びハードウェア・ソリューションは、何れもそれぞれ際立った利点及び欠点を有している。例えば従来のソフトウェア・ソリューションは、互換性の点では有利であるが大きな性能損失を伴い、ハードウェア・ソリューションは、所望の性能をもたらすことができる反面、機能互換性及びゲスト・オペレーティング・システム(Guest OS)互換性が不充分であるなどの点で問題を抱えている。
本発明の実施形態は、仮想化システムの性能及び互換性を最適化するように、仮想化処理の方法及び装置、並びにコンピュータ・システムを提供する。
前述の技術的問題を解決するために、本発明の実施形態は、以下の技術的ソリューションを提供する。
一実施態様において、本発明の実施形態は、コンピューティング・ノードに適用される仮想化処理方法を提供し、コンピューティング・ノードは、
ハードウェア層、ハードウェア層上で実行するホスト(Host)、及びHost上で実行する少なくとも1つの仮想マシン(VM)を含み、ここでハードウェア層は入出力(I/O)デバイスを含み、いくつかの対応する仮想機能(VF)デバイスは、I/Oデバイスを仮想化した仮想デバイスであり、HostはいくつかのVFソフトウェア・インスタンスを有し、VFソフトウェア・インスタンスの各々は幾つかかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応し、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスのバックエンド・インスタンス(BE)をさらに有し、VMはI/O仮想デバイスのフロントエンド・インスタンス(FE)を有し、Host内のBEはアイドルVFソフトウェア・インスタンスと結合され、
方法は、
FEによって、直接メモリ・アクセス(DMA)用のキャッシュを事前に割り振ること、
BEと結合されたVFソフトウェア・インスタンスによって、BEをエクスポートするためのアプリケーション・プログラミング・インターフェース(API)を介してDMA用のキャッシュに対応するアドレスを獲得し、DMA用のキャッシュに対応する当該獲得したアドレスを、VFソフトウェア・インスタンスに対応するVFデバイスの第1の記憶ユニットに書き込むこと、受信されることになるデータが存在する場合、VFデバイスによって、第1の記憶ユニットからDMA用のキャッシュに対応するアドレスを選択し、DMA用のキャッシュに対応する当該選択されたアドレスをターゲット・アドレスとして使用することによりDMA書き込み要求を開始すること、VFソフトウェア・インスタンスが当該アドレスに対応するキャッシュに書き込まれたデータを受信するためにFEをトリガするように、DMA書き込み要求が実行された後に、VFデバイスによって、VFデバイスに対応するHost内のVFソフトウェア・インスタンスに通知することを含む。
他の実施態様において、本発明の実施形態は、
入出力(I/O)デバイスのI/O仮想機能が実行可能とされた後に、ホスト(Host)内に幾つかのVFソフトウェア・インスタンスを生成する処理動作であって、幾つかの対応する仮想機能(VF)デバイスは、I/O仮想化機能が実行可能とされたI/Oデバイスを仮想化した仮想デバイスであり、Host内で生成されるVFソフトウェア・インスタンスの各々が幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応している、処理動作と、
Hostによって、I/Oデバイスと同じタイプを有するI/O仮想デバイスを作成する処理動作であって、I/O仮想デバイスのバックエンド・インスタンス(BE)はHost内に作成され、I/O仮想デバイスのフロントエンド・インスタンス(FE)は開始された仮想マシンVM内に作成される、処理動作と、さらに、
BEをアイドル状態のVFソフトウェア・インスタンスと結合する処理動作、
を含む仮想化処理方法を、さらに提供する。
他の実施態様において、本発明の実施形態は、
ハードウェア層、ハードウェア層上で実行するホスト(Host)、及びHost上で実行する少なくとも1つの仮想マシン(VM)を含む、コンピューティング・ノードをさらに提供し、ここでハードウェア層は入出力(I/O)デバイスを含み、いくつかの対応する仮想機能(VF)デバイスがI/Oデバイスから仮想化され、Hostは幾つかのVFソフトウェア・インスタンスを有し、VFソフトウェア・インスタンスの各々は幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応し、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスのバックエンド・インスタンス(BE)をさらに有し、VMはI/O仮想デバイスのフロントエンド・インスタンス(FE)を有し、Host内のBEはアイドルVFソフトウェア・インスタンスと結合され、
FEは、直接メモリ・アクセス(DMA)用のキャッシュを事前に割り振るように構成され、
BEと結合されたVFソフトウェア・インスタンスは、BEをエクスポートするアプリケーション・プログラミング・インターフェース(API)を介してDMA用のキャッシュに対応するアドレスを獲得し、DMA用のキャッシュに対応する当該獲得したアドレスを、VFソフトウェア・インスタンスに対応するVFデバイスの第1の記憶ユニットに書き込むように構成され、
VFデバイスは、受信されることになるデータが存在する場合、第1の記憶ユニットからDMA用のキャッシュに対応するアドレスを選択し、DMA用のキャッシュに対応する当該選択されたアドレスをターゲット・アドレスとして使用することによりDMA書き込み要求を開始するように構成され、VFソフトウェア・インスタンスが当該アドレスに対応するキャッシュに書き込まれたデータを受信するためにFEをトリガするように、DMA書き込み要求が実行された後に、VFデバイスに対応するHost内のVFソフトウェア・インスタンスに通知するように構成される。
他の実施態様において、本発明の実施形態は、
入出力(I/O)デバイスのI/O仮想機能が実行可能とされた後、ホスト(Host)内に幾つかのVFソフトウェア・インスタンスを生成するように構成され、幾つかの対応する仮想機能(VF)デバイスは、I/O仮想化機能が実行可能とされたI/Oデバイスを仮想化した仮想デバイスであり、Host内で生成されるVFソフトウェア・インスタンスの各々が幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応している、第1の作成モジュールと、
I/Oデバイスと同じタイプを有するI/O仮想デバイスを作成するように構成された、第2の作成モジュールであって、I/O仮想デバイスのバックエンド・インスタンス(BE)はHost内に作成され、I/O仮想デバイスのフロントエンド・インスタンス(FE)は開始された仮想マシン(VM)内に作成される、第2の作成モジュールと、さらに、
第2の作成モジュールによって作成されたBEを、第1の作成モジュールによって作成されたアイドル状態のVFソフトウェア・インスタンスと結合するように構成された、結合モジュールと、
を含むホストを、さらに提供する。
本発明の実施形態におけるコンピューティング・ノードは、ハードウェア層、ハードウェア層上で実行するホスト(Host)、及びHost上で実行する少なくとも1つのVMを含むことが可能であり、ハードウェア層は入出力(I/O)デバイスを含み、幾つかの対応する仮想機能(VF)デバイスがI/Oデバイスから仮想化され、HostはいくつかのVFソフトウェア・インスタンスを有し、VFソフトウェア・インスタンスの各々は幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応し、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスのバックエンド・インスタンス(BE)をさらに有し、VMはI/O仮想デバイスのフロントエンド・インスタンス(FE)を有し、ここでHost内のBEはアイドル状態のVFソフトウェア・インスタンスと結合されることがわかる。このように、各VMが独立に1つのVFデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、FEがHost内のBEを介してVFデバイスにアクセスできるように、I/Oデバイスから仮想化された1つのVFデバイスと1つのVM内のフロントエンド・インスタンスFEとの間にチャネルが通される。I/Oデバイスを仮想化した仮想デバイスであるVFデバイスは、使用のためにVMに別々に割り振られ、VFデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、VMにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる特別なCPUオーバヘッドもほとんど発生しないことは有益である。さらに、I/O仮想デバイスのフロントエンド・ドライブ(すなわちFE)はVM内にあるため、FEは、Host内のバックエンド・ドライブ(すなわちBE)を介してデータを転送し、VMはHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利であって、それにより仮想化システムの互換性の最適化を実現することが出来る。
本発明の実施形態又は従来技術における技術的ソリューションをより明確に図示するために、実施形態又は従来技術の説明に使用される図面が本明細書に添付され、以下、これらの添付図面について、簡単に説明する。明らかに、添付の図面は本発明のいくつかの例示の実施形態を示しており、当業者であれば、格別の創意工夫なしにこれらの図面に基づいて他の実施形態に関する図面を取得することができる。
従来の仮想化技術のアーキテクチャを示す概略図である。 本発明の実施形態で提供される、仮想化ソフトウェア及びハードウェア・システムのアーキテクチャを示す概略図である。 本発明の実施形態で提供される、他の仮想化ソフトウェア及びハードウェア・システムのアーキテクチャを示す概略図である 本発明の実施形態で提供される仮想化処理方法を示す概略流れ図である。 本発明の実施形態で提供される他の仮想化処理方法を示す概略流れ図である。 本発明の実施形態で提供される他の仮想化処理方法を示す概略流れ図である。 本発明の実施形態で提供される他の仮想化処理方法を示す概略流れ図である。 本発明の実施形態で提供されるGPA及びHPAアドレス変換を示す概略図である。 本発明の実施形態で提供される他の仮想化処理方法を示す概略流れ図である。 本発明の実施形態で提供される他のGPA及びHPAアドレス変換を示す概略図である。 本発明の実施形態で提供される他の仮想化処理方法を示す概略流れ図である。 本発明の実施形態で提供される他のGPA及びHPAアドレス変換を示す概略図である。 本発明の実施形態で提供される他の仮想化処理方法を示す概略流れ図である。 本発明の実施形態で提供される他のGPA及びHPAアドレス変換を示す概略図である。 本発明の実施形態で提供されるホストのモジュール・アーキテクチャを示す概略図である。 本発明の実施形態で提供されるコンピューティング・ノードを示す概略図である。 本発明の実施形態で提供される他のコンピューティング・ノードを示す概略図である。 本発明の実施形態で提供される他のコンピューティング・ノードを示す概略図である。 本発明の実施形態で提供されるコンピュータ・システムを示す概略図である。
本発明の実施形態は、仮想化システムの性能及び互換性を最適化することを目的として、仮想化処理の方法及び装置、並びにコンピュータ・システムを提供する。
本発明のソリューションを当業者により理解しやすくするために、本発明の実施形態における技術的ソリューションを、本発明の実施形態を図示する添付図面を参照しながら以下において明確かつ完全に説明する。以下において説明される実施形態が、本発明の実施形態の全てを網羅するものではなく一部にすぎないことは明らかである。本発明の実施形態に基づいて当業者によって格別の創意工夫なしに導出される全ての他の実施形態は、本発明の権利保護範囲内にあるものとする。
本発明の実施形態をより良く理解するための便宜上、本明細書では、本発明の実施形態の説明で紹介されることになるいくつかの要素をまず最初に例示する。
<仮想マシンVM>
仮想マシン・ソフトウェアを介して1つ又は複数の仮想コンピュータを物理コンピュータ上でシミュレートすることが可能であり、それらの仮想マシンは実際のコンピュータとして動作し、仮想マシンにはオペレーティング・システム及びアプリケーション・プログラムをインストールすることが可能であり、仮想マシンは依然としてネットワーク・リソースにアクセスすることが可能である。仮想マシン内でアプリケーション・プログラムを実行する場合、仮想マシンは実際のコンピュータ内と全く同様の動作環境を提供する。
<ハードウェア層>
ハードウェア層は、仮想化環境で実行するハードウェア・プラットフォームである。ハードウェア層は、複数の異なるタイプのハードウェアを含むことが可能であり、例えばコンピューティング・ノードのハードウェア層はCPU及びメモリを含むことが可能であり、ネットワーク・カード及びストレージなどの高速/低速入出力(I/O, Input/Output)デバイスと、入出力メモリ管理ユニット(IOMMU, Input/Output Memory Management Unit)などの特定の処理機能を有する他のデバイスとを含むことが可能であり、IOMMUは仮想マシンの物理アドレス及びHostの物理アドレスを相互に変換するように構成することが可能である。
<I/O仮想機能>
I/O仮想化機能が実行可能とされた後に、I/O仮想化機能を有するI/Oデバイスを仮想化することにより、対応する物理機能(PF, Physical Function)デバイス及びいくつかの仮想機能(VF, Virtual Function)デバイスを、仮想デバイスとして生成することが可能であり、I/Oデバイスから仮想化されたPFデバイスは主に管理機能としての役割を果たし、VFデバイスは主に処理機能としての役割を果たす。
ホスト(Host)
管理層としてのホストは、ハードウェア・リソースに関する管理及び割り振りを完了し、仮想マシン用の仮想ハードウェア・プラットフォームを提示し、仮想マシン同士の間のスケジューリング及び隔離を実装するように、構成される。Hostは仮想マシン・モニタ(VMM)とすることが可能であり、さらに時折、VMMはHostを形成するために1つの特権仮想マシンと組み合わせることができる。仮想ハードウェア・プラットフォームは、プラットフォーム上で実行する仮想マシンに対して様々なハードウェア・リソースを提供し、例えば、仮想CPU、メモリ、仮想ディスク、仮想ネットワーク・カードなどを提供する。仮想ディスクは、Host上の1つのファイル又は1つの論理ブロック・デバイスに対応させることが可能である。仮想マシンは、Hostによって準備された仮想ハードウェア・プラットフォーム上で実行されており、Hostはホスト上で実行する1つ又は複数の仮想マシンを有することができる。
図2−a及び図2−bを参照すると、図2−a及び図2−bは、本発明の実施形態において提供される、2種類の仮想化ソリューションに関して、ソフトウェア及びハードウェアのシステム・アーキテクチャを示す概略図である。当該システム・アーキテクチャは主に、ハードウェア層、Host、及び仮想マシン(VM)の、3つの層を含む。図2−a又は図2−bに示されたハードウェア層はI/Oデバイスを含み、図2−aに示されたハードウェア層はIOMMUをさらに含む。Hostはハードウェア層上で実行しており、少なくとも1つの仮想マシンVMはHost上で実行しており、ここでいくつかの対応する仮想機能(VF)デバイスがI/Oデバイスから仮想化され、HostはいくつかのVFソフトウェア・インスタンスを有し、VFソフトウェア・インスタンスの各々が幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応しており、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスのバックエンド・インスタンス(BE、Back−End)をさらに有し、VMはI/O仮想デバイスのフロントエンド・インスタンス(FE、Front−End)を有し、Host内のBEはアイドル状態のVFソフトウェア・インスタンスと結合される。本発明の実施形態の技術的ソリューションにおいて、VM内のBEはI/O仮想デバイスのフロントエンド(FE)ドライバとみなすことが可能であり、Host内のFEはI/O仮想デバイスのバックエンド(BE)ドライバとみなすことが可能であり、I/O仮想デバイスはBE及びFEで構成される。
本発明の実施形態に従った仮想化処理方法はコンピューティング・ノードに適用することが可能であり、当該コンピューティング・ノードは、ハードウェア層、ハードウェア層上で実行されるHost、及びHost上で実行される少なくとも1つのVMを備え、ハードウェア層は入出力(I/O)デバイスを含み、当該仮想化処理方法は、入出力(I/O)デバイスのI/O仮想機能が実行可能化された後に、Host内に幾つかの仮想機能(VF、Virtual Function)ソフトウェア・インスタンスを生成する処理動作であって、幾つかの対応する仮想機能(VF)デバイスは、I/O仮想化機能が実行可能とされたI/Oデバイスを仮想化した仮想デバイスであり、Host内で生成されるVFソフトウェア・インスタンスの各々が幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応している処理動作と、Hostによって、I/Oデバイスと同じタイプを有するI/O仮想デバイスを作成する処理動作であって、I/O仮想デバイスのバックエンド・インスタンス(BE)はHost内に作成され、I/O仮想デバイスのフロントエンド・インスタンス(FE)は開始された仮想マシンVM内に作成される、処理動作と、BEをアイドル状態のVFソフトウェア・インスタンスと結合する処理動作を、含むことができる。
図3を参照すると、本発明の実施形態で提供される仮想化処理方法は、以下を含むことができる。
ステップ301: 入出力(I/O)デバイスのI/O仮想化機能が実行可能とされた後に、Host内に幾つかの仮想機能(VF)ソフトウェア・インスタンス(VF Instance)を生成し、
幾つかの対応する仮想機能(VF)デバイスは、I/O仮想化機能が実行可能とされたI/Oデバイスを仮想化した仮想デバイスとすることが可能であり、Host内で生成されるVFソフトウェア・インスタンスの各々が幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応している。例えばHostは、I/OデバイスのI/O仮想化機能が実行可能となるようにHostが開始された場合又は開始された後のある時点において、I/OデバイスのI/O仮想化機能を実行可能化することができる。さらに別の方法として、I/Oデバイスは、デバイスの電源が投入された後に、そのI/O仮想化機能を自動的に実行可能化することが可能であり、この場合、HostがI/OデバイスのI/O仮想化機能を実行可能化する必要はない。
本発明の実施形態で言及されるI/Oデバイスは、例えばPCIエクスプレス(PCIe, Peripheral Component Interconnect Express)デバイス又はネットワーク・カードなどの他のタイプのデバイスとすることができることに留意されたい。
ステップ302: Hostによって、I/Oデバイスと同じタイプを有するI/O仮想デバイスを作成し、I/O仮想デバイス(vDEV)のバックエンド・インスタンス(BE, Back-End)はHost内に作成され、I/O仮想デバイスのフロントエンド・インスタンス(FE, Front-End)は開始されたVM内に作成される。
ステップ303: HostによってBEをアイドルVFソフトウェア・インスタンスと結合する。
Hostが、I/Oデバイスと同じタイプを有するいくつかのI/O仮想デバイスを作成する場合、各I/O仮想デバイスのバックエンド・インスタンス(BE)はアイドル状態のVFソフトウェア・インスタンスと結合され、結合関係にあるBEとVFソフトウェア・インスタンスとの間にアクセス間インターフェースが存在し、例えばBEは、当該BEと結合されたVFソフトウェア・インスタンスによって提供されるアクセス・インターフェースを介して、当該VFソフトウェア・インスタンスに対応するVFデバイスにアクセスすることができる。このようにして、各VMが1つのVFデバイスを独立に使用することができるアプリケーション・アーキテクチャが確立され、I/Oデバイスを仮想化して成る1つのVFデバイスと1つのVM内のフロントエンド・インスタンス(FE)との間にチャネルが通されるため、当該FEはHost内のBEを介してVFデバイスにアクセスできるようになる。I/Oデバイスを仮想化して成るVFデバイスの各々は、使用のために個別に各VMに割り振られるため、各VMにとって、物理マシンと同様の性能を獲得可能である点は有益である。Hostによって構築されたアプリケーション・アーキテクチャに基づいて、VMはデータの送信、データの受信、又は他の形でのデータ処理を実行することができる。
例えば図2−a及び図2−bにおいて、いくつかの対応するVFデバイスは、I/O仮想化機能が実行可能とされたI/Oデバイス(PCIeデバイスなど)を仮想化することによって生成可能であり、さらに対応する物理機能(PF, Physical Function)デバイスは、I/O仮想化機能が実行可能とされたI/Oデバイスを仮想化することによって生成可能であり、I/Oデバイスと同じタイプを有しHostによって作成されたいくつかのI/O仮想デバイスのバックエンド・インスタンス(BE)はHost内に配置され、各I/O仮想デバイスのフロントエンド・インスタンス(FE)は異なるVM内に配置される。共有メモリはHostとVMとの間にさらに構成することが可能であり、I/O仮想デバイスのバックエンド・インスタンス(BE)及びフロントエンド・インスタンス(FE)は、例えば共有メモリを介してデータを転送することができる。
本実施形態において、入出力(I/O)デバイスのI/O仮想化機能が実行可能とされた後に、幾つかのVFソフトウェア・インスタンスがHost内に生成され、幾つかの対応するVFデバイスは、I/O仮想化機能が実行可能とされたI/Oデバイスを仮想化した仮想デバイスであり、Host内に生成されたVFソフトウェア・インスタンスの各々は幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応しており、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスを作成し、ここでI/O仮想デバイスのバックエンド・インスタンス(BE)はHost内に作成され、I/O仮想デバイスのフロントエンド・インスタンス(FE)は開始されたVM内に作成され、BEはアイドル状態のVFソフトウェア・インスタンスと結合されることがわかる。このように、各VMが独立に1つのVFデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、FEがHost内のBEを介してVFデバイスにアクセスできるように、I/Oデバイスを仮想化して成る1つのVFデバイスと1つのVM内のフロントエンド・インスタンス(FE)との間にチャネルが通される。I/Oデバイスを仮想化して成るVFデバイスは、使用のためにVMに別々に割り振られ、VFデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、VMにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のCPUオーバヘッドもほとんど発生しないという点は有益である。さらに、仮想デバイスのフロントエンド(FE)ドライブ(すなわちFE)はVM内にあるため、Host内のバックエンド(BE)ドライブ(すなわちBE)を介してデータが転送され、VMはHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利であって、それにより仮想化システムの互換性の最適化を実現することができる。
図4を参照すると、本発明の実施形態が提供するその他の仮想化処理方法がコンピューティング・ノードに適用され、当該コンピューティング・ノードは、ハードウェア層、ハードウェア層上で実行されているHost、及びHost上で実行されている少なくとも1つのVMを含み、ここでハードウェア層は入出力(I/O)デバイスを含み、当該方法は以下を含むことができる。
ステップ401: Hostによって、入出力I/OデバイスのI/O仮想化機能を実行可能化する。
例えばHostは、I/OデバイスのI/O仮想化機能が実行可能となるように当該Hostが開始された場合又は開始された後のある時点において、I/OデバイスのI/O仮想化機能を実行可能化することができる。幾つかの対応するVFデバイスは、I/O仮想化機能が実行可能化されたI/Oデバイスを仮想化することによって生成される。別の方法として、I/Oデバイスは、デバイスの電源が投入された後に、そのI/O仮想化機能を自動的に実行可能化することが可能であり、この場合、HostがI/OデバイスのI/O仮想化機能を実行可能化する必要はない。
ステップ402: Host内にいくつかのVFソフトウェア・インスタンス(VF Instance)を生成し、いくつかの対応する仮想機能(VF)デバイスは、I/O仮想化機能が実行可能とされたI/Oデバイスを仮想化することにより生成可能であり、Host内で生成されるVFソフトウェア・インスタンスの各々が幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応している。
ステップ403: Hostによって、I/Oデバイスと同じタイプを有するI/O仮想デバイスを作成し、I/O仮想デバイス(vDEV)のバックエンド・インスタンス(BE)はHost内に作成され、I/O仮想デバイスのフロントエンド・インスタンス(FE)は開始されたVM内に作成される。
ステップ404: HostによってBEをアイドル状態のVFソフトウェア・インスタンスと結合する。
Hostが、I/Oデバイスと同じタイプを有する幾つかのI/O仮想デバイスを作成する場合、各I/O仮想デバイスのバックエンド・インスタンス(BE)はアイドル状態のVFソフトウェア・インスタンスと結合され、結合関係にあるBEとVFソフトウェア・インスタンスとの間にアクセス間インターフェースが存在し、例えばBEは、BFと結合されたVFソフトウェア・インスタンスによって提供されるアクセス・インターフェースを介して、VFソフトウェア・インスタンスに対応するVFデバイスにアクセスすることができる。このようにして、各VMが1つのVFデバイスを独立に使用することができるアプリケーション・アーキテクチャが確立され、I/Oデバイスを仮想化して成る1つのVFデバイスとVM内のフロントエンド・インスタンス(FE)との間にチャネルが通されるため、FEはHost内のBEを介してVFデバイスにアクセスできるようになる。I/Oデバイスを仮想化して成るVFデバイスは、使用のために別々にVMに割り振られるため、VMにとって、物理マシンと同様の性能を獲得することが可能な点は有益である。Hostによって構築されたアプリケーション・アーキテクチャに基づいて、VMはデータの送信、データの受信、又は他の形でのデータ処理を実行することができる。
例えば図2−a及び図2−bにおいて、幾つかの対応するVFデバイスは、I/O仮想化機能が実行可能とされたI/Oデバイス(PCIeデバイスなど)を仮想化することにより生成可能であり、さらに対応する物理機能(PF)デバイスは、I/O仮想化機能が実行可能とされたI/Oデバイスを仮想化することにより生成可能であり(HostはPFデバイスに対応するPFソフトウェア・インスタンスをさらに生成することができる)、I/Oデバイスと同じタイプを有しHostによって作成された幾つかのI/O仮想デバイスのバックエンド・インスタンス(BE)はHost内に配置され、各I/O仮想デバイスのフロントエンド・インスタンス(FE)は異なるVM内に配置される。共有メモリはHostとVMとの間にさらに構成可能であり、I/O仮想デバイスのバックエンド・インスタンス(BE)及びフロントエンド・インスタンス(FE)は、例えば共有メモリを介してデータを転送することができる。
本明細書の読み手にとって理解しやすいように、前述した仕組みに基づいて構築されたアプリケーション・アーキテクチャにおける任意付加的な対話様式が、データを受信する手順を例として採用することによって以下に示される。
アプリケーション・シナリオにおいて、HostがBEとアイドルVFソフトウェア・インスタンスとを結合した後、FEは直接メモリ・アクセス(DMA, Direct Memory Access)用にキャッシュを事前に割り振ることが可能であり、FEは、DMA用に事前に割り振られたキャッシュに対応するゲスト物理アドレス(GPA, Guest Physical Address)を、HostとVMとの間の共有メモリに書き込むことが可能であり、BEと結合されたVFソフトウェア・インスタンスは、BEをエクスポートするアプリケーション・プログラミング・インターフェース(API)を介して、DMA用のキャッシュに対応するGPAを獲得することが可能であり、VFソフトウェア・インスタンスは、DMA用のキャッシュに対応する当該獲得されたGPAを、VFソフトウェア・インスタンスに対応するVFデバイスの受信キューに書き込むことが可能であり、受信されることになるデータが存在する場合、VFデバイスは、DMA用のキャッシュに対応するGPAをVFデバイスの受信キューから選択することが可能であり、当該選択されたGPAをターゲット・アドレスとして使用することにより、DMA書き込み要求(DMA書き込み要求はデータをキャッシュに書き込むために使用される)を開始することが可能であり、入出力メモリ管理ユニット(IOMMU)は、DMA書き込み要求のターゲット・アドレスであるGPAを、これと対応するHost物理アドレスHPAに修正し(ここで、例えばアドレス変換ページ・テーブルはIOMMU内に設定され、アドレス変換ページ・テーブルはHPAとGPAとの間のマッピングを記録し、DMA書き込み要求が通った場合、IOMMUは、アドレス変換ページ・テーブルを検索することによって、DMA書き込み要求のターゲット・アドレスであるGPAに対応するHPAを獲得し、DMA書き込み要求のターゲット・アドレスであるGPAを、当該獲得されたHPAに修正することが可能である)、VFソフトウェア・インスタンスがHPAに対応するキャッシュに書き込まれたデータを受信するために対応するFEをトリガするように、ターゲット・アドレスがHPAに修正されたDMA書き込み要求が実行された後、VFデバイスは、VFデバイスに対応するHost内のVFソフトウェア・インスタンスに通知することが可能である。
他のアプリケーション・シナリオにおいて、HostがBEとアイドル状態のVFソフトウェア・インスタンスとを結合した後、FEはDMA用にキャッシュを事前に割り振ることが可能であり、FEは、DMA用に事前に割り振られたキャッシュに対応するGPAを、HostとVMとの間の共有メモリに書き込むことが可能であり、Host(例えばBE又はHost内の他のモジュール)は、DMA用のキャッシュに対応するGPAを、これと対応するHPAに修正することが可能であり(例えば、アドレス変換ページ・テーブルがHost内に設定され、アドレス変換ページ・テーブルはHPAとGPAとの間のマッピングを記録し、アドレス変換ページ・テーブルを検索することにより、Host(例えばBE又はHost内の他のモジュール)は、DMA用のキャッシュに対応するGPAに対応するHPAを獲得し、DMA用のキャッシュに対応するGPAを、当該獲得されたHPAに修正することが可能である)、Host内のBEと結合されたVFソフトウェア・インスタンスは、BEをエクスポートするアプリケーション・プログラミング・インターフェース(API)を介して、DMA用のキャッシュに対応するGPAを獲得し、DMA用のキャッシュに対応する当該獲得されたGPAは、VFソフトウェア・インスタンスに対応するVFデバイスの受信キューに書き込まれ、受信されることになるデータが存在する場合、VFデバイスは、DMA用のキャッシュに対応するHPAをVFデバイスの受信キューから選択し、当該選択されたHPAをターゲット・アドレスとして使用することにより、DMA書き込み要求(DMA書き込み要求はデータをキャッシュに書き込むために使用される)を開始し、VFソフトウェア・インスタンスがHPAに対応するキャッシュに書き込まれたデータを受信するために対応するFEをトリガするように、DMA書き込み要求が実行された後、VFデバイスは、VFデバイスに対応するHost内のVFソフトウェア・インスタンスにさらに通知することが可能である。
本明細書の読み手にとって理解しやすいように、前述した仕組みに基づいて構築されたアプリケーション・アーキテクチャにおける任意付加的な対話様式が、データを送信する手順を例として採用することによって以下に示される。
アプリケーション・シナリオにおいて、HostがBEとアイドルVFソフトウェア・インスタンスとを結合した後、FEは、送信されることになるデータが位置するキャッシュに対応するGPAを、HostとVMとの間の共有メモリに書き込むことが可能であり、対応するBEは、当該BEと結合されたVFソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するGPAを、VFソフトウェア・インスタンスに対応するVFデバイスの送信キューに書き込むことが可能であり、送信されることになるデータが見つかった後、VFデバイスは、VFデバイスの送信キュー内に記録されたGPAをターゲット・アドレスとして使用することにより、DMA読み取り要求を開始し(DMA書き込み要求はキャッシュからのデータの読み取りに使用される)、IOMMUはDMA読み取り要求のターゲット・アドレスであるGPAを、これと対応するHPAに修正する(ここで、例えばアドレス変換ページ・テーブルはIOMMU内に設定され、アドレス変換ページ・テーブルはHPAとGPAとの間のマッピングを記録し、DMA読み取り要求が通った場合、IOMMUは、アドレス変換ページ・テーブルを検索することによって、DMA読み取り要求のターゲット・アドレスであるGPAに対応するHPAを獲得し、DMA読み取り要求のターゲット・アドレスであるGPAを、当該獲得されたHPAに修正することが可能である)。さらに、VFソフトウェア・インスタンスが対応するキャッシュを解放するために対応するFEをトリガするように、DMA読み取り要求が実行された後、VFデバイスは、VFデバイスに対応するHost内のVFソフトウェア・インスタンスに通知することが可能である。
他のアプリケーション・シナリオにおいて、HostがBEとアイドル状態のVFソフトウェア・インスタンスとを結合した後、FEは、送信されることになるデータが位置するキャッシュに対応するGPAを、HostとVMとの間の共有メモリに書き込むことが可能であり、Host(例えばBE又はHost内の他のモジュール)は、キャッシュに対応するGPAを、これと対応するHPAに修正することが可能であり(例えば、アドレス変換ページ・テーブルがHost内に設定され、アドレス変換ページ・テーブルはHPAとGPAとの間のマッピングを記録し、アドレス変換ページ・テーブルを検索することにより、Host(例えばBE又はHost内の他のモジュール)は、キャッシュに対応するGPAに対応するHPAを獲得し、キャッシュに対応するGPAを、当該獲得されたHPAに修正することが可能である)、対応するBEは、当該BEと結合されたVFソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するGPAを、VFソフトウェア・インスタンスに対応するVFデバイスの送信キューに書き込むことが可能であり、送信されることになるデータが見つかった場合、VFデバイスは、VFデバイスの送信キュー内に記録されたHPAをターゲット・アドレスとして使用することにより、DMA読み取り要求を開始する。さらに、VFソフトウェア・インスタンスが対応するキャッシュを解放するために対応するFEをトリガするように、DMA読み取り要求が実行された後、VFデバイスは、VFデバイスに対応するHost内のVFソフトウェア・インスタンスに通知することが可能である。
前述した仕組みに基づいて構築されたアプリケーション・アーキテクチャにおける任意付加的な対話様式が、データを送信する手順及びデータを受信する手順を例として採用することによって以下に示され、他のアプリケーション・シナリオにおける対話様式は類推により推論することができる。
本実施形態において、入出力(I/O)デバイスのI/O仮想化機能が実行可能とされた後、幾つかのVFソフトウェア・インスタンスがHost内に生成され、幾つかの対応するVFデバイスは、I/O仮想化機能が実行可能とされたI/Oデバイスを仮想化することにより生成され、Host内に生成されたVFソフトウェア・インスタンスの各々は幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応しており、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスを作成し、ここでI/O仮想デバイスのバックエンド・インスタンス(BE)はHost内に作成され、I/O仮想デバイスのフロントエンド・インスタンス(FE)は開始されたVM内に作成され、BEはアイドル状態のVFソフトウェア・インスタンスと結合されることがわかる。このように、各VMが独立に1つのVFデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、FEがHost内のBEを介してVFデバイスにアクセスできるように、I/Oデバイスから仮想化された1つのVFデバイスと1つのVM内のフロントエンド・インスタンス(FE)との間にチャネルが通される。I/Oデバイスを仮想化して成るVFデバイスは、使用のためにVMに別々に割り振られ、VFデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、VMにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のCPUオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド(FE)ドライブ(すなわちFE)はVM内にあるため、Host内のバックエンド(BE)ドライブ(すなわちBE)を介してデータが転送され、VMはHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
本発明の実施形態は、コンピューティング・ノードに適用される仮想化処理方法をさらに提供し、当該コンピューティング・ノードは、ハードウェア層、ハードウェア層上で実行されるHost、及びHost上で実行される少なくとも1つのVMを含むことが可能であり、ここでハードウェア層は入出力(I/O)デバイスを含み、幾つかの対応する仮想機能(VF)デバイスがI/Oデバイスから仮想化され、Hostは幾つかのVFソフトウェア・インスタンスを有し、VFソフトウェア・インスタンスの各々は幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応し、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスのバックエンド・インスタンス(BE)をさらに有し、VMはI/O仮想デバイスのフロントエンド・インスタンス(FE)を有し、Host内のBEはアイドル状態のVFソフトウェア・インスタンスと結合され、当該方法は、FEによって、直接メモリ・アクセス(DMA)用のキャッシュを事前に割り振ること、BEと結合されたVFソフトウェア・インスタンスによって、BEをエクスポートするアプリケーション・プログラミング・インターフェース(API)を介してDMA用のキャッシュに対応するアドレスを獲得し、DMA用のキャッシュに対応する当該獲得したアドレスを、VFソフトウェア・インスタンスに対応するVFデバイスの第1の記憶ユニットに書き込むこと、受信されることになるデータが存在する場合、VFデバイスによって、第1の記憶ユニットからDMA用のキャッシュに対応するアドレスを選択し、DMA用のキャッシュに対応する当該選択されたアドレスをターゲット・アドレスとして使用することによりDMA書き込み要求を開始すること、VFソフトウェア・インスタンスがアドレスに対応するキャッシュに書き込まれたデータを受信するためにFEをトリガするように、DMA書き込み要求が実行された後に、VFデバイスによって、VFデバイスに対応するHost内のVFソフトウェア・インスタンスに通知することを含む。
図5を参照すると、本発明の実施形態におけるその他の仮想化処理方法は、以下のステップを含むことができる。
ステップ501: FEによって、直接メモリ・アクセス(DMA)用のキャッシュを事前に割り振る。
ステップ502: BEと結合されたVFソフトウェア・インスタンスによって、BEをエクスポートするアプリケーション・プログラミング・インターフェース(API)を介してDMA用のキャッシュに対応するアドレス(アドレスは、例えばHPA又はGPAである)を獲得し、DMA用のキャッシュに対応する当該獲得したアドレスを、VFソフトウェア・インスタンスに対応するVFデバイスの第1の記憶ユニットに書き込む(ここで、第1の記憶ユニットとは、VFデバイスの受信キュー又は受信リスト、或いはアドレスを記録することが可能な他のデータ記憶構造である)。
ステップ503: 受信されることになるデータが存在する場合、VFデバイスによって、第1の記憶ユニットからDMA用のキャッシュに対応するアドレスを選択し、DMA用のキャッシュに対応する当該選択されたアドレスをターゲット・アドレスとして使用することによりDMA書き込み要求を開始する。
ステップ504: VFソフトウェア・インスタンスがアドレスに対応するキャッシュに書き込まれたデータを受信するためにFEをトリガするように、DMA書き込み要求が実行された後に、VFデバイスによって、VFデバイスに対応するHost内のVFソフトウェア・インスタンスに通知する。
本実施形態において、コンピューティング・ノードは、ハードウェア層、ハードウェア層上で実行されるHost、及びHost上で実行される少なくとも1つのVMを含むことが可能であり、ここでハードウェア層は入出力(I/O)デバイスを含み、幾つかの対応する仮想機能VFデバイスがI/Oデバイスを仮想化することによって生成され、Hostは幾つかのVFソフトウェア・インスタンスを有し、VFソフトウェア・インスタンスの各々は幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応し、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスのバックエンド・インスタンス(BE)をさらに有し、VMはI/O仮想デバイスのフロントエンド・インスタンス(FE)を有し、Host内のBEはアイドル状態のVFソフトウェア・インスタンスと結合されることがわかる。このように、各VMが独立に1つのVFデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、FEがHost内のBEを介してVFデバイスにアクセスできるように、I/Oデバイスを仮想化して成る1つのVFデバイスと1つのVM内のフロントエンド・インスタンス(FE)との間にチャネルが通される。I/Oデバイスを仮想化して成るVFデバイスは、使用のためにVMに別々に割り振られ、VFデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、VMにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のCPUオーバヘッドもほとんど発生しない点は有益である。さらに、I/O仮想デバイスのフロントエンド(FE)ドライブ(すなわちFE)はVM内にあるため、FEは、Host内のバックエンド(BE)ドライブ(すなわちBE)を介してデータを転送し、VMはHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
本発明の実施形態において、FEがDMA用のキャッシュを事前に割り振った後、FEは、DMA用の事前に割り振られたキャッシュに対応するGPAを、HostとVMとの間の共有メモリに書き込むことが可能であり、BEと結合されたVFソフトウェア・インスタンスは、BEをエクスポートするアプリケーション・プログラミング・インターフェース(API)を介して共有メモリからDMA用のキャッシュに対応するGPAを獲得し(結局のところ、FEは、対応するBEにDMA用の事前に割り振られたキャッシュに対応するGPAを通知することも可能であり、BEに結合されたVFソフトウェア・インスタンスは、BEをエクスポートするアプリケーション・プログラミング・インターフェース(API)を介してDMA用のキャッシュに対応するGPAを獲得することが可能である)、DMA用のキャッシュに対応する当該獲得されたGPAを、VFソフトウェア・インスタンスに対応するVFデバイスの第1の記憶ユニットに書き込むことが可能であり、受信されることになるデータが存在する場合、VFデバイスは、第1の記憶ユニットからDMA用のキャッシュに対応するGPAを選択し、DMA用のキャッシュに対応するGPAをターゲット・アドレスとして使用することにより、DMA書き込み要求を介しすることが可能であり、IOMMUはDMA書き込み要求のターゲット・アドレスであるGPAを、これと対応するHPAに修正することが可能であり(例えばアドレス変換ページ・テーブルはIOMMU内に設定され、アドレス変換ページ・テーブルはHPAとGPAとの間のマッピングを記録し、IOMMUは、アドレス変換ページ・テーブルを検索することによって、DMA書き込み要求のターゲット・アドレスであるGPAに対応するHPAを獲得し、DMA書き込み要求のターゲット・アドレスGPAを、当該獲得されたHPAに修正する)、VFソフトウェア・インスタンスがHPAに対応するキャッシュ内に書き込まれたデータを受信するためにFEをトリガするように、VFデバイスは、VFデバイスに対応するHost内のVFソフトウェア・インスタンスに通知する。
他のアプリケーション・シナリオにおいて、FEがDMA用のキャッシュを事前に割り振った後、FEは、DMA用の事前に割り振られたキャッシュに対応するGPAを、HostとVMとの間の共有メモリに書き込むことが可能であり、Hostは、共有メモリ内のDMA用のキャッシュに対応するGPAを、これと対応するHPAに修正することが可能であり(例えば、アドレス変換ページ・テーブルがHost内に設定され、アドレス変換ページ・テーブルはHPAとGPAとの間のマッピングを記録し、アドレス変換ページ・テーブルを検索することにより、Hostは、共有メモリ内のDMA用のキャッシュに対応するGPAに対応するHPAを獲得し、共有メモリ内のDMA用のキャッシュに対応するGPAを、当該獲得されたHPAに修正することが可能である。結局のところ、FEは、対応するBEにDMA用の事前に割り振られたキャッシュに対応するGPAを通知することも可能であり、Hostは、DMA用のキャッシュに対応するGPAを、これと対応するHPAに修正することが可能である)、BEに結合されたVFソフトウェア・インスタンスは、BEをエクスポートするアプリケーション・プログラミング・インターフェース(API)を介してDMA用のキャッシュに対応するHPAを獲得し、当該獲得されたDMA用のキャッシュに対応するHPAは、VFソフトウェア・インスタンスに対応するVFデバイスの第1の記憶ユニットに書き込まれ、受信されることになるデータが存在する場合、VFデバイスは、DMA用のキャッシュに対応するHPAを第1の記憶ユニットから選択し、当該選択されたHPAをターゲット・アドレスとして使用することにより、DMA書き込み要求を開始する。
本発明の実施形態において、FEが送信するデータを有する場合、FEは、送信されることになるデータが位置するキャッシュに対応するGPAを、HostとVMとの間の共有メモリに書き込むことが可能であり、送信されることになるデータが位置するキャッシュに対応するGPAを共有メモリから獲得することが可能であり(結局のところ、FEは、送信されることになるデータが位置するキャッシュに対応するGPAを対応するBEに通知することも可能であり、BEは、当該通知に従って、送信されることになるデータが位置するキャッシュに対応するGPAを獲得する)、BEは、当該BEと結合されたVFソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するGPAを、VFソフトウェア・インスタンスに対応するVFデバイスの第2の記憶ユニットに書き込み(ここで第2の記憶ユニットは、例えば、VFデバイスの送信キュー又は送信リスト、或いはアドレスを記録することが可能な他のデータ記憶構造である)、送信されることになるデータが見つかった場合、VFデバイスは、第2の記憶ユニット内に記録されたGPAをターゲット・アドレスとして使用することにより、DMA読み取り要求を開始し、IOMMUはDMA読み取り要求のターゲット・アドレスであるGPAを、これと対応するHPAに修正することが可能であり(例えばアドレス変換ページ・テーブルはIOMMU内に設定され、アドレス変換ページ・テーブルはHPAとGPAとの間のマッピングを記録し、IOMMUは、アドレス変換ページ・テーブルを検索することによって、DMA読み取り要求のターゲット・アドレスであるGPAに対応するHPAを獲得し、DMA読み取り要求のターゲット・アドレスであるGPAを、当該獲得されたHPAに修正する)。さらに、VFソフトウェア・インスタンスが対応するキャッシュを解放するためにFEをトリガするように、DMA読み取り要求が実行された後、VFデバイスは、VFデバイスに対応するHost内のVFソフトウェア・インスタンスに通知することが可能である。
本発明の他の実施形態において、FEが送信するデータを有する場合、FEは、送信されることになるデータが位置するキャッシュに対応するGPAを、HostとVMとの間の共有メモリに書き込むことが可能であり、Hostは、送信されることになるデータが共有メモリ内に位置するキャッシュに対応するGPAを対応するHPAに修正し(例えば、アドレス変換ページ・テーブルがHost内に設定され、アドレス変換ページ・テーブルはHPAとGPAとの間のマッピングを記録し、アドレス変換ページ・テーブルを検索することにより、Hostは、送信されることになるデータが共有メモリ内に位置するキャッシュに対応するGPAに対応するHPAを獲得し、送信されることになるデータが共有メモリ内に位置するキャッシュに対応するGPAを、これと対応するHPAに修正する。結局のところ、FEは、送信されることになるデータが位置するキャッシュに対応するGPAをHostに通知することも可能であり、Hostは、送信されることになるデータが位置するキャッシュに対応するGPAを、これと対応するHPAに修正する)、BEは、送信されることになるデータが位置するキャッシュに対応するHPAを獲得し、当該BEに結合されたVFソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するHPAを、VFソフトウェア・インスタンスに対応するVFデバイスの第2の記憶ユニットに書き込み(ここで第2の記憶ユニットは、例えばVFデバイスの送信キュー又は送信リスト、或いはアドレスを記録することが可能な他のデータ記憶構造である)、送信されることになるデータが存在することを見つけた場合、VFデバイスは、第2の記憶ユニット内に記録されたHPAをターゲット・アドレスとして使用することにより、DMA読み取り要求を開始する。さらに、VFソフトウェア・インスタンスが対応するキャッシュを解放するためにFEをトリガするように、DMA読み取り要求が実行された後、VFデバイスは、VFデバイスに対応するHost内のVFソフトウェア・インスタンスに通知することができる。
本発明の実施形態における前述したソリューションをより良く理解し及び実装するために、データの受信及びデータの送信の幾つかの特定のアプリケーション・シナリオを例として採用することによってさらに示す。
図6−aを参照すると、本発明の実施形態で提供されるその他の仮想化処理方法は、以下を含むことができる。
ステップ601: HostによってIOMMUを実行可能化する。
ここでHostは、当該Hostが開始された場合又は開始された後のある時点において、IOMMUを実行可能化することが可能であり、結局のところ、IOMMUは、デバイスの電源が投入されると対応する機能を自動的に実行可能化することも可能であり、この場合、HostがIOMMUを実行可能化する必要はなく、結局のところ、他のモジュールを使用してIOMMUを実行可能化することも可能である。
ステップ602: Host内にPFデバイス及びVFデバイスのドライバをインストールし、ここでPFデバイス及びVFデバイスはI/Oデバイス(例えばE−1と呼ばれる)に対応する。
ステップ603: Hostによって、I/OデバイスE−1のI/O仮想化機能を実行可能化し、
ここで、例えばHostは、当該Hostが開始された場合又は開始された後のある時点において、I/OデバイスE−1のI/O仮想化機能を実行可能化することができる。対応する物理機能(PF)デバイス及び幾つかの仮想機能(VF)デバイスは、I/O仮想化機能が実行可能化されたI/OデバイスE−1を仮想化することにより生成可能であり、結局のところ、その他のモジュールを使用してI/OデバイスE−1を実行可能化することが可能であり、結局のところ、I/OデバイスE−1は、デバイスの電源が投入された時に、そのI/O仮想化機能を自動的に実行可能化することも可能であり、この場合、Host又はその他のモジュールがI/OデバイスE−1のI/O仮想化機能を実行可能化する必要はない。I/OデバイスE−1を仮想化することにより生成されたPFデバイスは主に管理機能の役割を果たし、VFデバイスは主に処理機能の役割を果たす。
ステップ604: Host内にPFソフトウェア・インスタンス及び幾つかのVFソフトウェア・インスタンスを生成し、ここで対応するPFデバイス及び幾つかのVFデバイスは、I/O仮想化機能が実行可能化されたI/OデバイスE−1を仮想化することにより生成可能であり、Host内に生成されたVFソフトウェア・インスタンスの各々は幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応しており、Host内に生成されたPFソフトウェア・インスタンスはI/OデバイスE−1から仮想化されたPFデバイスに対応している。
ステップ605: Hostによって、I/OデバイスE−1と同じタイプを有するI/O仮想デバイス(例えば「vE−1」と呼ばれる)を作成し、
ここでI/O仮想デバイスvE−1のバックエンド・インスタンス(BE)(例えばBE−1と呼ばれる)はHost内に作成され、I/O仮想デバイスvE−1のフロントエンド・インスタンス(FE)(例えば「FE−1」と呼ばれる)は開始されたVM(例えば「VM−1」と呼ばれる)内に作成される。例えばHostは、開始されたVM−1内のI/O仮想デバイスvE−1に対応するフロントエンド・インスタンスFE−1の作成をトリガすることができる。VM−1内に作成されるFE−1及びHost内に作成されるBE−1は、一般に、I/O仮想デバイスvE−1のドライバを構築するとみなすことができる。
ステップ606: Hostによって、作成されたBE−1を1つのアイドル状態のVFソフトウェア・インスタンス(例えば「Vfe−1」と呼ばれる)と結合し、
ここでVFソフトウェア・インスタンスVfe−1は、例えば、I/OデバイスE−1を仮想化して成るVFデバイス(例えば「VF−1」と呼ばれる)に対応する。いわゆるアイドル状態のVFソフトウェア・インスタンスは、他のバックエンド・インスタンス(BE)と結合されていないVFソフトウェア・インスタンスである。
これまでのところ、I/OデバイスE−1を仮想化することによって生成されたVFデバイスVF−1とVM−1内のフロントエンド・インスタンスFE−1との間にチャネルが通され、このようにしてFE−1は、Host内でBE−1を介してVFデバイスVF−1にアクセスすることができる。VFデバイスVF−1は使用のためにVM−1に別々に割り振られ、VFデバイスVF−1はI/OデバイスE−1から仮想化され、高効率のデバイス・インターフェースを提供することができるため、VM−1にとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のCPUオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド(FE)ドライブ(すなわちFE−1)はVM−1内にあるため、データは、Host内のバックエンド(BE)ドライブ(すなわちBE−1)を介して転送され、VM−1はHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装によって便利な点である。
ステップ607: FE−1によって、直接メモリ・アクセス(DMA)用のキャッシュを事前に割り振る。
例えば、DMA用に使用されFE−1によって事前に割り振られるキャッシュは、[GPA1,Len1]、・・・[GPAn,Lenn]とすることが可能であり、すなわちDMA用のキャッシュの複数のセクションが事前に割り振り可能であり、ここでGPA1はキャッシュのGPAの開始アドレスを表し、Len1は、GPA1から開始するキャッシュ領域の長さを表すという具合である。
ステップ608: FE−1によって、DMA用の事前に割り振られたキャッシュに対応するGPAを、HostとVM−1との間の共有メモリ(共有Memory)に書き込み、BE−1に通知する(結局のところ、自己検出を実行した後、BE−1は、DMA用のキャッシュに対応するGPAが共有メモリに書き込まれる旨を発見することも可能である)。
ステップ609: VFソフトウェア・インスタンスVfe−1によって、BE−1をエクスポートするアプリケーション・プログラミング・インターフェース(API)を介してDMA用のキャッシュに対応するGPAを獲得し、DMA用のキャッシュに対応する当該獲得したGPAを、VFソフトウェア・インスタンスVfe−1に対応するVFデバイスVF−1の受信キューに書き込む。
ステップ610: VFデバイスVF−1によって、受信されることになるデータが存在する場合、VFデバイスの受信キューからDMA用のキャッシュに対応するGPAを選択し、当該選択されたGPAをターゲット・アドレスとして使用することにより、DMA書き込み要求を開始し、
ここで、VFデバイスVF−1によって開始されたDMA書き込み要求はIOMMUを通ることになる。
ステップ611: IOMMUによって、DMA書き込み要求のターゲット・アドレスであるGPAを対応するHPAに修正し、
ここで、例えばアドレス変換ページ・テーブルはIOMMU内に設定され、アドレス変換ページ・テーブルはGPAとHPAとの間のマッピング(例えば図6−bに示されるような)を記録する。DMA書き込み要求が通ると、IOMMUは、アドレス変換ページ・テーブルを検索することによって、DMA書き込み要求のターゲット・アドレスであるGPAに対応するHPAを獲得し、DMA書き込み要求のターゲット・アドレスGPAを当該獲得されたHPAに修正することができる。
ステップ612: HPAに対応するキャッシュに書き込まれたデータを受信するために、VFソフトウェア・インスタンスVfe−1がVM−1内のフロントエンド・インスタンスFE−1をトリガするように、ターゲット・アドレスがHPAに修正されたDMA書き込み要求が実行された後、VFデバイスVF−1によって、Host内の対応するVFソフトウェア・インスタンスVfe−1に通知する。
VFソフトウェア・インスタンスVfe−1によってトリガされている時点において、VM−1内のフロントエンド・インスタンスFE−1は、HPAに対応するキャッシュ内に書き込まれたデータを読み取ることができる。
本実施形態において、Hostによって実行可能化されることにより、I/OデバイスのI/O仮想化機能が実行可能化された後に、幾つかのVFソフトウェア・インスタンスがHost内で生成され、幾つかの対応するVFデバイスは、I/O仮想化機能が実行可能化されたI/Oデバイスを仮想化することによって生成され、Host内に生成されたVFソフトウェア・インスタンスの各々は幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応しており、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスを作成し、ここでI/O仮想デバイスのバックエンド・インスタンス(BE)はHost内に作成され、I/O仮想デバイスのフロントエンド・インスタンス(FE)は開始されたVM内に作成され、BEはアイドル状態のVFソフトウェア・インスタンスと結合され、このようにして、各VMが1つのVFデバイスを別々に使用できるアプリケーション・アーキテクチャが確立され、FEがHost内のBEを介してVFデバイスにアクセスできるように、I/Oデバイスを仮想化して成る1つのVFデバイスと1つのVM内のフロントエンド・インスタンス(FE)との間にチャネルが通される。I/Oデバイスを仮想化して成るVFデバイスは、使用のためにVMに別々に割り振られ、VFデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、VMにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のCPUオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド(FE)ドライブ(すなわちFE)はVM内にあるため、FEは、データはHost内のバックエンド(BE)ドライブ(すなわちBE)を介して転送され、VMはHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
加えて、DMA書き込み要求の実行の手順中、ハードウェア・モジュールIOMMUはGPAとHPAとの間の変換を実装し、それによってCPUオーバヘッドが減少し、性能がさらに向上する。
図7−aを参照すると、本発明の実施形態で提供されるその他の仮想化処理方法は、以下を含むことができる。
ステップ701: Host内にPFデバイス及びVFデバイスのドライバをインストールし、ここでPFデバイス及びVFデバイスはI/Oデバイス(E−2と呼ばれる)に対応する。
ステップ702: Hostによって、I/OデバイスE−2のI/O仮想化機能を実行可能化し、
ここで、例えばHostは、当該Hostが開始された場合又は開始された後のある時点において、I/OデバイスE−2のI/O仮想化機能を実行可能化することができる。対応する物理機能(PF)デバイス及び幾つかの仮想機能(VF)デバイスは、HostによってI/O仮想化機能が実行可能化されたI/OデバイスE−2を仮想化することによって生成可能であり、結局のところ、その他のモジュールを使用してI/OデバイスE−2を実行可能化することが可能であり、結局のところ、I/OデバイスE−2は、デバイスの電源が投入された時にそのI/O仮想化機能を自動的に実行可能化することも可能であり、この場合、Host又はその他のモジュールがI/OデバイスE−2のI/O仮想化機能を実行可能化する必要はない。I/OデバイスE−2を仮想化することによって生成されたPFデバイスは主に管理機能の役割を果たし、VFデバイスは主に処理機能の役割を果たす。
ステップ703: Host内にPFソフトウェア・インスタンス及び幾つかのVFソフトウェア・インスタンスを生成し、ここで対応するPFデバイス及び幾つかのVFデバイスは、I/O仮想化機能が実行可能化されたI/OデバイスE−2を仮想化することにより生成可能であり、Host内に生成されたVFソフトウェア・インスタンスの各々は幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応しており、Host内に生成されたPFソフトウェア・インスタンスはI/OデバイスE−2を仮想化することにより生成されたPFデバイスに対応している。
ステップ704: Hostによって、I/OデバイスE−2と同じタイプを有するI/O仮想デバイス(例えば「vE−2」と呼ばれる)を作成し、
ここでI/O仮想デバイスvE−2のバックエンド・インスタンス(BE)(例えばBE−2と呼ばれる)はHost内に作成され、I/O仮想デバイスvE−2のフロントエンド・インスタンス(FE)(例えばFE−2と呼ばれる)は開始されたVM(例えば「VM−2」と呼ばれる)内に作成される。例えばHostは、開始されたVM−2内のI/O仮想デバイスvE−2に対応するフロントエンド・インスタンスFE−2の作成をトリガすることができる。VM−2内に作成されるFE−2及びHost内に作成されるBE−2は、一般に、I/O仮想デバイスvE−2のドライバを構築するとみなすことができる。
ステップ705: Hostによって、作成されたBE−2を1つのアイドル状態のVFソフトウェア・インスタンス(例えば「Vfe−2」と呼ばれる)と結合し、
ここでVFソフトウェア・インスタンスVfe−2は、例えば、I/OデバイスE−2から仮想化されたVFデバイス(例えば「VF−2」と呼ばれる)に対応する。いわゆるアイドル状態のVFソフトウェア・インスタンスは、他のバックエンド・インスタンス(BE)と結合されていないVFソフトウェア・インスタンスである。
これまでのところ、I/OデバイスE−2を仮想化することによって生成されたVFデバイスVF−2とVM−2内のフロントエンド・インスタンスFE−2との間にチャネルが通され、このようにしてFE−2は、Host内でBE−2を介してVFデバイスVF−2にアクセスすることができる。VFデバイスVF−2は使用のためにVM−2に別々に割り振られ、VFデバイスVF−2はI/OデバイスE−2を仮想化することにより生成され、高効率のデバイス・インターフェースを提供することができるため、VM−2にとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のCPUオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド(FE)ドライブ(すなわちFE−2)はVM−2内にあるため、データは、Host内のバックエンド(BE)ドライブ(すなわちBE−2)を介して転送され、VM−2はHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点である。
ステップ706: FE−2によって、直接メモリ・アクセス(DMA)用のキャッシュを事前に割り振る。
例えば、DMA用に使用されFE−2によって事前に割り振られるキャッシュは、[GPA1,Len1]、・・・[GPAn,Lenn]とすることが可能であり、すなわちDMA用のキャッシュの複数のセクションが事前に割り振り可能であり、ここでGPA1はキャッシュのGPAの開始アドレスを表し、Len1は、GPA1から開始するキャッシュ領域の長さを表すという具合である。
ステップ707: FE−2によって、DMA用の事前に割り振られたキャッシュに対応するGPAを、HostとVM−2との間の共有メモリ(共有Memory)に書き込み、BE−2に通知する(結局のところ、自己検出を実行した後、BE−2は、DMA用のキャッシュに対応するGPAが共有メモリに書き込まれる旨を発見することも可能である)。
ステップ708: Hostによって、共有メモリ内のDMA用のキャッシュに対応するGPAを対応するHPAに修正し、
ここで、例えばアドレス変換ページ・テーブルはHost内に設定され、アドレス変換ページ・テーブルはGPAとHPAとの間のマッピング(例えば図7−bに示されるような)を記録する。アドレス変換ページ・テーブルを検索することによって、Hostは、DMA用のキャッシュに対応するGPAに対応するHPAを獲得し、DMA用のキャッシュに対応するGPAを、当該獲得したHPAに修正することができる。
ステップ709: VFソフトウェア・インスタンスVfe−2によって、BE−2をエクスポートするアプリケーション・プログラミング・インターフェース(API)を介してDMA用のキャッシュに対応するHPAを獲得し、DMA用のキャッシュに対応する当該獲得したHPAを、VFソフトウェア・インスタンスVfe−2に対応するVFデバイスVF−2の受信キューに書き込む。
ステップ710: VFデバイスVF−2によって、受信されることになるデータが存在する場合、VFデバイスの受信キューからDMA用のキャッシュに対応するHPAを選択し、当該選択されたHPAをターゲット・アドレスとして使用することにより、DMA書き込み要求を開始する。
ステップ711: HPAに対応するキャッシュに書き込まれたデータを受信するために、VFソフトウェア・インスタンスVfe−2がVM−2内のフロントエンド・インスタンスFE−2をトリガするように、DMA書き込み要求が実行された後、VFデバイスVF−2によって、Host内の対応するVFソフトウェア・インスタンスVfe−2に通知する。
VFソフトウェア・インスタンスVfe−2によってトリガされている時点において、VM−2内のフロントエンド・インスタンスFE−2は、HPAに対応するキャッシュ内に書き込まれたデータを読み取ることができる。
本実施形態において、Hostによって実行可能化されることにより、入出力(I/O)デバイスのI/O仮想化機能が実行可能化された後に、幾つかのVFソフトウェア・インスタンスがHost内で生成され、幾つかの対応するVFデバイスは、I/O仮想化機能が実行可能化されたI/Oデバイスを仮想化することによって生成され、Host内に生成されたVFソフトウェア・インスタンスの各々は幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応しており、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスを作成し、ここでI/O仮想デバイスのバックエンド・インスタンス(BE)はHost内に作成され、I/O仮想デバイスのフロントエンド・インスタンス(FE)は開始されたVM内に作成され、BEはアイドル状態のVFソフトウェア・インスタンスと結合され、このようにして、各VMが1つのVFデバイスを別々に使用できるアプリケーション・アーキテクチャが確立され、FEがHost内のBEを介してVFデバイスにアクセスできるように、I/Oデバイスから仮想化された1つのVFデバイスと1つのVM内のフロントエンド・インスタンス(FE)との間にチャネルが通される。I/Oデバイスを仮想化して成るVFデバイスは、使用のためにVMに別々に割り振られ、VFデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、VMにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のCPUオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド(FE)ドライブ(すなわちFE)はVM内にあるため、FEは、データはHost内のバックエンド(BE)ドライブ(すなわちBE)を介して転送され、VMはHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
加えて、DMA書き込み要求の実行の手順中、HostはGPAとHPAとの間で変換を実装し、それによって必要なハードウェア・リソース構成を削減し、処理フローを簡略化する。
図8−aを参照すると、本発明の実施形態で提供されるその他の仮想化処理方法は、以下を含むことができる。
ステップ801: HostによってIOMMUを実行可能化する。
ここでHostは、当該Hostが開始された場合又は開始された後のある時点において、IOMMUを実行可能化することが可能であり、結局のところ、IOMMUは、デバイスの電源が投入されると対応する機能を自動的に実行可能化することも可能であり、この場合、HostがIOMMUを実行可能化する必要はなく、結局のところ、その他のモジュールを使用してIOMMUを実行可能化することも可能である。
ステップ802: Host内にPFデバイス及びVFデバイスのドライバをインストールし、ここでPFデバイス及びVFデバイスはI/Oデバイス(例えばE−3と呼ばれる)に対応する。
ステップ803: Hostによって、I/OデバイスE−3のI/O仮想化機能を実行可能化し、
ここで、例えばHostは、当該Hostが開始された場合又は開始された後のある時点において、I/OデバイスE−3のI/O仮想化機能を実行可能化することができる。対応する物理機能(PF)デバイス及び幾つかの仮想機能(VF)デバイスは、I/O仮想化機能が実行可能化されたI/OデバイスE−3を仮想化することによって生成可能であり、結局のところ、その他のモジュールを使用してI/OデバイスE−3を実行可能化することが可能であり、結局のところ、I/OデバイスE−3は、デバイスの電源が投入された時にそのI/O仮想化機能を自動的に実行可能化することも可能であり、この場合、Host又はその他のモジュールがI/OデバイスE−3のI/O仮想化機能を実行可能化する必要はない。I/OデバイスE−3を仮想化することによって生成されたPFデバイスは主に管理機能の役割を果たし、VFデバイスは主に処理機能の役割を果たす。
ステップ804: Host内にPFソフトウェア・インスタンス及び幾つかのVFソフトウェア・インスタンスを生成し、ここで対応するPFデバイス及び幾つかのVFデバイスは、I/O仮想化機能が実行可能化されたI/OデバイスE−3を仮想化することにより生成可能であり、Host内に生成されたVFソフトウェア・インスタンスの各々は幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応しており、Host内に生成されたPFソフトウェア・インスタンスはI/OデバイスE−3を仮想化することにより生成されたPFデバイスに対応している。
ステップ805: Hostによって、I/OデバイスE−3と同じタイプを有するI/O仮想デバイス(例えば「vE−3」と呼ばれる)を作成し、
ここでI/O仮想デバイスvE−3のバックエンド・インスタンス(BE)(例えばBE−3と呼ばれる)はHost内に作成され、I/O仮想デバイスvE−3のフロントエンド・インスタンス(FE)(例えば「FE−3」と呼ばれる)は開始されたVM(例えば「VM−3」と呼ばれる)内に作成される。例えばHostは、開始されたVM−3内のI/O仮想デバイスvE−3に対応するフロントエンド・インスタンスFE−3の作成をトリガすることができる。VM−3内に作成されるFE−3及びHost内に作成されるBE−3は、一般に、I/O仮想デバイスvE−3のドライバを構築するとみなすことができる。
ステップ806: Hostによって、作成されたBE−3を1つのアイドル状態のVFソフトウェア・インスタンス(例えば「Vfe−3」と呼ばれる)と結合し、
ここでVFソフトウェア・インスタンスVfe−3は、例えば、I/OデバイスE−3から仮想化されたVFデバイス(例えば「VF−3」と呼ばれる)に対応する。いわゆるアイドル状態のVFソフトウェア・インスタンスは、他のバックエンド・インスタンス(BE)と結合されていないVFソフトウェア・インスタンスである。
これまでのところ、I/OデバイスE−3から仮想化されたVFデバイスVF−3とVM−3内のフロントエンド・インスタンスFE−3との間にチャネルが通され、このようにしてFE−3は、Host内でBE−3を介してVFデバイスVF−3にアクセスすることができる。VFデバイスVF−3は使用のためにVM−3に別々に割り振られ、VFデバイスVF−3はI/OデバイスE−3から仮想化され、高効率のデバイス・インターフェースを提供することができるため、VM−3にとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のCPUオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド(FE)ドライブ(すなわちFE−3)はVM−3内にあるため、データは、Host内のバックエンド(BE)ドライブ(すなわちBE−3)を介して転送され、VM−3はHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点である。
ステップ807: フロントエンド・インスタンスFE−3によって、送信されることになるデータが位置するキャッシュに対応するGPAを、HostとVM−3との間の共有メモリに書き込み、BE−3に通知する(結局のところ、自己検出を実行した後、BE−3は、送信されることになるデータが位置するキャッシュに対応するGPAが共有メモリに書き込まれる旨を発見することも可能である)。
例えば、送信されることになるデータが位置するキャッシュに対応するGPAは、[GPA1,Len1]、・・・[GPAn,Lenn]であり、すなわちDMA用のキャッシュの複数のセクションが事前に割り振り可能であり、ここでGPA1はキャッシュのGPAの開始アドレスを表し、Len1は、GPA1から開始するキャッシュ領域の長さを表すという具合である。
ステップ808: BE−3によって、BE−3と結合されたVFソフトウェア・インスタンスVfe−3のプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するGPAを、VFソフトウェア・インスタンスVfe−3に対応するVFデバイスVF−3の送信キューに書き込む。
ステップ809: 送信されることになるデータが存在することを見つけた場合、VFデバイスの送信キュー内に記録されたGPAをターゲット・アドレスとして使用することにより、VFデバイスVF−3によって、DMA読み取り要求を開始し、
ここでVFデバイスVF−3は、例えばVFデバイスの送信キューを定期的又は不定期に検出することが可能であり、GPAが送信キュー内に新規に書き込まれたことが見つかった場合、送信されることになるデータが存在するものとみなすか、又はVFソフトウェア・インスタンスVfe−3は、GPAが送信キュー内に新規に書き込まれた後にVFデバイスVF−3に通知することが可能であり、
ここで、VFデバイスVF−3によって開始されたDMA読み取り要求はIOMMUを通ることになる。
ステップ810: IOMMUによって、DMA読み取り要求のターゲット・アドレスであるGPAを対応するHPAに修正し、
ここで、例えばアドレス変換ページ・テーブルはIOMMU内に設定され、アドレス変換ページ・テーブルはGPAとHPAとの間のマッピング(例えば図8−bに示されるような)を記録する。DMA読み取り要求が通ると、IOMMUは、アドレス変換ページ・テーブルを検索することによって、DMA読み取り要求のターゲット・アドレスであるGPAに対応するHPAを獲得し、DMA読み取り要求のターゲット・アドレスGPAを当該獲得されたHPAに修正することができる。
ステップ811: HPAに対応するキャッシュを解放するために、VFソフトウェア・インスタンスVfe−3がVM−3内のフロントエンド(FE)インスタンスFE−3をトリガするように、ターゲット・アドレスがHPAに修正されたDMA読み取り要求が実行された後、VFデバイスVF−3によって、Host内の対応するVFソフトウェア・インスタンスVfe−3に通知する。
VFソフトウェア・インスタンスVfe−3によってトリガされている時点において、VM−3内のフロントエンド・インスタンスFE−3は、新規データをキャッシュに入れるように、HPAに対応するキャッシュを解放することができる。
本実施形態において、Hostによって実行可能化された入出力(I/O)デバイスのI/O仮想化機能が実行可能化された後、いくつかのVFソフトウェア・インスタンスがHost内で生成され、幾つかの対応するVFデバイスは、I/O仮想化機能が実行可能化されたI/Oデバイスを仮想化することによって生成され、Host内に生成されたVFソフトウェア・インスタンスの各々は、幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応しており、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスを作成し、ここでI/O仮想デバイスのバックエンド(BE)インスタンスBEはHost内に作成され、I/O仮想デバイスのフロントエンド(FE)インスタンスFEは開始されたVM内に作成され、BEはアイドル状態のVFソフトウェア・インスタンスと結合され、このようにして、各VMが1つのVFデバイスを別々に使用できるアプリケーション・アーキテクチャが確立され、FEがHost内のBEを介してVFデバイスにアクセスできるように、I/Oデバイスを仮想化して成る1つのVFデバイスと1つのVM内のフロントエンド(FE)インスタンスFEとの間にチャネルが通される。I/Oデバイスを仮想化して成るVFデバイスは、使用のためにVMに別々に割り振られ、VFデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、VMにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のCPUオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド(FE)ドライブ(すなわちFE)はVM内にあるため、FEは、データはHost内のバックエンド(BE)ドライブ(すなわちBE)を介して転送され、VMはHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
加えて、DMA読み取り要求の実行手順においては、ハードウェア・モジュールIOMMUはGPAとHPAとの間の変換を実装し、それによってCPUオーバヘッドが減少し、性能がさらに向上する。
図9−aを参照すると、本発明の実施形態で提供されるその他の仮想化処理方法は、以下を含むことができる。
ステップ901: Host内にPFデバイス及びVFデバイスのドライバをインストールし、ここでPFデバイス及びVFデバイスはI/Oデバイス(E−4と呼ばれる)に対応する。
ステップ902: Hostによって、I/OデバイスE−4のI/O仮想化機能を実行可能化し、
ここで、例えばHostは、当該Hostが開始された場合又は開始された後のある時点において、I/OデバイスE−4のI/O仮想化機能を実行可能化することができる。対応する物理機能(PF)デバイス及び幾つかの仮想機能(VF)デバイスは、I/O仮想化機能が実行可能化されたI/OデバイスE−4を仮想化することにより生成可能であり、結局のところ、その他のモジュールを使用してI/OデバイスE−4を実行可能化することが可能であり、結局のところ、I/OデバイスE−4は、デバイスの電源が投入された時にそのI/O仮想化機能を自動的に実行可能化することも可能であり、この場合、Host又はその他のモジュールがI/OデバイスE−4のI/O仮想化機能を実行可能化する必要はない。I/OデバイスE−4を仮想化することによって生成されたPFデバイスは主に管理機能の役割を果たし、VFデバイスは主に処理機能の役割を果たす。
ステップ903: Host内にPFソフトウェア・インスタンス及び幾つかのVFソフトウェア・インスタンスを生成し、ここで対応するPFデバイス及び幾つかのVFデバイスは、I/O仮想化機能が実行可能化されたI/OデバイスE−4を仮想化することにより生成可能であり、Host内に生成されたVFソフトウェア・インスタンスの各々は幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応しており、Host内に生成されたPFソフトウェア・インスタンスはI/OデバイスE−4を仮想化することによって生成されたPFデバイスに対応している。
ステップ904: Hostによって、I/OデバイスE−4と同じタイプを有するI/O仮想デバイス(例えばvE−4と呼ばれる)を作成し、
ここでI/O仮想デバイスvE−4のバックエンド・インスタンス(BE)(例えばBE−4と呼ばれる)はHost内に作成され、I/O仮想デバイスvE−4のフロントエンド・インスタンス(FE)(例えばFE−4と呼ばれる)は開始されたVM(例えば「VM−4」と呼ばれる)内に作成される。例えばHostは、開始されたVM−4内のI/O仮想デバイスvE−4に対応するフロントエンド・インスタンスFE−4の作成をトリガすることができる。VM−4内に作成されるFE−4及びHost内に作成されるBE−4は、一般に、I/O仮想デバイスvE−4のドライバを構築するとみなすことができる。
ステップ905: Hostによって、作成されたBE−4を1つのアイドル状態のVFソフトウェア・インスタンス(例えばVfe−4と呼ばれる)と結合し、
ここでVFソフトウェア・インスタンスVfe−4は、例えば、I/OデバイスE−4を仮想化することによって生成されたVFデバイス(例えばVF−4と呼ばれる)に対応する。いわゆるアイドル状態のVFソフトウェア・インスタンスは、他のバックエンド・インスタンス(BE)と結合されていないVFソフトウェア・インスタンスである。
これまでのところ、I/OデバイスE−4を仮想化することによって生成されたVFデバイスVF−4とVM−4内のフロントエンド・インスタンスFE−4との間にチャネルが通され、このようにしてFE−4は、Host内でBE−4を介してVFデバイスVF−4にアクセスすることができる。VFデバイスVF−4は使用のためにVM−4に別々に割り振られ、VFデバイスVF−4はI/OデバイスE−4を仮想化することによって生成され、高効率のデバイス・インターフェースを提供することができるため、VM−4にとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のCPUオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド・ドライブ(すなわちFE−4)はVM−4内にあるため、データは、Host内のバックエンド・ドライブ(すなわちBE−4)を介して転送され、VM−4はHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点である。
ステップ906: FE−4によって、送信されることになるデータが位置するキャッシュに対応するGPAを、HostとVM−4との間の共有メモリに書き込み、BE−4に通知する(結局のところ、自己検出を実行した後、BE−4は、送信されることになるデータが位置するキャッシュに対応するGPAが共有メモリに書き込まれる旨を発見することも可能である)。
ステップ907: Hostによって、共有メモリ内の送信されることになるデータが位置するキャッシュに対応するGPAを、これと対応するHPAに修正し、
ここで、例えばアドレス変換ページ・テーブルはHost内に設定され、アドレス変換ページ・テーブルはGPAとHPAとの間のマッピング(例えば図9−bに示されるような)を記録する。アドレス変換ページ・テーブルを検索することによって、Hostは、例えば、送信されることになるデータが位置するキャッシュに対応するGPAと対応するHPAを獲得し、送信されることになるデータが位置するキャッシュに対応するGPAを、当該獲得したHPAに修正することができる。
ステップ908: BE−4によって、BE−4と結合されたVFソフトウェア・インスタンスVfe−4のプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するHPAを、VFソフトウェア・インスタンスVfe−4に対応するVFデバイスVF−4の送信キューに書き込む。
ステップ909: 送信されることになるデータが存在することを見つけた場合、VFデバイスの送信キュー内に記録されたHPAをターゲット・アドレスとして使用することにより、VFデバイスVF−4によって、DMA読み取り要求を開始し、
ここでVFデバイスVF−4は、例えばVFデバイスの送信キューを定期的又は不定期に検出することが可能であり、HPAが送信キュー内に新規に書き込まれたことが見つかった場合、送信されることになるデータが存在するものとみなすか、又はVFソフトウェア・インスタンスVfe−4は、HPAが送信キュー内に新規に書き込まれた後にVFデバイスVF−4に通知することが可能である。
ステップ910: HPAに対応するキャッシュを解放するために、VFソフトウェア・インスタンスVfe−4がVM−4内のフロントエンド・インスタンスFE−4をトリガするように、DMA読み取り要求が実行された後、VFデバイスVF−4によって、Host内の対応するVFソフトウェア・インスタンスVfe−4に通知する。
VFソフトウェア・インスタンスVfe−4によってトリガされている時点において、VM−4内のフロントエンド・インスタンスFE−4は、新規データをキャッシュに入れるように、HPAに対応するキャッシュを解放することができる。
本実施形態において、Hostによって実行可能化されることによって、I/OデバイスのI/O仮想化機能が実行可能化された後に、幾つかのVFソフトウェア・インスタンスがHost内で生成され、幾つかの対応するVFデバイスは、I/O仮想化機能が実行可能化されたI/Oデバイスを仮想化することによって生成され、Host内に生成されたVFソフトウェア・インスタンスの各々は、幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応しており、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスを作成し、ここでI/O仮想デバイスのバックエンド・インスタンス(BE)はHost内に作成され、I/O仮想デバイスのフロントエンド・インスタンス(FE)は開始されたVM内に作成され、BEはアイドル状態のVFソフトウェア・インスタンスと結合され、このようにして、各VMが1つのVFデバイスを別々に使用できるアプリケーション・アーキテクチャが確立され、FEがHost内のBEを介してVFデバイスにアクセスできるように、I/Oデバイスを仮想化して成る1つのVFデバイスと1つのVM内のフロントエンド・インスタンス(FE)との間にチャネルが通される。I/Oデバイスを仮想化して成るVFデバイスは、使用のためにVMに別々に割り振られ、VFデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、VMにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のCPUオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド(FE)ドライブ(すなわちFE)はVM内にあるため、FEは、データはHost内のバックエンド(BE)ドライブ(すなわちBE)を介して転送され、VMはHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
加えて、DMA読み取り要求の実行の手順中、HostはGPAとHPAとの間で変換を実装し、それによって必要なハードウェア・リソース構成を削減し、処理フローを簡略化する。
本発明の実施形態における前述の方法をより良く理解及び実装するために、前述の方法を実装するように構成された装置及びコンピュータ・システムが以下においてさらに提供される。
図10を参照すると、本発明の実施形態で提供されるホスト1000は、
第1の作成モジュール1010、第2の作成モジュール1020、及び結合モジュール1030を含むことが可能であり、
第1の作成モジュール1010は、入出力(I/O)デバイスのI/O仮想化機能が実行可能化された後に、Host1000内に幾つかのVFソフトウェア・インスタンスを生成するように構成され、幾つかの対応する仮想機能(VF)デバイスは、I/O仮想化機能が実行可能化されたI/Oデバイスを仮想化することによって生成され、Host1000内で生成されるVFソフトウェア・インスタンスの各々が幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応しており、
第2の作成モジュール1020は、I/Oデバイスと同じタイプを有するI/O仮想デバイスを作成するように構成され、
I/O仮想デバイスのバックエンド・インスタンス(BE)はHost1000内に作成され、I/O仮想デバイスのフロントエンド・インスタンス(FE)は開始された仮想マシンVM内に作成され、さらに、
結合モジュール1030は、第2の作成モジュール1020によって作成されたBEを、第1の作成モジュール1010によって作成されたアイドル状態のVFソフトウェア・インスタンスと結合するように構成される。
本実施形態におけるホスト1000は、前述の方法実施形態のそれぞれにおけるHostとすることが可能であり、各機能モジュールが有する機能は、前述の方法実施形態のそれぞれにおいて説明した方法に従って、具体的に実装可能であることが理解できる。特定の実装手順について、前述の方法実施形態の関連する記述を参照することが可能であるので、本明細書の以下の記述では、その詳細は繰り返し説明しない。
本実施形態において、I/OデバイスのI/O仮想化機能が実行可能化された後、Host1000内にいくつかのVFソフトウェア・インスタンスが生成され、幾つかの対応する仮想機能(VF)デバイスは、I/O仮想化機能が実行可能化されたI/Oデバイスを仮想化することによって生成され、Host1000内で生成されるVFソフトウェア・インスタンスの各々が幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応しており、Hostは、I/Oデバイスと同じタイプを有するI/O仮想デバイスを作成し、I/O仮想デバイスのバックエンド・インスタンス(BE)はHost1000内に作成され、I/O仮想デバイスのフロントエンド・インスタンス(FE)は開始された仮想マシン(VM)内に作成され、BEはアイドル状態のVFソフトウェア・インスタンスと結合され、このように、各VMが独立に1つのVFデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、FEがHost内のBEを介してVFデバイスにアクセスできるように、I/Oデバイスを仮想化して成る1つのVFデバイスと1つのVM内のフロントエンド・インスタンスFEとの間にチャネルが通されることがわかる。I/Oデバイスを仮想化して成るVFデバイスは、使用のためにVMに別々に割り振られ、VFデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、VMにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のCPUオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド(FE)ドライブ(すなわちFE)はVM内にあるため、Host1000内のバックエンド(BE)ドライブ(すなわちBE)を介してデータが転送され、VMはHost1000の実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
図11−aを参照すると、本発明の実施形態で提供されるコンピューティング・ノード1100は、
ハードウェア層1110、ハードウェア層1110上で実行されるHost1120、及びHost1120上で実行される少なくとも1つの仮想マシンVM1130、
を含むことができる。
ハードウェア層1110はI/Oデバイス1111を含み、いくつかの対応する仮想機能(VF)デバイス11111はI/Oデバイス1111を仮想化することによって生成され、Host1120はいくつかのVFソフトウェア・インスタンス1121を有し、VFソフトウェア・インスタンス1121の各々は幾つかのVFデバイスのうちの異なるVFデバイス11111にそれぞれ対応しており、Host1120はI/Oデバイス1111と同じタイプを有するI/O仮想デバイスのバックエンド・インスタンスBE1122を有し、VM1130はI/O仮想デバイスのフロントエンド・インスタンスFE1131を有し、Host1120内のBE1122はアイドル状態のVFソフトウェア・インスタンス1121と結合される。
本実施形態に係るアプリケーション・シナリオにおいて、FE1131は直接メモリ・アクセス(DMA)用のキャッシュを事前に割り振るように構成される。
BE1122と結合されたVFソフトウェア・インスタンス1121は、
BE1122をエクスポートするアプリケーション・プログラミング・インターフェース(API)を介してDMA用のキャッシュに対応するアドレスを獲得し、DMA用のキャッシュに対応する当該獲得したアドレスを、VFソフトウェア・インスタンス1121に対応するVFデバイス11111の第1の記憶ユニットに書き込む。
VFデバイス11111は、受信されることになるデータが存在する場合、第1の記憶ユニットからDMA用のキャッシュに対応するアドレスを選択し、DMA用のキャッシュに対応するアドレスをターゲット・アドレスとして使用することによりDMA書き込み要求を開始し、VFソフトウェア・インスタンス1121がアドレスに対応するキャッシュに書き込まれたデータを受信するためにFE1131をトリガするように、DMA書き込み要求が実行された後に、Host1120内にある対応するVFソフトウェア・インスタンス1121に通知するように構成される。
図11−bを参照すると、本実施形態に係るアプリケーション・シナリオにおいて、さらにFE1131は、DMA用の事前に割り振られたキャッシュに対応するゲスト物理アドレスであるGPAを、Host1120とVM1130との間の共有メモリ1140に書き込むように構成される。
BE1122と結合されたVFソフトウェア・インスタンス1121は、具体的に、BE1122をエクスポートするアプリケーション・プログラミング・インターフェース(API)を介して共有メモリ1140からDMA用のキャッシュに対応するGPAを獲得し、DMA用のキャッシュに対応する当該獲得したGPAを、VFソフトウェア・インスタンス1121に対応するVFデバイス11111の第1の記憶ユニットに書き込むように、構成することができる。
さらに、FE1131は、対応するBE1122にDMA用の事前に割り振られたキャッシュに対応するGPAを通知することも可能であり、BE1122と結合されたVFソフトウェア・インスタンス1121は、BE1122をエクスポートするアプリケーション・プログラミング・インターフェース(API)を介してDMA用のキャッシュに対応するGPAを獲得することができる。
VFデバイス11111は、具体的に、受信されることになるデータが存在する場合、DMA用のキャッシュに対応するGPAを第1の記憶ユニットから選択し、DMA用のキャッシュに対応する選択されたGPAをターゲット・アドレスとして使用することにより、DMA書き込み要求を開始し、VFソフトウェア・インスタンス1121がHPAに対応するキャッシュに書き込まれたデータを受信するためにFE1131をトリガするように、ターゲット・アドレスGPAが対応するHPAに修正されたDMA書き込み要求が実行された後、Host1120内の対応するVFソフトウェア・インスタンス1121に通知するように、構成することができる。
コンピューティング・ノード1100のハードウェア層1110は、
VFデバイス11111によって開始されたDMA書き込み要求のターゲット・アドレスであるGPAを、これと対応するHost物理アドレスHPAに修正するように構成された、入出力メモリ管理ユニットIOMMU1112を、
さらに含むことができる。
例えば、アドレス変換ページ・テーブルはIOMMU1112内に設定され、ここでアドレス変換ページ・テーブルはGPAとHPAとの間のマッピングを記録し、IOMMU1112は、アドレス変換ページ・テーブルを検索することによって、DMA書き込み要求のターゲット・アドレスであるGPAに対応するHPAを獲得し、DMA書き込み要求のターゲット・アドレスGPAを、当該獲得したHPAに修正することが可能である。
図11−cを参照すると、本実施形態に係るその他のアプリケーション・シナリオにおいて、さらにFE1131は、DMA用の事前に割り振られたキャッシュに対応するGPAを、Host1120とVM1130との間の共有メモリ1140に書き込むように構成することができる。
Host1120は、共有メモリ1140内のDMA用のキャッシュに対応するGPAを、これと対応するHPAに修正するように構成することができる。
例えば、アドレス変換ページ・テーブルはHost1120内に設定され、ここでアドレス変換ページ・テーブルはGPAとHPAとの間のマッピングを記録し、アドレス変換ページ・テーブルを検索することによって、Host1120は、共有メモリ内のDMA用のキャッシュに対応するGPAに対応するHPAを獲得し、共有メモリ内のDMA用のキャッシュに対応するGPAを、当該獲得したHPAに修正することが可能である。結局のところ、FE1131は、DMA用の事前に割り振られたキャッシュに対応するGPAを対応するBE1122に通知することも可能であり、Host1120は、DMA用のキャッシュに対応するGPAを、これと対応するHPAに修正することが可能である。
BE1122に結合されたVFソフトウェア・インスタンス1121は、具体的に、BE1122をエクスポートするアプリケーション・プログラミング・インターフェース(API)を介してDMA用のキャッシュに対応するHPAを獲得し、DMA用のキャッシュに対応する当該獲得したHPAを、VFソフトウェア・インスタンス1121に対応するVFデバイス11111の第1の記憶ユニットに書き込むように、構成することができる。
VFデバイス11111は、具体的に、受信されることになるデータが存在する場合、第1の記憶ユニットからDMA用のキャッシュに対応するHPAを選択し、当該選択されたHPAをターゲット・アドレスとして使用することにより、DMA書き込み要求を開始し、HPAに対応するキャッシュに書き込まれたデータを受信するためにVFソフトウェア・インスタンス1121がFE1131をトリガするように、DMA書き込み要求が実行された後、Host1120内の対応するVFソフトウェア・インスタンス1121に通知するように、構成することができる。
さらに、本実施形態に係るアプリケーション・シナリオにおいて、さらにFE1131は、送信されることになるデータが位置するキャッシュに対応するGPAを、Host1120とVM1130との間の共有メモリ1140に書き込むように構成される。
さらにBE1122は、送信されることになるデータが位置するキャッシュに対応するGPAを共有メモリ1140から獲得し、BE1122と結合されたVFソフトウェア・インスタンス1121のプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するGPAを、VFソフトウェア・インスタンス1121に対応するVFデバイス11111の第2の記憶ユニットに書き込むように、構成することができる。
さらにFE1131は、送信されることになるデータが位置するキャッシュに対応するGPAを、これと対応するBE1122に通知することも可能であり、BE1122は、この通知に従って、送信されることになるデータが位置するキャッシュに対応するGPAを獲得する。
さらにVFデバイス11111は、送信されることになるデータが存在することを見つけた場合、第2の記憶ユニット内に記録されたGPAをターゲット・アドレスとして使用することにより、DMA読み取り要求を開始し、さらにVFデバイス11111は、VFソフトウェア・インスタンス1121が対応するキャッシュを解放するためにFE1131をトリガするように、DMA読み取り要求が実行された後、Host1120内の対応するVFソフトウェア・インスタンス1121に通知するようにさらに構成することができる。
さらにコンピューティング・ノード1100のハードウェア層1110は、
VFデバイス11111によって開始されたDMA読み取り要求のターゲット・アドレスであるGPAを、これと対応するHPAに修正するように構成された、入出力メモリ管理ユニットIOMMU1112を、
さらに含むことができる。
例えば、アドレス変換ページ・テーブルはIOMMU1112内に設定され、ここでアドレス変換ページ・テーブルはGPAとHPAとの間のマッピングを記録し、IOMMU1112は、アドレス変換ページ・テーブルを検索することによって、DMA読み取り要求のターゲット・アドレスであるGPAに対応するHPAを獲得し、DMA読み取り要求のターゲット・アドレスGPAを当該獲得したHPAに修正することができる。
本実施形態に係る他のアプリケーション・シナリオにおいて、さらにFE1131は、送信されることになるデータが位置するキャッシュに対応するGPAを、Host1120とVM1130との間の共有メモリ1140に書き込むように構成することができる。
Host1120は、共有メモリ1140内で送信されることになるデータが位置するキャッシュに対応するGPAを、これと対応するHPAに修正するように構成することができる。
例えば、アドレス変換ページ・テーブルはHost1120内に設定され、ここでアドレス変換ページ・テーブルはGPAとHPAとの間のマッピングを記録し、アドレス変換ページ・テーブルを検索することによって、Host1120は、共有メモリ内で送信されることになるデータが位置するキャッシュに対応するGPAに対応するHPAを獲得し、共有メモリ内で送信されることになるデータが位置するキャッシュに対応するGPAを、これと対応するHPAに修正することができる。結局のところ、FE1131は、送信されることになるデータが位置するキャッシュに対応するGPAをHost1120に通知することも可能であり、Host1120は、送信されることになるデータが位置するキャッシュに対応するGPAを、これと対応するHPAに修正することができる。
さらにBE1122は、送信されることになるデータが位置するキャッシュに対応するHPAを獲得し、BE1122と結合されたVFソフトウェア・インスタンス1121のプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するHPAを、VFソフトウェア・インスタンス1121に対応するVFデバイス11111の第2の記憶ユニットに書き込むように、構成される。
さらにVFデバイス11111は、送信されることになるデータが存在することを見つけた場合、第2の記憶ユニット内に記録されたHPAをターゲット・アドレスとして使用することにより、DMA読み取り要求を開始するように構成することができる。加えて、さらにVFデバイス11111は、VFソフトウェア・インスタンス1121が対応するキャッシュを解放するためにFE1131をトリガするように、DMA読み取り要求が実行された後、Host1120内の対応するVFソフトウェア・インスタンス1121に通知するように構成することができる。
第1の記憶ユニットは、例えばVFデバイスの受信キュー又は受信リスト、或いはアドレスを記録することが可能な他のデータ記憶構造である。第2の記憶ユニットは、例えばVFデバイスの送信キュー又は送信リスト、或いはアドレスを記憶することが可能な他のデータ記憶構造である。
本実施形態におけるHost1120は、前述の方法実施形態のそれぞれにおけるHostとすることが可能であり、本実施形態においてコンピューティング・ノード1100が実行する仮想化システムの動作メカニズムは、前述の方法実施形態で説明されたものと同様のものとすることが可能であり、各機能モジュールが有する機能は、前述の方法実施形態のそれぞれにおいて説明した方法に従って具体的に実装可能であることが理解できる。特定の実装手順について、前述の方法実施形態の関連する記述を参照することが可能であるので、本明細書の以下の記述ではその詳細は繰り返し説明しない。
本発明の実施形態におけるコンピューティング・ノード1100は、ハードウェア層、ハードウェア層上で実行されるHost、及びHost上で実行される少なくとも1つのVMを含み、ここでハードウェア層は入出力(I/O)デバイスを含み、幾つかの対応する仮想機能(VF)デバイスがI/Oデバイスを仮想化することによって生成され、Hostは幾つかのVFソフトウェア・インスタンスを有し、VFソフトウェア・インスタンスの各々は幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応し、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスのバックエンド・インスタンス(BE)をさらに有し、VMはI/O仮想デバイスのフロントエンド・インスタンス(FE)を有し、Host内のBEはアイドル状態のVFソフトウェア・インスタンスと結合されることがわかる。このように、各VMが独立に1つのVFデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、FEがHost内のBEを介してVFデバイスにアクセスできるように、I/Oデバイスを仮想化して成る1つのVFデバイスと1つのVM内のフロントエンド・インスタンス(FE)との間にチャネルが通される。I/Oデバイスを仮想化して成るVFデバイスは、使用のためにVMに別々に割り振られ、VFデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、VMにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる特別なCPUオーバヘッドもほとんど発生しない点は有益である。さらに、I/O仮想デバイスのフロントエンド(FE)ドライブ(すなわちFE)はVM内にあるため、FEは、Host内のバックエンド(BE)ドライブ(すなわちBE)を介してデータを転送し、VMはHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
図12を参照すると、さらに本発明の実施形態はコンピュータ・システムを提供し、
少なくとも1つのコンピューティング・ノード1100を含むことができる。
前述の方法実施形態のそれぞれに関しては、説明を簡単にするために、方法は一連のアクションの組み合わせとして説明されるが、本発明に従い、いくつかのステップは説明されたアクション・シーケンス以外のシーケンスで又は同時に実行されることが可能であるため、当業者であれば、本発明は説明された動作シーケンスによって限定されないことがわかるはずであることに留意されたい。さらに当業者であれば、本明細書で説明されたすべての実施形態が例示の実施形態であり、関連する動作及びモジュールは必ずしも本発明に必要でないことがわかるはずであろう。
上記の実施形態において、各実施形態の説明はその重点を有し、実施形態で詳細に説明されていない部分については他の実施形態の関連説明を参照することができる。
上記に鑑み、本発明の実施形態におけるコンピューティング・ノードは、
ハードウェア層、ハードウェア層上で実行されるHost、及びHost上で実行される少なくとも1つのVMを含み、ハードウェア層は入出力I/Oデバイスを含み、幾つかの対応する仮想機能(VF)デバイスがI/Oデバイスを仮想化することによって生成され、Hostは幾つかのVFソフトウェア・インスタンスを有し、VFソフトウェア・インスタンスの各々は、幾つかのVFデバイスのうちの異なるVFデバイスにそれぞれ対応し、HostはI/Oデバイスと同じタイプを有するI/O仮想デバイスのバックエンド・インスタンス(BE)をさらに有し、VMはI/O仮想デバイスのフロントエンド・インスタンス(FE)を有し、Host内のBEはアイドル状態のVFソフトウェア・インスタンスと結合される。このように、各VMが独立に1つのVFデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、FEがHost内のBEを介してVFデバイスにアクセスできるように、I/Oデバイスを仮想化して成る1つのVFデバイスと1つのVM内のフロントエンド・インスタンス(FE)との間にチャネルが通される。I/Oデバイスを仮想化して成るVFデバイスは、使用のためにVMに別々に割り振られ、VFデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、VMにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる特別なCPUオーバヘッドもほとんど発生しない点は有益である。さらに、I/O仮想デバイスのフロントエンド(FE)ドライブ(すなわちFE)はVM内にあるため、FEは、Host内のバックエンド(BE)ドライブ(すなわちBE)を介してデータを転送し、VMはHostの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。さらに、VM内のOSが最新のハードウェア技術をサポートする機能を有する必要はなく、コンピューティング・ノードは、ハードウェア・プロバイダ(IHV)によって提供されるVMドライブに依存することなく、様々な主流のOSに適用可能であり、仮想マシンと物理プラットフォームとの間の隔離状態及び分離状態は完全に保存され、仮想マシンを容易に遷移させることが可能であり、Hostは依然としてVM内のデータの受信及び送信を監視可能であり、データのフィルタリング及びメモリの多重化などの高度な機能が依然として使用可能であり、PVのフロントエンドのFE部分は多重化可能であり、アップグレード操作を実行するのに便利である。
さらに、DMA読み取り要求/書き込み要求を実行する手順中において、ハードウェア・モジュールIOMMUはGPAとHPAとの間の変換を実装し、それによって必要なハードウェア・リソース構成を削減し、処理フローを簡略化する。別の方法として、DMA読み取り要求を実行する手順中において、HostはGPAとHPAとの間の変換を実装し、それによって必要なハードウェア・リソース構成を削減し、処理フローを簡略化する。
当業者であれば、本発明の実施形態に従った方法のすべて又は一部のステップは、プログラム命令と関連するハードウェアによって実装可能であることを理解されたい。プログラムは、読み取り専用メモリ、ランダム・アクセス・メモリ、磁気ディスク、又は光ディスクなどの、コンピュータ読み取り可能記憶媒体内に記憶可能である。
本発明の実施形態において提供される仮想化処理の方法及び装置並びにコンピュータ・システムが、詳細に説明される。本明細書では、本発明の原理及び実装は特定の例を介して説明される。本発明の実施形態に関する説明は、単に本発明の方法及び核となる概念を容易に理解するために提供されている。当業者であれば、本発明の概念に従った特定の実装及び適用範囲に関して、本発明の変形及び修正が実行可能である。したがって本明細書は、本発明に対する制限として解釈されるべきではない。

Claims (18)

  1. 入出力(I/O)デバイスのI/O仮想機(VF)が実行可能とされた後に、Host内にいくつかの仮想機能(VF)ソフトウェア・インスタンスを生成するステップであって、いくつかの対応するVFデバイスは、前記実行可能とされたI/O VFによって前記I/Oデバイスから仮想化され、前記いくつかのVFソフトウェア・インスタンス及び前記いくつかのVFデバイスは一対一の対応関係にある、生成するステップと、
    前記Hostによって、前記I/Oデバイスと同じタイプを有するI/O仮想デバイスを作成するステップであって、前記I/O仮想デバイスのバックエンド・インスタンス(BE)は前記Host内に作成され、前記I/O仮想デバイスのフロントエンド・インスタンス(FE)は開始された仮想マシンVM内に作成される、作成するステップ、及び、
    前記BEをアイドル状態のVFソフトウェア・インスタンスと結合するステップ
    を含む、仮想化処理方法。
  2. コンピューティング・ノードに適用される仮想化処理方法であって、前記コンピューティング・ノードは、ハードウェア層、前記ハードウェア層上で実行されるHost、及び前記Host上で実行される少なくとも1つの仮想マシン(VM)を備え、前記ハードウェア層は入出力(I/O)デバイスを備え、いくつかの対応する仮想機能(VF)デバイスは前記I/Oデバイスから仮想化され、前記HostはいくつかのVFソフトウェア・インスタンスを有し、前記いくつかのVFソフトウェア・インスタンス及び前記いくつかのVFデバイスは一対一の対応関係にあり、
    前記Hostは前記I/Oデバイスと同じタイプを有するI/O仮想デバイスのバックエンド・インスタンス(BE)をさらに有し、
    前記VMは前記I/O仮想デバイスのフロントエンド・インスタンス(FE)を有し、前記Host内の前記BEはアイドル状態のVFソフトウェア・インスタンスと結合され、
    前記方法は、
    前記FEによって、ダイレクト・メモリ・アクセス(DMA)用のキャッシュを事前に割り当てるステップと、
    前記BEと結合された前記VFソフトウェア・インスタンスによって、前記BEエクスポート・アプリケーション・プログラミング・インタフェースを介して前記DMA用のキャッシュに対応するアドレスを獲得し、前記DMA用のキャッシュに対応する前記獲得したアドレスを、前記VFソフトウェア・インスタンスに対応するVFデバイスの第1の記憶ユニットに書き込むステップと、
    受信対象のデータが存在する場合、前記VFデバイスによって、前記第1の記憶ユニットから前記DMA用のキャッシュに対応する前記アドレスを選択し、前記選択されたアドレスをターゲット・アドレスとして使用することにより、DMA書き込み要求を開始するステップと、
    前記VFソフトウェア・インスタンスが前記アドレスに対応する前記キャッシュに書き込まれた前記データを受信するために前記FEをトリガするようにするために、前記DMA書き込み要求が実行された後に、前記VFデバイスによって、前記VFデバイスに対応し前記Host内にある前記VFソフトウェア・インスタンスに通知するステップ
    を含む、仮想化処理方法。
  3. 前記ハードウェア層は入出力(I/O)メモリ管理ユニット(IOMMU)をさらに備え、
    前記方法は、
    前記FEによって、前記DMA用の事前に割り当てられたキャッシュに対応するゲスト物理アドレスGPAを、前記Hostと前記VMとの間の共有メモリに書き込むステップ
    をさらに含み、
    前記BEと結合された前記VFソフトウェア・インスタンスによって、前記BE前記エクスポート・アプリケーション・プログラミング・インタフェースを介して前記DMA用のキャッシュに対応する前記アドレスを獲得し、前記DMA用のキャッシュに対応する前記獲得したアドレスを、前記VFソフトウェア・インスタンスに対応する前記VFデバイスの前記第1の記憶ユニットに書き込み、受信対象のデータが存在する場合、前記VFデバイスによって、前記第1の記憶ユニットから前記DMA用のキャッシュに対応する前記アドレスを選択し、前記選択されたアドレスを前記ターゲット・アドレスとして使用することにより、前記DMA書き込み要求を開始するステップは、
    前記BEと結合された前記VFソフトウェア・インスタンスによって、前記BE前記エクスポート・アプリケーション・プログラミング・インタフェースを介して、前記共有メモリから前記DMA用のキャッシュに対応する前記GPAを獲得し、前記DMA用のキャッシュに対応する前記獲得したGPAを、前記VFソフトウェア・インスタンスに対応する前記VFデバイスの前記第1の記憶ユニットに書き込むステップ、及び、
    受信対象のデータが存在する場合、前記VFデバイスによって、前記第1の記憶ユニットから前記DMA用のキャッシュに対応する前記GPAを選択し、前記選択されたGPAを前記ターゲット・アドレスとして使用することにより、前記DMA書き込み要求を開始するステップ
    を含み、
    前記方法は、
    前記IOMMUによって、前記DMA書き込み要求の前記ターゲット・アドレスGPAを、対応するHost物理アドレス(HPA)に修正するステップ
    をさらに含み、
    前記VFソフトウェア・インスタンスが前記アドレスに対応する前記キャッシュに書き込まれた前記データを受信するために前記FEをトリガするようにするために、前記DMA書き込み要求が実行された後に、前記VFデバイスによって、前記VFデバイスに対応し前記Host内にある前記VFソフトウェア・インスタンスに通知するステップは、
    前記VFソフトウェア・インスタンスが前記HPAに対応する前記キャッシュに書き込まれた前記データを受信するために前記FEをトリガするようにするために、ターゲット・アドレスが前記HPAに修正された前記DMA書き込み要求が実行された後に、前記VFデバイスによって、前記VFデバイスに対応し前記Host内にある前記VFソフトウェア・インスタンスに通知するステップ
    をさらに含む、請求項2に記載の方法。
  4. 前記FEによって、前記DMA用の前記事前に割り当てられたキャッシュに対応するGPAを、前記Hostと前記VMとの間の共有メモリに書き込むステップと、
    前記Hostによって、前記共有メモリ内の前記DMA用のキャッシュに対応する前記GPAを、対応するHPAに修正するステップ
    をさらに含み、
    前記BEと結合された前記VFソフトウェア・インスタンスによって、前記BEの前記エクスポート・アプリケーション・プログラミング・インターフェースを介して前記DMA用のキャッシュに対応する前記アドレスを獲得し、前記DMA用のキャッシュに対応する前記獲得したアドレスを、前記VFソフトウェア・インスタンスに対応する前記VFデバイスの前記第1の記憶ユニットに書き込み、受信対象のデータが存在する場合、前記VFデバイスによって、前記第1の記憶ユニットから前記DMA用のキャッシュに対応する前記アドレスを選択し、前記選択されたアドレスを前記ターゲット・アドレスとして使用することにより、前記DMA書き込み要求を開始するステップは、
    前記BEと結合された前記VFソフトウェア・インスタンスによって、前記BEの前記エクスポート・アプリケーション・プログラミング・インターフェースを介して前記DMA用のキャッシュに対応する前記HPAを獲得し、前記DMA用のキャッシュに対応する前記獲得したHPAを、前記VFソフトウェア・インスタンスに対応する前記VFデバイスの前記第1の記憶ユニットに書き込むステップ、及び
    受信対象のデータが存在する場合、前記VFデバイスによって、前記第1の記憶ユニットから前記DMA用のキャッシュに対応する前記HPAを選択し、前記選択されたHPAを前記ターゲット・アドレスとして使用することにより、前記DMA書き込み要求を開始するステップ
    を含む、請求項2に記載の方法。
  5. 前記ハードウェア層は入出力(I/O)メモリ管理ユニット(IOMMU)をさらに備え、
    前記方法は、
    前記FEによって、送信対象のデータが位置するキャッシュに対応するGPAを、前記Hostと前記VMとの間の共有メモリに書き込むステップと、
    前記BEによって、前記送信対象のデータが位置する前記キャッシュに対応する前記GPAを前記共有メモリから獲得するステップと、
    前記BEによって、前記BEと結合された前記VFソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、前記送信対象のデータが位置する前記キャッシュに対応する前記GPAを、前記VFソフトウェア・インスタンスに対応する前記VFデバイスの第2の記憶ユニットに書き込むステップと、
    前記送信対象のデータが見つかった場合、前記VFデバイスによって、前記第2の記憶ユニット内に記録された前記GPAをターゲット・アドレスとして使用することにより、DMA読み取り要求を開始するステップと、及び
    前記IOMMUによって、前記DMA読み取り要求の前記ターゲット・アドレスGPAを、対応するHPAに修正するステップ
    をさらに含む、請求項2に記載の方法。
  6. 前記FEによって、送信対象のデータが位置するキャッシュに対応するGPAを、前記Hostと前記VMとの間の共有メモリに書き込むステップと、
    前記Hostによって、前記共有メモリ内の前記送信対象のデータが位置するキャッシュに対応する前記GPAを、対応するHPAに修正するステップと、
    前記BEによって、前記送信対象のデータが位置する前記キャッシュに対応する前記HPAを獲得し、前記BEと結合された前記VFソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、前記送信対象のデータが位置する前記キャッシュに対応する前記HPAを、前記VFソフトウェア・インスタンスに対応する前記VFデバイスの第2の記憶ユニットに書き込むステップと、及び
    前記送信対象のデータが見つかった場合、前記VFデバイスによって、前記第2の記憶ユニット内に記録された前記HPAをターゲット・アドレスとして使用することにより、DMA読み取り要求を開始するステップ
    をさらに含む、請求項2に記載の方法。
  7. 前記VFソフトウェア・インスタンスが前記対応するキャッシュを解放するために前記FEをトリガするように、前記DMA読み取り要求が実行された後、前記VFデバイスが、前記Host内において前記VFデバイスに対応する前記VFソフトウェア・インスタンスに通知することをさらに含む、請求項5又は6に記載の方法。
  8. アドレス変換ページ・テーブルは前記IOMMU内に設定され、前記アドレス変換ページ・テーブルは前記HPAと前記GPAとの間のマッピングを記録し、
    前記IOMMUによって、前記DMA書き込み要求の前記ターゲット・アドレスGPAを、対応するHost物理アドレス(HPA)に修正するステップは、
    前記IOMMUによって、前記アドレス変換ページ・テーブルを検索することによって、前記DMA書き込み要求の前記ターゲット・アドレスGPAに対応する前記HPAを獲得し、前記DMA書き込み要求の前記ターゲット・アドレスGPAを、前記獲得されたHPAに修正するステップを含むか、
    又は、
    前記IOMMUによって、前記DMA読み取り要求の前記ターゲット・アドレスGPAを、対応するHPAに修正するステップは、
    前記IOMMUによって、前記アドレス変換ページ・テーブルを検索することによって、前記DMA読み取り要求の前記ターゲット・アドレスGPAに対応する前記HPAを獲得し、前記DMA読み取り要求の前記ターゲット・アドレスGPAを、前記獲得されたHPAに修正するステップを含む、
    請求項3又は5に記載の方法。
  9. アドレス変換ページ・テーブルは前記Host内に設定され、前記アドレス変換ページ・テーブルは前記HPAと前記GPAとの間のマッピングを記録し、
    前記Hostによって、前記共有メモリ内の前記DMA用のキャッシュに対応する前記GPAを前記対応するHPAに修正するステップは、
    前記アドレス変換ページ・テーブルを検索することにより、前記Hostによって、前記共有メモリ内の前記DMA用のキャッシュに対応する前記GPAに対応する前記HPAを獲得し、前記共有メモリ内の前記DMA用のキャッシュに対応する前記GPAを前記獲得されたHPAに修正するステップを含むか、
    又は、
    前記Hostによって、前記共有メモリ内の送対象のデータが位置する前記キャッシュに対応する前記GPAを、対応するHPAに修正するステップは、
    前記アドレス変換ページ・テーブルを検索することにより、前記Hostによって、前記共有メモリ内の前記送信対象のデータが位置する前記キャッシュに対応する前記GPAと対応する前記HPAを獲得し、前記共有メモリ内の前記送信対象のデータが位置する前記キャッシュに対応する前記GPAを、前記獲得されたHPAに修正するステップを含む、
    請求項4又は6に記載の方法。
  10. 前記第1の記憶ユニットは受信キューである、及び/又は
    前記第2の記憶ユニットは送信キューである、
    請求項2から6のいずれか一項に記載の方法。
  11. ハードウェア層、前記ハードウェア層上で実行されるHost、及び前記Host上で実行される少なくとも1つの仮想マシン(VM)を備える、コンピューティング・ノードであって、前記ハードウェア層は入出力(I/Oデバイスを備え、いくつかの対応する仮想機能(VF)デバイスは前記I/Oデバイスから仮想化され、前記HostはいくつかのVFソフトウェア・インスタンスを有し、前記いくつかのVFソフトウェア・インスタンス及び前記いくつかのVFデバイスは、一対一の対応関係にあり、前記Hostは前記I/Oデバイスと同じタイプを有するI/O仮想デバイスのバックエンド・インスタンス(BE)をさらに有し、前記VMは前記I/O仮想デバイスのフロントエンド・インスタンス(FE)を有し、前記Host内の前記BEはアイドル状態のVFソフトウェア・インスタンスと結合される、コンピューティング・ノード。
  12. 前記FEは、ダイレクト・メモリ・アクセス(DMA)用のキャッシュを事前に割り当てるように構成され、
    前記BEと結合された前記VFソフトウェア・インスタンスは、前記BEエクスポート・アプリケーション・プログラミング・インターフェースを介して前記DMA用のキャッシュに対応するアドレスを獲得し、前記DMA用のキャッシュに対応する前記獲得したアドレスを、前記VFソフトウェア・インスタンスに対応するVFデバイスの第1の記憶ユニットに書き込むように構成され、
    前記VFデバイスは、受信対象のデータが存在する場合、前記第1の記憶ユニットから前記DMA用のキャッシュに対応する前記アドレスを選択し、前記DMA用のキャッシュに対応する前記選択されたアドレスをターゲット・アドレスとして使用することにより、DMA書き込み要求を開始し、前記VFソフトウェア・インスタンスが前記アドレスに対応する前記キャッシュに書き込まれた前記データを受信するために前記FEをトリガするように、前記DMA書き込み要求が実行された後に、前記VFデバイスに対応し前記Host内にある前記VFソフトウェア・インスタンスに通知するように構成される、
    請求項11に記載のコンピューティング・ノード。
  13. 前記FEは、前記DMA用の事前に割り当てられたキャッシュに対応するゲスト物理アドレス(GPA)を、前記Hostと前記VMとの間の共有メモリに書き込むようにさらに構成され、
    前記BEと結合された前記VFソフトウェア・インスタンスは、前記BEエクスポート・アプリケーション・プログラミング・インターフェースを介して、前記共有メモリから前記DMA用のキャッシュに対応する前記GPAを獲得し、前記DMA用のキャッシュに対応する前記獲得されたGPAを、前記VFソフトウェア・インスタンスに対応する前記VFデバイスの前記第1の記憶ユニットに書き込むように、具体的に構成され、
    前記VFは、受信対象のデータが存在する場合、前記第1の記憶ユニットから前記DMA用のキャッシュに対応する前記GPAを選択し、前記DMA用のキャッシュに対応する前記選択されたGPAをターゲット・アドレスとして使用することにより、前記DMA書き込み要求を開始し、前記VFソフトウェア・インスタンスが前記HPAに対応する前記キャッシュに書き込まれた前記データを受信するために前記FEをトリガするように、ターゲット・アドレスGPAが対応するHPAに修正された前記DMA書き込み要求が実行された後に、前記VFデバイスに対応し前記Host内にある前記VFソフトウェア・インスタンスに通知するように、具体的に構成され、
    前記コンピューティング・ノードの前記ハードウェア層は、
    前記DMA書き込み要求の前記ターゲット・アドレスGPAを、対応するHost物理アドレス(HPA)に修正するように構成された、入出力(I/O)メモリ管理ユニット(IOMMU)をさらに備える、
    請求項12に記載のコンピューティング・ノード。
  14. 前記FEは、前記DMA用の前記事前に割り当てられたキャッシュに対応するGPAを、前記Hostと前記VMとの間の共有メモリに書き込むように構成され、
    前記Hostは、前記共有メモリ内の前記DMA用のキャッシュに対応する前記GPAを、対応するHPAに修正するように構成され、
    前記BEと結合された前記VFソフトウェア・インスタンスは、前記BE前記エクスポート・アプリケーション・プログラミング・インターフェースを介して前記DMA用のキャッシュに対応する前記HPAを獲得し、前記DMA用のキャッシュに対応する前記獲得したHPAを、前記VFソフトウェア・インスタンスに対応する前記VFデバイスの前記第1の記憶ユニットに書き込むように、具体的に構成され、
    受信対象のデータが存在する場合、前記VFデバイスは、前記第1の記憶ユニットから前記DMA用のキャッシュに対応する前記HPAを選択し、前記選択されたHPAをターゲット・アドレスとして使用することにより、前記DMA書き込み要求を開始し、前記VFソフトウェア・インスタンスが前記HPAに対応する前記キャッシュに書き込まれた前記データを受信するために前記FEをトリガするように、前記DMA書き込み要求が実行された後に、前記VFデバイスに対応し前記Host内にある前記VFソフトウェア・インスタンスに通知するように、具体的に構成される、
    請求項12に記載のコンピューティング・ノード。
  15. 前記FEは、送信対象のデータが位置するキャッシュに対応するGPAを、前記Hostと前記VMとの間の共有メモリに書き込むようにさらに構成され、
    前記BEは、前記送信対象のデータが位置する前記キャッシュに対応する前記GPAを前記共有メモリから獲得し、前記BEと結合された前記VFソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、前記送信対象のデータが位置する前記キャッシュに対応する前記GPAを、前記VFソフトウェア・インスタンスに対応する前記VFデバイスの第2の記憶ユニットに書き込むように、さらに構成され、
    前記VFデバイスは、前記送信対象のデータが見つかった場合、前記第2の記憶ユニット内に記録された前記GPAをターゲット・アドレスとして使用することにより、DMA読み取り要求を開始するように構成され、
    前記コンピューティング・ノードの前記ハードウェア層は、
    記DMA読み取り要求の前記ターゲット・アドレスGPAを、対応するHPAに修正するように構成された、入出力(I/Oメモリ管理ユニット(IOMMU)をさらに備える、
    請求項12に記載のコンピューティング・ノード。
  16. 前記FEは、送信対象のデータが位置するキャッシュに対応するGPAを、前記Hostと前記VMとの間の共有メモリに書き込むようにさらに構成され、
    前記Hostは、前記共有メモリ内の前記送信対象のデータが位置するキャッシュに対応する前記GPAを、対応するHPAに修正するように構成され、
    前記BEは、前記送信対象のデータが位置する前記キャッシュに対応する前記HPAを獲得し、前記BEと結合された前記VFソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、前記送信対象のデータが位置する前記キャッシュに対応する前記HPAを、前記VFソフトウェア・インスタンスに対応する前記VFデバイスの第2の記憶ユニットに書き込むように、さらに構成され、
    前記VFデバイスは、前記送信対象のデータが見つかった場合、前記第2の記憶ユニット内に記録された前記HPAをターゲット・アドレスとして使用することにより、DMA読み取り要求を開始するようにさらに構成される、
    請求項12に記載のコンピューティング・ノード。
  17. 前記VFデバイスは、前記対応するキャッシュを解放するために前記VFソフトウェア・インスタンスが前記FEをトリガするように、前記DMA読み取り要求が実行された後に、前記VFデバイスに対応し前記Host内にある前記VFソフトウェア・インスタンスに通知するようにさらに構成される、
    請求項15又は16に記載のコンピューティング・ノード。
  18. 請求項12から17のいずれか一項に記載の1つ又は複数のコンピューティング・ノードを備える、コンピュータ・システム。
JP2014537456A 2011-12-31 2012-05-22 仮想化処理の方法及び装置並びにコンピュータ・システム Active JP5802841B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201110458345.8A CN102591702B (zh) 2011-12-31 2011-12-31 虚拟化处理方法及相关装置和计算机系统
CN201110458345.8 2011-12-31
PCT/CN2012/075846 WO2012149912A1 (zh) 2011-12-31 2012-05-22 虚拟化处理方法及相关装置和计算机系统

Publications (2)

Publication Number Publication Date
JP2014531093A JP2014531093A (ja) 2014-11-20
JP5802841B2 true JP5802841B2 (ja) 2015-11-04

Family

ID=46480412

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014537456A Active JP5802841B2 (ja) 2011-12-31 2012-05-22 仮想化処理の方法及び装置並びにコンピュータ・システム

Country Status (8)

Country Link
US (2) US8635616B2 (ja)
EP (1) EP2743829B1 (ja)
JP (1) JP5802841B2 (ja)
KR (2) KR101740521B1 (ja)
CN (1) CN102591702B (ja)
AU (1) AU2012250375B2 (ja)
RU (1) RU2573219C2 (ja)
WO (1) WO2012149912A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9239909B2 (en) * 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
US9244743B1 (en) 2012-08-01 2016-01-26 Amazon Technologies, Inc. Remotely interacting with a virtualized machine instance
CN102946366B (zh) * 2012-11-12 2015-12-16 杭州华为数字技术有限公司 带内管理方法及系统
US9454392B2 (en) * 2012-11-27 2016-09-27 Red Hat Israel, Ltd. Routing data packets between virtual machines using shared memory without copying the data packet
US9535871B2 (en) 2012-11-27 2017-01-03 Red Hat Israel, Ltd. Dynamic routing through virtual appliances
CN103870312B (zh) * 2012-12-12 2018-01-23 华为技术有限公司 建立虚拟机共享存储缓存的方法及装置
CN103116517B (zh) * 2013-01-24 2016-09-14 华为技术有限公司 虚拟化平台下i/o通道的调整方法和调整装置
US9195483B2 (en) * 2013-01-28 2015-11-24 Dell Products L.P. Systems and methods for mirroring virtual functions in a chassis configured to receive a plurality of modular information handling systems and a plurality of modular information handling resources
GB2514107B (en) * 2013-05-13 2020-07-29 Advanced Risc Mach Ltd Page table data management
CN103389884A (zh) * 2013-07-29 2013-11-13 华为技术有限公司 处理输入/输出请求的方法、宿主机、服务器和虚拟机
CN104508632B (zh) * 2013-07-31 2018-03-13 华为技术有限公司 一种数据转发方法、装置及系统
CN103763173B (zh) * 2013-12-31 2017-08-25 华为技术有限公司 数据传输方法和计算节点
CN104123173B (zh) * 2014-07-22 2017-08-25 华为技术有限公司 一种实现虚拟机间通信的方法及装置
JP6380084B2 (ja) * 2014-12-19 2018-08-29 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
CN105556473A (zh) * 2014-12-27 2016-05-04 华为技术有限公司 一种i/o任务处理的方法、设备和系统
KR102398213B1 (ko) 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
CN106301876B (zh) * 2015-06-26 2019-11-29 南京中兴新软件有限责任公司 物理机升级方法、业务迁移方法及装置
RU2644126C2 (ru) * 2016-05-31 2018-02-07 Некоммерческое Партнерство "Центр Прикладных Исследований Компьютерных Сетей" Способ оптимального планирования использования виртуальных сетевых ресурсов центров обработки данных
CN107643897B (zh) * 2016-07-20 2021-04-16 阿里巴巴集团控股有限公司 后端驱动程序的更新方法及装置
CN111078353A (zh) * 2016-10-28 2020-04-28 华为技术有限公司 存储设备的操作方法及物理服务器
KR101716715B1 (ko) 2016-12-27 2017-03-15 주식회사 티맥스클라우드 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
CN109426545B (zh) * 2017-08-31 2023-02-03 阿里巴巴集团控股有限公司 一种数据通信方法及装置
CN109542581B (zh) * 2017-09-22 2020-10-13 深圳市中兴微电子技术有限公司 一种设备共享方法、装置及存储介质
CN109657471B (zh) * 2017-10-11 2023-02-28 阿里巴巴集团控股有限公司 云设备管理系统和方法
CN110554977A (zh) * 2018-05-30 2019-12-10 阿里巴巴集团控股有限公司 数据缓存方法、数据处理方法、计算机设备、存储介质
CN110597451B (zh) * 2018-06-12 2021-02-23 华为技术有限公司 一种虚拟化缓存的实现方法及物理机
CN109525515B (zh) * 2018-10-23 2021-04-30 郑州云海信息技术有限公司 一种云平台中网卡的管理方法和装置
CN111857943B (zh) * 2019-04-30 2024-05-17 华为技术有限公司 数据处理的方法、装置与设备
KR102247247B1 (ko) * 2019-06-05 2021-05-03 주식회사 티맥스티베로 데이터베이스 관리 방법
US11044161B2 (en) * 2019-10-11 2021-06-22 Huawei Technologies Canada Co., Ltd. Method and system for latency-aware embedding of a virtual network onto a substrate optical network
CN111274176B (zh) * 2020-01-15 2022-04-22 联想(北京)有限公司 一种信息处理方法、电子设备、系统及存储介质
CN117234741B (zh) * 2023-11-14 2024-02-20 苏州元脑智能科技有限公司 资源管理与调度方法、装置、电子设备以及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195345B1 (en) * 1997-12-03 2001-02-27 Ericsson Messaging Systems, Inc. High capacity multimedia messaging exchanges
EP0944257A1 (en) 1998-03-06 1999-09-22 CANAL+ Société Anonyme Multimedia terminal adapted for multiple users
JP2006294517A (ja) 2005-04-13 2006-10-26 Kansai Electric Power Co Inc:The Ga系固体電解質材料の製造方法
US20060294517A1 (en) 2005-06-28 2006-12-28 Zimmer Vincent J Network interface sharing among multiple virtual machines
US20070271560A1 (en) 2006-05-18 2007-11-22 Microsoft Corporation Deploying virtual machine to host based on workload characterizations
JP4681505B2 (ja) * 2006-05-23 2011-05-11 株式会社日立製作所 計算機システム、管理計算機及びプログラム配布方法
US20080126614A1 (en) * 2006-09-26 2008-05-29 Giap Yong Ooi Input/output (I/O) device virtualization using hardware
US7761612B2 (en) * 2006-12-07 2010-07-20 International Business Machines Corporation Migrating domains from one physical data processing system to another
CN100568181C (zh) * 2007-06-22 2009-12-09 浙江大学 基于处理器虚拟化技术的虚拟机系统及其实现方法
US8645974B2 (en) 2007-08-02 2014-02-04 International Business Machines Corporation Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device
US8954957B2 (en) 2009-07-01 2015-02-10 Riverbed Technology, Inc. Network traffic processing according to network traffic rule criteria and transferring network traffic metadata in a network device that includes hosted virtual machines
KR101521778B1 (ko) * 2009-12-24 2015-05-20 인텔 코포레이션 가상화 환경에서 i/o 동작을 처리하는 방법 및 장치
JP2011145912A (ja) 2010-01-15 2011-07-28 Fujitsu Ltd 仮想計算機を使用したクライアントシステム、仮想計算機を使用したクライアント制御方法及びそのプログラム
US8178754B1 (en) 2010-05-05 2012-05-15 Pioneer Hi-Bred International, Inc. Soybean variety XB29L10
CN101976200B (zh) * 2010-10-15 2013-05-08 浙江大学 在虚拟机监控器外进行输入输出设备虚拟化的虚拟机系统

Also Published As

Publication number Publication date
RU2014117656A (ru) 2015-11-10
EP2743829A4 (en) 2014-10-22
RU2573219C2 (ru) 2016-01-20
EP2743829B1 (en) 2018-09-12
EP2743829A1 (en) 2014-06-18
KR20170058469A (ko) 2017-05-26
US20130174155A1 (en) 2013-07-04
KR101740521B1 (ko) 2017-06-08
US9244715B2 (en) 2016-01-26
US20140019973A1 (en) 2014-01-16
AU2012250375B2 (en) 2015-08-13
US8635616B2 (en) 2014-01-21
CN102591702B (zh) 2015-04-15
WO2012149912A1 (zh) 2012-11-08
CN102591702A (zh) 2012-07-18
JP2014531093A (ja) 2014-11-20
AU2012250375A1 (en) 2014-04-03
KR20140054349A (ko) 2014-05-08

Similar Documents

Publication Publication Date Title
JP5802841B2 (ja) 仮想化処理の方法及び装置並びにコンピュータ・システム
US9529773B2 (en) Systems and methods for enabling access to extensible remote storage over a network as local storage via a logical storage controller
TWI625674B (zh) 用於支援在主機上運行的多個虛擬機器的nvme控制器虛擬化的系統和方法
US9501245B2 (en) Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host
US20190155548A1 (en) Computer system and storage access apparatus
EP3985504B1 (en) Virtual machine migration
US20150317177A1 (en) Systems and methods for supporting migration of virtual machines accessing remote storage devices over network via nvme controllers
US10642539B2 (en) Read/write path determining method and apparatus
CN111831588A (zh) 一种存储设备访问方法、装置和系统
US11016817B2 (en) Multi root I/O virtualization system
WO2016101282A1 (zh) 一种i/o任务处理的方法、设备和系统
WO2016119468A1 (zh) 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备
US20190037043A1 (en) Data Prefetching Method and Apparatus
WO2020157599A1 (en) Engine pre-emption and restoration
WO2018149157A1 (zh) 一种vcpu线程的调度方法及装置
CN111367472A (zh) 虚拟化方法和装置
AU2015203452B2 (en) Virtualization processing method and apparatuses, and computer system
US10430220B1 (en) Virtual devices as protocol neutral communications mediators
CN117520215A (zh) 一种缺页处理方法和相关设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140423

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150414

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150714

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150831

R150 Certificate of patent or registration of utility model

Ref document number: 5802841

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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