JP2020524840A5 - - Google Patents

Download PDF

Info

Publication number
JP2020524840A5
JP2020524840A5 JP2019566337A JP2019566337A JP2020524840A5 JP 2020524840 A5 JP2020524840 A5 JP 2020524840A5 JP 2019566337 A JP2019566337 A JP 2019566337A JP 2019566337 A JP2019566337 A JP 2019566337A JP 2020524840 A5 JP2020524840 A5 JP 2020524840A5
Authority
JP
Japan
Prior art keywords
space
mapping table
device driver
interface
guest
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.)
Granted
Application number
JP2019566337A
Other languages
English (en)
Other versions
JP7220163B2 (ja
JP2020524840A (ja
Filing date
Publication date
Priority claimed from US15/626,044 external-priority patent/US10733112B2/en
Application filed filed Critical
Publication of JP2020524840A publication Critical patent/JP2020524840A/ja
Publication of JP2020524840A5 publication Critical patent/JP2020524840A5/ja
Application granted granted Critical
Publication of JP7220163B2 publication Critical patent/JP7220163B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Description

[039] バックエンドモジュール270は、前述のデータパケット送信又は受信タスクに対処するために、ハードウェアレジスタ250、タスクキュー280、I/Oインターフェースコア論理290、及びネットワークインターフェースコア論理295とインターフェースし得る。データパケット送信タスクを進めるために、デバイスドライバは、新しいデータパケット送信タスクをタスクキューに挿入することにより、タスクキュー280を更新し得る。タスクはまた、送信されるデータが格納される一組のゲスト空間仮想アドレスに関連付けられる。上に論述したように、ゲスト空間仮想アドレスは、I/O空間154bへマッピングされ得、仮想マシン120で動作するデバイスドライバは、I/O空間154bへマッピングされるゲスト空間仮想アドレスを使用してメモリ書き込み操作を行うことにより、データをI/O空間154b内に直接格納し得る。データをI/O空間154b内に格納した後、デバイスドライバはまた、データパケット送信タスクについてバックエンドモジュールに通知するために、ハードウェアレジスタ250(I/O空間154bを介し)へアクセスし、通知レジスタに書き込み得る。
[043] 初期開始後、工程302において、仮想化コントローラ206は、ハイパーバイザ124によりアクセス可能なメモリデバイス150(例えばホスト空間154)の一部分を割り振り、このメモリデバイス150の割り振られた部分をI/Oインターフェース110aのハードウェアレジスタ及びメモリデバイスとへマッピングするように、ホストドライバ202に指示する。仮想化コントローラ206から指示を受信した後、工程304において、ホストドライバ202は、I/Oインターフェース110aへマッピングされるI/O空間(例えばI/O空間154b)を割り振り、一組のI/O空間物理アドレスを戻す。I/Oインターフェース110aのハードウェアレジスタ及びメモリデバイスへマッピングされる一組の物理アドレスを受信した後、工程306において、仮想化コントローラ206は、仮想化コントローラによりアクセス可能な一組の仮想アドレスを生成し、この一組の仮想アドレスを、ホストドライバ202から受信される一組の物理アドレスへマッピングする。次に、工程308において、仮想化コントローラ206は、一組のホスト空間仮想アドレスを仮想マシン生成モジュール204へ提供し、仮想マシンを生成するように仮想マシン生成モジュール204に指示する。
[044] 工程310において、仮想マシン生成モジュール204は、メモリデバイス150からゲスト空間(例えばゲスト空間152a)を割り振り、一組のゲスト空間物理メモリアドレス(ゲスト空間152aに関連する)と一組のホスト空間仮想アドレス(仮想化コントローラ206から受信され、I/O空間154bへマッピングされる)との間のマッピングを生成する。工程312において、仮想化コントローラ206から受信される一組の仮想アドレスとI/O空間物理アドレスとの間のマッピングに基づき、仮想マシン生成モジュール204はまた、一組のゲスト空間物理メモリアドレスとI/O空間物理アドレスとの間のマッピングを生成する。工程314において、仮想マシン生成モジュール204は、I/O空間物理アドレスへ既にマッピングされた一組のゲスト空間物理アドレスへマッピングされる一組のゲスト空間仮想アドレスを生成し、一組のゲスト空間仮想アドレスとI/O空間物理アドレスとの間の直接マッピングを含む拡張ページテーブル(EPT)を生成又は更新し得る。

Claims (23)

  1. 仮想マシンの入出力(I/O)インターフェースを操作する装置であって、
    一組の命令を格納する1つ又は複数のメモリデバイスと;
    1つ又は複数のハードウェアプロセッサとを含み、前記1つ又は複数のハードウェアプロセッサは、前記一組の命令を実行して、前記装置に、
    一組のホスト空間仮想アドレスを前記1つ又は複数のメモリデバイスの第1の部分に関連する第1の組の物理アドレスへマッピングする第1のマッピングテーブルを取得することと;
    前記1つ又は複数のメモリデバイスの第2の部分に関連する第2の組の物理アドレスを前記一組のホスト空間仮想アドレスへマッピングする第2のマッピングテーブルを取得することであって、前記1つ又は複数のメモリデバイスの前記第2の部分は仮想マシンによりアクセス可能である、ことと;
    前記第2の組の物理アドレスを前記第1の組の物理アドレスへマッピングする第3のマッピングテーブルを生成することと;
    前記第3のマッピングテーブルを前記仮想マシンで動作するデバイスドライバへ提供することと
    行わせるように構成される、装置。
  2. 前記1つ又は複数のハードウェアプロセッサはさらに、前記1つ又は複数のメモリデバイスの前記第1の部分をI/Oインターフェースの配置空間へマッピングするように構成され、
    前記第3のマッピングテーブルは前記デバイスドライバが前記I/Oインターフェースの前記配置空間へアクセスできるようにする、請求項1に記載の装置。
  3. 前記1つ又は複数のハードウェアプロセッサはさらに、前記一組の命令を実行して、仮想化コントローラ及びホストドライバを提供するように構成され;
    前記一組のホスト空間仮想アドレスの前記第1の組の物理アドレスへの前記マッピングは前記仮想化コントローラにより行われ;
    前記I/Oインターフェースの前記配置空間への前記1つ又は複数のメモリデバイスの前記第1の部分の前記マッピングは、前記仮想化コントローラからインディケーションを受信した後に前記ホストドライバにより行われる、請求項2に記載の装置。
  4. 前記1つ又は複数のハードウェアプロセッサはさらに、前記一組の命令を実行して、前記装置に、
    一組のゲスト空間仮想アドレスを前記第2の組の物理アドレスへマッピングすることと;
    前記一組のゲスト空間仮想アドレスを前記第1の組の物理アドレスへさらにマッピングするために前記第3のマッピングテーブルを更新することと;
    前記更新された第3のマッピングテーブルを前記デバイスドライバへ提供することと
    行わせるように構成され、
    前記更新された第3のマッピングテーブルは、前記一組のゲスト空間仮想アドレスを使用して1つ又は複数のメモリ操作を行うことにより、前記デバイスドライバが前記I/Oインターフェースの前記配置空間へアクセスできるようにする、請求項2又は3に記載の装置。
  5. 前記配置空間はタスクキューを格納し;
    前記1つ又は複数のハードウェアプロセッサはさらに、前記一組の命令を実行して、前記装置に、
    前記一組のゲスト空間仮想アドレスの第1のゲスト空間仮想アドレスにおける第2のハードウェアインターフェースへ送信されるべき第1のデータを前記デバイスドライバにより格納することと;
    前記タスクキューにおける前記第1のゲスト空間仮想アドレスを前記デバイスドライバにより格納することと;
    前記第1のゲスト空間仮想アドレス及び前記更新された第3のマッピングテーブルを使用して第1のハードウェアインターフェースに前記第1のデータを取り出させるために、前記デバイスドライバにより、前記更新された第3のマッピングテーブルに基づき、通知を前記第1のハードウェアインターフェースの前記配置空間内に格納することと
    行わせるように構成される、請求項4に記載の装置。
  6. 前記配置空間はタスクキューを格納し;
    前記1つ又は複数のハードウェアプロセッサはさらに、前記一組の命令を実行して、前記装置に、
    第2のデータが第2のハードウェアインターフェースから受信されるという通知を第1のハードウェアインターフェースから前記デバイスドライバにより受信することと;
    前記通知の受信に応答して、前記タスクキューから前記第2のデータに関連する第2のゲスト空間仮想アドレスを前記デバイスドライバにより取得することと;
    前記第2のゲスト空間仮想アドレス及び前記第3のマッピングテーブルを使用して前記第2のデータを前記デバイスドライバにより取り出すことと
    行わせるように構成される、請求項4に記載の装置。
  7. 前記デバイスドライバはVirtI/Oフロントエンドドライバである、請求項1乃至6のいずれか一項に記載の装置。
  8. 前記仮想化コントローラはQEMUである、請求項3乃至7のいずれか一項に記載の装置。
  9. 前記タスクキューはVRINGテーブル又はVirtqueueの少なくとも1つを含む、請求項5に記載の装置。
  10. 仮想マシンの入出力(I/O)インターフェースを操作する方法であって、
    一組のホスト空間仮想アドレスを前記メモリデバイスの第1の部分に関連する第1の組の物理アドレスへマッピングする第1のマッピングテーブルを取得することと;
    前記メモリデバイスの第2の部分に関連する第2組の物理アドレスを前記一組のホスト空間仮想アドレスへマッピングする第2のマッピングテーブルを取得することであって、前記メモリデバイスの前記第2の部分は仮想マシンによりアクセス可能である、取得することと;
    前記第2の組の物理アドレスを前記第1の組の物理アドレスへマッピングする第3のマッピングテーブルを生成することと;
    前記第3のマッピングテーブルを前記仮想マシンで動作するデバイスドライバへ提供することと、を含む方法。
  11. メモリデバイスの前記第1の部分をI/Oインターフェースの配置空間へマッピングすることをさらに含み、
    前記第3のマッピングテーブルは前記デバイスドライバが前記I/Oインターフェースの前記配置空間へアクセスできるようにする、請求項10に記載の方法。
  12. 前記一組のホスト空間仮想アドレスの前記第1の組の物理アドレスへの前記マッピングは仮想化コントローラにより行われ;
    前記I/Oインターフェースの前記配置空間への前記メモリデバイスの前記第1の部分の前記マッピングは前記仮想化コントローラからインディケーションを受信した後にホストドライバにより行われる、請求項11に記載の方法。
  13. 一組のゲスト空間仮想アドレスを前記第2の組の物理アドレスへマッピングすることと;
    前記一組のゲスト空間仮想アドレスを前記第1の組の物理アドレスへさらにマッピングするために前記第3のマッピングテーブルを更新することと;
    前記更新された第3のマッピングテーブルを前記デバイスドライバへ提供することとをさらに含み、
    前記更新された第3のマッピングテーブルは、前記一組のゲスト空間仮想アドレスを使用して1つ又は複数のメモリ操作を行うことにより、前記デバイスドライバが前記I/Oインターフェースの前記配置空間へアクセスできるようにする、請求項11又は12に記載の方法。
  14. 前記配置空間はタスクキューを格納し、前記方法はさらに、
    前記一組のゲスト空間仮想アドレスの第1のゲスト空間仮想アドレスにおける第2のハードウェアインターフェースへ送信されるべき第1のデータを前記デバイスドライバにより格納することと;
    前記タスクキューにおける前記第1のゲスト空間仮想アドレスを前記デバイスドライバにより格納することと;
    前記第1のゲスト空間仮想アドレス及び前記更新された第3のマッピングテーブルを使用して第1のハードウェアインターフェースに前記第1のデータを取り出させるために、前記デバイスドライバにより、前記更新された第3のマッピングテーブルに基づき、通知を前記第1のハードウェアインターフェースの前記配置空間内に格納することとを含む、請求項13に記載の方法。
  15. 前記配置空間はタスクキューを格納し、前記方法はさらに、
    第2のデータが第2のハードウェアインターフェースから受信されるという通知を第1のハードウェアインターフェースから前記デバイスドライバにより受信することと;
    前記通知の受信に応答して、前記タスクキューから前記第2のデータに関連する第2のゲスト空間仮想アドレスを前記デバイスドライバにより取得することと;
    前記第2のゲスト空間仮想アドレス及び前記第3のマッピングテーブルを使用して前記第2のデータを前記デバイスドライバにより取り出すこととを含む、請求項13に記載の方法。
  16. 前記デバイスドライバはVirtI/Oフロントエンドドライバである、請求項10乃至15のいずれか一項に記載の方法。
  17. 命令を格納する非一時的コンピュータ可読媒体であって、前記命令は、仮想マシンの入出力(I/O)インターフェースを操作する方法を行うために、装置の1つ又は複数のプロセッサにより実行可能であり、前記方法は、
    一組のホスト空間仮想アドレスを前記メモリデバイスの第1の部分に関連する第1の組の物理アドレスへマッピングする第1のマッピングテーブルを取得することと;
    前記メモリデバイスの第2の部分に関連する第2の組の物理アドレスを前記一組のホスト空間仮想アドレスへマッピングする第2のマッピングテーブルを取得することであって、前記メモリデバイスの前記第2の部分は仮想マシンによりアクセス可能である、取得することと;
    前記第2の組の物理アドレスを前記第1の組の物理アドレスへマッピングする第3のマッピングテーブルを生成することと;
    前記第3のマッピングテーブルを前記仮想マシン内で動作するデバイスドライバへ提供することと、を含む、非一時的コンピュータ可読媒体。
  18. 前記方法はさらに、メモリデバイスの前記第1の部分をI/Oインターフェースの配置空間へマッピングすることを含み、
    前記第3のマッピングテーブルは、前記デバイスドライバが前記I/Oインターフェースの前記配置空間へアクセスできるようにする、請求項17に記載の非一時的コンピュータ可読媒体。
  19. 前記一組のホスト空間仮想アドレスの前記第1の組の物理アドレスへの前記マッピングは仮想化コントローラにより行われ;
    前記I/Oインターフェースの前記配置空間への前記メモリデバイスの前記第1の部分の前記マッピングは、前記仮想化コントローラからインディケーションを受信した後にホストドライバにより行われる、請求項18に記載の非一時的コンピュータ可読媒体。
  20. 一組の命令をさらに含み、前記一組の命令は、前記装置の前記1つ又は複数のプロセッサにより、前記装置にさらに:
    一組のゲスト空間仮想アドレスを前記第2の組の物理アドレスへマッピングすることと;
    前記一組のゲスト空間仮想アドレスを前記第1の組の物理アドレスへさらにマッピングするために前記第3のマッピングテーブルを更新することと;
    前記更新された第3のマッピングテーブルを前記デバイスドライバへ提供することと
    を行わせるように、実行可能であり、
    前記更新された第3のマッピングテーブルは、前記一組のゲスト空間仮想アドレスを使用して1つ又は複数のメモリ操作を行うことにより、前記デバイスドライバが前記I/Oインターフェースの前記配置空間へアクセスできるようにする、請求項18又は19に記載の非一時的コンピュータ可読媒体。
  21. 前記配置空間はタスクキューを格納し、前記方法はさらに、
    前記一組のゲスト空間仮想アドレスの第1のゲスト空間仮想アドレスにおける第2のハードウェアインターフェースへ送信されるべき第1のデータを前記デバイスドライバにより格納することと;
    前記タスクキューにおける前記第1のゲスト空間仮想アドレスを前記デバイスドライバにより格納することと;
    前記第1のゲスト空間仮想アドレス及び前記更新された第3のマッピングテーブルを使用して第1のハードウェアインターフェースに前記第1のデータを取り出させるために、前記デバイスドライバにより、前記更新された第3のマッピングテーブルに基づき、通知を前記第1のハードウェアインターフェースの前記配置空間内に格納することとを含む、請求項20に記載の非一時的コンピュータ可読媒体。
  22. 前記配置空間はタスクキューを格納し、前記方法はさらに、
    第2のデータが第2のハードウェアインターフェースから受信されるという通知を第1のハードウェアインターフェースから前記デバイスドライバにより受信することと;
    前記通知の受信に応答して、前記タスクキューから前記第2のデータに関連する第2のゲスト空間仮想アドレスを前記デバイスドライバにより取得することと;
    前記第2のゲスト空間仮想アドレス及び前記第3のマッピングテーブルを使用して前記第2のデータを前記デバイスドライバにより取り出すこととを含む、請求項20に記載の非一時的コンピュータ可読媒体。
  23. 前記デバイスドライバはVirtI/Oフロントエンドドライバである、請求項17乃至22のいずれか一項に記載の非一時的コンピュータ可読媒体。
JP2019566337A 2017-06-16 2018-06-15 ハードウェア仮想化のための方法及び装置 Active JP7220163B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/626,044 2017-06-16
US15/626,044 US10733112B2 (en) 2017-06-16 2017-06-16 Method and apparatus for hardware virtualization
PCT/US2018/037863 WO2018232310A1 (en) 2017-06-16 2018-06-15 Method and apparatus for hardware virtualization

Publications (3)

Publication Number Publication Date
JP2020524840A JP2020524840A (ja) 2020-08-20
JP2020524840A5 true JP2020524840A5 (ja) 2021-07-26
JP7220163B2 JP7220163B2 (ja) 2023-02-09

Family

ID=64657418

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019566337A Active JP7220163B2 (ja) 2017-06-16 2018-06-15 ハードウェア仮想化のための方法及び装置

Country Status (4)

Country Link
US (2) US10733112B2 (ja)
JP (1) JP7220163B2 (ja)
CN (1) CN110770708B (ja)
WO (1) WO2018232310A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11829454B2 (en) * 2018-03-09 2023-11-28 Patrick Robert Koren Method and apparatus for preventing and investigating software piracy
JP7000088B2 (ja) * 2017-09-15 2022-01-19 株式会社東芝 通知制御装置、通知制御方法及びプログラム
US11159627B1 (en) 2017-10-20 2021-10-26 Parallels International Gmbh Seamless remote network redirection
US10581636B1 (en) * 2017-10-20 2020-03-03 Parallels International Gmbh Network tunneling for virtual machines across a wide-area network
TWI677788B (zh) * 2018-04-27 2019-11-21 慧榮科技股份有限公司 資料儲存系統以及非揮發式記憶體操作資訊的校正方法
CN109240802B (zh) * 2018-09-21 2022-02-18 北京百度网讯科技有限公司 请求处理方法和装置
CN110083387B (zh) 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 使用轮询机制的处理系统及其访存方法
CN110032453B (zh) 2019-04-19 2022-05-03 上海兆芯集成电路有限公司 用以任务调度与分配的处理系统及其加速方法
CN110032452B (zh) * 2019-04-19 2021-08-24 上海兆芯集成电路有限公司 处理系统与异构处理器加速方法
CN110058931B (zh) 2019-04-19 2022-03-22 上海兆芯集成电路有限公司 用以任务调度的处理系统及其加速方法
CN110046053B (zh) 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 用以分配任务的处理系统及其访存方法
KR20220003757A (ko) * 2020-07-02 2022-01-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11630782B2 (en) 2021-09-14 2023-04-18 Red Hat, Inc. Hardware offloading for an emulated IOMMU device

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298390B1 (en) * 1995-11-22 2001-10-02 Sun Microsystems, Inc. Method and apparatus for extending traditional operating systems file systems
JP2001051900A (ja) * 1999-08-17 2001-02-23 Hitachi Ltd 仮想計算機方式の情報処理装置及びプロセッサ
US9058292B2 (en) 2004-12-29 2015-06-16 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7434025B2 (en) * 2006-07-18 2008-10-07 Microsoft Corporation Leverage guest logical to physical translation for host-side memory access
CN101751345B (zh) * 2008-12-10 2012-04-11 国际商业机器公司 在主机中运行客户机的程序的模拟器和模拟方法
US8239655B2 (en) * 2010-01-18 2012-08-07 Vmware, Inc. Virtual target addressing during direct data access via VF of IO storage adapter
CN103597451B (zh) 2011-03-31 2017-06-13 英特尔公司 用于高可用性的存储器镜像和冗余生成
JP5847013B2 (ja) * 2012-05-10 2016-01-20 株式会社日立製作所 計算機及び計算機における入出力制御方法
US9288163B2 (en) * 2013-03-15 2016-03-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Low-latency packet receive method for networking devices
TWI497417B (zh) * 2014-07-22 2015-08-21 Nat Univ Tsing Hua 虛擬機器之資料存取方法、資料存取系統與主控端模組
US9916095B2 (en) * 2015-03-27 2018-03-13 Kove Ip, Llc Fork-safe memory allocation from memory-mapped files with anonymous memory behavior
US9317446B2 (en) * 2014-09-23 2016-04-19 Cisco Technology, Inc. Multi-level paging and address translation in a network environment
WO2016056140A1 (ja) * 2014-10-10 2016-04-14 株式会社日立製作所 インターフェースデバイス、及びインターフェースデバイスを含む計算機システム
US10019373B2 (en) * 2014-12-19 2018-07-10 Mediatek Inc. Memory management method for supporting shared virtual memories with hybrid page table utilization and related machine readable medium
US9619401B2 (en) 2015-02-20 2017-04-11 Wisconsin Alumni Research Foundation Efficient memory management system for computers supporting virtual machines
JP2016197360A (ja) * 2015-04-06 2016-11-24 富士通株式会社 情報処理装置、情報処理装置の制御プログラム及び情報処理装置の制御方法
US10191864B1 (en) * 2015-11-12 2019-01-29 Amazon Technologies, Inc. Standardized interface for storage using an input/output (I/O) adapter device
JP2017108231A (ja) * 2015-12-08 2017-06-15 富士通株式会社 通信制御プログラム、通信制御方法及び情報処理装置
US11150928B2 (en) * 2016-06-08 2021-10-19 Red Hat Israel, Ltd. Hypervisor translation bypass

Similar Documents

Publication Publication Date Title
JP2020524840A5 (ja)
US10061724B2 (en) Latency reduction for direct memory access operations involving address translation
JP5680179B2 (ja) 仮想化処理システムにおけるアドレスマッピング
US10310974B2 (en) Systems and methods for input/output computing resource control
US20160294983A1 (en) Memory sharing using rdma
JP5737050B2 (ja) 情報処理装置、割込み制御方法および割込み制御プログラム
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
EP3314366A1 (en) Systems and methods for isolating input/output computing resources
US20160239333A1 (en) Apparatus and method for scheduling graphics processing unit workloads from virtual machines
JP2020524840A (ja) ハードウェア仮想化のための方法及び装置
US10162657B2 (en) Device and method for address translation setting in nested virtualization environment
US11194735B2 (en) Technologies for flexible virtual function queue assignment
WO2016119468A1 (zh) 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备
JP2016513846A (ja) ネットワークを介したメモリー共有
JP2018503903A (ja) データ処理方法、メモリ管理ユニット、およびメモリ制御デバイス
US10310759B2 (en) Use efficiency of platform memory resources through firmware managed I/O translation table paging
US11016817B2 (en) Multi root I/O virtualization system
JP2014235501A5 (ja)
WO2016019566A1 (zh) 内存管理方法、装置和系统、以及片上网络
JP2016513835A5 (ja)
US10164911B2 (en) Shim layer used with a virtual machine virtual NIC and a hardware platform physical NIC
JP2018501559A5 (ja)
US10289479B2 (en) Hardware accelerator address translation fault resolution
US9094351B2 (en) Implicit and dynamic receive queue assignment in virtualized systems
CN105612505B (zh) Cpu调度的方法和装置