(57)【特許請求の範囲】
【請求項１】
入出力（Ｉ／Ｏ）デバイスのＩ／Ｏ仮想機能（ＶＦ）が実行可能とされた後に、Ｈｏｓｔ内にいくつかの仮想機能（ＶＦ）ソフトウェア・インスタンスを生成するステップであって、いくつかの対応するＶＦデバイスは、前記実行可能とされたＩ／Ｏ  ＶＦによって前記Ｉ／Ｏデバイスから仮想化され、前記いくつかのＶＦソフトウェア・インスタンス及び前記いくつかのＶＦデバイスは一対一の対応関係にある、生成するステップと、
前記Ｈｏｓｔによって、前記Ｉ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成するステップであって、前記Ｉ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）は前記Ｈｏｓｔ内に作成され、前記Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は開始された仮想マシンＶＭ内に作成される、作成するステップ、及び、
前記ＢＥをアイドル状態のＶＦソフトウェア・インスタンスと結合するステップ、
を含む、仮想化処理方法。
【請求項２】
コンピューティング・ノードに適用される仮想化処理方法であって、前記コンピューティング・ノードは、ハードウェア層、前記ハードウェア層上で実行されるＨｏｓｔ、及び前記Ｈｏｓｔ上で実行される少なくとも１つの仮想マシン（ＶＭ）を備え、前記ハードウェア層は入出力（Ｉ／Ｏ）デバイスを備え、いくつかの対応する仮想機能（ＶＦ）デバイスは前記Ｉ／Ｏデバイスから仮想化され、前記ＨｏｓｔはいくつかのＶＦソフトウェア・インスタンスを有し、前記いくつかのＶＦソフトウェア・インスタンス及び前記いくつかのＶＦデバイスは一対一の対応関係にあり、
前記Ｈｏｓｔは前記Ｉ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）をさらに有し、
前記ＶＭは前記Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）を有し、前記Ｈｏｓｔ内の前記ＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合され、
前記方法は、
前記ＦＥによって、ダイレクト・メモリ・アクセス（ＤＭＡ）用のキャッシュを事前に割り当てるステップと、
前記ＢＥと結合された前記ＶＦソフトウェア・インスタンスによって、前記ＢＥのエクスポート・アプリケーション・プログラミング・インタフェースを介して前記ＤＭＡ用のキャッシュに対応するアドレスを獲得し、前記ＤＭＡ用のキャッシュに対応する前記獲得したアドレスを、前記ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの第１の記憶ユニットに書き込むステップと、
受信対象のデータが存在する場合、前記ＶＦデバイスによって、前記第１の記憶ユニットから前記ＤＭＡ用のキャッシュに対応する前記アドレスを選択し、前記選択されたアドレスをターゲット・アドレスとして使用することにより、ＤＭＡ書き込み要求を開始するステップと、
前記ＶＦソフトウェア・インスタンスが前記アドレスに対応する前記キャッシュに書き込まれた前記データを受信するために前記ＦＥをトリガするようにするために、前記ＤＭＡ書き込み要求が実行された後に、前記ＶＦデバイスによって、前記ＶＦデバイスに対応し前記Ｈｏｓｔ内にある前記ＶＦソフトウェア・インスタンスに通知するステップ、
を含む、仮想化処理方法。
【請求項３】
前記ハードウェア層は入出力（Ｉ／Ｏ）メモリ管理ユニット（ＩＯＭＭＵ）をさらに備え、
前記方法は、
前記ＦＥによって、前記ＤＭＡ用の事前に割り当てられたキャッシュに対応するゲスト物理アドレスＧＰＡを、前記Ｈｏｓｔと前記ＶＭとの間の共有メモリに書き込むステップ、
をさらに含み、
前記ＢＥと結合された前記ＶＦソフトウェア・インスタンスによって、前記ＢＥの前記エクスポート・アプリケーション・プログラミング・インタフェースを介して前記ＤＭＡ用のキャッシュに対応する前記アドレスを獲得し、前記ＤＭＡ用のキャッシュに対応する前記獲得したアドレスを、前記ＶＦソフトウェア・インスタンスに対応する前記ＶＦデバイスの前記第１の記憶ユニットに書き込み、受信対象のデータが存在する場合、前記ＶＦデバイスによって、前記第１の記憶ユニットから前記ＤＭＡ用のキャッシュに対応する前記アドレスを選択し、前記選択されたアドレスを前記ターゲット・アドレスとして使用することにより、前記ＤＭＡ書き込み要求を開始するステップは、
前記ＢＥと結合された前記ＶＦソフトウェア・インスタンスによって、前記ＢＥの前記エクスポート・アプリケーション・プログラミング・インタフェースを介して、前記共有メモリから前記ＤＭＡ用のキャッシュに対応する前記ＧＰＡを獲得し、前記ＤＭＡ用のキャッシュに対応する前記獲得したＧＰＡを、前記ＶＦソフトウェア・インスタンスに対応する前記ＶＦデバイスの前記第１の記憶ユニットに書き込むステップ、及び、
受信対象のデータが存在する場合、前記ＶＦデバイスによって、前記第１の記憶ユニットから前記ＤＭＡ用のキャッシュに対応する前記ＧＰＡを選択し、前記選択されたＧＰＡを前記ターゲット・アドレスとして使用することにより、前記ＤＭＡ書き込み要求を開始するステップ、
を含み、
前記方法は、
前記ＩＯＭＭＵによって、前記ＤＭＡ書き込み要求の前記ターゲット・アドレスＧＰＡを、対応するＨｏｓｔ物理アドレス（ＨＰＡ）に修正するステップ、
をさらに含み、
前記ＶＦソフトウェア・インスタンスが前記アドレスに対応する前記キャッシュに書き込まれた前記データを受信するために前記ＦＥをトリガするようにするために、前記ＤＭＡ書き込み要求が実行された後に、前記ＶＦデバイスによって、前記ＶＦデバイスに対応し前記Ｈｏｓｔ内にある前記ＶＦソフトウェア・インスタンスに通知するステップは、
前記ＶＦソフトウェア・インスタンスが前記ＨＰＡに対応する前記キャッシュに書き込まれた前記データを受信するために前記ＦＥをトリガするようにするために、ターゲット・アドレスが前記ＨＰＡに修正された前記ＤＭＡ書き込み要求が実行された後に、前記ＶＦデバイスによって、前記ＶＦデバイスに対応し前記Ｈｏｓｔ内にある前記ＶＦソフトウェア・インスタンスに通知するステップ、
をさらに含む、請求項２に記載の方法。
【請求項４】
前記ＦＥによって、前記ＤＭＡ用の前記事前に割り当てられたキャッシュに対応するＧＰＡを、前記Ｈｏｓｔと前記ＶＭとの間の共有メモリに書き込むステップと、
前記Ｈｏｓｔによって、前記共有メモリ内の前記ＤＭＡ用のキャッシュに対応する前記ＧＰＡを、対応するＨＰＡに修正するステップ、
をさらに含み、
前記ＢＥと結合された前記ＶＦソフトウェア・インスタンスによって、前記ＢＥの前記エクスポート・アプリケーション・プログラミング・インターフェースを介して前記ＤＭＡ用のキャッシュに対応する前記アドレスを獲得し、前記ＤＭＡ用のキャッシュに対応する前記獲得したアドレスを、前記ＶＦソフトウェア・インスタンスに対応する前記ＶＦデバイスの前記第１の記憶ユニットに書き込み、受信対象のデータが存在する場合、前記ＶＦデバイスによって、前記第１の記憶ユニットから前記ＤＭＡ用のキャッシュに対応する前記アドレスを選択し、前記選択されたアドレスを前記ターゲット・アドレスとして使用することにより、前記ＤＭＡ書き込み要求を開始するステップは、
前記ＢＥと結合された前記ＶＦソフトウェア・インスタンスによって、前記ＢＥの前記エクスポート・アプリケーション・プログラミング・インターフェースを介して前記ＤＭＡ用のキャッシュに対応する前記ＨＰＡを獲得し、前記ＤＭＡ用のキャッシュに対応する前記獲得したＨＰＡを、前記ＶＦソフトウェア・インスタンスに対応する前記ＶＦデバイスの前記第１の記憶ユニットに書き込むステップ、及び
受信対象のデータが存在する場合、前記ＶＦデバイスによって、前記第１の記憶ユニットから前記ＤＭＡ用のキャッシュに対応する前記ＨＰＡを選択し、前記選択されたＨＰＡを前記ターゲット・アドレスとして使用することにより、前記ＤＭＡ書き込み要求を開始するステップ、
を含む、請求項２に記載の方法。
【請求項５】
前記ハードウェア層は入出力（Ｉ／Ｏ）メモリ管理ユニット（ＩＯＭＭＵ）をさらに備え、
前記方法は、
前記ＦＥによって、送信対象のデータが位置するキャッシュに対応するＧＰＡを、前記Ｈｏｓｔと前記ＶＭとの間の共有メモリに書き込むステップと、
前記ＢＥによって、前記送信対象のデータが位置する前記キャッシュに対応する前記ＧＰＡを前記共有メモリから獲得するステップと、
前記ＢＥによって、前記ＢＥと結合された前記ＶＦソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、前記送信対象のデータが位置する前記キャッシュに対応する前記ＧＰＡを、前記ＶＦソフトウェア・インスタンスに対応する前記ＶＦデバイスの第２の記憶ユニットに書き込むステップと、
前記送信対象のデータが見つかった場合、前記ＶＦデバイスによって、前記第２の記憶ユニット内に記録された前記ＧＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ読み取り要求を開始するステップと、及び
前記ＩＯＭＭＵによって、前記ＤＭＡ読み取り要求の前記ターゲット・アドレスＧＰＡを、対応するＨＰＡに修正するステップ、
をさらに含む、請求項２に記載の方法。
【請求項６】
前記ＦＥによって、送信対象のデータが位置するキャッシュに対応するＧＰＡを、前記Ｈｏｓｔと前記ＶＭとの間の共有メモリに書き込むステップと、
前記Ｈｏｓｔによって、前記共有メモリ内の前記送信対象のデータが位置するキャッシュに対応する前記ＧＰＡを、対応するＨＰＡに修正するステップと、
前記ＢＥによって、前記送信対象のデータが位置する前記キャッシュに対応する前記ＨＰＡを獲得し、前記ＢＥと結合された前記ＶＦソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、前記送信対象のデータが位置する前記キャッシュに対応する前記ＨＰＡを、前記ＶＦソフトウェア・インスタンスに対応する前記ＶＦデバイスの第２の記憶ユニットに書き込むステップと、及び
前記送信対象のデータが見つかった場合、前記ＶＦデバイスによって、前記第２の記憶ユニット内に記録された前記ＨＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ読み取り要求を開始するステップ、
をさらに含む、請求項２に記載の方法。
【請求項７】
前記ＶＦソフトウェア・インスタンスが前記対応するキャッシュを解放するために前記ＦＥをトリガするように、前記ＤＭＡ読み取り要求が実行された後、前記ＶＦデバイスが、前記Ｈｏｓｔ内において前記ＶＦデバイスに対応する前記ＶＦソフトウェア・インスタンスに通知することをさらに含む、請求項５又は６に記載の方法。
【請求項８】
アドレス変換ページ・テーブルは前記ＩＯＭＭＵ内に設定され、前記アドレス変換ページ・テーブルは前記ＨＰＡと前記ＧＰＡとの間のマッピングを記録し、
前記ＩＯＭＭＵによって、前記ＤＭＡ書き込み要求の前記ターゲット・アドレスＧＰＡを、対応するＨｏｓｔ物理アドレス（ＨＰＡ）に修正するステップは、
前記ＩＯＭＭＵによって、前記アドレス変換ページ・テーブルを検索することによって、前記ＤＭＡ書き込み要求の前記ターゲット・アドレスＧＰＡに対応する前記ＨＰＡを獲得し、前記ＤＭＡ書き込み要求の前記ターゲット・アドレスＧＰＡを、前記獲得されたＨＰＡに修正するステップを含むか、
又は、
前記ＩＯＭＭＵによって、前記ＤＭＡ読み取り要求の前記ターゲット・アドレスＧＰＡを、対応するＨＰＡに修正するステップは、
前記ＩＯＭＭＵによって、前記アドレス変換ページ・テーブルを検索することによって、前記ＤＭＡ読み取り要求の前記ターゲット・アドレスＧＰＡに対応する前記ＨＰＡを獲得し、前記ＤＭＡ読み取り要求の前記ターゲット・アドレスＧＰＡを、前記獲得されたＨＰＡに修正するステップを含む、
請求項３又は５に記載の方法。
【請求項９】
アドレス変換ページ・テーブルは前記Ｈｏｓｔ内に設定され、前記アドレス変換ページ・テーブルは前記ＨＰＡと前記ＧＰＡとの間のマッピングを記録し、
前記Ｈｏｓｔによって、前記共有メモリ内の前記ＤＭＡ用のキャッシュに対応する前記ＧＰＡを前記対応するＨＰＡに修正するステップは、
前記アドレス変換ページ・テーブルを検索することにより、前記Ｈｏｓｔによって、前記共有メモリ内の前記ＤＭＡ用のキャッシュに対応する前記ＧＰＡに対応する前記ＨＰＡを獲得し、前記共有メモリ内の前記ＤＭＡ用のキャッシュに対応する前記ＧＰＡを前記獲得されたＨＰＡに修正するステップを含むか、
又は、
前記Ｈｏｓｔによって、前記共有メモリ内の送信対象のデータが位置する前記キャッシュに対応する前記ＧＰＡを、対応するＨＰＡに修正するステップは、
前記アドレス変換ページ・テーブルを検索することにより、前記Ｈｏｓｔによって、前記共有メモリ内の前記送信対象のデータが位置する前記キャッシュに対応する前記ＧＰＡと対応する前記ＨＰＡを獲得し、前記共有メモリ内の前記送信対象のデータが位置する前記キャッシュに対応する前記ＧＰＡを、前記獲得されたＨＰＡに修正するステップを含む、
請求項４又は６に記載の方法。
【請求項１０】
前記第１の記憶ユニットは受信キューである、及び／又は
前記第２の記憶ユニットは送信キューである、
請求項２から６のいずれか一項に記載の方法。
【請求項１１】
ハードウェア層、前記ハードウェア層上で実行されるＨｏｓｔ、及び前記Ｈｏｓｔ上で実行される少なくとも１つの仮想マシン（ＶＭ）を備える、コンピューティング・ノードであって、前記ハードウェア層は入出力（Ｉ／Ｏ）デバイスを備え、いくつかの対応する仮想機能（ＶＦ）デバイスは前記Ｉ／Ｏデバイスから仮想化され、前記ＨｏｓｔはいくつかのＶＦソフトウェア・インスタンスを有し、前記いくつかのＶＦソフトウェア・インスタンス及び前記いくつかのＶＦデバイスは、一対一の対応関係にあり、前記Ｈｏｓｔは前記Ｉ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）をさらに有し、前記ＶＭは前記Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）を有し、前記Ｈｏｓｔ内の前記ＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合される、コンピューティング・ノード。
【請求項１２】
前記ＦＥは、ダイレクト・メモリ・アクセス（ＤＭＡ）用のキャッシュを事前に割り当てるように構成され、
前記ＢＥと結合された前記ＶＦソフトウェア・インスタンスは、前記ＢＥのエクスポート・アプリケーション・プログラミング・インターフェースを介して前記ＤＭＡ用のキャッシュに対応するアドレスを獲得し、前記ＤＭＡ用のキャッシュに対応する前記獲得したアドレスを、前記ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの第１の記憶ユニットに書き込むように構成され、
前記ＶＦデバイスは、受信対象のデータが存在する場合、前記第１の記憶ユニットから前記ＤＭＡ用のキャッシュに対応する前記アドレスを選択し、前記ＤＭＡ用のキャッシュに対応する前記選択されたアドレスをターゲット・アドレスとして使用することにより、ＤＭＡ書き込み要求を開始し、前記ＶＦソフトウェア・インスタンスが前記アドレスに対応する前記キャッシュに書き込まれた前記データを受信するために前記ＦＥをトリガするように、前記ＤＭＡ書き込み要求が実行された後に、前記ＶＦデバイスに対応し前記Ｈｏｓｔ内にある前記ＶＦソフトウェア・インスタンスに通知するように構成される、
請求項１１に記載のコンピューティング・ノード。
【請求項１３】
前記ＦＥは、前記ＤＭＡ用の事前に割り当てられたキャッシュに対応するゲスト物理アドレス（ＧＰＡ）を、前記Ｈｏｓｔと前記ＶＭとの間の共有メモリに書き込むようにさらに構成され、
前記ＢＥと結合された前記ＶＦソフトウェア・インスタンスは、前記ＢＥのエクスポート・アプリケーション・プログラミング・インターフェースを介して、前記共有メモリから前記ＤＭＡ用のキャッシュに対応する前記ＧＰＡを獲得し、前記ＤＭＡ用のキャッシュに対応する前記獲得されたＧＰＡを、前記ＶＦソフトウェア・インスタンスに対応する前記ＶＦデバイスの前記第１の記憶ユニットに書き込むように、具体的に構成され、
前記ＶＦは、受信対象のデータが存在する場合、前記第１の記憶ユニットから前記ＤＭＡ用のキャッシュに対応する前記ＧＰＡを選択し、前記ＤＭＡ用のキャッシュに対応する前記選択されたＧＰＡをターゲット・アドレスとして使用することにより、前記ＤＭＡ書き込み要求を開始し、前記ＶＦソフトウェア・インスタンスが前記ＨＰＡに対応する前記キャッシュに書き込まれた前記データを受信するために前記ＦＥをトリガするように、ターゲット・アドレスＧＰＡが対応するＨＰＡに修正された前記ＤＭＡ書き込み要求が実行された後に、前記ＶＦデバイスに対応し前記Ｈｏｓｔ内にある前記ＶＦソフトウェア・インスタンスに通知するように、具体的に構成され、
前記コンピューティング・ノードの前記ハードウェア層は、
前記ＤＭＡ書き込み要求の前記ターゲット・アドレスＧＰＡを、対応するＨｏｓｔ物理アドレス（ＨＰＡ）に修正するように構成された、入出力（Ｉ／Ｏ）メモリ管理ユニット（ＩＯＭＭＵ）をさらに備える、
請求項１２に記載のコンピューティング・ノード。
【請求項１４】
前記ＦＥは、前記ＤＭＡ用の前記事前に割り当てられたキャッシュに対応するＧＰＡを、前記Ｈｏｓｔと前記ＶＭとの間の共有メモリに書き込むように構成され、
前記Ｈｏｓｔは、前記共有メモリ内の前記ＤＭＡ用のキャッシュに対応する前記ＧＰＡを、対応するＨＰＡに修正するように構成され、
前記ＢＥと結合された前記ＶＦソフトウェア・インスタンスは、前記ＢＥの前記エクスポート・アプリケーション・プログラミング・インターフェースを介して前記ＤＭＡ用のキャッシュに対応する前記ＨＰＡを獲得し、前記ＤＭＡ用のキャッシュに対応する前記獲得したＨＰＡを、前記ＶＦソフトウェア・インスタンスに対応する前記ＶＦデバイスの前記第１の記憶ユニットに書き込むように、具体的に構成され、
受信対象のデータが存在する場合、前記ＶＦデバイスは、前記第１の記憶ユニットから前記ＤＭＡ用のキャッシュに対応する前記ＨＰＡを選択し、前記選択されたＨＰＡをターゲット・アドレスとして使用することにより、前記ＤＭＡ書き込み要求を開始し、前記ＶＦソフトウェア・インスタンスが前記ＨＰＡに対応する前記キャッシュに書き込まれた前記データを受信するために前記ＦＥをトリガするように、前記ＤＭＡ書き込み要求が実行された後に、前記ＶＦデバイスに対応し前記Ｈｏｓｔ内にある前記ＶＦソフトウェア・インスタンスに通知するように、具体的に構成される、
請求項１２に記載のコンピューティング・ノード。
【請求項１５】
前記ＦＥは、送信対象のデータが位置するキャッシュに対応するＧＰＡを、前記Ｈｏｓｔと前記ＶＭとの間の共有メモリに書き込むようにさらに構成され、
前記ＢＥは、前記送信対象のデータが位置する前記キャッシュに対応する前記ＧＰＡを前記共有メモリから獲得し、前記ＢＥと結合された前記ＶＦソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、前記送信対象のデータが位置する前記キャッシュに対応する前記ＧＰＡを、前記ＶＦソフトウェア・インスタンスに対応する前記ＶＦデバイスの第２の記憶ユニットに書き込むように、さらに構成され、
前記ＶＦデバイスは、前記送信対象のデータが見つかった場合、前記第２の記憶ユニット内に記録された前記ＧＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ読み取り要求を開始するように構成され、
前記コンピューティング・ノードの前記ハードウェア層は、
前記ＤＭＡ読み取り要求の前記ターゲット・アドレスＧＰＡを、対応するＨＰＡに修正するように構成された、入出力（Ｉ／Ｏ）メモリ管理ユニット（ＩＯＭＭＵ）をさらに備える、
請求項１２に記載のコンピューティング・ノード。
【請求項１６】
前記ＦＥは、送信対象のデータが位置するキャッシュに対応するＧＰＡを、前記Ｈｏｓｔと前記ＶＭとの間の共有メモリに書き込むようにさらに構成され、
前記Ｈｏｓｔは、前記共有メモリ内の前記送信対象のデータが位置するキャッシュに対応する前記ＧＰＡを、対応するＨＰＡに修正するように構成され、
前記ＢＥは、前記送信対象のデータが位置する前記キャッシュに対応する前記ＨＰＡを獲得し、前記ＢＥと結合された前記ＶＦソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、前記送信対象のデータが位置する前記キャッシュに対応する前記ＨＰＡを、前記ＶＦソフトウェア・インスタンスに対応する前記ＶＦデバイスの第２の記憶ユニットに書き込むように、さらに構成され、
前記ＶＦデバイスは、前記送信対象のデータが見つかった場合、前記第２の記憶ユニット内に記録された前記ＨＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ読み取り要求を開始するようにさらに構成される、
請求項１２に記載のコンピューティング・ノード。
【請求項１７】
前記ＶＦデバイスは、前記対応するキャッシュを解放するために前記ＶＦソフトウェア・インスタンスが前記ＦＥをトリガするように、前記ＤＭＡ読み取り要求が実行された後に、前記ＶＦデバイスに対応し前記Ｈｏｓｔ内にある前記ＶＦソフトウェア・インスタンスに通知するようにさらに構成される、
請求項１５又は１６に記載のコンピューティング・ノード。
【請求項１８】
請求項１２から１７のいずれか一項に記載の１つ又は複数のコンピューティング・ノードを備える、コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ技術の分野に関し、特に、仮想化処理の方法及び装置、並びに仮想化処理に基づくコンピュータ・システムに関する。
【背景技術】
【０００２】
仮想化技術は、下位レイヤのハードウェア・デバイスを上位レイヤのオペレーティング・システム及びアプリケーション・プログラムから分離するための分離技術であり、図１を参照すると、仮想マシン・モニタ（VMM,  Virtual  Machine  Monitor）層が導入されており、当該ＶＭＭにより、下位レイヤのハードウェア・リソースを管理し、上位レイヤのオペレーティング・システム及びアプリケーション・プログラムの実行に使用するために、下位レイヤのハードウェアとは無関係の仮想マシン（VM,  Virtual  Machine）を作成することができる。
【０００３】
仮想化技術は、現在普及しているクラウド・コンピューティング（Cloud  Computing）基盤をサポートする重要な技術の１つとして、物理デバイスのリソース使用効率を大幅に向上させることができる。従来の物理サーバに比べ、仮想マシンは物理ハードウェアからのより良い隔離状態及びアプリケーション実行環境のカプセル化を実現する機能を有し、仮想マシンに関するスナップショット、バックアップ、クローン化、及び送達などの動作を実行するのに便利なように、仮想マシン全体の情報を仮想ディスク・イメージ（VDI,  Virtual  Disk  Image）に保存することが可能である。
【０００４】
ｘ８６プロセッサの進化に伴い、中央演算処理ユニット（CPU,  Central  Processing  Unit）及びメモリの仮想化技術は、常にオーバヘッドを低減させながら次第に完成されてきた。最新のプロセッサに基づき、ほとんどのアプリケーションについて、ＣＰＵ及びメモリを仮想化することによるオーバヘッドは１０％未満となっている。入出力（I/O,  Input/Output）仮想化分野では、高性能及び低遅延の仮想化Ｉ／Ｏソリューションは、依然として仮想化分野における重要な技術的課題である。従来のＩ／Ｏ仮想化ソリューションは、２つのタイプ、すなわちソフトウェア・ソリューション及びハードウェア・ソリューションを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら従来のソフトウェア・ソリューション及びハードウェア・ソリューションは、何れもそれぞれ際立った利点及び欠点を有している。例えば従来のソフトウェア・ソリューションは、互換性の点では有利であるが大きな性能損失を伴い、ハードウェア・ソリューションは、所望の性能をもたらすことができる反面、機能互換性及びゲスト・オペレーティング・システム（Guest  OS）互換性が不充分であるなどの点で問題を抱えている。
【課題を解決するための手段】
【０００６】
本発明の実施形態は、仮想化システムの性能及び互換性を最適化するように、仮想化処理の方法及び装置、並びにコンピュータ・システムを提供する。
【０００７】
前述の技術的問題を解決するために、本発明の実施形態は、以下の技術的ソリューションを提供する。
【０００８】
一実施態様において、本発明の実施形態は、コンピューティング・ノードに適用される仮想化処理方法を提供し、コンピューティング・ノードは、
ハードウェア層、ハードウェア層上で実行するホスト（Ｈｏｓｔ）、及びＨｏｓｔ上で実行する少なくとも１つの仮想マシン（ＶＭ）を含み、ここでハードウェア層は入出力（Ｉ／Ｏ）デバイスを含み、いくつかの対応する仮想機能（ＶＦ）デバイスは、Ｉ／Ｏデバイスを仮想化した仮想デバイスであり、ＨｏｓｔはいくつかのＶＦソフトウェア・インスタンスを有し、ＶＦソフトウェア・インスタンスの各々は幾つかかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応し、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）をさらに有し、ＶＭはＩ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）を有し、Ｈｏｓｔ内のＢＥはアイドルＶＦソフトウェア・インスタンスと結合され、
方法は、
ＦＥによって、直接メモリ・アクセス（ＤＭＡ）用のキャッシュを事前に割り振ること、
ＢＥと結合されたＶＦソフトウェア・インスタンスによって、ＢＥをエクスポートするためのアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介してＤＭＡ用のキャッシュに対応するアドレスを獲得し、ＤＭＡ用のキャッシュに対応する当該獲得したアドレスを、ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの第１の記憶ユニットに書き込むこと、受信されることになるデータが存在する場合、ＶＦデバイスによって、第１の記憶ユニットからＤＭＡ用のキャッシュに対応するアドレスを選択し、ＤＭＡ用のキャッシュに対応する当該選択されたアドレスをターゲット・アドレスとして使用することによりＤＭＡ書き込み要求を開始すること、ＶＦソフトウェア・インスタンスが当該アドレスに対応するキャッシュに書き込まれたデータを受信するためにＦＥをトリガするように、ＤＭＡ書き込み要求が実行された後に、ＶＦデバイスによって、ＶＦデバイスに対応するＨｏｓｔ内のＶＦソフトウェア・インスタンスに通知することを含む。
【０００９】
他の実施態様において、本発明の実施形態は、
入出力（Ｉ／Ｏ）デバイスのＩ／Ｏ仮想機能が実行可能とされた後に、ホスト（Ｈｏｓｔ）内に幾つかのＶＦソフトウェア・インスタンスを生成する処理動作であって、幾つかの対応する仮想機能（ＶＦ）デバイスは、Ｉ／Ｏ仮想化機能が実行可能とされたＩ／Ｏデバイスを仮想化した仮想デバイスであり、Ｈｏｓｔ内で生成されるＶＦソフトウェア・インスタンスの各々が幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応している、処理動作と、
Ｈｏｓｔによって、Ｉ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成する処理動作であって、Ｉ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は開始された仮想マシンＶＭ内に作成される、処理動作と、さらに、
ＢＥをアイドル状態のＶＦソフトウェア・インスタンスと結合する処理動作、
を含む仮想化処理方法を、さらに提供する。
【００１０】
他の実施態様において、本発明の実施形態は、
ハードウェア層、ハードウェア層上で実行するホスト（Ｈｏｓｔ）、及びＨｏｓｔ上で実行する少なくとも１つの仮想マシン（ＶＭ）を含む、コンピューティング・ノードをさらに提供し、ここでハードウェア層は入出力（Ｉ／Ｏ）デバイスを含み、いくつかの対応する仮想機能（ＶＦ）デバイスがＩ／Ｏデバイスから仮想化され、Ｈｏｓｔは幾つかのＶＦソフトウェア・インスタンスを有し、ＶＦソフトウェア・インスタンスの各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応し、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）をさらに有し、ＶＭはＩ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）を有し、Ｈｏｓｔ内のＢＥはアイドルＶＦソフトウェア・インスタンスと結合され、
ＦＥは、直接メモリ・アクセス（ＤＭＡ）用のキャッシュを事前に割り振るように構成され、
ＢＥと結合されたＶＦソフトウェア・インスタンスは、ＢＥをエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介してＤＭＡ用のキャッシュに対応するアドレスを獲得し、ＤＭＡ用のキャッシュに対応する当該獲得したアドレスを、ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの第１の記憶ユニットに書き込むように構成され、
ＶＦデバイスは、受信されることになるデータが存在する場合、第１の記憶ユニットからＤＭＡ用のキャッシュに対応するアドレスを選択し、ＤＭＡ用のキャッシュに対応する当該選択されたアドレスをターゲット・アドレスとして使用することによりＤＭＡ書き込み要求を開始するように構成され、ＶＦソフトウェア・インスタンスが当該アドレスに対応するキャッシュに書き込まれたデータを受信するためにＦＥをトリガするように、ＤＭＡ書き込み要求が実行された後に、ＶＦデバイスに対応するＨｏｓｔ内のＶＦソフトウェア・インスタンスに通知するように構成される。
【００１１】
他の実施態様において、本発明の実施形態は、
入出力（Ｉ／Ｏ）デバイスのＩ／Ｏ仮想機能が実行可能とされた後、ホスト（Ｈｏｓｔ）内に幾つかのＶＦソフトウェア・インスタンスを生成するように構成され、幾つかの対応する仮想機能（ＶＦ）デバイスは、Ｉ／Ｏ仮想化機能が実行可能とされたＩ／Ｏデバイスを仮想化した仮想デバイスであり、Ｈｏｓｔ内で生成されるＶＦソフトウェア・インスタンスの各々が幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応している、第１の作成モジュールと、
Ｉ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成するように構成された、第２の作成モジュールであって、Ｉ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は開始された仮想マシン（ＶＭ）内に作成される、第２の作成モジュールと、さらに、
第２の作成モジュールによって作成されたＢＥを、第１の作成モジュールによって作成されたアイドル状態のＶＦソフトウェア・インスタンスと結合するように構成された、結合モジュールと、
を含むホストを、さらに提供する。
【００１２】
本発明の実施形態におけるコンピューティング・ノードは、ハードウェア層、ハードウェア層上で実行するホスト（Ｈｏｓｔ）、及びＨｏｓｔ上で実行する少なくとも１つのＶＭを含むことが可能であり、ハードウェア層は入出力（Ｉ／Ｏ）デバイスを含み、幾つかの対応する仮想機能（ＶＦ）デバイスがＩ／Ｏデバイスから仮想化され、ＨｏｓｔはいくつかのＶＦソフトウェア・インスタンスを有し、ＶＦソフトウェア・インスタンスの各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応し、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）をさらに有し、ＶＭはＩ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）を有し、ここでＨｏｓｔ内のＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合されることがわかる。このように、各ＶＭが独立に１つのＶＦデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、ＦＥがＨｏｓｔ内のＢＥを介してＶＦデバイスにアクセスできるように、Ｉ／Ｏデバイスから仮想化された１つのＶＦデバイスと１つのＶＭ内のフロントエンド・インスタンスＦＥとの間にチャネルが通される。Ｉ／Ｏデバイスを仮想化した仮想デバイスであるＶＦデバイスは、使用のためにＶＭに別々に割り振られ、ＶＦデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、ＶＭにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる特別なＣＰＵオーバヘッドもほとんど発生しないことは有益である。さらに、Ｉ／Ｏ仮想デバイスのフロントエンド・ドライブ（すなわちＦＥ）はＶＭ内にあるため、ＦＥは、Ｈｏｓｔ内のバックエンド・ドライブ（すなわちＢＥ）を介してデータを転送し、ＶＭはＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利であって、それにより仮想化システムの互換性の最適化を実現することが出来る。
【００１３】
本発明の実施形態又は従来技術における技術的ソリューションをより明確に図示するために、実施形態又は従来技術の説明に使用される図面が本明細書に添付され、以下、これらの添付図面について、簡単に説明する。明らかに、添付の図面は本発明のいくつかの例示の実施形態を示しており、当業者であれば、格別の創意工夫なしにこれらの図面に基づいて他の実施形態に関する図面を取得することができる。
【図面の簡単な説明】
【００１４】
【図１】従来の仮想化技術のアーキテクチャを示す概略図である。
【図２−ａ】本発明の実施形態で提供される、仮想化ソフトウェア及びハードウェア・システムのアーキテクチャを示す概略図である。
【図２−ｂ】本発明の実施形態で提供される、他の仮想化ソフトウェア及びハードウェア・システムのアーキテクチャを示す概略図である
【図３】本発明の実施形態で提供される仮想化処理方法を示す概略流れ図である。
【図４】本発明の実施形態で提供される他の仮想化処理方法を示す概略流れ図である。
【図５】本発明の実施形態で提供される他の仮想化処理方法を示す概略流れ図である。
【図６−ａ】本発明の実施形態で提供される他の仮想化処理方法を示す概略流れ図である。
【図６−ｂ】本発明の実施形態で提供されるＧＰＡ及びＨＰＡアドレス変換を示す概略図である。
【図７−ａ】本発明の実施形態で提供される他の仮想化処理方法を示す概略流れ図である。
【図７−ｂ】本発明の実施形態で提供される他のＧＰＡ及びＨＰＡアドレス変換を示す概略図である。
【図８−ａ】本発明の実施形態で提供される他の仮想化処理方法を示す概略流れ図である。
【図８−ｂ】本発明の実施形態で提供される他のＧＰＡ及びＨＰＡアドレス変換を示す概略図である。
【図９−ａ】本発明の実施形態で提供される他の仮想化処理方法を示す概略流れ図である。
【図９−ｂ】本発明の実施形態で提供される他のＧＰＡ及びＨＰＡアドレス変換を示す概略図である。
【図１０】本発明の実施形態で提供されるホストのモジュール・アーキテクチャを示す概略図である。
【図１１−ａ】本発明の実施形態で提供されるコンピューティング・ノードを示す概略図である。
【図１１−ｂ】本発明の実施形態で提供される他のコンピューティング・ノードを示す概略図である。
【図１１−ｃ】本発明の実施形態で提供される他のコンピューティング・ノードを示す概略図である。
【図１２】本発明の実施形態で提供されるコンピュータ・システムを示す概略図である。
【発明を実施するための形態】
【００１５】
本発明の実施形態は、仮想化システムの性能及び互換性を最適化することを目的として、仮想化処理の方法及び装置、並びにコンピュータ・システムを提供する。
【００１６】
本発明のソリューションを当業者により理解しやすくするために、本発明の実施形態における技術的ソリューションを、本発明の実施形態を図示する添付図面を参照しながら以下において明確かつ完全に説明する。以下において説明される実施形態が、本発明の実施形態の全てを網羅するものではなく一部にすぎないことは明らかである。本発明の実施形態に基づいて当業者によって格別の創意工夫なしに導出される全ての他の実施形態は、本発明の権利保護範囲内にあるものとする。
【００１７】
本発明の実施形態をより良く理解するための便宜上、本明細書では、本発明の実施形態の説明で紹介されることになるいくつかの要素をまず最初に例示する。
【００１８】
＜仮想マシンＶＭ＞
仮想マシン・ソフトウェアを介して１つ又は複数の仮想コンピュータを物理コンピュータ上でシミュレートすることが可能であり、それらの仮想マシンは実際のコンピュータとして動作し、仮想マシンにはオペレーティング・システム及びアプリケーション・プログラムをインストールすることが可能であり、仮想マシンは依然としてネットワーク・リソースにアクセスすることが可能である。仮想マシン内でアプリケーション・プログラムを実行する場合、仮想マシンは実際のコンピュータ内と全く同様の動作環境を提供する。
【００１９】
＜ハードウェア層＞
ハードウェア層は、仮想化環境で実行するハードウェア・プラットフォームである。ハードウェア層は、複数の異なるタイプのハードウェアを含むことが可能であり、例えばコンピューティング・ノードのハードウェア層はＣＰＵ及びメモリを含むことが可能であり、ネットワーク・カード及びストレージなどの高速／低速入出力（I/O,  Input/Output）デバイスと、入出力メモリ管理ユニット（IOMMU,  Input/Output  Memory  Management  Unit）などの特定の処理機能を有する他のデバイスとを含むことが可能であり、ＩＯＭＭＵは仮想マシンの物理アドレス及びＨｏｓｔの物理アドレスを相互に変換するように構成することが可能である。
【００２０】
＜Ｉ／Ｏ仮想機能＞
Ｉ／Ｏ仮想化機能が実行可能とされた後に、Ｉ／Ｏ仮想化機能を有するＩ／Ｏデバイスを仮想化することにより、対応する物理機能（PF,  Physical  Function）デバイス及びいくつかの仮想機能（VF,  Virtual  Function）デバイスを、仮想デバイスとして生成することが可能であり、Ｉ／Ｏデバイスから仮想化されたＰＦデバイスは主に管理機能としての役割を果たし、ＶＦデバイスは主に処理機能としての役割を果たす。
【００２１】
ホスト（Ｈｏｓｔ）
管理層としてのホストは、ハードウェア・リソースに関する管理及び割り振りを完了し、仮想マシン用の仮想ハードウェア・プラットフォームを提示し、仮想マシン同士の間のスケジューリング及び隔離を実装するように、構成される。Ｈｏｓｔは仮想マシン・モニタ（ＶＭＭ）とすることが可能であり、さらに時折、ＶＭＭはＨｏｓｔを形成するために１つの特権仮想マシンと組み合わせることができる。仮想ハードウェア・プラットフォームは、プラットフォーム上で実行する仮想マシンに対して様々なハードウェア・リソースを提供し、例えば、仮想ＣＰＵ、メモリ、仮想ディスク、仮想ネットワーク・カードなどを提供する。仮想ディスクは、Ｈｏｓｔ上の１つのファイル又は１つの論理ブロック・デバイスに対応させることが可能である。仮想マシンは、Ｈｏｓｔによって準備された仮想ハードウェア・プラットフォーム上で実行されており、Ｈｏｓｔはホスト上で実行する１つ又は複数の仮想マシンを有することができる。
【００２２】
図２−ａ及び図２−ｂを参照すると、図２−ａ及び図２−ｂは、本発明の実施形態において提供される、２種類の仮想化ソリューションに関して、ソフトウェア及びハードウェアのシステム・アーキテクチャを示す概略図である。当該システム・アーキテクチャは主に、ハードウェア層、Ｈｏｓｔ、及び仮想マシン（ＶＭ）の、３つの層を含む。図２−ａ又は図２−ｂに示されたハードウェア層はＩ／Ｏデバイスを含み、図２−ａに示されたハードウェア層はＩＯＭＭＵをさらに含む。Ｈｏｓｔはハードウェア層上で実行しており、少なくとも１つの仮想マシンＶＭはＨｏｓｔ上で実行しており、ここでいくつかの対応する仮想機能（ＶＦ）デバイスがＩ／Ｏデバイスから仮想化され、ＨｏｓｔはいくつかのＶＦソフトウェア・インスタンスを有し、ＶＦソフトウェア・インスタンスの各々が幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応しており、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ、Ｂａｃｋ−Ｅｎｄ）をさらに有し、ＶＭはＩ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ、Ｆｒｏｎｔ−Ｅｎｄ）を有し、Ｈｏｓｔ内のＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合される。本発明の実施形態の技術的ソリューションにおいて、ＶＭ内のＢＥはＩ／Ｏ仮想デバイスのフロントエンド（ＦＥ）ドライバとみなすことが可能であり、Ｈｏｓｔ内のＦＥはＩ／Ｏ仮想デバイスのバックエンド（ＢＥ）ドライバとみなすことが可能であり、Ｉ／Ｏ仮想デバイスはＢＥ及びＦＥで構成される。
【００２３】
本発明の実施形態に従った仮想化処理方法はコンピューティング・ノードに適用することが可能であり、当該コンピューティング・ノードは、ハードウェア層、ハードウェア層上で実行されるＨｏｓｔ、及びＨｏｓｔ上で実行される少なくとも１つのＶＭを備え、ハードウェア層は入出力（Ｉ／Ｏ）デバイスを含み、当該仮想化処理方法は、入出力（Ｉ／Ｏ）デバイスのＩ／Ｏ仮想機能が実行可能化された後に、Ｈｏｓｔ内に幾つかの仮想機能（ＶＦ、Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ）ソフトウェア・インスタンスを生成する処理動作であって、幾つかの対応する仮想機能（ＶＦ）デバイスは、Ｉ／Ｏ仮想化機能が実行可能とされたＩ／Ｏデバイスを仮想化した仮想デバイスであり、Ｈｏｓｔ内で生成されるＶＦソフトウェア・インスタンスの各々が幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応している処理動作と、Ｈｏｓｔによって、Ｉ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成する処理動作であって、Ｉ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は開始された仮想マシンＶＭ内に作成される、処理動作と、ＢＥをアイドル状態のＶＦソフトウェア・インスタンスと結合する処理動作を、含むことができる。
【００２４】
図３を参照すると、本発明の実施形態で提供される仮想化処理方法は、以下を含むことができる。
【００２５】
ステップ３０１：  入出力（Ｉ／Ｏ）デバイスのＩ／Ｏ仮想化機能が実行可能とされた後に、Ｈｏｓｔ内に幾つかの仮想機能（ＶＦ）ソフトウェア・インスタンス（VF  Instance）を生成し、
幾つかの対応する仮想機能（ＶＦ）デバイスは、Ｉ／Ｏ仮想化機能が実行可能とされたＩ／Ｏデバイスを仮想化した仮想デバイスとすることが可能であり、Ｈｏｓｔ内で生成されるＶＦソフトウェア・インスタンスの各々が幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応している。例えばＨｏｓｔは、Ｉ／ＯデバイスのＩ／Ｏ仮想化機能が実行可能となるようにＨｏｓｔが開始された場合又は開始された後のある時点において、Ｉ／ＯデバイスのＩ／Ｏ仮想化機能を実行可能化することができる。さらに別の方法として、Ｉ／Ｏデバイスは、デバイスの電源が投入された後に、そのＩ／Ｏ仮想化機能を自動的に実行可能化することが可能であり、この場合、ＨｏｓｔがＩ／ＯデバイスのＩ／Ｏ仮想化機能を実行可能化する必要はない。
【００２６】
本発明の実施形態で言及されるＩ／Ｏデバイスは、例えばＰＣＩエクスプレス（PCIe,  Peripheral  Component  Interconnect  Express）デバイス又はネットワーク・カードなどの他のタイプのデバイスとすることができることに留意されたい。
【００２７】
ステップ３０２：  Ｈｏｓｔによって、Ｉ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成し、Ｉ／Ｏ仮想デバイス（ｖＤＥＶ）のバックエンド・インスタンス（BE,  Back-End）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（FE,  Front-End）は開始されたＶＭ内に作成される。
【００２８】
ステップ３０３：  ＨｏｓｔによってＢＥをアイドルＶＦソフトウェア・インスタンスと結合する。
【００２９】
Ｈｏｓｔが、Ｉ／Ｏデバイスと同じタイプを有するいくつかのＩ／Ｏ仮想デバイスを作成する場合、各Ｉ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はアイドル状態のＶＦソフトウェア・インスタンスと結合され、結合関係にあるＢＥとＶＦソフトウェア・インスタンスとの間にアクセス間インターフェースが存在し、例えばＢＥは、当該ＢＥと結合されたＶＦソフトウェア・インスタンスによって提供されるアクセス・インターフェースを介して、当該ＶＦソフトウェア・インスタンスに対応するＶＦデバイスにアクセスすることができる。このようにして、各ＶＭが１つのＶＦデバイスを独立に使用することができるアプリケーション・アーキテクチャが確立され、Ｉ／Ｏデバイスを仮想化して成る１つのＶＦデバイスと１つのＶＭ内のフロントエンド・インスタンス（ＦＥ）との間にチャネルが通されるため、当該ＦＥはＨｏｓｔ内のＢＥを介してＶＦデバイスにアクセスできるようになる。Ｉ／Ｏデバイスを仮想化して成るＶＦデバイスの各々は、使用のために個別に各ＶＭに割り振られるため、各ＶＭにとって、物理マシンと同様の性能を獲得可能である点は有益である。Ｈｏｓｔによって構築されたアプリケーション・アーキテクチャに基づいて、ＶＭはデータの送信、データの受信、又は他の形でのデータ処理を実行することができる。
【００３０】
例えば図２−ａ及び図２−ｂにおいて、いくつかの対応するＶＦデバイスは、Ｉ／Ｏ仮想化機能が実行可能とされたＩ／Ｏデバイス（ＰＣＩｅデバイスなど）を仮想化することによって生成可能であり、さらに対応する物理機能（PF,  Physical  Function）デバイスは、Ｉ／Ｏ仮想化機能が実行可能とされたＩ／Ｏデバイスを仮想化することによって生成可能であり、Ｉ／Ｏデバイスと同じタイプを有しＨｏｓｔによって作成されたいくつかのＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はＨｏｓｔ内に配置され、各Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は異なるＶＭ内に配置される。共有メモリはＨｏｓｔとＶＭとの間にさらに構成することが可能であり、Ｉ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）及びフロントエンド・インスタンス（ＦＥ）は、例えば共有メモリを介してデータを転送することができる。
【００３１】
本実施形態において、入出力（Ｉ／Ｏ）デバイスのＩ／Ｏ仮想化機能が実行可能とされた後に、幾つかのＶＦソフトウェア・インスタンスがＨｏｓｔ内に生成され、幾つかの対応するＶＦデバイスは、Ｉ／Ｏ仮想化機能が実行可能とされたＩ／Ｏデバイスを仮想化した仮想デバイスであり、Ｈｏｓｔ内に生成されたＶＦソフトウェア・インスタンスの各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応しており、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成し、ここでＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は開始されたＶＭ内に作成され、ＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合されることがわかる。このように、各ＶＭが独立に１つのＶＦデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、ＦＥがＨｏｓｔ内のＢＥを介してＶＦデバイスにアクセスできるように、Ｉ／Ｏデバイスを仮想化して成る１つのＶＦデバイスと１つのＶＭ内のフロントエンド・インスタンス（ＦＥ）との間にチャネルが通される。Ｉ／Ｏデバイスを仮想化して成るＶＦデバイスは、使用のためにＶＭに別々に割り振られ、ＶＦデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、ＶＭにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のＣＰＵオーバヘッドもほとんど発生しないという点は有益である。さらに、仮想デバイスのフロントエンド（ＦＥ）ドライブ（すなわちＦＥ）はＶＭ内にあるため、Ｈｏｓｔ内のバックエンド（ＢＥ）ドライブ（すなわちＢＥ）を介してデータが転送され、ＶＭはＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利であって、それにより仮想化システムの互換性の最適化を実現することができる。
【００３２】
図４を参照すると、本発明の実施形態が提供するその他の仮想化処理方法がコンピューティング・ノードに適用され、当該コンピューティング・ノードは、ハードウェア層、ハードウェア層上で実行されているＨｏｓｔ、及びＨｏｓｔ上で実行されている少なくとも１つのＶＭを含み、ここでハードウェア層は入出力（Ｉ／Ｏ）デバイスを含み、当該方法は以下を含むことができる。
【００３３】
ステップ４０１：  Ｈｏｓｔによって、入出力Ｉ／ＯデバイスのＩ／Ｏ仮想化機能を実行可能化する。
【００３４】
例えばＨｏｓｔは、Ｉ／ＯデバイスのＩ／Ｏ仮想化機能が実行可能となるように当該Ｈｏｓｔが開始された場合又は開始された後のある時点において、Ｉ／ＯデバイスのＩ／Ｏ仮想化機能を実行可能化することができる。幾つかの対応するＶＦデバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／Ｏデバイスを仮想化することによって生成される。別の方法として、Ｉ／Ｏデバイスは、デバイスの電源が投入された後に、そのＩ／Ｏ仮想化機能を自動的に実行可能化することが可能であり、この場合、ＨｏｓｔがＩ／ＯデバイスのＩ／Ｏ仮想化機能を実行可能化する必要はない。
【００３５】
ステップ４０２：  Ｈｏｓｔ内にいくつかのＶＦソフトウェア・インスタンス（ＶＦ  Ｉｎｓｔａｎｃｅ）を生成し、いくつかの対応する仮想機能（ＶＦ）デバイスは、Ｉ／Ｏ仮想化機能が実行可能とされたＩ／Ｏデバイスを仮想化することにより生成可能であり、Ｈｏｓｔ内で生成されるＶＦソフトウェア・インスタンスの各々が幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応している。
【００３６】
ステップ４０３：  Ｈｏｓｔによって、Ｉ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成し、Ｉ／Ｏ仮想デバイス（ｖＤＥＶ）のバックエンド・インスタンス（ＢＥ）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は開始されたＶＭ内に作成される。
【００３７】
ステップ４０４：  ＨｏｓｔによってＢＥをアイドル状態のＶＦソフトウェア・インスタンスと結合する。
【００３８】
Ｈｏｓｔが、Ｉ／Ｏデバイスと同じタイプを有する幾つかのＩ／Ｏ仮想デバイスを作成する場合、各Ｉ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はアイドル状態のＶＦソフトウェア・インスタンスと結合され、結合関係にあるＢＥとＶＦソフトウェア・インスタンスとの間にアクセス間インターフェースが存在し、例えばＢＥは、ＢＦと結合されたＶＦソフトウェア・インスタンスによって提供されるアクセス・インターフェースを介して、ＶＦソフトウェア・インスタンスに対応するＶＦデバイスにアクセスすることができる。このようにして、各ＶＭが１つのＶＦデバイスを独立に使用することができるアプリケーション・アーキテクチャが確立され、Ｉ／Ｏデバイスを仮想化して成る１つのＶＦデバイスとＶＭ内のフロントエンド・インスタンス（ＦＥ）との間にチャネルが通されるため、ＦＥはＨｏｓｔ内のＢＥを介してＶＦデバイスにアクセスできるようになる。Ｉ／Ｏデバイスを仮想化して成るＶＦデバイスは、使用のために別々にＶＭに割り振られるため、ＶＭにとって、物理マシンと同様の性能を獲得することが可能な点は有益である。Ｈｏｓｔによって構築されたアプリケーション・アーキテクチャに基づいて、ＶＭはデータの送信、データの受信、又は他の形でのデータ処理を実行することができる。
【００３９】
例えば図２−ａ及び図２−ｂにおいて、幾つかの対応するＶＦデバイスは、Ｉ／Ｏ仮想化機能が実行可能とされたＩ／Ｏデバイス（ＰＣＩｅデバイスなど）を仮想化することにより生成可能であり、さらに対応する物理機能（ＰＦ）デバイスは、Ｉ／Ｏ仮想化機能が実行可能とされたＩ／Ｏデバイスを仮想化することにより生成可能であり（ＨｏｓｔはＰＦデバイスに対応するＰＦソフトウェア・インスタンスをさらに生成することができる）、Ｉ／Ｏデバイスと同じタイプを有しＨｏｓｔによって作成された幾つかのＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はＨｏｓｔ内に配置され、各Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は異なるＶＭ内に配置される。共有メモリはＨｏｓｔとＶＭとの間にさらに構成可能であり、Ｉ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）及びフロントエンド・インスタンス（ＦＥ）は、例えば共有メモリを介してデータを転送することができる。
【００４０】
本明細書の読み手にとって理解しやすいように、前述した仕組みに基づいて構築されたアプリケーション・アーキテクチャにおける任意付加的な対話様式が、データを受信する手順を例として採用することによって以下に示される。
【００４１】
アプリケーション・シナリオにおいて、ＨｏｓｔがＢＥとアイドルＶＦソフトウェア・インスタンスとを結合した後、ＦＥは直接メモリ・アクセス（DMA,  Direct  Memory  Access）用にキャッシュを事前に割り振ることが可能であり、ＦＥは、ＤＭＡ用に事前に割り振られたキャッシュに対応するゲスト物理アドレス（GPA,  Guest  Physical  Address）を、ＨｏｓｔとＶＭとの間の共有メモリに書き込むことが可能であり、ＢＥと結合されたＶＦソフトウェア・インスタンスは、ＢＥをエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して、ＤＭＡ用のキャッシュに対応するＧＰＡを獲得することが可能であり、ＶＦソフトウェア・インスタンスは、ＤＭＡ用のキャッシュに対応する当該獲得されたＧＰＡを、ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの受信キューに書き込むことが可能であり、受信されることになるデータが存在する場合、ＶＦデバイスは、ＤＭＡ用のキャッシュに対応するＧＰＡをＶＦデバイスの受信キューから選択することが可能であり、当該選択されたＧＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ書き込み要求（ＤＭＡ書き込み要求はデータをキャッシュに書き込むために使用される）を開始することが可能であり、入出力メモリ管理ユニット（ＩＯＭＭＵ）は、ＤＭＡ書き込み要求のターゲット・アドレスであるＧＰＡを、これと対応するＨｏｓｔ物理アドレスＨＰＡに修正し（ここで、例えばアドレス変換ページ・テーブルはＩＯＭＭＵ内に設定され、アドレス変換ページ・テーブルはＨＰＡとＧＰＡとの間のマッピングを記録し、ＤＭＡ書き込み要求が通った場合、ＩＯＭＭＵは、アドレス変換ページ・テーブルを検索することによって、ＤＭＡ書き込み要求のターゲット・アドレスであるＧＰＡに対応するＨＰＡを獲得し、ＤＭＡ書き込み要求のターゲット・アドレスであるＧＰＡを、当該獲得されたＨＰＡに修正することが可能である）、ＶＦソフトウェア・インスタンスがＨＰＡに対応するキャッシュに書き込まれたデータを受信するために対応するＦＥをトリガするように、ターゲット・アドレスがＨＰＡに修正されたＤＭＡ書き込み要求が実行された後、ＶＦデバイスは、ＶＦデバイスに対応するＨｏｓｔ内のＶＦソフトウェア・インスタンスに通知することが可能である。
【００４２】
他のアプリケーション・シナリオにおいて、ＨｏｓｔがＢＥとアイドル状態のＶＦソフトウェア・インスタンスとを結合した後、ＦＥはＤＭＡ用にキャッシュを事前に割り振ることが可能であり、ＦＥは、ＤＭＡ用に事前に割り振られたキャッシュに対応するＧＰＡを、ＨｏｓｔとＶＭとの間の共有メモリに書き込むことが可能であり、Ｈｏｓｔ（例えばＢＥ又はＨｏｓｔ内の他のモジュール）は、ＤＭＡ用のキャッシュに対応するＧＰＡを、これと対応するＨＰＡに修正することが可能であり（例えば、アドレス変換ページ・テーブルがＨｏｓｔ内に設定され、アドレス変換ページ・テーブルはＨＰＡとＧＰＡとの間のマッピングを記録し、アドレス変換ページ・テーブルを検索することにより、Ｈｏｓｔ（例えばＢＥ又はＨｏｓｔ内の他のモジュール）は、ＤＭＡ用のキャッシュに対応するＧＰＡに対応するＨＰＡを獲得し、ＤＭＡ用のキャッシュに対応するＧＰＡを、当該獲得されたＨＰＡに修正することが可能である）、Ｈｏｓｔ内のＢＥと結合されたＶＦソフトウェア・インスタンスは、ＢＥをエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して、ＤＭＡ用のキャッシュに対応するＧＰＡを獲得し、ＤＭＡ用のキャッシュに対応する当該獲得されたＧＰＡは、ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの受信キューに書き込まれ、受信されることになるデータが存在する場合、ＶＦデバイスは、ＤＭＡ用のキャッシュに対応するＨＰＡをＶＦデバイスの受信キューから選択し、当該選択されたＨＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ書き込み要求（ＤＭＡ書き込み要求はデータをキャッシュに書き込むために使用される）を開始し、ＶＦソフトウェア・インスタンスがＨＰＡに対応するキャッシュに書き込まれたデータを受信するために対応するＦＥをトリガするように、ＤＭＡ書き込み要求が実行された後、ＶＦデバイスは、ＶＦデバイスに対応するＨｏｓｔ内のＶＦソフトウェア・インスタンスにさらに通知することが可能である。
【００４３】
本明細書の読み手にとって理解しやすいように、前述した仕組みに基づいて構築されたアプリケーション・アーキテクチャにおける任意付加的な対話様式が、データを送信する手順を例として採用することによって以下に示される。
【００４４】
アプリケーション・シナリオにおいて、ＨｏｓｔがＢＥとアイドルＶＦソフトウェア・インスタンスとを結合した後、ＦＥは、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、ＨｏｓｔとＶＭとの間の共有メモリに書き込むことが可能であり、対応するＢＥは、当該ＢＥと結合されたＶＦソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの送信キューに書き込むことが可能であり、送信されることになるデータが見つかった後、ＶＦデバイスは、ＶＦデバイスの送信キュー内に記録されたＧＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ読み取り要求を開始し（ＤＭＡ書き込み要求はキャッシュからのデータの読み取りに使用される）、ＩＯＭＭＵはＤＭＡ読み取り要求のターゲット・アドレスであるＧＰＡを、これと対応するＨＰＡに修正する（ここで、例えばアドレス変換ページ・テーブルはＩＯＭＭＵ内に設定され、アドレス変換ページ・テーブルはＨＰＡとＧＰＡとの間のマッピングを記録し、ＤＭＡ読み取り要求が通った場合、ＩＯＭＭＵは、アドレス変換ページ・テーブルを検索することによって、ＤＭＡ読み取り要求のターゲット・アドレスであるＧＰＡに対応するＨＰＡを獲得し、ＤＭＡ読み取り要求のターゲット・アドレスであるＧＰＡを、当該獲得されたＨＰＡに修正することが可能である）。さらに、ＶＦソフトウェア・インスタンスが対応するキャッシュを解放するために対応するＦＥをトリガするように、ＤＭＡ読み取り要求が実行された後、ＶＦデバイスは、ＶＦデバイスに対応するＨｏｓｔ内のＶＦソフトウェア・インスタンスに通知することが可能である。
【００４５】
他のアプリケーション・シナリオにおいて、ＨｏｓｔがＢＥとアイドル状態のＶＦソフトウェア・インスタンスとを結合した後、ＦＥは、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、ＨｏｓｔとＶＭとの間の共有メモリに書き込むことが可能であり、Ｈｏｓｔ（例えばＢＥ又はＨｏｓｔ内の他のモジュール）は、キャッシュに対応するＧＰＡを、これと対応するＨＰＡに修正することが可能であり（例えば、アドレス変換ページ・テーブルがＨｏｓｔ内に設定され、アドレス変換ページ・テーブルはＨＰＡとＧＰＡとの間のマッピングを記録し、アドレス変換ページ・テーブルを検索することにより、Ｈｏｓｔ（例えばＢＥ又はＨｏｓｔ内の他のモジュール）は、キャッシュに対応するＧＰＡに対応するＨＰＡを獲得し、キャッシュに対応するＧＰＡを、当該獲得されたＨＰＡに修正することが可能である）、対応するＢＥは、当該ＢＥと結合されたＶＦソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの送信キューに書き込むことが可能であり、送信されることになるデータが見つかった場合、ＶＦデバイスは、ＶＦデバイスの送信キュー内に記録されたＨＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ読み取り要求を開始する。さらに、ＶＦソフトウェア・インスタンスが対応するキャッシュを解放するために対応するＦＥをトリガするように、ＤＭＡ読み取り要求が実行された後、ＶＦデバイスは、ＶＦデバイスに対応するＨｏｓｔ内のＶＦソフトウェア・インスタンスに通知することが可能である。
【００４６】
前述した仕組みに基づいて構築されたアプリケーション・アーキテクチャにおける任意付加的な対話様式が、データを送信する手順及びデータを受信する手順を例として採用することによって以下に示され、他のアプリケーション・シナリオにおける対話様式は類推により推論することができる。
【００４７】
本実施形態において、入出力（Ｉ／Ｏ）デバイスのＩ／Ｏ仮想化機能が実行可能とされた後、幾つかのＶＦソフトウェア・インスタンスがＨｏｓｔ内に生成され、幾つかの対応するＶＦデバイスは、Ｉ／Ｏ仮想化機能が実行可能とされたＩ／Ｏデバイスを仮想化することにより生成され、Ｈｏｓｔ内に生成されたＶＦソフトウェア・インスタンスの各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応しており、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成し、ここでＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は開始されたＶＭ内に作成され、ＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合されることがわかる。このように、各ＶＭが独立に１つのＶＦデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、ＦＥがＨｏｓｔ内のＢＥを介してＶＦデバイスにアクセスできるように、Ｉ／Ｏデバイスから仮想化された１つのＶＦデバイスと１つのＶＭ内のフロントエンド・インスタンス（ＦＥ）との間にチャネルが通される。Ｉ／Ｏデバイスを仮想化して成るＶＦデバイスは、使用のためにＶＭに別々に割り振られ、ＶＦデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、ＶＭにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のＣＰＵオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド（ＦＥ）ドライブ（すなわちＦＥ）はＶＭ内にあるため、Ｈｏｓｔ内のバックエンド（ＢＥ）ドライブ（すなわちＢＥ）を介してデータが転送され、ＶＭはＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
【００４８】
本発明の実施形態は、コンピューティング・ノードに適用される仮想化処理方法をさらに提供し、当該コンピューティング・ノードは、ハードウェア層、ハードウェア層上で実行されるＨｏｓｔ、及びＨｏｓｔ上で実行される少なくとも１つのＶＭを含むことが可能であり、ここでハードウェア層は入出力（Ｉ／Ｏ）デバイスを含み、幾つかの対応する仮想機能（ＶＦ）デバイスがＩ／Ｏデバイスから仮想化され、Ｈｏｓｔは幾つかのＶＦソフトウェア・インスタンスを有し、ＶＦソフトウェア・インスタンスの各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応し、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）をさらに有し、ＶＭはＩ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）を有し、Ｈｏｓｔ内のＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合され、当該方法は、ＦＥによって、直接メモリ・アクセス（ＤＭＡ）用のキャッシュを事前に割り振ること、ＢＥと結合されたＶＦソフトウェア・インスタンスによって、ＢＥをエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介してＤＭＡ用のキャッシュに対応するアドレスを獲得し、ＤＭＡ用のキャッシュに対応する当該獲得したアドレスを、ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの第１の記憶ユニットに書き込むこと、受信されることになるデータが存在する場合、ＶＦデバイスによって、第１の記憶ユニットからＤＭＡ用のキャッシュに対応するアドレスを選択し、ＤＭＡ用のキャッシュに対応する当該選択されたアドレスをターゲット・アドレスとして使用することによりＤＭＡ書き込み要求を開始すること、ＶＦソフトウェア・インスタンスがアドレスに対応するキャッシュに書き込まれたデータを受信するためにＦＥをトリガするように、ＤＭＡ書き込み要求が実行された後に、ＶＦデバイスによって、ＶＦデバイスに対応するＨｏｓｔ内のＶＦソフトウェア・インスタンスに通知することを含む。
【００４９】
図５を参照すると、本発明の実施形態におけるその他の仮想化処理方法は、以下のステップを含むことができる。
【００５０】
ステップ５０１：  ＦＥによって、直接メモリ・アクセス（ＤＭＡ）用のキャッシュを事前に割り振る。
【００５１】
ステップ５０２：  ＢＥと結合されたＶＦソフトウェア・インスタンスによって、ＢＥをエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介してＤＭＡ用のキャッシュに対応するアドレス（アドレスは、例えばＨＰＡ又はＧＰＡである）を獲得し、ＤＭＡ用のキャッシュに対応する当該獲得したアドレスを、ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの第１の記憶ユニットに書き込む（ここで、第１の記憶ユニットとは、ＶＦデバイスの受信キュー又は受信リスト、或いはアドレスを記録することが可能な他のデータ記憶構造である）。
【００５２】
ステップ５０３：  受信されることになるデータが存在する場合、ＶＦデバイスによって、第１の記憶ユニットからＤＭＡ用のキャッシュに対応するアドレスを選択し、ＤＭＡ用のキャッシュに対応する当該選択されたアドレスをターゲット・アドレスとして使用することによりＤＭＡ書き込み要求を開始する。
【００５３】
ステップ５０４：  ＶＦソフトウェア・インスタンスがアドレスに対応するキャッシュに書き込まれたデータを受信するためにＦＥをトリガするように、ＤＭＡ書き込み要求が実行された後に、ＶＦデバイスによって、ＶＦデバイスに対応するＨｏｓｔ内のＶＦソフトウェア・インスタンスに通知する。
【００５４】
本実施形態において、コンピューティング・ノードは、ハードウェア層、ハードウェア層上で実行されるＨｏｓｔ、及びＨｏｓｔ上で実行される少なくとも１つのＶＭを含むことが可能であり、ここでハードウェア層は入出力（Ｉ／Ｏ）デバイスを含み、幾つかの対応する仮想機能ＶＦデバイスがＩ／Ｏデバイスを仮想化することによって生成され、Ｈｏｓｔは幾つかのＶＦソフトウェア・インスタンスを有し、ＶＦソフトウェア・インスタンスの各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応し、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）をさらに有し、ＶＭはＩ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）を有し、Ｈｏｓｔ内のＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合されることがわかる。このように、各ＶＭが独立に１つのＶＦデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、ＦＥがＨｏｓｔ内のＢＥを介してＶＦデバイスにアクセスできるように、Ｉ／Ｏデバイスを仮想化して成る１つのＶＦデバイスと１つのＶＭ内のフロントエンド・インスタンス（ＦＥ）との間にチャネルが通される。Ｉ／Ｏデバイスを仮想化して成るＶＦデバイスは、使用のためにＶＭに別々に割り振られ、ＶＦデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、ＶＭにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のＣＰＵオーバヘッドもほとんど発生しない点は有益である。さらに、Ｉ／Ｏ仮想デバイスのフロントエンド（ＦＥ）ドライブ（すなわちＦＥ）はＶＭ内にあるため、ＦＥは、Ｈｏｓｔ内のバックエンド（ＢＥ）ドライブ（すなわちＢＥ）を介してデータを転送し、ＶＭはＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
【００５５】
本発明の実施形態において、ＦＥがＤＭＡ用のキャッシュを事前に割り振った後、ＦＥは、ＤＭＡ用の事前に割り振られたキャッシュに対応するＧＰＡを、ＨｏｓｔとＶＭとの間の共有メモリに書き込むことが可能であり、ＢＥと結合されたＶＦソフトウェア・インスタンスは、ＢＥをエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して共有メモリからＤＭＡ用のキャッシュに対応するＧＰＡを獲得し（結局のところ、ＦＥは、対応するＢＥにＤＭＡ用の事前に割り振られたキャッシュに対応するＧＰＡを通知することも可能であり、ＢＥに結合されたＶＦソフトウェア・インスタンスは、ＢＥをエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介してＤＭＡ用のキャッシュに対応するＧＰＡを獲得することが可能である）、ＤＭＡ用のキャッシュに対応する当該獲得されたＧＰＡを、ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの第１の記憶ユニットに書き込むことが可能であり、受信されることになるデータが存在する場合、ＶＦデバイスは、第１の記憶ユニットからＤＭＡ用のキャッシュに対応するＧＰＡを選択し、ＤＭＡ用のキャッシュに対応するＧＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ書き込み要求を介しすることが可能であり、ＩＯＭＭＵはＤＭＡ書き込み要求のターゲット・アドレスであるＧＰＡを、これと対応するＨＰＡに修正することが可能であり（例えばアドレス変換ページ・テーブルはＩＯＭＭＵ内に設定され、アドレス変換ページ・テーブルはＨＰＡとＧＰＡとの間のマッピングを記録し、ＩＯＭＭＵは、アドレス変換ページ・テーブルを検索することによって、ＤＭＡ書き込み要求のターゲット・アドレスであるＧＰＡに対応するＨＰＡを獲得し、ＤＭＡ書き込み要求のターゲット・アドレスＧＰＡを、当該獲得されたＨＰＡに修正する）、ＶＦソフトウェア・インスタンスがＨＰＡに対応するキャッシュ内に書き込まれたデータを受信するためにＦＥをトリガするように、ＶＦデバイスは、ＶＦデバイスに対応するＨｏｓｔ内のＶＦソフトウェア・インスタンスに通知する。
【００５６】
他のアプリケーション・シナリオにおいて、ＦＥがＤＭＡ用のキャッシュを事前に割り振った後、ＦＥは、ＤＭＡ用の事前に割り振られたキャッシュに対応するＧＰＡを、ＨｏｓｔとＶＭとの間の共有メモリに書き込むことが可能であり、Ｈｏｓｔは、共有メモリ内のＤＭＡ用のキャッシュに対応するＧＰＡを、これと対応するＨＰＡに修正することが可能であり（例えば、アドレス変換ページ・テーブルがＨｏｓｔ内に設定され、アドレス変換ページ・テーブルはＨＰＡとＧＰＡとの間のマッピングを記録し、アドレス変換ページ・テーブルを検索することにより、Ｈｏｓｔは、共有メモリ内のＤＭＡ用のキャッシュに対応するＧＰＡに対応するＨＰＡを獲得し、共有メモリ内のＤＭＡ用のキャッシュに対応するＧＰＡを、当該獲得されたＨＰＡに修正することが可能である。結局のところ、ＦＥは、対応するＢＥにＤＭＡ用の事前に割り振られたキャッシュに対応するＧＰＡを通知することも可能であり、Ｈｏｓｔは、ＤＭＡ用のキャッシュに対応するＧＰＡを、これと対応するＨＰＡに修正することが可能である）、ＢＥに結合されたＶＦソフトウェア・インスタンスは、ＢＥをエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介してＤＭＡ用のキャッシュに対応するＨＰＡを獲得し、当該獲得されたＤＭＡ用のキャッシュに対応するＨＰＡは、ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの第１の記憶ユニットに書き込まれ、受信されることになるデータが存在する場合、ＶＦデバイスは、ＤＭＡ用のキャッシュに対応するＨＰＡを第１の記憶ユニットから選択し、当該選択されたＨＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ書き込み要求を開始する。
【００５７】
本発明の実施形態において、ＦＥが送信するデータを有する場合、ＦＥは、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、ＨｏｓｔとＶＭとの間の共有メモリに書き込むことが可能であり、送信されることになるデータが位置するキャッシュに対応するＧＰＡを共有メモリから獲得することが可能であり（結局のところ、ＦＥは、送信されることになるデータが位置するキャッシュに対応するＧＰＡを対応するＢＥに通知することも可能であり、ＢＥは、当該通知に従って、送信されることになるデータが位置するキャッシュに対応するＧＰＡを獲得する）、ＢＥは、当該ＢＥと結合されたＶＦソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの第２の記憶ユニットに書き込み（ここで第２の記憶ユニットは、例えば、ＶＦデバイスの送信キュー又は送信リスト、或いはアドレスを記録することが可能な他のデータ記憶構造である）、送信されることになるデータが見つかった場合、ＶＦデバイスは、第２の記憶ユニット内に記録されたＧＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ読み取り要求を開始し、ＩＯＭＭＵはＤＭＡ読み取り要求のターゲット・アドレスであるＧＰＡを、これと対応するＨＰＡに修正することが可能であり（例えばアドレス変換ページ・テーブルはＩＯＭＭＵ内に設定され、アドレス変換ページ・テーブルはＨＰＡとＧＰＡとの間のマッピングを記録し、ＩＯＭＭＵは、アドレス変換ページ・テーブルを検索することによって、ＤＭＡ読み取り要求のターゲット・アドレスであるＧＰＡに対応するＨＰＡを獲得し、ＤＭＡ読み取り要求のターゲット・アドレスであるＧＰＡを、当該獲得されたＨＰＡに修正する）。さらに、ＶＦソフトウェア・インスタンスが対応するキャッシュを解放するためにＦＥをトリガするように、ＤＭＡ読み取り要求が実行された後、ＶＦデバイスは、ＶＦデバイスに対応するＨｏｓｔ内のＶＦソフトウェア・インスタンスに通知することが可能である。
【００５８】
本発明の他の実施形態において、ＦＥが送信するデータを有する場合、ＦＥは、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、ＨｏｓｔとＶＭとの間の共有メモリに書き込むことが可能であり、Ｈｏｓｔは、送信されることになるデータが共有メモリ内に位置するキャッシュに対応するＧＰＡを対応するＨＰＡに修正し（例えば、アドレス変換ページ・テーブルがＨｏｓｔ内に設定され、アドレス変換ページ・テーブルはＨＰＡとＧＰＡとの間のマッピングを記録し、アドレス変換ページ・テーブルを検索することにより、Ｈｏｓｔは、送信されることになるデータが共有メモリ内に位置するキャッシュに対応するＧＰＡに対応するＨＰＡを獲得し、送信されることになるデータが共有メモリ内に位置するキャッシュに対応するＧＰＡを、これと対応するＨＰＡに修正する。結局のところ、ＦＥは、送信されることになるデータが位置するキャッシュに対応するＧＰＡをＨｏｓｔに通知することも可能であり、Ｈｏｓｔは、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、これと対応するＨＰＡに修正する）、ＢＥは、送信されることになるデータが位置するキャッシュに対応するＨＰＡを獲得し、当該ＢＥに結合されたＶＦソフトウェア・インスタンスのプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するＨＰＡを、ＶＦソフトウェア・インスタンスに対応するＶＦデバイスの第２の記憶ユニットに書き込み（ここで第２の記憶ユニットは、例えばＶＦデバイスの送信キュー又は送信リスト、或いはアドレスを記録することが可能な他のデータ記憶構造である）、送信されることになるデータが存在することを見つけた場合、ＶＦデバイスは、第２の記憶ユニット内に記録されたＨＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ読み取り要求を開始する。さらに、ＶＦソフトウェア・インスタンスが対応するキャッシュを解放するためにＦＥをトリガするように、ＤＭＡ読み取り要求が実行された後、ＶＦデバイスは、ＶＦデバイスに対応するＨｏｓｔ内のＶＦソフトウェア・インスタンスに通知することができる。
【００５９】
本発明の実施形態における前述したソリューションをより良く理解し及び実装するために、データの受信及びデータの送信の幾つかの特定のアプリケーション・シナリオを例として採用することによってさらに示す。
【００６０】
図６−ａを参照すると、本発明の実施形態で提供されるその他の仮想化処理方法は、以下を含むことができる。
【００６１】
ステップ６０１：  ＨｏｓｔによってＩＯＭＭＵを実行可能化する。
【００６２】
ここでＨｏｓｔは、当該Ｈｏｓｔが開始された場合又は開始された後のある時点において、ＩＯＭＭＵを実行可能化することが可能であり、結局のところ、ＩＯＭＭＵは、デバイスの電源が投入されると対応する機能を自動的に実行可能化することも可能であり、この場合、ＨｏｓｔがＩＯＭＭＵを実行可能化する必要はなく、結局のところ、他のモジュールを使用してＩＯＭＭＵを実行可能化することも可能である。
【００６３】
ステップ６０２：  Ｈｏｓｔ内にＰＦデバイス及びＶＦデバイスのドライバをインストールし、ここでＰＦデバイス及びＶＦデバイスはＩ／Ｏデバイス（例えばＥ−１と呼ばれる）に対応する。
【００６４】
ステップ６０３：  Ｈｏｓｔによって、Ｉ／ＯデバイスＥ−１のＩ／Ｏ仮想化機能を実行可能化し、
ここで、例えばＨｏｓｔは、当該Ｈｏｓｔが開始された場合又は開始された後のある時点において、Ｉ／ＯデバイスＥ−１のＩ／Ｏ仮想化機能を実行可能化することができる。対応する物理機能（ＰＦ）デバイス及び幾つかの仮想機能（ＶＦ）デバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／ＯデバイスＥ−１を仮想化することにより生成可能であり、結局のところ、その他のモジュールを使用してＩ／ＯデバイスＥ−１を実行可能化することが可能であり、結局のところ、Ｉ／ＯデバイスＥ−１は、デバイスの電源が投入された時に、そのＩ／Ｏ仮想化機能を自動的に実行可能化することも可能であり、この場合、Ｈｏｓｔ又はその他のモジュールがＩ／ＯデバイスＥ−１のＩ／Ｏ仮想化機能を実行可能化する必要はない。Ｉ／ＯデバイスＥ−１を仮想化することにより生成されたＰＦデバイスは主に管理機能の役割を果たし、ＶＦデバイスは主に処理機能の役割を果たす。
【００６５】
ステップ６０４：  Ｈｏｓｔ内にＰＦソフトウェア・インスタンス及び幾つかのＶＦソフトウェア・インスタンスを生成し、ここで対応するＰＦデバイス及び幾つかのＶＦデバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／ＯデバイスＥ−１を仮想化することにより生成可能であり、Ｈｏｓｔ内に生成されたＶＦソフトウェア・インスタンスの各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応しており、Ｈｏｓｔ内に生成されたＰＦソフトウェア・インスタンスはＩ／ＯデバイスＥ−１から仮想化されたＰＦデバイスに対応している。
【００６６】
ステップ６０５：  Ｈｏｓｔによって、Ｉ／ＯデバイスＥ−１と同じタイプを有するＩ／Ｏ仮想デバイス（例えば「ｖＥ−１」と呼ばれる）を作成し、
ここでＩ／Ｏ仮想デバイスｖＥ−１のバックエンド・インスタンス（ＢＥ）（例えばＢＥ−１と呼ばれる）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスｖＥ−１のフロントエンド・インスタンス（ＦＥ）（例えば「ＦＥ−１」と呼ばれる）は開始されたＶＭ（例えば「ＶＭ−１」と呼ばれる）内に作成される。例えばＨｏｓｔは、開始されたＶＭ−１内のＩ／Ｏ仮想デバイスｖＥ−１に対応するフロントエンド・インスタンスＦＥ−１の作成をトリガすることができる。ＶＭ−１内に作成されるＦＥ−１及びＨｏｓｔ内に作成されるＢＥ−１は、一般に、Ｉ／Ｏ仮想デバイスｖＥ−１のドライバを構築するとみなすことができる。
【００６７】
ステップ６０６：  Ｈｏｓｔによって、作成されたＢＥ−１を１つのアイドル状態のＶＦソフトウェア・インスタンス（例えば「Ｖｆｅ−１」と呼ばれる）と結合し、
ここでＶＦソフトウェア・インスタンスＶｆｅ−１は、例えば、Ｉ／ＯデバイスＥ−１を仮想化して成るＶＦデバイス（例えば「ＶＦ−１」と呼ばれる）に対応する。いわゆるアイドル状態のＶＦソフトウェア・インスタンスは、他のバックエンド・インスタンス（ＢＥ）と結合されていないＶＦソフトウェア・インスタンスである。
【００６８】
これまでのところ、Ｉ／ＯデバイスＥ−１を仮想化することによって生成されたＶＦデバイスＶＦ−１とＶＭ−１内のフロントエンド・インスタンスＦＥ−１との間にチャネルが通され、このようにしてＦＥ−１は、Ｈｏｓｔ内でＢＥ−１を介してＶＦデバイスＶＦ−１にアクセスすることができる。ＶＦデバイスＶＦ−１は使用のためにＶＭ−１に別々に割り振られ、ＶＦデバイスＶＦ−１はＩ／ＯデバイスＥ−１から仮想化され、高効率のデバイス・インターフェースを提供することができるため、ＶＭ−１にとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のＣＰＵオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド（ＦＥ）ドライブ（すなわちＦＥ−１）はＶＭ−１内にあるため、データは、Ｈｏｓｔ内のバックエンド（ＢＥ）ドライブ（すなわちＢＥ−１）を介して転送され、ＶＭ−１はＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装によって便利な点である。
【００６９】
ステップ６０７：  ＦＥ−１によって、直接メモリ・アクセス（ＤＭＡ）用のキャッシュを事前に割り振る。
【００７０】
例えば、ＤＭＡ用に使用されＦＥ−１によって事前に割り振られるキャッシュは、［ＧＰＡ１，Ｌｅｎ１］、・・・［ＧＰＡｎ，Ｌｅｎｎ］とすることが可能であり、すなわちＤＭＡ用のキャッシュの複数のセクションが事前に割り振り可能であり、ここでＧＰＡ１はキャッシュのＧＰＡの開始アドレスを表し、Ｌｅｎ１は、ＧＰＡ１から開始するキャッシュ領域の長さを表すという具合である。
【００７１】
ステップ６０８：  ＦＥ−１によって、ＤＭＡ用の事前に割り振られたキャッシュに対応するＧＰＡを、ＨｏｓｔとＶＭ−１との間の共有メモリ（共有Ｍｅｍｏｒｙ）に書き込み、ＢＥ−１に通知する（結局のところ、自己検出を実行した後、ＢＥ−１は、ＤＭＡ用のキャッシュに対応するＧＰＡが共有メモリに書き込まれる旨を発見することも可能である）。
【００７２】
ステップ６０９：  ＶＦソフトウェア・インスタンスＶｆｅ−１によって、ＢＥ−１をエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介してＤＭＡ用のキャッシュに対応するＧＰＡを獲得し、ＤＭＡ用のキャッシュに対応する当該獲得したＧＰＡを、ＶＦソフトウェア・インスタンスＶｆｅ−１に対応するＶＦデバイスＶＦ−１の受信キューに書き込む。
【００７３】
ステップ６１０：  ＶＦデバイスＶＦ−１によって、受信されることになるデータが存在する場合、ＶＦデバイスの受信キューからＤＭＡ用のキャッシュに対応するＧＰＡを選択し、当該選択されたＧＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ書き込み要求を開始し、
ここで、ＶＦデバイスＶＦ−１によって開始されたＤＭＡ書き込み要求はＩＯＭＭＵを通ることになる。
【００７４】
ステップ６１１：  ＩＯＭＭＵによって、ＤＭＡ書き込み要求のターゲット・アドレスであるＧＰＡを対応するＨＰＡに修正し、
ここで、例えばアドレス変換ページ・テーブルはＩＯＭＭＵ内に設定され、アドレス変換ページ・テーブルはＧＰＡとＨＰＡとの間のマッピング（例えば図６−ｂに示されるような）を記録する。ＤＭＡ書き込み要求が通ると、ＩＯＭＭＵは、アドレス変換ページ・テーブルを検索することによって、ＤＭＡ書き込み要求のターゲット・アドレスであるＧＰＡに対応するＨＰＡを獲得し、ＤＭＡ書き込み要求のターゲット・アドレスＧＰＡを当該獲得されたＨＰＡに修正することができる。
【００７５】
ステップ６１２：  ＨＰＡに対応するキャッシュに書き込まれたデータを受信するために、ＶＦソフトウェア・インスタンスＶｆｅ−１がＶＭ−１内のフロントエンド・インスタンスＦＥ−１をトリガするように、ターゲット・アドレスがＨＰＡに修正されたＤＭＡ書き込み要求が実行された後、ＶＦデバイスＶＦ−１によって、Ｈｏｓｔ内の対応するＶＦソフトウェア・インスタンスＶｆｅ−１に通知する。
【００７６】
ＶＦソフトウェア・インスタンスＶｆｅ−１によってトリガされている時点において、ＶＭ−１内のフロントエンド・インスタンスＦＥ−１は、ＨＰＡに対応するキャッシュ内に書き込まれたデータを読み取ることができる。
【００７７】
本実施形態において、Ｈｏｓｔによって実行可能化されることにより、Ｉ／ＯデバイスのＩ／Ｏ仮想化機能が実行可能化された後に、幾つかのＶＦソフトウェア・インスタンスがＨｏｓｔ内で生成され、幾つかの対応するＶＦデバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／Ｏデバイスを仮想化することによって生成され、Ｈｏｓｔ内に生成されたＶＦソフトウェア・インスタンスの各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応しており、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成し、ここでＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は開始されたＶＭ内に作成され、ＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合され、このようにして、各ＶＭが１つのＶＦデバイスを別々に使用できるアプリケーション・アーキテクチャが確立され、ＦＥがＨｏｓｔ内のＢＥを介してＶＦデバイスにアクセスできるように、Ｉ／Ｏデバイスを仮想化して成る１つのＶＦデバイスと１つのＶＭ内のフロントエンド・インスタンス（ＦＥ）との間にチャネルが通される。Ｉ／Ｏデバイスを仮想化して成るＶＦデバイスは、使用のためにＶＭに別々に割り振られ、ＶＦデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、ＶＭにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のＣＰＵオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド（ＦＥ）ドライブ（すなわちＦＥ）はＶＭ内にあるため、ＦＥは、データはＨｏｓｔ内のバックエンド（ＢＥ）ドライブ（すなわちＢＥ）を介して転送され、ＶＭはＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
【００７８】
加えて、ＤＭＡ書き込み要求の実行の手順中、ハードウェア・モジュールＩＯＭＭＵはＧＰＡとＨＰＡとの間の変換を実装し、それによってＣＰＵオーバヘッドが減少し、性能がさらに向上する。
【００７９】
図７−ａを参照すると、本発明の実施形態で提供されるその他の仮想化処理方法は、以下を含むことができる。
【００８０】
ステップ７０１：  Ｈｏｓｔ内にＰＦデバイス及びＶＦデバイスのドライバをインストールし、ここでＰＦデバイス及びＶＦデバイスはＩ／Ｏデバイス（Ｅ−２と呼ばれる）に対応する。
【００８１】
ステップ７０２：  Ｈｏｓｔによって、Ｉ／ＯデバイスＥ−２のＩ／Ｏ仮想化機能を実行可能化し、
ここで、例えばＨｏｓｔは、当該Ｈｏｓｔが開始された場合又は開始された後のある時点において、Ｉ／ＯデバイスＥ−２のＩ／Ｏ仮想化機能を実行可能化することができる。対応する物理機能（ＰＦ）デバイス及び幾つかの仮想機能（ＶＦ）デバイスは、ＨｏｓｔによってＩ／Ｏ仮想化機能が実行可能化されたＩ／ＯデバイスＥ−２を仮想化することによって生成可能であり、結局のところ、その他のモジュールを使用してＩ／ＯデバイスＥ−２を実行可能化することが可能であり、結局のところ、Ｉ／ＯデバイスＥ−２は、デバイスの電源が投入された時にそのＩ／Ｏ仮想化機能を自動的に実行可能化することも可能であり、この場合、Ｈｏｓｔ又はその他のモジュールがＩ／ＯデバイスＥ−２のＩ／Ｏ仮想化機能を実行可能化する必要はない。Ｉ／ＯデバイスＥ−２を仮想化することによって生成されたＰＦデバイスは主に管理機能の役割を果たし、ＶＦデバイスは主に処理機能の役割を果たす。
【００８２】
ステップ７０３：  Ｈｏｓｔ内にＰＦソフトウェア・インスタンス及び幾つかのＶＦソフトウェア・インスタンスを生成し、ここで対応するＰＦデバイス及び幾つかのＶＦデバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／ＯデバイスＥ−２を仮想化することにより生成可能であり、Ｈｏｓｔ内に生成されたＶＦソフトウェア・インスタンスの各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応しており、Ｈｏｓｔ内に生成されたＰＦソフトウェア・インスタンスはＩ／ＯデバイスＥ−２を仮想化することにより生成されたＰＦデバイスに対応している。
【００８３】
ステップ７０４：  Ｈｏｓｔによって、Ｉ／ＯデバイスＥ−２と同じタイプを有するＩ／Ｏ仮想デバイス（例えば「ｖＥ−２」と呼ばれる）を作成し、
ここでＩ／Ｏ仮想デバイスｖＥ−２のバックエンド・インスタンス（ＢＥ）（例えばＢＥ−２と呼ばれる）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスｖＥ−２のフロントエンド・インスタンス（ＦＥ）（例えばＦＥ−２と呼ばれる）は開始されたＶＭ（例えば「ＶＭ−２」と呼ばれる）内に作成される。例えばＨｏｓｔは、開始されたＶＭ−２内のＩ／Ｏ仮想デバイスｖＥ−２に対応するフロントエンド・インスタンスＦＥ−２の作成をトリガすることができる。ＶＭ−２内に作成されるＦＥ−２及びＨｏｓｔ内に作成されるＢＥ−２は、一般に、Ｉ／Ｏ仮想デバイスｖＥ−２のドライバを構築するとみなすことができる。
【００８４】
ステップ７０５：  Ｈｏｓｔによって、作成されたＢＥ−２を１つのアイドル状態のＶＦソフトウェア・インスタンス（例えば「Ｖｆｅ−２」と呼ばれる）と結合し、
ここでＶＦソフトウェア・インスタンスＶｆｅ−２は、例えば、Ｉ／ＯデバイスＥ−２から仮想化されたＶＦデバイス（例えば「ＶＦ−２」と呼ばれる）に対応する。いわゆるアイドル状態のＶＦソフトウェア・インスタンスは、他のバックエンド・インスタンス（ＢＥ）と結合されていないＶＦソフトウェア・インスタンスである。
【００８５】
これまでのところ、Ｉ／ＯデバイスＥ−２を仮想化することによって生成されたＶＦデバイスＶＦ−２とＶＭ−２内のフロントエンド・インスタンスＦＥ−２との間にチャネルが通され、このようにしてＦＥ−２は、Ｈｏｓｔ内でＢＥ−２を介してＶＦデバイスＶＦ−２にアクセスすることができる。ＶＦデバイスＶＦ−２は使用のためにＶＭ−２に別々に割り振られ、ＶＦデバイスＶＦ−２はＩ／ＯデバイスＥ−２を仮想化することにより生成され、高効率のデバイス・インターフェースを提供することができるため、ＶＭ−２にとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のＣＰＵオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド（ＦＥ）ドライブ（すなわちＦＥ−２）はＶＭ−２内にあるため、データは、Ｈｏｓｔ内のバックエンド（ＢＥ）ドライブ（すなわちＢＥ−２）を介して転送され、ＶＭ−２はＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点である。
【００８６】
ステップ７０６：  ＦＥ−２によって、直接メモリ・アクセス（ＤＭＡ）用のキャッシュを事前に割り振る。
【００８７】
例えば、ＤＭＡ用に使用されＦＥ−２によって事前に割り振られるキャッシュは、［ＧＰＡ１，Ｌｅｎ１］、・・・［ＧＰＡｎ，Ｌｅｎｎ］とすることが可能であり、すなわちＤＭＡ用のキャッシュの複数のセクションが事前に割り振り可能であり、ここでＧＰＡ１はキャッシュのＧＰＡの開始アドレスを表し、Ｌｅｎ１は、ＧＰＡ１から開始するキャッシュ領域の長さを表すという具合である。
【００８８】
ステップ７０７：  ＦＥ−２によって、ＤＭＡ用の事前に割り振られたキャッシュに対応するＧＰＡを、ＨｏｓｔとＶＭ−２との間の共有メモリ（共有Ｍｅｍｏｒｙ）に書き込み、ＢＥ−２に通知する（結局のところ、自己検出を実行した後、ＢＥ−２は、ＤＭＡ用のキャッシュに対応するＧＰＡが共有メモリに書き込まれる旨を発見することも可能である）。
【００８９】
ステップ７０８：  Ｈｏｓｔによって、共有メモリ内のＤＭＡ用のキャッシュに対応するＧＰＡを対応するＨＰＡに修正し、
ここで、例えばアドレス変換ページ・テーブルはＨｏｓｔ内に設定され、アドレス変換ページ・テーブルはＧＰＡとＨＰＡとの間のマッピング（例えば図７−ｂに示されるような）を記録する。アドレス変換ページ・テーブルを検索することによって、Ｈｏｓｔは、ＤＭＡ用のキャッシュに対応するＧＰＡに対応するＨＰＡを獲得し、ＤＭＡ用のキャッシュに対応するＧＰＡを、当該獲得したＨＰＡに修正することができる。
【００９０】
ステップ７０９：  ＶＦソフトウェア・インスタンスＶｆｅ−２によって、ＢＥ−２をエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介してＤＭＡ用のキャッシュに対応するＨＰＡを獲得し、ＤＭＡ用のキャッシュに対応する当該獲得したＨＰＡを、ＶＦソフトウェア・インスタンスＶｆｅ−２に対応するＶＦデバイスＶＦ−２の受信キューに書き込む。
【００９１】
ステップ７１０：  ＶＦデバイスＶＦ−２によって、受信されることになるデータが存在する場合、ＶＦデバイスの受信キューからＤＭＡ用のキャッシュに対応するＨＰＡを選択し、当該選択されたＨＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ書き込み要求を開始する。
【００９２】
ステップ７１１：  ＨＰＡに対応するキャッシュに書き込まれたデータを受信するために、ＶＦソフトウェア・インスタンスＶｆｅ−２がＶＭ−２内のフロントエンド・インスタンスＦＥ−２をトリガするように、ＤＭＡ書き込み要求が実行された後、ＶＦデバイスＶＦ−２によって、Ｈｏｓｔ内の対応するＶＦソフトウェア・インスタンスＶｆｅ−２に通知する。
【００９３】
ＶＦソフトウェア・インスタンスＶｆｅ−２によってトリガされている時点において、ＶＭ−２内のフロントエンド・インスタンスＦＥ−２は、ＨＰＡに対応するキャッシュ内に書き込まれたデータを読み取ることができる。
【００９４】
本実施形態において、Ｈｏｓｔによって実行可能化されることにより、入出力（Ｉ／Ｏ）デバイスのＩ／Ｏ仮想化機能が実行可能化された後に、幾つかのＶＦソフトウェア・インスタンスがＨｏｓｔ内で生成され、幾つかの対応するＶＦデバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／Ｏデバイスを仮想化することによって生成され、Ｈｏｓｔ内に生成されたＶＦソフトウェア・インスタンスの各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応しており、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成し、ここでＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は開始されたＶＭ内に作成され、ＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合され、このようにして、各ＶＭが１つのＶＦデバイスを別々に使用できるアプリケーション・アーキテクチャが確立され、ＦＥがＨｏｓｔ内のＢＥを介してＶＦデバイスにアクセスできるように、Ｉ／Ｏデバイスから仮想化された１つのＶＦデバイスと１つのＶＭ内のフロントエンド・インスタンス（ＦＥ）との間にチャネルが通される。Ｉ／Ｏデバイスを仮想化して成るＶＦデバイスは、使用のためにＶＭに別々に割り振られ、ＶＦデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、ＶＭにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のＣＰＵオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド（ＦＥ）ドライブ（すなわちＦＥ）はＶＭ内にあるため、ＦＥは、データはＨｏｓｔ内のバックエンド（ＢＥ）ドライブ（すなわちＢＥ）を介して転送され、ＶＭはＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
【００９５】
加えて、ＤＭＡ書き込み要求の実行の手順中、ＨｏｓｔはＧＰＡとＨＰＡとの間で変換を実装し、それによって必要なハードウェア・リソース構成を削減し、処理フローを簡略化する。
【００９６】
図８−ａを参照すると、本発明の実施形態で提供されるその他の仮想化処理方法は、以下を含むことができる。
【００９７】
ステップ８０１：  ＨｏｓｔによってＩＯＭＭＵを実行可能化する。
【００９８】
ここでＨｏｓｔは、当該Ｈｏｓｔが開始された場合又は開始された後のある時点において、ＩＯＭＭＵを実行可能化することが可能であり、結局のところ、ＩＯＭＭＵは、デバイスの電源が投入されると対応する機能を自動的に実行可能化することも可能であり、この場合、ＨｏｓｔがＩＯＭＭＵを実行可能化する必要はなく、結局のところ、その他のモジュールを使用してＩＯＭＭＵを実行可能化することも可能である。
【００９９】
ステップ８０２：  Ｈｏｓｔ内にＰＦデバイス及びＶＦデバイスのドライバをインストールし、ここでＰＦデバイス及びＶＦデバイスはＩ／Ｏデバイス（例えばＥ−３と呼ばれる）に対応する。
【０１００】
ステップ８０３：  Ｈｏｓｔによって、Ｉ／ＯデバイスＥ−３のＩ／Ｏ仮想化機能を実行可能化し、
ここで、例えばＨｏｓｔは、当該Ｈｏｓｔが開始された場合又は開始された後のある時点において、Ｉ／ＯデバイスＥ−３のＩ／Ｏ仮想化機能を実行可能化することができる。対応する物理機能（ＰＦ）デバイス及び幾つかの仮想機能（ＶＦ）デバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／ＯデバイスＥ−３を仮想化することによって生成可能であり、結局のところ、その他のモジュールを使用してＩ／ＯデバイスＥ−３を実行可能化することが可能であり、結局のところ、Ｉ／ＯデバイスＥ−３は、デバイスの電源が投入された時にそのＩ／Ｏ仮想化機能を自動的に実行可能化することも可能であり、この場合、Ｈｏｓｔ又はその他のモジュールがＩ／ＯデバイスＥ−３のＩ／Ｏ仮想化機能を実行可能化する必要はない。Ｉ／ＯデバイスＥ−３を仮想化することによって生成されたＰＦデバイスは主に管理機能の役割を果たし、ＶＦデバイスは主に処理機能の役割を果たす。
【０１０１】
ステップ８０４：  Ｈｏｓｔ内にＰＦソフトウェア・インスタンス及び幾つかのＶＦソフトウェア・インスタンスを生成し、ここで対応するＰＦデバイス及び幾つかのＶＦデバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／ＯデバイスＥ−３を仮想化することにより生成可能であり、Ｈｏｓｔ内に生成されたＶＦソフトウェア・インスタンスの各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応しており、Ｈｏｓｔ内に生成されたＰＦソフトウェア・インスタンスはＩ／ＯデバイスＥ−３を仮想化することにより生成されたＰＦデバイスに対応している。
【０１０２】
ステップ８０５：  Ｈｏｓｔによって、Ｉ／ＯデバイスＥ−３と同じタイプを有するＩ／Ｏ仮想デバイス（例えば「ｖＥ−３」と呼ばれる）を作成し、
ここでＩ／Ｏ仮想デバイスｖＥ−３のバックエンド・インスタンス（ＢＥ）（例えばＢＥ−３と呼ばれる）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスｖＥ−３のフロントエンド・インスタンス（ＦＥ）（例えば「ＦＥ−３」と呼ばれる）は開始されたＶＭ（例えば「ＶＭ−３」と呼ばれる）内に作成される。例えばＨｏｓｔは、開始されたＶＭ−３内のＩ／Ｏ仮想デバイスｖＥ−３に対応するフロントエンド・インスタンスＦＥ−３の作成をトリガすることができる。ＶＭ−３内に作成されるＦＥ−３及びＨｏｓｔ内に作成されるＢＥ−３は、一般に、Ｉ／Ｏ仮想デバイスｖＥ−３のドライバを構築するとみなすことができる。
【０１０３】
ステップ８０６：  Ｈｏｓｔによって、作成されたＢＥ−３を１つのアイドル状態のＶＦソフトウェア・インスタンス（例えば「Ｖｆｅ−３」と呼ばれる）と結合し、
ここでＶＦソフトウェア・インスタンスＶｆｅ−３は、例えば、Ｉ／ＯデバイスＥ−３から仮想化されたＶＦデバイス（例えば「ＶＦ−３」と呼ばれる）に対応する。いわゆるアイドル状態のＶＦソフトウェア・インスタンスは、他のバックエンド・インスタンス（ＢＥ）と結合されていないＶＦソフトウェア・インスタンスである。
【０１０４】
これまでのところ、Ｉ／ＯデバイスＥ−３から仮想化されたＶＦデバイスＶＦ−３とＶＭ−３内のフロントエンド・インスタンスＦＥ−３との間にチャネルが通され、このようにしてＦＥ−３は、Ｈｏｓｔ内でＢＥ−３を介してＶＦデバイスＶＦ−３にアクセスすることができる。ＶＦデバイスＶＦ−３は使用のためにＶＭ−３に別々に割り振られ、ＶＦデバイスＶＦ−３はＩ／ＯデバイスＥ−３から仮想化され、高効率のデバイス・インターフェースを提供することができるため、ＶＭ−３にとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のＣＰＵオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド（ＦＥ）ドライブ（すなわちＦＥ−３）はＶＭ−３内にあるため、データは、Ｈｏｓｔ内のバックエンド（ＢＥ）ドライブ（すなわちＢＥ−３）を介して転送され、ＶＭ−３はＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点である。
【０１０５】
ステップ８０７：  フロントエンド・インスタンスＦＥ−３によって、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、ＨｏｓｔとＶＭ−３との間の共有メモリに書き込み、ＢＥ−３に通知する（結局のところ、自己検出を実行した後、ＢＥ−３は、送信されることになるデータが位置するキャッシュに対応するＧＰＡが共有メモリに書き込まれる旨を発見することも可能である）。
【０１０６】
例えば、送信されることになるデータが位置するキャッシュに対応するＧＰＡは、［ＧＰＡ１，Ｌｅｎ１］、・・・［ＧＰＡｎ，Ｌｅｎｎ］であり、すなわちＤＭＡ用のキャッシュの複数のセクションが事前に割り振り可能であり、ここでＧＰＡ１はキャッシュのＧＰＡの開始アドレスを表し、Ｌｅｎ１は、ＧＰＡ１から開始するキャッシュ領域の長さを表すという具合である。
【０１０７】
ステップ８０８：  ＢＥ−３によって、ＢＥ−３と結合されたＶＦソフトウェア・インスタンスＶｆｅ−３のプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、ＶＦソフトウェア・インスタンスＶｆｅ−３に対応するＶＦデバイスＶＦ−３の送信キューに書き込む。
【０１０８】
ステップ８０９：  送信されることになるデータが存在することを見つけた場合、ＶＦデバイスの送信キュー内に記録されたＧＰＡをターゲット・アドレスとして使用することにより、ＶＦデバイスＶＦ−３によって、ＤＭＡ読み取り要求を開始し、
ここでＶＦデバイスＶＦ−３は、例えばＶＦデバイスの送信キューを定期的又は不定期に検出することが可能であり、ＧＰＡが送信キュー内に新規に書き込まれたことが見つかった場合、送信されることになるデータが存在するものとみなすか、又はＶＦソフトウェア・インスタンスＶｆｅ−３は、ＧＰＡが送信キュー内に新規に書き込まれた後にＶＦデバイスＶＦ−３に通知することが可能であり、
ここで、ＶＦデバイスＶＦ−３によって開始されたＤＭＡ読み取り要求はＩＯＭＭＵを通ることになる。
【０１０９】
ステップ８１０：  ＩＯＭＭＵによって、ＤＭＡ読み取り要求のターゲット・アドレスであるＧＰＡを対応するＨＰＡに修正し、
ここで、例えばアドレス変換ページ・テーブルはＩＯＭＭＵ内に設定され、アドレス変換ページ・テーブルはＧＰＡとＨＰＡとの間のマッピング（例えば図８−ｂに示されるような）を記録する。ＤＭＡ読み取り要求が通ると、ＩＯＭＭＵは、アドレス変換ページ・テーブルを検索することによって、ＤＭＡ読み取り要求のターゲット・アドレスであるＧＰＡに対応するＨＰＡを獲得し、ＤＭＡ読み取り要求のターゲット・アドレスＧＰＡを当該獲得されたＨＰＡに修正することができる。
【０１１０】
ステップ８１１：  ＨＰＡに対応するキャッシュを解放するために、ＶＦソフトウェア・インスタンスＶｆｅ−３がＶＭ−３内のフロントエンド（ＦＥ）インスタンスＦＥ−３をトリガするように、ターゲット・アドレスがＨＰＡに修正されたＤＭＡ読み取り要求が実行された後、ＶＦデバイスＶＦ−３によって、Ｈｏｓｔ内の対応するＶＦソフトウェア・インスタンスＶｆｅ−３に通知する。
【０１１１】
ＶＦソフトウェア・インスタンスＶｆｅ−３によってトリガされている時点において、ＶＭ−３内のフロントエンド・インスタンスＦＥ−３は、新規データをキャッシュに入れるように、ＨＰＡに対応するキャッシュを解放することができる。
【０１１２】
本実施形態において、Ｈｏｓｔによって実行可能化された入出力（Ｉ／Ｏ）デバイスのＩ／Ｏ仮想化機能が実行可能化された後、いくつかのＶＦソフトウェア・インスタンスがＨｏｓｔ内で生成され、幾つかの対応するＶＦデバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／Ｏデバイスを仮想化することによって生成され、Ｈｏｓｔ内に生成されたＶＦソフトウェア・インスタンスの各々は、幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応しており、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成し、ここでＩ／Ｏ仮想デバイスのバックエンド（ＢＥ）インスタンスＢＥはＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスのフロントエンド（ＦＥ）インスタンスＦＥは開始されたＶＭ内に作成され、ＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合され、このようにして、各ＶＭが１つのＶＦデバイスを別々に使用できるアプリケーション・アーキテクチャが確立され、ＦＥがＨｏｓｔ内のＢＥを介してＶＦデバイスにアクセスできるように、Ｉ／Ｏデバイスを仮想化して成る１つのＶＦデバイスと１つのＶＭ内のフロントエンド（ＦＥ）インスタンスＦＥとの間にチャネルが通される。Ｉ／Ｏデバイスを仮想化して成るＶＦデバイスは、使用のためにＶＭに別々に割り振られ、ＶＦデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、ＶＭにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のＣＰＵオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド（ＦＥ）ドライブ（すなわちＦＥ）はＶＭ内にあるため、ＦＥは、データはＨｏｓｔ内のバックエンド（ＢＥ）ドライブ（すなわちＢＥ）を介して転送され、ＶＭはＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
【０１１３】
加えて、ＤＭＡ読み取り要求の実行手順においては、ハードウェア・モジュールＩＯＭＭＵはＧＰＡとＨＰＡとの間の変換を実装し、それによってＣＰＵオーバヘッドが減少し、性能がさらに向上する。
【０１１４】
図９−ａを参照すると、本発明の実施形態で提供されるその他の仮想化処理方法は、以下を含むことができる。
【０１１５】
ステップ９０１：  Ｈｏｓｔ内にＰＦデバイス及びＶＦデバイスのドライバをインストールし、ここでＰＦデバイス及びＶＦデバイスはＩ／Ｏデバイス（Ｅ−４と呼ばれる）に対応する。
【０１１６】
ステップ９０２：  Ｈｏｓｔによって、Ｉ／ＯデバイスＥ−４のＩ／Ｏ仮想化機能を実行可能化し、
ここで、例えばＨｏｓｔは、当該Ｈｏｓｔが開始された場合又は開始された後のある時点において、Ｉ／ＯデバイスＥ−４のＩ／Ｏ仮想化機能を実行可能化することができる。対応する物理機能（ＰＦ）デバイス及び幾つかの仮想機能（ＶＦ）デバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／ＯデバイスＥ−４を仮想化することにより生成可能であり、結局のところ、その他のモジュールを使用してＩ／ＯデバイスＥ−４を実行可能化することが可能であり、結局のところ、Ｉ／ＯデバイスＥ−４は、デバイスの電源が投入された時にそのＩ／Ｏ仮想化機能を自動的に実行可能化することも可能であり、この場合、Ｈｏｓｔ又はその他のモジュールがＩ／ＯデバイスＥ−４のＩ／Ｏ仮想化機能を実行可能化する必要はない。Ｉ／ＯデバイスＥ−４を仮想化することによって生成されたＰＦデバイスは主に管理機能の役割を果たし、ＶＦデバイスは主に処理機能の役割を果たす。
【０１１７】
ステップ９０３：  Ｈｏｓｔ内にＰＦソフトウェア・インスタンス及び幾つかのＶＦソフトウェア・インスタンスを生成し、ここで対応するＰＦデバイス及び幾つかのＶＦデバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／ＯデバイスＥ−４を仮想化することにより生成可能であり、Ｈｏｓｔ内に生成されたＶＦソフトウェア・インスタンスの各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応しており、Ｈｏｓｔ内に生成されたＰＦソフトウェア・インスタンスはＩ／ＯデバイスＥ−４を仮想化することによって生成されたＰＦデバイスに対応している。
【０１１８】
ステップ９０４：  Ｈｏｓｔによって、Ｉ／ＯデバイスＥ−４と同じタイプを有するＩ／Ｏ仮想デバイス（例えばｖＥ−４と呼ばれる）を作成し、
ここでＩ／Ｏ仮想デバイスｖＥ−４のバックエンド・インスタンス（ＢＥ）（例えばＢＥ−４と呼ばれる）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスｖＥ−４のフロントエンド・インスタンス（ＦＥ）（例えばＦＥ−４と呼ばれる）は開始されたＶＭ（例えば「ＶＭ−４」と呼ばれる）内に作成される。例えばＨｏｓｔは、開始されたＶＭ−４内のＩ／Ｏ仮想デバイスｖＥ−４に対応するフロントエンド・インスタンスＦＥ−４の作成をトリガすることができる。ＶＭ−４内に作成されるＦＥ−４及びＨｏｓｔ内に作成されるＢＥ−４は、一般に、Ｉ／Ｏ仮想デバイスｖＥ−４のドライバを構築するとみなすことができる。
【０１１９】
ステップ９０５：  Ｈｏｓｔによって、作成されたＢＥ−４を１つのアイドル状態のＶＦソフトウェア・インスタンス（例えばＶｆｅ−４と呼ばれる）と結合し、
ここでＶＦソフトウェア・インスタンスＶｆｅ−４は、例えば、Ｉ／ＯデバイスＥ−４を仮想化することによって生成されたＶＦデバイス（例えばＶＦ−４と呼ばれる）に対応する。いわゆるアイドル状態のＶＦソフトウェア・インスタンスは、他のバックエンド・インスタンス（ＢＥ）と結合されていないＶＦソフトウェア・インスタンスである。
【０１２０】
これまでのところ、Ｉ／ＯデバイスＥ−４を仮想化することによって生成されたＶＦデバイスＶＦ−４とＶＭ−４内のフロントエンド・インスタンスＦＥ−４との間にチャネルが通され、このようにしてＦＥ−４は、Ｈｏｓｔ内でＢＥ−４を介してＶＦデバイスＶＦ−４にアクセスすることができる。ＶＦデバイスＶＦ−４は使用のためにＶＭ−４に別々に割り振られ、ＶＦデバイスＶＦ−４はＩ／ＯデバイスＥ−４を仮想化することによって生成され、高効率のデバイス・インターフェースを提供することができるため、ＶＭ−４にとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のＣＰＵオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド・ドライブ（すなわちＦＥ−４）はＶＭ−４内にあるため、データは、Ｈｏｓｔ内のバックエンド・ドライブ（すなわちＢＥ−４）を介して転送され、ＶＭ−４はＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点である。
【０１２１】
ステップ９０６：  ＦＥ−４によって、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、ＨｏｓｔとＶＭ−４との間の共有メモリに書き込み、ＢＥ−４に通知する（結局のところ、自己検出を実行した後、ＢＥ−４は、送信されることになるデータが位置するキャッシュに対応するＧＰＡが共有メモリに書き込まれる旨を発見することも可能である）。
【０１２２】
ステップ９０７：  Ｈｏｓｔによって、共有メモリ内の送信されることになるデータが位置するキャッシュに対応するＧＰＡを、これと対応するＨＰＡに修正し、
ここで、例えばアドレス変換ページ・テーブルはＨｏｓｔ内に設定され、アドレス変換ページ・テーブルはＧＰＡとＨＰＡとの間のマッピング（例えば図９−ｂに示されるような）を記録する。アドレス変換ページ・テーブルを検索することによって、Ｈｏｓｔは、例えば、送信されることになるデータが位置するキャッシュに対応するＧＰＡと対応するＨＰＡを獲得し、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、当該獲得したＨＰＡに修正することができる。
【０１２３】
ステップ９０８：  ＢＥ−４によって、ＢＥ−４と結合されたＶＦソフトウェア・インスタンスＶｆｅ−４のプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するＨＰＡを、ＶＦソフトウェア・インスタンスＶｆｅ−４に対応するＶＦデバイスＶＦ−４の送信キューに書き込む。
【０１２４】
ステップ９０９：  送信されることになるデータが存在することを見つけた場合、ＶＦデバイスの送信キュー内に記録されたＨＰＡをターゲット・アドレスとして使用することにより、ＶＦデバイスＶＦ−４によって、ＤＭＡ読み取り要求を開始し、
ここでＶＦデバイスＶＦ−４は、例えばＶＦデバイスの送信キューを定期的又は不定期に検出することが可能であり、ＨＰＡが送信キュー内に新規に書き込まれたことが見つかった場合、送信されることになるデータが存在するものとみなすか、又はＶＦソフトウェア・インスタンスＶｆｅ−４は、ＨＰＡが送信キュー内に新規に書き込まれた後にＶＦデバイスＶＦ−４に通知することが可能である。
【０１２５】
ステップ９１０：  ＨＰＡに対応するキャッシュを解放するために、ＶＦソフトウェア・インスタンスＶｆｅ−４がＶＭ−４内のフロントエンド・インスタンスＦＥ−４をトリガするように、ＤＭＡ読み取り要求が実行された後、ＶＦデバイスＶＦ−４によって、Ｈｏｓｔ内の対応するＶＦソフトウェア・インスタンスＶｆｅ−４に通知する。
【０１２６】
ＶＦソフトウェア・インスタンスＶｆｅ−４によってトリガされている時点において、ＶＭ−４内のフロントエンド・インスタンスＦＥ−４は、新規データをキャッシュに入れるように、ＨＰＡに対応するキャッシュを解放することができる。
【０１２７】
本実施形態において、Ｈｏｓｔによって実行可能化されることによって、Ｉ／ＯデバイスのＩ／Ｏ仮想化機能が実行可能化された後に、幾つかのＶＦソフトウェア・インスタンスがＨｏｓｔ内で生成され、幾つかの対応するＶＦデバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／Ｏデバイスを仮想化することによって生成され、Ｈｏｓｔ内に生成されたＶＦソフトウェア・インスタンスの各々は、幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応しており、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成し、ここでＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はＨｏｓｔ内に作成され、Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は開始されたＶＭ内に作成され、ＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合され、このようにして、各ＶＭが１つのＶＦデバイスを別々に使用できるアプリケーション・アーキテクチャが確立され、ＦＥがＨｏｓｔ内のＢＥを介してＶＦデバイスにアクセスできるように、Ｉ／Ｏデバイスを仮想化して成る１つのＶＦデバイスと１つのＶＭ内のフロントエンド・インスタンス（ＦＥ）との間にチャネルが通される。Ｉ／Ｏデバイスを仮想化して成るＶＦデバイスは、使用のためにＶＭに別々に割り振られ、ＶＦデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、ＶＭにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のＣＰＵオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド（ＦＥ）ドライブ（すなわちＦＥ）はＶＭ内にあるため、ＦＥは、データはＨｏｓｔ内のバックエンド（ＢＥ）ドライブ（すなわちＢＥ）を介して転送され、ＶＭはＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
【０１２８】
加えて、ＤＭＡ読み取り要求の実行の手順中、ＨｏｓｔはＧＰＡとＨＰＡとの間で変換を実装し、それによって必要なハードウェア・リソース構成を削減し、処理フローを簡略化する。
【０１２９】
本発明の実施形態における前述の方法をより良く理解及び実装するために、前述の方法を実装するように構成された装置及びコンピュータ・システムが以下においてさらに提供される。
【０１３０】
図１０を参照すると、本発明の実施形態で提供されるホスト１０００は、
第１の作成モジュール１０１０、第２の作成モジュール１０２０、及び結合モジュール１０３０を含むことが可能であり、
第１の作成モジュール１０１０は、入出力（Ｉ／Ｏ）デバイスのＩ／Ｏ仮想化機能が実行可能化された後に、Ｈｏｓｔ１０００内に幾つかのＶＦソフトウェア・インスタンスを生成するように構成され、幾つかの対応する仮想機能（ＶＦ）デバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／Ｏデバイスを仮想化することによって生成され、Ｈｏｓｔ１０００内で生成されるＶＦソフトウェア・インスタンスの各々が幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応しており、
第２の作成モジュール１０２０は、Ｉ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成するように構成され、
Ｉ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はＨｏｓｔ１０００内に作成され、Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は開始された仮想マシンＶＭ内に作成され、さらに、
結合モジュール１０３０は、第２の作成モジュール１０２０によって作成されたＢＥを、第１の作成モジュール１０１０によって作成されたアイドル状態のＶＦソフトウェア・インスタンスと結合するように構成される。
【０１３１】
本実施形態におけるホスト１０００は、前述の方法実施形態のそれぞれにおけるＨｏｓｔとすることが可能であり、各機能モジュールが有する機能は、前述の方法実施形態のそれぞれにおいて説明した方法に従って、具体的に実装可能であることが理解できる。特定の実装手順について、前述の方法実施形態の関連する記述を参照することが可能であるので、本明細書の以下の記述では、その詳細は繰り返し説明しない。
【０１３２】
本実施形態において、Ｉ／ＯデバイスのＩ／Ｏ仮想化機能が実行可能化された後、Ｈｏｓｔ１０００内にいくつかのＶＦソフトウェア・インスタンスが生成され、幾つかの対応する仮想機能（ＶＦ）デバイスは、Ｉ／Ｏ仮想化機能が実行可能化されたＩ／Ｏデバイスを仮想化することによって生成され、Ｈｏｓｔ１０００内で生成されるＶＦソフトウェア・インスタンスの各々が幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応しており、Ｈｏｓｔは、Ｉ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスを作成し、Ｉ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）はＨｏｓｔ１０００内に作成され、Ｉ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）は開始された仮想マシン（ＶＭ）内に作成され、ＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合され、このように、各ＶＭが独立に１つのＶＦデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、ＦＥがＨｏｓｔ内のＢＥを介してＶＦデバイスにアクセスできるように、Ｉ／Ｏデバイスを仮想化して成る１つのＶＦデバイスと１つのＶＭ内のフロントエンド・インスタンスＦＥとの間にチャネルが通されることがわかる。Ｉ／Ｏデバイスを仮想化して成るＶＦデバイスは、使用のためにＶＭに別々に割り振られ、ＶＦデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、ＶＭにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる追加のＣＰＵオーバヘッドもほとんど発生しない点は有益である。さらに、仮想デバイスのフロントエンド（ＦＥ）ドライブ（すなわちＦＥ）はＶＭ内にあるため、Ｈｏｓｔ１０００内のバックエンド（ＢＥ）ドライブ（すなわちＢＥ）を介してデータが転送され、ＶＭはＨｏｓｔ１０００の実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
【０１３３】
図１１−ａを参照すると、本発明の実施形態で提供されるコンピューティング・ノード１１００は、
ハードウェア層１１１０、ハードウェア層１１１０上で実行されるＨｏｓｔ１１２０、及びＨｏｓｔ１１２０上で実行される少なくとも１つの仮想マシンＶＭ１１３０、
を含むことができる。
【０１３４】
ハードウェア層１１１０はＩ／Ｏデバイス１１１１を含み、いくつかの対応する仮想機能（ＶＦ）デバイス１１１１１はＩ／Ｏデバイス１１１１を仮想化することによって生成され、Ｈｏｓｔ１１２０はいくつかのＶＦソフトウェア・インスタンス１１２１を有し、ＶＦソフトウェア・インスタンス１１２１の各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイス１１１１１にそれぞれ対応しており、Ｈｏｓｔ１１２０はＩ／Ｏデバイス１１１１と同じタイプを有するＩ／Ｏ仮想デバイスのバックエンド・インスタンスＢＥ１１２２を有し、ＶＭ１１３０はＩ／Ｏ仮想デバイスのフロントエンド・インスタンスＦＥ１１３１を有し、Ｈｏｓｔ１１２０内のＢＥ１１２２はアイドル状態のＶＦソフトウェア・インスタンス１１２１と結合される。
【０１３５】
本実施形態に係るアプリケーション・シナリオにおいて、ＦＥ１１３１は直接メモリ・アクセス（ＤＭＡ）用のキャッシュを事前に割り振るように構成される。
【０１３６】
ＢＥ１１２２と結合されたＶＦソフトウェア・インスタンス１１２１は、
ＢＥ１１２２をエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介してＤＭＡ用のキャッシュに対応するアドレスを獲得し、ＤＭＡ用のキャッシュに対応する当該獲得したアドレスを、ＶＦソフトウェア・インスタンス１１２１に対応するＶＦデバイス１１１１１の第１の記憶ユニットに書き込む。
【０１３７】
ＶＦデバイス１１１１１は、受信されることになるデータが存在する場合、第１の記憶ユニットからＤＭＡ用のキャッシュに対応するアドレスを選択し、ＤＭＡ用のキャッシュに対応するアドレスをターゲット・アドレスとして使用することによりＤＭＡ書き込み要求を開始し、ＶＦソフトウェア・インスタンス１１２１がアドレスに対応するキャッシュに書き込まれたデータを受信するためにＦＥ１１３１をトリガするように、ＤＭＡ書き込み要求が実行された後に、Ｈｏｓｔ１１２０内にある対応するＶＦソフトウェア・インスタンス１１２１に通知するように構成される。
【０１３８】
図１１−ｂを参照すると、本実施形態に係るアプリケーション・シナリオにおいて、さらにＦＥ１１３１は、ＤＭＡ用の事前に割り振られたキャッシュに対応するゲスト物理アドレスであるＧＰＡを、Ｈｏｓｔ１１２０とＶＭ１１３０との間の共有メモリ１１４０に書き込むように構成される。
【０１３９】
ＢＥ１１２２と結合されたＶＦソフトウェア・インスタンス１１２１は、具体的に、ＢＥ１１２２をエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して共有メモリ１１４０からＤＭＡ用のキャッシュに対応するＧＰＡを獲得し、ＤＭＡ用のキャッシュに対応する当該獲得したＧＰＡを、ＶＦソフトウェア・インスタンス１１２１に対応するＶＦデバイス１１１１１の第１の記憶ユニットに書き込むように、構成することができる。
【０１４０】
さらに、ＦＥ１１３１は、対応するＢＥ１１２２にＤＭＡ用の事前に割り振られたキャッシュに対応するＧＰＡを通知することも可能であり、ＢＥ１１２２と結合されたＶＦソフトウェア・インスタンス１１２１は、ＢＥ１１２２をエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介してＤＭＡ用のキャッシュに対応するＧＰＡを獲得することができる。
【０１４１】
ＶＦデバイス１１１１１は、具体的に、受信されることになるデータが存在する場合、ＤＭＡ用のキャッシュに対応するＧＰＡを第１の記憶ユニットから選択し、ＤＭＡ用のキャッシュに対応する選択されたＧＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ書き込み要求を開始し、ＶＦソフトウェア・インスタンス１１２１がＨＰＡに対応するキャッシュに書き込まれたデータを受信するためにＦＥ１１３１をトリガするように、ターゲット・アドレスＧＰＡが対応するＨＰＡに修正されたＤＭＡ書き込み要求が実行された後、Ｈｏｓｔ１１２０内の対応するＶＦソフトウェア・インスタンス１１２１に通知するように、構成することができる。
【０１４２】
コンピューティング・ノード１１００のハードウェア層１１１０は、
ＶＦデバイス１１１１１によって開始されたＤＭＡ書き込み要求のターゲット・アドレスであるＧＰＡを、これと対応するＨｏｓｔ物理アドレスＨＰＡに修正するように構成された、入出力メモリ管理ユニットＩＯＭＭＵ１１１２を、
さらに含むことができる。
【０１４３】
例えば、アドレス変換ページ・テーブルはＩＯＭＭＵ１１１２内に設定され、ここでアドレス変換ページ・テーブルはＧＰＡとＨＰＡとの間のマッピングを記録し、ＩＯＭＭＵ１１１２は、アドレス変換ページ・テーブルを検索することによって、ＤＭＡ書き込み要求のターゲット・アドレスであるＧＰＡに対応するＨＰＡを獲得し、ＤＭＡ書き込み要求のターゲット・アドレスＧＰＡを、当該獲得したＨＰＡに修正することが可能である。
【０１４４】
図１１−ｃを参照すると、本実施形態に係るその他のアプリケーション・シナリオにおいて、さらにＦＥ１１３１は、ＤＭＡ用の事前に割り振られたキャッシュに対応するＧＰＡを、Ｈｏｓｔ１１２０とＶＭ１１３０との間の共有メモリ１１４０に書き込むように構成することができる。
【０１４５】
Ｈｏｓｔ１１２０は、共有メモリ１１４０内のＤＭＡ用のキャッシュに対応するＧＰＡを、これと対応するＨＰＡに修正するように構成することができる。
【０１４６】
例えば、アドレス変換ページ・テーブルはＨｏｓｔ１１２０内に設定され、ここでアドレス変換ページ・テーブルはＧＰＡとＨＰＡとの間のマッピングを記録し、アドレス変換ページ・テーブルを検索することによって、Ｈｏｓｔ１１２０は、共有メモリ内のＤＭＡ用のキャッシュに対応するＧＰＡに対応するＨＰＡを獲得し、共有メモリ内のＤＭＡ用のキャッシュに対応するＧＰＡを、当該獲得したＨＰＡに修正することが可能である。結局のところ、ＦＥ１１３１は、ＤＭＡ用の事前に割り振られたキャッシュに対応するＧＰＡを対応するＢＥ１１２２に通知することも可能であり、Ｈｏｓｔ１１２０は、ＤＭＡ用のキャッシュに対応するＧＰＡを、これと対応するＨＰＡに修正することが可能である。
【０１４７】
ＢＥ１１２２に結合されたＶＦソフトウェア・インスタンス１１２１は、具体的に、ＢＥ１１２２をエクスポートするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介してＤＭＡ用のキャッシュに対応するＨＰＡを獲得し、ＤＭＡ用のキャッシュに対応する当該獲得したＨＰＡを、ＶＦソフトウェア・インスタンス１１２１に対応するＶＦデバイス１１１１１の第１の記憶ユニットに書き込むように、構成することができる。
【０１４８】
ＶＦデバイス１１１１１は、具体的に、受信されることになるデータが存在する場合、第１の記憶ユニットからＤＭＡ用のキャッシュに対応するＨＰＡを選択し、当該選択されたＨＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ書き込み要求を開始し、ＨＰＡに対応するキャッシュに書き込まれたデータを受信するためにＶＦソフトウェア・インスタンス１１２１がＦＥ１１３１をトリガするように、ＤＭＡ書き込み要求が実行された後、Ｈｏｓｔ１１２０内の対応するＶＦソフトウェア・インスタンス１１２１に通知するように、構成することができる。
【０１４９】
さらに、本実施形態に係るアプリケーション・シナリオにおいて、さらにＦＥ１１３１は、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、Ｈｏｓｔ１１２０とＶＭ１１３０との間の共有メモリ１１４０に書き込むように構成される。
【０１５０】
さらにＢＥ１１２２は、送信されることになるデータが位置するキャッシュに対応するＧＰＡを共有メモリ１１４０から獲得し、ＢＥ１１２２と結合されたＶＦソフトウェア・インスタンス１１２１のプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、ＶＦソフトウェア・インスタンス１１２１に対応するＶＦデバイス１１１１１の第２の記憶ユニットに書き込むように、構成することができる。
【０１５１】
さらにＦＥ１１３１は、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、これと対応するＢＥ１１２２に通知することも可能であり、ＢＥ１１２２は、この通知に従って、送信されることになるデータが位置するキャッシュに対応するＧＰＡを獲得する。
【０１５２】
さらにＶＦデバイス１１１１１は、送信されることになるデータが存在することを見つけた場合、第２の記憶ユニット内に記録されたＧＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ読み取り要求を開始し、さらにＶＦデバイス１１１１１は、ＶＦソフトウェア・インスタンス１１２１が対応するキャッシュを解放するためにＦＥ１１３１をトリガするように、ＤＭＡ読み取り要求が実行された後、Ｈｏｓｔ１１２０内の対応するＶＦソフトウェア・インスタンス１１２１に通知するようにさらに構成することができる。
【０１５３】
さらにコンピューティング・ノード１１００のハードウェア層１１１０は、
ＶＦデバイス１１１１１によって開始されたＤＭＡ読み取り要求のターゲット・アドレスであるＧＰＡを、これと対応するＨＰＡに修正するように構成された、入出力メモリ管理ユニットＩＯＭＭＵ１１１２を、
さらに含むことができる。
【０１５４】
例えば、アドレス変換ページ・テーブルはＩＯＭＭＵ１１１２内に設定され、ここでアドレス変換ページ・テーブルはＧＰＡとＨＰＡとの間のマッピングを記録し、ＩＯＭＭＵ１１１２は、アドレス変換ページ・テーブルを検索することによって、ＤＭＡ読み取り要求のターゲット・アドレスであるＧＰＡに対応するＨＰＡを獲得し、ＤＭＡ読み取り要求のターゲット・アドレスＧＰＡを当該獲得したＨＰＡに修正することができる。
【０１５５】
本実施形態に係る他のアプリケーション・シナリオにおいて、さらにＦＥ１１３１は、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、Ｈｏｓｔ１１２０とＶＭ１１３０との間の共有メモリ１１４０に書き込むように構成することができる。
【０１５６】
Ｈｏｓｔ１１２０は、共有メモリ１１４０内で送信されることになるデータが位置するキャッシュに対応するＧＰＡを、これと対応するＨＰＡに修正するように構成することができる。
【０１５７】
例えば、アドレス変換ページ・テーブルはＨｏｓｔ１１２０内に設定され、ここでアドレス変換ページ・テーブルはＧＰＡとＨＰＡとの間のマッピングを記録し、アドレス変換ページ・テーブルを検索することによって、Ｈｏｓｔ１１２０は、共有メモリ内で送信されることになるデータが位置するキャッシュに対応するＧＰＡに対応するＨＰＡを獲得し、共有メモリ内で送信されることになるデータが位置するキャッシュに対応するＧＰＡを、これと対応するＨＰＡに修正することができる。結局のところ、ＦＥ１１３１は、送信されることになるデータが位置するキャッシュに対応するＧＰＡをＨｏｓｔ１１２０に通知することも可能であり、Ｈｏｓｔ１１２０は、送信されることになるデータが位置するキャッシュに対応するＧＰＡを、これと対応するＨＰＡに修正することができる。
【０１５８】
さらにＢＥ１１２２は、送信されることになるデータが位置するキャッシュに対応するＨＰＡを獲得し、ＢＥ１１２２と結合されたＶＦソフトウェア・インスタンス１１２１のプログラム送信インターフェースを呼び出し、送信されることになるデータが位置するキャッシュに対応するＨＰＡを、ＶＦソフトウェア・インスタンス１１２１に対応するＶＦデバイス１１１１１の第２の記憶ユニットに書き込むように、構成される。
【０１５９】
さらにＶＦデバイス１１１１１は、送信されることになるデータが存在することを見つけた場合、第２の記憶ユニット内に記録されたＨＰＡをターゲット・アドレスとして使用することにより、ＤＭＡ読み取り要求を開始するように構成することができる。加えて、さらにＶＦデバイス１１１１１は、ＶＦソフトウェア・インスタンス１１２１が対応するキャッシュを解放するためにＦＥ１１３１をトリガするように、ＤＭＡ読み取り要求が実行された後、Ｈｏｓｔ１１２０内の対応するＶＦソフトウェア・インスタンス１１２１に通知するように構成することができる。
【０１６０】
第１の記憶ユニットは、例えばＶＦデバイスの受信キュー又は受信リスト、或いはアドレスを記録することが可能な他のデータ記憶構造である。第２の記憶ユニットは、例えばＶＦデバイスの送信キュー又は送信リスト、或いはアドレスを記憶することが可能な他のデータ記憶構造である。
【０１６１】
本実施形態におけるＨｏｓｔ１１２０は、前述の方法実施形態のそれぞれにおけるＨｏｓｔとすることが可能であり、本実施形態においてコンピューティング・ノード１１００が実行する仮想化システムの動作メカニズムは、前述の方法実施形態で説明されたものと同様のものとすることが可能であり、各機能モジュールが有する機能は、前述の方法実施形態のそれぞれにおいて説明した方法に従って具体的に実装可能であることが理解できる。特定の実装手順について、前述の方法実施形態の関連する記述を参照することが可能であるので、本明細書の以下の記述ではその詳細は繰り返し説明しない。
【０１６２】
本発明の実施形態におけるコンピューティング・ノード１１００は、ハードウェア層、ハードウェア層上で実行されるＨｏｓｔ、及びＨｏｓｔ上で実行される少なくとも１つのＶＭを含み、ここでハードウェア層は入出力（Ｉ／Ｏ）デバイスを含み、幾つかの対応する仮想機能（ＶＦ）デバイスがＩ／Ｏデバイスを仮想化することによって生成され、Ｈｏｓｔは幾つかのＶＦソフトウェア・インスタンスを有し、ＶＦソフトウェア・インスタンスの各々は幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応し、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）をさらに有し、ＶＭはＩ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）を有し、Ｈｏｓｔ内のＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合されることがわかる。このように、各ＶＭが独立に１つのＶＦデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、ＦＥがＨｏｓｔ内のＢＥを介してＶＦデバイスにアクセスできるように、Ｉ／Ｏデバイスを仮想化して成る１つのＶＦデバイスと１つのＶＭ内のフロントエンド・インスタンス（ＦＥ）との間にチャネルが通される。Ｉ／Ｏデバイスを仮想化して成るＶＦデバイスは、使用のためにＶＭに別々に割り振られ、ＶＦデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、ＶＭにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる特別なＣＰＵオーバヘッドもほとんど発生しない点は有益である。さらに、Ｉ／Ｏ仮想デバイスのフロントエンド（ＦＥ）ドライブ（すなわちＦＥ）はＶＭ内にあるため、ＦＥは、Ｈｏｓｔ内のバックエンド（ＢＥ）ドライブ（すなわちＢＥ）を介してデータを転送し、ＶＭはＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。
【０１６３】
図１２を参照すると、さらに本発明の実施形態はコンピュータ・システムを提供し、
少なくとも１つのコンピューティング・ノード１１００を含むことができる。
【０１６４】
前述の方法実施形態のそれぞれに関しては、説明を簡単にするために、方法は一連のアクションの組み合わせとして説明されるが、本発明に従い、いくつかのステップは説明されたアクション・シーケンス以外のシーケンスで又は同時に実行されることが可能であるため、当業者であれば、本発明は説明された動作シーケンスによって限定されないことがわかるはずであることに留意されたい。さらに当業者であれば、本明細書で説明されたすべての実施形態が例示の実施形態であり、関連する動作及びモジュールは必ずしも本発明に必要でないことがわかるはずであろう。
【０１６５】
上記の実施形態において、各実施形態の説明はその重点を有し、実施形態で詳細に説明されていない部分については他の実施形態の関連説明を参照することができる。
【０１６６】
上記に鑑み、本発明の実施形態におけるコンピューティング・ノードは、
ハードウェア層、ハードウェア層上で実行されるＨｏｓｔ、及びＨｏｓｔ上で実行される少なくとも１つのＶＭを含み、ハードウェア層は入出力Ｉ／Ｏデバイスを含み、幾つかの対応する仮想機能（ＶＦ）デバイスがＩ／Ｏデバイスを仮想化することによって生成され、Ｈｏｓｔは幾つかのＶＦソフトウェア・インスタンスを有し、ＶＦソフトウェア・インスタンスの各々は、幾つかのＶＦデバイスのうちの異なるＶＦデバイスにそれぞれ対応し、ＨｏｓｔはＩ／Ｏデバイスと同じタイプを有するＩ／Ｏ仮想デバイスのバックエンド・インスタンス（ＢＥ）をさらに有し、ＶＭはＩ／Ｏ仮想デバイスのフロントエンド・インスタンス（ＦＥ）を有し、Ｈｏｓｔ内のＢＥはアイドル状態のＶＦソフトウェア・インスタンスと結合される。このように、各ＶＭが独立に１つのＶＦデバイスを使用することが可能なアプリケーション・アーキテクチャが確立され、ＦＥがＨｏｓｔ内のＢＥを介してＶＦデバイスにアクセスできるように、Ｉ／Ｏデバイスを仮想化して成る１つのＶＦデバイスと１つのＶＭ内のフロントエンド・インスタンス（ＦＥ）との間にチャネルが通される。Ｉ／Ｏデバイスを仮想化して成るＶＦデバイスは、使用のためにＶＭに別々に割り振られ、ＶＦデバイスは高効率のデバイス・インターフェースを提供することが可能であるため、ＶＭにとって、物理マシンと同様の性能を獲得し、遅延が少なく、如何なる特別なＣＰＵオーバヘッドもほとんど発生しない点は有益である。さらに、Ｉ／Ｏ仮想デバイスのフロントエンド（ＦＥ）ドライブ（すなわちＦＥ）はＶＭ内にあるため、ＦＥは、Ｈｏｓｔ内のバックエンド（ＢＥ）ドライブ（すなわちＢＥ）を介してデータを転送し、ＶＭはＨｏｓｔの実際の物理デバイスを意識する必要が無く、これはデバイス共有の遷移及び実装にとって便利な点であって、それにより仮想化システムの互換性の最適化を実現することができる。さらに、ＶＭ内のＯＳが最新のハードウェア技術をサポートする機能を有する必要はなく、コンピューティング・ノードは、ハードウェア・プロバイダ（ＩＨＶ）によって提供されるＶＭドライブに依存することなく、様々な主流のＯＳに適用可能であり、仮想マシンと物理プラットフォームとの間の隔離状態及び分離状態は完全に保存され、仮想マシンを容易に遷移させることが可能であり、Ｈｏｓｔは依然としてＶＭ内のデータの受信及び送信を監視可能であり、データのフィルタリング及びメモリの多重化などの高度な機能が依然として使用可能であり、ＰＶのフロントエンドのＦＥ部分は多重化可能であり、アップグレード操作を実行するのに便利である。
【０１６７】
さらに、ＤＭＡ読み取り要求／書き込み要求を実行する手順中において、ハードウェア・モジュールＩＯＭＭＵはＧＰＡとＨＰＡとの間の変換を実装し、それによって必要なハードウェア・リソース構成を削減し、処理フローを簡略化する。別の方法として、ＤＭＡ読み取り要求を実行する手順中において、ＨｏｓｔはＧＰＡとＨＰＡとの間の変換を実装し、それによって必要なハードウェア・リソース構成を削減し、処理フローを簡略化する。
【０１６８】
当業者であれば、本発明の実施形態に従った方法のすべて又は一部のステップは、プログラム命令と関連するハードウェアによって実装可能であることを理解されたい。プログラムは、読み取り専用メモリ、ランダム・アクセス・メモリ、磁気ディスク、又は光ディスクなどの、コンピュータ読み取り可能記憶媒体内に記憶可能である。
【０１６９】
本発明の実施形態において提供される仮想化処理の方法及び装置並びにコンピュータ・システムが、詳細に説明される。本明細書では、本発明の原理及び実装は特定の例を介して説明される。本発明の実施形態に関する説明は、単に本発明の方法及び核となる概念を容易に理解するために提供されている。当業者であれば、本発明の概念に従った特定の実装及び適用範囲に関して、本発明の変形及び修正が実行可能である。したがって本明細書は、本発明に対する制限として解釈されるべきではない。
【図１】
0005802841.tif 000002
【図２−ａ】
0005802841.tif 000003
【図２−ｂ】
0005802841.tif 000004
【図３】
0005802841.tif 000005
【図４】
0005802841.tif 000006
【図５】
0005802841.tif 000007
【図６−ａ】
0005802841.tif 000008
【図６−ｂ】
0005802841.tif 000009
【図７−ａ】
0005802841.tif 000010
【図７−ｂ】
0005802841.tif 000011
【図８−ａ】
0005802841.tif 000012
【図８−ｂ】
0005802841.tif 000013
【図９−ａ】
0005802841.tif 000014
【図９−ｂ】
0005802841.tif 000015
【図１０】
0005802841.tif 000016
【図１１−ａ】
0005802841.tif 000017
【図１１−ｂ】
0005802841.tif 000018
【図１１−ｃ】
0005802841.tif 000019
【図１２】
0005802841.tif 000020