【手続補正書】
【提出日】令和3年5月27日(2021.5.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
仮想マシンの入出力（Ｉ／Ｏ）インターフェースを操作する装置であって、
一組の命令を格納する１つ又は複数のメモリデバイスと；
１つ又は複数のハードウェアプロセッサとを含み、前記１つ又は複数のハードウェアプロセッサは、前記一組の命令を実行して、前記装置に、
一組のホスト空間仮想アドレスを前記１つ又は複数のメモリデバイスの第１の部分に関連する第１の組の物理アドレスへマッピングする第１のマッピングテーブルを取得することと；
前記１つ又は複数のメモリデバイスの第２の部分に関連する第２の組の物理アドレスを前記一組のホスト空間仮想アドレスへマッピングする第２のマッピングテーブルを取得することであって、前記１つ又は複数のメモリデバイスの前記第２の部分は仮想マシンによりアクセス可能である、ことと；
前記第２の組の物理アドレスを前記第１の組の物理アドレスへマッピングする第３のマッピングテーブルを生成することと；
前記第３のマッピングテーブルを前記仮想マシンで動作するデバイスドライバへ提供することと
を行わせるように構成される、装置。
【請求項２】
前記１つ又は複数のハードウェアプロセッサはさらに、前記１つ又は複数のメモリデバイスの前記第１の部分をＩ／Ｏインターフェースの配置空間へマッピングするように構成され、
前記第３のマッピングテーブルは前記デバイスドライバが前記Ｉ／Ｏインターフェースの前記配置空間へアクセスできるようにする、請求項１に記載の装置。
【請求項３】
前記１つ又は複数のハードウェアプロセッサはさらに、前記一組の命令を実行して、仮想化コントローラ及びホストドライバを提供するように構成され；
前記一組のホスト空間仮想アドレスの前記第１の組の物理アドレスへの前記マッピングは前記仮想化コントローラにより行われ；
前記Ｉ／Ｏインターフェースの前記配置空間への前記１つ又は複数のメモリデバイスの前記第１の部分の前記マッピングは、前記仮想化コントローラからインディケーションを受信した後に前記ホストドライバにより行われる、請求項２に記載の装置。
【請求項４】
前記１つ又は複数のハードウェアプロセッサはさらに、前記一組の命令を実行して、前記装置に、
一組のゲスト空間仮想アドレスを前記第２の組の物理アドレスへマッピングすることと；
前記一組のゲスト空間仮想アドレスを前記第１の組の物理アドレスへさらにマッピングするために前記第３のマッピングテーブルを更新することと；
前記更新された第３のマッピングテーブルを前記デバイスドライバへ提供することと
を行わせるように構成され、
前記更新された第３のマッピングテーブルは、前記一組のゲスト空間仮想アドレスを使用して１つ又は複数のメモリ操作を行うことにより、前記デバイスドライバが前記Ｉ／Ｏインターフェースの前記配置空間へアクセスできるようにする、請求項２又は３に記載の装置。
【請求項５】
前記配置空間はタスクキューを格納し；
前記１つ又は複数のハードウェアプロセッサはさらに、前記一組の命令を実行して、前記装置に、
前記一組のゲスト空間仮想アドレスの第１のゲスト空間仮想アドレスにおける第２のハードウェアインターフェースへ送信されるべき第１のデータを前記デバイスドライバにより格納することと； 
前記タスクキューにおける前記第１のゲスト空間仮想アドレスを前記デバイスドライバにより格納することと；
前記第１のゲスト空間仮想アドレス及び前記更新された第３のマッピングテーブルを使用して第１のハードウェアインターフェースに前記第１のデータを取り出させるために、前記デバイスドライバにより、前記更新された第３のマッピングテーブルに基づき、通知を前記第１のハードウェアインターフェースの前記配置空間内に格納することと
を行わせるように構成される、請求項４に記載の装置。
【請求項６】
前記配置空間はタスクキューを格納し；
前記１つ又は複数のハードウェアプロセッサはさらに、前記一組の命令を実行して、前記装置に、
第２のデータが第２のハードウェアインターフェースから受信されるという通知を第１のハードウェアインターフェースから前記デバイスドライバにより受信することと；
前記通知の受信に応答して、前記タスクキューから前記第２のデータに関連する第２のゲスト空間仮想アドレスを前記デバイスドライバにより取得することと；
前記第２のゲスト空間仮想アドレス及び前記第３のマッピングテーブルを使用して前記第２のデータを前記デバイスドライバにより取り出すことと
を行わせるように構成される、請求項４に記載の装置。
【請求項７】
前記デバイスドライバはVirtI/Oフロントエンドドライバである、請求項１乃至６のいずれか一項に記載の装置。
【請求項８】
前記仮想化コントローラはＱＥＭＵである、請求項３乃至７のいずれか一項に記載の装置。
【請求項９】
前記タスクキューはＶＲＩＮＧテーブル又はVirtqueueの少なくとも１つを含む、請求項５に記載の装置。
【請求項１０】
仮想マシンの入出力（Ｉ／Ｏ）インターフェースを操作する方法であって、
一組のホスト空間仮想アドレスを前記メモリデバイスの第１の部分に関連する第１の組の物理アドレスへマッピングする第１のマッピングテーブルを取得することと；
前記メモリデバイスの第２の部分に関連する第２組の物理アドレスを前記一組のホスト空間仮想アドレスへマッピングする第２のマッピングテーブルを取得することであって、前記メモリデバイスの前記第２の部分は仮想マシンによりアクセス可能である、取得することと；
前記第２の組の物理アドレスを前記第１の組の物理アドレスへマッピングする第３のマッピングテーブルを生成することと；
前記第３のマッピングテーブルを前記仮想マシンで動作するデバイスドライバへ提供することと、を含む方法。
【請求項１１】
メモリデバイスの前記第１の部分をＩ／Ｏインターフェースの配置空間へマッピングすることをさらに含み、
前記第３のマッピングテーブルは前記デバイスドライバが前記Ｉ／Ｏインターフェースの前記配置空間へアクセスできるようにする、請求項１０に記載の方法。
【請求項１２】
前記一組のホスト空間仮想アドレスの前記第１の組の物理アドレスへの前記マッピングは仮想化コントローラにより行われ；
前記Ｉ／Ｏインターフェースの前記配置空間への前記メモリデバイスの前記第１の部分の前記マッピングは前記仮想化コントローラからインディケーションを受信した後にホストドライバにより行われる、請求項１１に記載の方法。
【請求項１３】
一組のゲスト空間仮想アドレスを前記第２の組の物理アドレスへマッピングすることと；
前記一組のゲスト空間仮想アドレスを前記第１の組の物理アドレスへさらにマッピングするために前記第３のマッピングテーブルを更新することと；
前記更新された第３のマッピングテーブルを前記デバイスドライバへ提供することとをさらに含み、
前記更新された第３のマッピングテーブルは、前記一組のゲスト空間仮想アドレスを使用して１つ又は複数のメモリ操作を行うことにより、前記デバイスドライバが前記Ｉ／Ｏインターフェースの前記配置空間へアクセスできるようにする、請求項１１又は１２に記載の方法。
【請求項１４】
前記配置空間はタスクキューを格納し、前記方法はさらに、
前記一組のゲスト空間仮想アドレスの第１のゲスト空間仮想アドレスにおける第２のハードウェアインターフェースへ送信されるべき第１のデータを前記デバイスドライバにより格納することと；
前記タスクキューにおける前記第１のゲスト空間仮想アドレスを前記デバイスドライバにより格納することと；
前記第１のゲスト空間仮想アドレス及び前記更新された第３のマッピングテーブルを使用して第１のハードウェアインターフェースに前記第１のデータを取り出させるために、前記デバイスドライバにより、前記更新された第３のマッピングテーブルに基づき、通知を前記第１のハードウェアインターフェースの前記配置空間内に格納することとを含む、請求項１３に記載の方法。
【請求項１５】
前記配置空間はタスクキューを格納し、前記方法はさらに、
第２のデータが第２のハードウェアインターフェースから受信されるという通知を第１のハードウェアインターフェースから前記デバイスドライバにより受信することと；
前記通知の受信に応答して、前記タスクキューから前記第２のデータに関連する第２のゲスト空間仮想アドレスを前記デバイスドライバにより取得することと；
前記第２のゲスト空間仮想アドレス及び前記第３のマッピングテーブルを使用して前記第２のデータを前記デバイスドライバにより取り出すこととを含む、請求項１３に記載の方法。
【請求項１６】
前記デバイスドライバはVirtI/Oフロントエンドドライバである、請求項１０乃至１５のいずれか一項に記載の方法。
【請求項１７】
命令を格納する非一時的コンピュータ可読媒体であって、前記命令は、仮想マシンの入出力（Ｉ／Ｏ）インターフェースを操作する方法を行うために、装置の１つ又は複数のプロセッサにより実行可能であり、前記方法は、
一組のホスト空間仮想アドレスを前記メモリデバイスの第１の部分に関連する第１の組の物理アドレスへマッピングする第１のマッピングテーブルを取得することと；
前記メモリデバイスの第２の部分に関連する第２の組の物理アドレスを前記一組のホスト空間仮想アドレスへマッピングする第２のマッピングテーブルを取得することであって、前記メモリデバイスの前記第２の部分は仮想マシンによりアクセス可能である、取得することと；
前記第２の組の物理アドレスを前記第１の組の物理アドレスへマッピングする第３のマッピングテーブルを生成することと；
前記第３のマッピングテーブルを前記仮想マシン内で動作するデバイスドライバへ提供することと、を含む、非一時的コンピュータ可読媒体。
【請求項１８】
前記方法はさらに、メモリデバイスの前記第１の部分をＩ／Ｏインターフェースの配置空間へマッピングすることを含み、
前記第３のマッピングテーブルは、前記デバイスドライバが前記Ｉ／Ｏインターフェースの前記配置空間へアクセスできるようにする、請求項１７に記載の非一時的コンピュータ可読媒体。
【請求項１９】
前記一組のホスト空間仮想アドレスの前記第１の組の物理アドレスへの前記マッピングは仮想化コントローラにより行われ；
前記Ｉ／Ｏインターフェースの前記配置空間への前記メモリデバイスの前記第１の部分の前記マッピングは、前記仮想化コントローラからインディケーションを受信した後にホストドライバにより行われる、請求項１８に記載の非一時的コンピュータ可読媒体。
【請求項２０】
一組の命令をさらに含み、前記一組の命令は、前記装置の前記１つ又は複数のプロセッサにより、前記装置にさらに：
一組のゲスト空間仮想アドレスを前記第２の組の物理アドレスへマッピングすることと；
前記一組のゲスト空間仮想アドレスを前記第１の組の物理アドレスへさらにマッピングするために前記第３のマッピングテーブルを更新することと；
前記更新された第３のマッピングテーブルを前記デバイスドライバへ提供することと
を行わせるように、実行可能であり、
前記更新された第３のマッピングテーブルは、前記一組のゲスト空間仮想アドレスを使用して１つ又は複数のメモリ操作を行うことにより、前記デバイスドライバが前記Ｉ／Ｏインターフェースの前記配置空間へアクセスできるようにする、請求項１８又は１９に記載の非一時的コンピュータ可読媒体。
【請求項２１】
前記配置空間はタスクキューを格納し、前記方法はさらに、
前記一組のゲスト空間仮想アドレスの第１のゲスト空間仮想アドレスにおける第２のハードウェアインターフェースへ送信されるべき第１のデータを前記デバイスドライバにより格納することと；
前記タスクキューにおける前記第１のゲスト空間仮想アドレスを前記デバイスドライバにより格納することと；
前記第１のゲスト空間仮想アドレス及び前記更新された第３のマッピングテーブルを使用して第１のハードウェアインターフェースに前記第１のデータを取り出させるために、前記デバイスドライバにより、前記更新された第３のマッピングテーブルに基づき、通知を前記第１のハードウェアインターフェースの前記配置空間内に格納することとを含む、請求項２０に記載の非一時的コンピュータ可読媒体。
【請求項２２】
前記配置空間はタスクキューを格納し、前記方法はさらに、
第２のデータが第２のハードウェアインターフェースから受信されるという通知を第１のハードウェアインターフェースから前記デバイスドライバにより受信することと；
前記通知の受信に応答して、前記タスクキューから前記第２のデータに関連する第２のゲスト空間仮想アドレスを前記デバイスドライバにより取得することと；
前記第２のゲスト空間仮想アドレス及び前記第３のマッピングテーブルを使用して前記第２のデータを前記デバイスドライバにより取り出すこととを含む、請求項２０に記載の非一時的コンピュータ可読媒体。
【請求項２３】
前記デバイスドライバはVirtI/Oフロントエンドドライバである、請求項１７乃至２２のいずれか一項に記載の非一時的コンピュータ可読媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３４
【補正方法】変更
【補正の内容】
【００３４】
[039]  バックエンドモジュール２７０は、前述のデータパケット送信又は受信タスクに対処するために、ハードウェアレジスタ２５０、タスクキュー２８０、Ｉ／Ｏインターフェースコア論理２９０、及びネットワークインターフェースコア論理２９５とインターフェースし得る。データパケット送信タスクを進めるために、デバイスドライバは、新しいデータパケット送信タスクをタスクキューに挿入することにより、タスクキュー２８０を更新し得る。タスクはまた、送信されるデータが格納される一組のゲスト空間仮想アドレスに関連付けられる。上に論述したように、ゲスト空間仮想アドレスは、Ｉ／Ｏ空間１５４ｂへマッピングされ得、仮想マシン１２０で動作するデバイスドライバは、Ｉ／Ｏ空間１５４ｂへマッピングされるゲスト空間仮想アドレスを使用してメモリ書き込み操作を行うことにより、データをＩ／Ｏ空間１５４ｂ内に直接格納し得る。データをＩ／Ｏ空間１５４ｂ内に格納した後、デバイスドライバはまた、データパケット送信タスクについてバックエンドモジュールに通知するために、ハードウェアレジスタ２５０（Ｉ／Ｏ空間１５４ｂを介し）へアクセスし、通知レジスタに書き込み得る。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
[043]  初期開始後、工程３０２において、仮想化コントローラ２０６は、ハイパーバイザ１２４によりアクセス可能なメモリデバイス１５０（例えばホスト空間１５４）の一部分を割り振り、このメモリデバイス１５０の割り振られた部分をＩ／Ｏインターフェース１１０ａのハードウェアレジスタ及びメモリデバイスとへマッピングするように、ホストドライバ２０２に指示する。仮想化コントローラ２０６から指示を受信した後、工程３０４において、ホストドライバ２０２は、Ｉ／Ｏインターフェース１１０ａへマッピングされるＩ／Ｏ空間（例えばＩ／Ｏ空間１５４ｂ）を割り振り、一組のＩ／Ｏ空間物理アドレスを戻す。Ｉ／Ｏインターフェース１１０ａのハードウェアレジスタ及びメモリデバイスへマッピングされる一組の物理アドレスを受信した後、工程３０６において、仮想化コントローラ２０６は、仮想化コントローラによりアクセス可能な一組の仮想アドレスを生成し、この一組の仮想アドレスを、ホストドライバ２０２から受信される一組の物理アドレスへマッピングする。次に、工程３０８において、仮想化コントローラ２０６は、一組のホスト空間仮想アドレスを仮想マシン生成モジュール２０４へ提供し、仮想マシンを生成するように仮想マシン生成モジュール２０４に指示する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３９
【補正方法】変更
【補正の内容】
【００３９】
[044]  工程３１０において、仮想マシン生成モジュール２０４は、メモリデバイス１５０からゲスト空間（例えばゲスト空間１５２ａ）を割り振り、一組のゲスト空間物理メモリアドレス（ゲスト空間１５２ａに関連する）と一組のホスト空間仮想アドレス（仮想化コントローラ２０６から受信され、Ｉ／Ｏ空間１５４ｂへマッピングされる）との間のマッピングを生成する。工程３１２において、仮想化コントローラ２０６から受信される一組の仮想アドレスとＩ／Ｏ空間物理アドレスとの間のマッピングに基づき、仮想マシン生成モジュール２０４はまた、一組のゲスト空間物理メモリアドレスとＩ／Ｏ空間物理アドレスとの間のマッピングを生成する。工程３１４において、仮想マシン生成モジュール２０４は、Ｉ／Ｏ空間物理アドレスへ既にマッピングされた一組のゲスト空間物理アドレスへマッピングされる一組のゲスト空間仮想アドレスを生成し、一組のゲスト空間仮想アドレスとＩ／Ｏ空間物理アドレスとの間の直接マッピングを含む拡張ページテーブル（ＥＰＴ）を生成又は更新し得る。