[go: up one dir, main page]

JP2011146044A - ホストusbアダプタを仮想化するための方法、装置、およびコンピュータ・プログラム(ホストusbアダプタの仮想化) - Google Patents

ホストusbアダプタを仮想化するための方法、装置、およびコンピュータ・プログラム(ホストusbアダプタの仮想化) Download PDF

Info

Publication number
JP2011146044A
JP2011146044A JP2011001648A JP2011001648A JP2011146044A JP 2011146044 A JP2011146044 A JP 2011146044A JP 2011001648 A JP2011001648 A JP 2011001648A JP 2011001648 A JP2011001648 A JP 2011001648A JP 2011146044 A JP2011146044 A JP 2011146044A
Authority
JP
Japan
Prior art keywords
usb
hypervisor
usb device
logical
adapter
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
JP2011001648A
Other languages
English (en)
Other versions
JP6004608B2 (ja
Inventor
Timothy Jerry Schimke
ティモシー・ジェリー・シムケ
Bauman Ellen Marie
エレン・マリー・ボーマン
Anton Sendelbach Lee
リー・アントン・センデルバック
Gene Kiel Harvey
ハーヴィー・ジーン・キール
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2011146044A publication Critical patent/JP2011146044A/ja
Application granted granted Critical
Publication of JP6004608B2 publication Critical patent/JP6004608B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0042Universal serial bus [USB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】 ハイパーバイザによって維持される仮想化環境において、ホストUSBアダプタを仮想化する。
【解決手段】 ハイパーバイザは、1つまたは複数の論理区画を管理し、ここで仮想化することは、ハイパーバイザによって論理区画から論理USBアダプタを介してUSB入力/出力(「I/O」)要求を受信することであって、この論理USBアダプタはホストUSBアダプタに結合されたUSBデバイスに関連付けられる、受信することと、ハイパーバイザによって論理USBアダプタに関連付けられたキュー・ペアのキュー内に作業キュー要素(「WQE」)を配置することと、WQEに基づき、インターフェース・デバイスによって、ダイレクト・メモリ・アクセス(「DMA」)を用いて、USBデバイスで生じたUSBデータをホストUSBアダプタから論理USBアダプタ用の専用メモリ領域へと取り出すことを含む、論理区画とUSBデバイスとの間のUSBデータ通信を管理することと、を含む。
【選択図】 図1

Description

本発明の分野はデータ処理であるか、またはより具体的に言えば、ホスト・ユニバーサル・シリアル・バス(「USB」)アダプタを仮想化するための方法、装置、およびコンピュータ・プログラムである。
1948年のEDVACコンピュータ・システムの開発が、コンピュータ時代の始まりであるとしばしば言われる。その時から、コンピュータ・システムは非常に複雑なデバイスへと発達してきた。現在のコンピュータは、EDVACのような初期のシステムよりもさらに高度化している。コンピュータ・システムは、通常、ハードウェアおよびソフトウェアのコンポーネント、アプリケーション・プログラム、オペレーティング・システム、プロセッサ、バス、メモリ、入力/出力デバイスなどの、組み合わせを含む。半導体処理およびコンピュータ・アーキテクチャの進化によってコンピュータの性能がさらに向上するにつれて、より高いハードウェア性能を利用するためのより高度なコンピュータ・ソフトウェアが開発されてきた結果、現在のコンピュータ・システムは、わずか数年前に比べてもはるかに強力である。
現在の多くの周辺コンピュータ・コンポーネントは、データ通信のために、ユニバーサル・シリアル・バス仕様に従ってアダプタに結合される。USBアダプタは、本質的には2地点間通信であり、仮想化環境において区画間で容易に共有されない。現在のユーザは、USBデバイスに接続するために1区画あたり少なくとも1つの物理USBアダプタを必要とする。多くの区画を備えるかまたはデータ・センタ内にある大型システムの場合、この要件によって、多数の物理アダプタ、ならびにコスト、処理能力、コンピュータ・メモリの使用、および電力消費における、かなりの追加費用を要することにつながる。物理アダプタの数が増える結果として提示されるこれらのマイナス要因は、一部分はアダプタそのものに起因するが、関連付けられたPCI又はPCIeアダプタ・スロットを提供する必要があるエンクロージャにも起因する。
USBアダプタの仮想化により、USBデバイス、ハブ、アダプタ、およびエンクロージャにおける電力消費が引き下げられる。USBデバイスを仮想化するためのソフトウェア・ソリューションが存在する。これらのソリューションは単一の共有キューを使用し、ここではUSBフレームを単一の共有キューから多くの区画へとソートしなければならない。これは、CPUおよびメモリを多用する実装である。単一のキュー・ソリューションも性能が低い。
現在のUSBデバイスは、一般に、キーボード、マウス、スピーカ、およびフラッシュ・ドライブ・デバイスを含む。USBが成長を続け、より速い速度が可能になるにつれて、ますますUSBはテープ・ドライブ、取り外し可能ハード・ディスク・ドライブ、および光ドライブに使用されるようになっている。区分化されたコンピュータ・システムにおける、効率的、低コスト、低電力でない、USBの仮想化は重大な問題である。USB 2.0の10倍以上高速のUSB 3.0は、さらに広範囲にわたるデバイスによって利用されることになる。帯域幅の追加によって、同じリンク上で同時により多くのデバイスが使用できる。業界は、テープ・ドライブおよび取り外し可能ハード・ドライブを、好ましい接続機構としてのUSBに移行している。
現在、改良されたUSBの仮想化がますます求められている。
ハイパーバイザによって維持される仮想化環境において、ホスト・ユニバーサル・シリアル・バス(「USB」)アダプタを仮想化するための方法、装置、および製品が開示される。本発明の諸実施形態では、ハイパーバイザは1つまたは複数の論理区画を管理し、ホストUSBアダプタの仮想化は、ハイパーバイザによって論理区画から論理USBアダプタを介してUSB入力/出力(「I/O」)要求を受信することであって、この論理USBアダプタはホストUSBアダプタに結合されたUSBデバイスに関連付けられる、受信することと、ハイパーバイザによって論理USBアダプタに関連付けられたキュー・ペアのキュー内に作業キュー要素(「WQE」)を配置することと、WQEに基づき、インターフェース・デバイスによって、ダイレクト・メモリ・アクセス(「DMA」)を用いて、USBデバイスで生じたUSBデータをホストUSBアダプタから論理USBアダプタ用の専用メモリ領域へと取り出すことを含む、論理区画とUSBデバイスとの間のUSBデータ通信を管理することと、を含む。
本発明の前述および他の目的、特徴、および利点は、同様の参照番号が本発明の例示的諸実施形態の同様の部分を全体として表す添付の図面に示された、本発明の例示的諸実施形態についての以下のより具体的な説明から明らかになろう。
本発明の諸実施形態に従った、ホストUSBアダプタを仮想化するための例示的システムを示すネットワーク図である。 本発明の諸実施形態に従った、ホストUSBアダプタを仮想化するための例示的方法を示す流れ図である。 本発明の諸実施形態に従った、ホストUSBアダプタを仮想化するための他の例示的方法を示す流れ図である。 本発明の諸実施形態に従った、ホストUSBアダプタを仮想化するための他の例示的方法を示す流れ図である。 本発明の諸実施形態に従った、ホストUSBアダプタを仮想化するための他の例示的方法を示す流れ図である。
本発明の諸実施形態に従ってホストUSBアダプタを仮想化するための方法、装置、およびコンピュータ・プログラムについて、図1から始まる添付の図面を参照しながら説明する。図1は、本発明の諸実施形態に従った、ホストUSBアダプタを仮想化するための例示的システムを示すネットワーク図である。図1のシステムは、本発明の諸実施形態に従ってホストUSBアダプタを仮想化する際に役立つ例示的コンピュータ(152)を備える、自動化コンピューティング機構を含む。図1のコンピュータ(152)は、少なくとも1つのコンピュータ・プロセッサ(156)すなわち「CPU」、ならびに、高速メモリ・バス(166)およびバス・アダプタ(158)を介してプロセッサ(156)とコンピュータ(152)の他のコンポーネントとに接続された、ランダム・アクセス・メモリ(168)(「RAM」)を含む。
RAM(168)には、コンピュータ・プログラム命令、コンピュータ・ハードウェアなどの、任意の組み合わせを備えることが可能な、自動化コンピューティング機構である、ハイパーバイザ(130)が格納される。図1の例におけるハイパーバイザ(130)は、仮想化環境を維持する。ハイパーバイザは仮想マシン・モニタ(VMM)とも呼ばれ、複数のオペレーティング・システムが1つのホスト・コンピュータ上で同時に実行できるようにするために、ソフトウェアおよびハードウェアのプラットフォーム仮想化を実行する。ハイパーバイザはホストのハードウェア上で直接、ハードウェア・アクセスの制御およびゲスト・オペレーティング・システムの監視を実行する。ゲスト・オペレーティング・システムは、ハイパーバイザより上のレベルで実行する。ハイパーバイザによって提供されるプラットフォーム仮想化が、本明細書では仮想化環境と呼ばれる。仮想化環境とは、コンピューティング・プラットフォームの物理的特徴、すなわちコンピュータ・プロセッサ、コンピュータ・メモリ、I/Oアダプタなどが、オペレーティング・システムおよび他のソフトウェア・アプリケーションの観点から抽出される環境である。
図1の例では、ハイパーバイザ(130)は、2つの論理区画(106、118)を含む仮想化環境を維持する。本明細書で使用される用語としての論理区画とは、内部でオペレーティング・システムおよび他のアプリケーションが実行可能なハイパーバイザによって提供される、固有の仮想マシンのことである。各論理区画(106、118)は、アプリケーション(108、120)およびオペレーティング・システム(110、122)を含む。アプリケーション(108、120)は、ユーザ・レベルのデータ処理タスクを実行することができるコンピュータ・プログラム命令のモジュールである。こうしたアプリケーションの例には、当業者であれば思いつくであろう、ワード・プロセッシング・アプリケーション、スプレッドシート・アプリケーション、ウェブ・サーバ・アプリケーション、データベース管理アプリケーション、メディア・ライブラリ・アプリケーション、メディア再生アプリケーション、メディア変換アプリケーションなどが含まれる。本発明の諸実施形態に従ってホストUSBアダプタを仮想化するシステムにおいて有用なオペレーティング・システムには、当業者であれば思いつくであろう、UNIT(TM)、Linux(TM)、Microsoft XP(TM)、AIX(TM)、IBM社のi5/OS(TM)、およびその他が含まれる。
図1の例では、ハイパーバイザ(130)は、一般に、本発明の諸実施形態に従ったホストUSBアダプタ(202)を仮想化するためにも動作する。USBは、デバイスとホスト・コントローラとの間の通信を確立するための仕様である。USBは、マウス、キーボード、デジタル・カメラ、プリンタ、パーソナル・メディア・プレーヤ、フラッシュ・ドライブ、および外付けハード・ドライブなどの、コンピュータ周辺装置を接続することができる。こうしたデバイスの多くでは、USBは標準接続方法となってきている。USBはパーソナル・コンピュータ用に設計されたが、スマートフォン、携帯情報端末(PDA)、およびビデオ・ゲーム・コンソールなど、ならびに、デバイスとバッテリ充電用のコンセントに差し込まれるACアダプタとの間の電源コードなどの、他のデバイスで普及してきた。USBの設計は、コンピュータおよび電子産業から主要な企業を組み入れた業界規格化団体である、USBインプリメンターズ・フォーラム(USB−IF)によって規格化される。
USBデバイスは、ホストUSBアダプタを介してホスト・コンピュータ・システムに結合される。図1の例では、ホストUSBアダプタ(202)は、USBハブ(204)を介して2つのUSBデバイス(206、208)に結合される。USBハブとは、多くのUSBデバイスを、ホスト・コンピュータ又は他のハブ上の単一のUSBポートに接続できるようにするデバイスである。
ハイパーバイザ(130)は、ホストUSBアダプタ(202)に結合されたUSBデバイス(206、208)のUSBデバイス発見を開始することによって、
ホストUSBアダプタ(202)を仮想化することができる。USBデバイス(206、208)のUSBデバイス発見の開始は、発見された各USBデバイスに物理デバイス・アドレス(105)を割り当てること、および、発見された各USBデバイスからUSBデバイスを記述する情報を含むデバイス記述子(117)を取り出すことを、含むことができる。デバイス記述子(117)は、たとえばUSBデバイスのデバイス・クラス、USBデバイスのベンダ識別子、USBデバイスの製品識別子、およびUSBデバイスのシリアル番号を含むことができる。
物理デバイス・アドレス(105)の割り当ては、デフォルトのターゲット・アドレスを使用してUSBファブリックを探査すること、USBデバイスに物理デバイス・アドレスを割り当てるために制御移行によって探査中に識別された各デバイスをプログラミングすることを含む、USB仕様によって定義されたような典型的な様式で実施することができる。ハイパーバイザ(130)は、は、デバイスの探査中に、現時点で発見されているUSBデバイスが示された、テーブル、リスト、または論理ツリーなどの、データ構造を生成することができる。ハイパーバイザ(130)は、たとえば、物理デバイス・アドレス(105)およびデバイス記述子(117)間の関連性を含むテーブル(図示せず)を生成することができる。
ハイパーバイザ(130)は、構成マネージャ(200)から、1つまたは複数の論理区画への発見された各USBデバイス割り当て(119)を受信することもできる。構成マネージャとは、図1のコンピュータ(152)に関する構成メカニズムをユーザに提供する、自動化コンピューティング機構のモジュールである。構成マネージャ(200)は、たとえば、ユーザ入力を取り込む際に介することが可能なグラフィカル・ユーザ・インターフェース(「GUI」)を提示することができる。こうしたGUIによって、ユーザは、たとえば論理区画(106、118)へのUSBデバイス(206、208)の割り当てを含む、図1のコンピュータ(152)の様々なコンポーネントを構成することができる。図1の例の構成マネージャ(200)は、GUIによって受信されたユーザ入力に応答して、1つまたは複数の論理区画への発見された各USBデバイス割り当て(119)を指定することができる。こうした割り当て(119)の受信に応答して、ハイパーバイザ(130)は、物理デバイス・アドレス(105)と、論理デバイス・アドレス(103)、区画識別子(107)、およびデバイス記述子(117)との関連性を含む、図1の例示的デバイス・アドレス・テーブル(150)などの、割り当てを表すデータ構造を生成することができる。構成マネージャ(200)は、USBデバイス発見中にあらかじめ発見されなかったUSBデバイスについて、ハイパーバイザに通知することもできる。こうしたデバイスは、現在、電力節約のために電源がオフになっている、修理に出されているなどの可能性がある。
ハイパーバイザ(130)は、論理区画(106、118)に割り当てられた各USBデバイス(206、208)について、キュー・ペア(134&136、146&148)を確立することができる。さらにハイパーバイザは、区画に割り当てられた各USBデバイスについて、別々の論理USBアダプタ(116、118)を提示する。たとえば、3つのデバイスが割り当てられた論理区画の場合、ハイパーバイザは3つのキュー・ペアを確立することが可能であり、さらに、その論理区画に3つの別々の論理USBアダプタを提示することが可能である。論理USBアダプタとは、USBデータ通信を実行するための手段として論理区画(106)に提示される自動化コンピューティング機構のモジュールであり、ここで論理USBアダプタは、ホストUSBアダプタ(202)に結合された特定のUSBデバイスに関連付けられる。論理USBアダプタは、区画の観点からすると、ホストUSBアダプタ(202)の抽出である。図1のシステムでは、論理区画内のオペレーティング・システムの観点からすると、実際は1つのハードウェアUSBアダプタ(202)のみが存在する場合、論理区画に割り当てられた各USBデバイスは異なるホストUSBアダプタ、すなわち論理USBアダプタに、直接結合される。1つのUSBデバイスを複数の論理区画に割り当てることができる。USBデバイスが割り当てられた各論理区画について、ハイパーバイザは別々のキュー・ペアを確立し、その区画に論理USBアダプタを提示する。
論理区画に割り当てられた各USBデバイスに対するキュー・ペアの確立に加えて、またその確立の後、ハイパーバイザは、論理区画に割り当てられた各USBデバイスに、USBデバイスの存在のインジケーションを提供することができる。こうしたインジケーションの後、区画(106、118)のオペレーティング・システム(110、122)は、USBデバイスのためのデバイス・ドライバ(112、124)をロードすることができる。
ハイパーバイザは、論理USBアダプタ(116、128)を介して論理区画(106、118)からUSB入力/出力(「I/O」)要求(114、126)を受信することによって、図1のホストUSBアダプタ(202)を仮想化することもできる。各論理USBアダプタ(116、128)は、ホストUSBアダプタ(204)に結合されたUSBデバイス(206、208)に関連付けられる。ハイパーバイザは、ハイパーバイザによって各区画に使用可能となった機能へのライブラリ機能呼び出しを受信することによって、USB I/O要求(114、126)を受信することが可能であり、より具体的に言えば、デバイス・ドライバ(112、124)は、1つまたは複数のハイパーバイザ機能呼び出しを実行し、USBデバイスから受信したUSBデータを格納するためのメモリ領域を定義する仮想アドレス範囲、USBデバイスを識別する論理デバイス・アドレス、および実行するI/Oのタイプなどの、USB I/O要求のペイロード・データを、機能呼び出しへの引数として渡すことができる。
ハイパーバイザは、USB I/O要求(114、126)に指定された仮想アドレス範囲に基づいて、専用メモリ領域(190、192)を登録することができる。ハイパーバイザは、メモリ・ページングから物理メモリ・セグメントをピンニング(pinning)すること、および仮想アドレス範囲を物理メモリ・セグメントにマッピングすることによって、専用メモリ領域(190、192)を登録することができる。こうした仮想アドレス範囲(109、113)の物理アドレス範囲(111、115)へのマッピングを、たとえばアドレス・テーブル(194、196)内などの、各区画(106、118)に関する別々のデータ構造内に格納することができる。
ハイパーバイザ(130)は、論理USBアダプタ(116、128)に関連付けられたキュー・ペアのキュー(134、136、146、148)内に作業キュー要素(「WQE」)を配置することもできる。キュー・ペアとは、仮想化されたホストUSBアダプタに伝送/受信または送信/受信機能を提供する、2つのキューのセットである。キュー・ペアは、Host Ethernet Adapterで実装されたキュー・ペアと同様の様式で、またはInfiniband(TM)技術で、実装可能である。キュー・ペアのキュー内にWQEを配置する際に、ハイパーバイザは、USB I/O要求(114、126)に含まれるUSBデバイス(206、208)の論理デバイス・アドレス(103)を、USBデバイス(206、208)の物理デバイス・アドレス(105)に変換することができる。WQEとは、USBデータ通信を介して実施されることになる送信または受信コマンドなどの特定の動作を定義する要素である。送信WQEはキュー・ペアの送信キュー内に配置することが可能であり、受信WQEはキュー・ペアの受信キュー内に配置することが可能である。WQEは、転送タイプ、USBデバイスの物理デバイス・アドレス、エンドポイント識別子、および、専用メモリ領域の仮想アドレス範囲の指定を含む記述子リストを指定することができる。転送タイプは、大容量転送、割り込みタイプ転送、等時性(Isochronous)転送、または制御転送などの、実施するためのデータ通信転送のタイプを記述する。エンドポイント識別子は、通信パーティ、USBデバイスによって公開される、インターフェースの識別子である。
各論理USBアダプタ(116、128)は、各キュー・ペアの送信キューおよび受信キューに加えて、完了キュー(132、144)にも関連付けられる。完了キュー(132、144)は、WQEの完了を示す要素、完了キュー要素を格納するように構成される。完了キュー(132、144)には、完了キュー要素(「CQE」)(138、184)が格納される。
図1のコンピュータは、インターフェース・デバイス(102)も含む。図1のインターフェース・デバイス(102)は、WQEに基づいて論理区画とUSBデバイスとの間のUSBデータ通信を管理するように構成された、自動化コンピューティング機構を備える。図1の例におけるインターフェース・デバイス(102)は、ダイレクト・メモリ・アクセス(「DMA」)エンジン(104)も含む。USBデータ通信を管理する際に、インターフェース・デバイス(102)は、DMAを用いて、USBデバイス(206、208)で生じたUSBデータをホストUSBアダプタ(202)から論理USBアダプタ(116、128)用の専用メモリ領域(190、192)へと取り出すことができる。DMAは、コンピュータ内のハードウェア・サブシステムが、中央処理ユニットとは無関係に読み取りおよび書き込みのためにシステム・メモリにアクセスできるようにする、最新のコンピュータおよびマイクロプロセッサの機能である。多くのハードウェア・システムは、ディスク・ドライブ・コントローラ、グラフィックス・カード、ネットワーク・カード、およびサウンド・カードを含む、DMAを使用する。DMAは、複数コア・プロセッサ内での、特に、その処理要素にローカル・メモリ(しばしばスクラッチパッド・メモリと呼ばれる)が装備され、DMAがローカル・メモリとメイン・メモリとの間でデータを転送するために使用される、オンチップ・マルチプロセッサ・システム内での、チップ間データ転送にも使用される。DMAチャネルを有するコンピュータは、DMAチャネルを有さないコンピュータに比べてはるかに少ないCPUオーバヘッドで、デバイスとの間でデータを転送することができる。同様に、マルチコア・プロセッサ内部の処理要素は、そのプロセッサ時間を占有することなく、また計算およびデータ転送の同時実行を可能にしながら、そのローカル・メモリとの間でデータを転送することが可能である。
インターフェース・デバイスは、物理デバイス・アドレスおよびパケット識別子(「PID」)に基づいて、ホストUSBアダプタによって受信された着信データのUSBフレーム・ルーティングを実行する。USBフレーム内のPIDは、USBフレームのタイプを識別する。例示的なPIDには、SPLIT、PING、PRE、ERR、ACK、NACK NYET、STALL、OUT、IN、SOF、SETUP、DATA0、DATA1、DATA2、MDATAなどが含まれる。PIDおよびデバイス・アドレスを使用して、インターフェース・デバイスによって関連付けられたWQEおよびWQEからの専用メモリの仮想アドレス範囲を識別することができる。インターフェース・デバイスは、WQEならびにアドレス・テーブル(194、196)に含まれる仮想アドレス範囲を使用して、仮想アドレスを物理アドレスに変換し、DMAをその物理アドレス範囲に直接変換することができる。
RAM(168)内には、論理区画(106、118)、アプリケーション(108、120)、オペレーティング・システム(110、122)、デバイス・ドライバ(112、124)、USB I/O要求(114、126)、論理USBアダプタ(116、128)、ハイパーバイザ(130)、キュー・ペア(134&136、146&148)、他のデータ、データ構造、および図1の例におけるコンピュータ・プログラム命令のモジュールが示されているが、こうしたソフトウェアの多くのコンポーネントは、たとえばディスク・ドライブ(170)などの不揮発性メモリ内にも格納される。
図1のコンピュータ(152)は、拡張バス(160)およびバス・アダプタ(158)を介してプロセッサ(156)およびコンピュータ(152)の他のコンポーネントに結合された、ディスク・ドライブ・アダプタ(172)を含む。ディスク・ドライブ・アダプタ(172)は、不揮発性データ・ストレージをディスク・ドライブ(170)の形でコンピュータ(152)に接続する。本発明の諸実施形態に従ってホストUSBアダプタを仮想化するためにコンピュータ内で有用なディスク・ドライブ・アダプタは、当業者であれば思いつくであろうIntegated Drive Eectronics(「IDE」)アダプタ、Small Computer System Interface(「SCSI」)アダプタ、およびその他を含む。不揮発性コンピュータ・メモリは、当業者であれば思いつくであろう光ディスク・ドライブ、電気消去可能プログラマブル読み取り専用メモリ(いわゆる「EEPROM」または「フラッシュ」メモリ)、RAMドライブなどとしても実装可能である。
図1の例示的コンピュータ(152)は、1つまたは複数の入力/出力(「I/O」)アダプタ(178)を含む。I/Oアダプタは、たとえば、ソフトウェア・ドライブおよびコンピュータ・ハードウェアを介して、コンピュータ・ディスプレイなどのディスプレイ・デバイスへの出力、ならびにキーボードおよびマウスなどのユーザ入力デバイス(181)からのユーザ入力を制御するための、ユーザ指向入力/出力を実装する。図1の例示的コンピュータ(152)は、ディスプレイ画面またはコンピュータ・モニタなどのディスプレイ・デバイス(180)へのグラフィック出力向けに特別に設計されたI/Oアダプタの一例である、ビデオ・アダプタ(209)を含む。ビデオ・アダプタ(209)は、高速ビデオ・バス(164)、バス・アダプタ(158)、および、同じく高速バスであるフロント・サイド・バス(162)を介して、プロセッサ(156)に接続される。
図1の例示的コンピュータ(152)は、他のコンピュータ(182)とのデータ通信用、およびデータ通信ネットワーク(100)とのデータ通信用の、通信アダプタ(167)を含む。こうしたデータ通信は、RS−232接続を介して、Universal Serial Bus(「USB」)などの外部バスを介して、IPデータ通信ネットワークなどのデータ通信ネットワークを介して、および当業者であれば思いつくであろう他の方法で、順次実施することができる。通信アダプタは、1つのコンピュータが他のコンピュータへ、直接またはデータ通信ネットワークを介してデータ通信を送信する際に介するハードウェア・レベルのデータ通信を実装する。本発明の諸実施形態に従ってホストUSBアダプタを仮想化するために有用な通信アダプタの例には、有線ダイアルアップ通信用モデム、有線データ通信ネットワーク通信用Ethernet(IEEE 802.3)アダプタ、および無線データ通信ネットワーク通信用802.11アダプタが含まれる。
図1に示された例示的システムを構成しているサーバおよび他のデバイスの配置構成は、説明のためであり、限定的なものではない。本発明の様々な実施形態に従った有用なデータ処理システムは、当業者であれば思いつくであろう、図1に示されていない追加のサーバ、ルータ、他のデバイス、およびピアツーピア・アーキテクチャを含むことができる。こうしたデータ処理システムにおけるネットワークは、
たとえば、当業者であれば思いつくであろう、TCP(伝送制御プロトコル)、IP(インターネット・プロトコル)、HTTP(ハイパーテキスト転送プロトコル)、WAP(無線アクセス・プロトコル)、HDTP(ハンドヘルド・デバイス転送プロトコル)、およびその他を含む、多くのデータ通信プロトコルをサポートすることができる。本発明の様々な実施形態は、図1に示されたものに加えて様々なハードウェア・プラットフォーム上で実装可能である。
さらに詳細に説明するために、図2は、本発明の諸実施形態に従ってホストUSBアダプタを仮想化するための例示的方法を示す流れ図を示す。図2の方法は、1つまたは複数の論理区画(図1の106、118)を管理するハイパーバイザ(130)によって維持される、仮想化環境内で実施される。
図2の方法は、ハイパーバイザ(130)により、論理USBアダプタを介して論理区画からUSB I/O要求(212)を受信すること(210)を含む。図2の方法では、ホストUSBアダプタに結合されたUSBデバイスに関連付けられた論理USBアダプタはホストUSBアダプタに結合される。同様に図2の方法では、USB I/O要求(212)は、登録するメモリ領域を指定する、仮想アドレス範囲(214)と、USBデバイスを識別する論理デバイス・アドレスとを含む。
図2の方法は、USB I/O要求(212)に指定された仮想アドレス範囲(214)に基づいて、専用メモリ領域(190)を登録すること(218)も含む。前述のように、ハイパーバイザは、DMA転送を実行する際にインターフェース・デバイスによって後に使用するための物理アドレス・マッピングへの仮想アドレスのページングおよび格納から、メモリ領域をピンニングすることによって、専用メモリ領域(190)を登録すること(218)ができる。
図2の方法は、ハイパーバイザ(130)によって、論理USBアダプタに関連付けられたキュー・ペア(134、136)のキュー(136)内にWQE(140)を配置すること(220)も含む。図2の方法では、キュー(136)内にWQE(140)を配置すること(220)は、USB I/O要求(218)に含まれるUSBデバイスの論理デバイス・アドレス(216)を、USBデバイスの物理デバイス・アドレス(232)に変換すること(222)を含む。図2の方法では、WQE(140)は、転送タイプ(230)、USBデバイスの物理デバイス・アドレス(232)、エンドポイント識別子(234)、および、専用メモリ領域(190)の仮想アドレス範囲(214)の指定を含む記述子リスト(236)を含む。
図2の方法は、WQE(140)に基づき、論理区画とUSBデバイスとの間のUSBデータ通信をインターフェース・デバイス(102)によって管理すること(226)も含む。図2の方法では、USBデータ通信を管理すること(226)は、DMAを用いて、USBデバイスで生じたUSBデータ(224)をホストUSBアダプタから論理USBアダプタ用の専用メモリ領域(190)へと取り出すこと(228)によって実施される。
さらに詳細に説明するために、図3は、本発明の諸実施形態に従った、ホストUSBアダプタを仮想化するための他の例示的方法を示す流れ図を示す。図3の方法は、図3の方法が、1つまたは複数の論理区画(図1の106、118)を管理するハイパーバイザ(130)によって維持される仮想化環境内で実施されるという点において、図2の方法と同様である。図3の方法は、図3の方法が、USB I/O要求(212)を受信すること(210)と、論理USBアダプタに関連付けられたキュー・ペア(134、136)のキュー(136)内にWQE(140)を配置すること(220)と、DMAを用いて、USBデータ(224)をホストUSBアダプタから論理USBアダプタ用の専用メモリ領域(190)へと取り出すこと(228)により、論理区画とUSBデバイスとの間のUSBデータ通信を管理すること(226)とを含む、という点においても、図2の方法と同様である。
しかしながら図3の方法は、図3の方法が、ハイパーバイザ(130)によって、ホストUSBアダプタに結合されたUSBデバイスのUSBデバイス発見を開始すること(302)も含むという点において、図2の方法とは異なる。図2の方法では、ホストUSBアダプタに結合されたUSBデバイスのUSBデバイス発見を開始すること(302)は、発見された各USBデバイスに物理デバイス・アドレス(310)を割り当てること(304)、および、発見された各USBデバイスから、USBデバイスを記述する情報を含むデバイス記述子(312)を取り出すこと(306)によって、実施される。ハイパーバイザは、発見された各デバイスの物理デバイス・アドレス(310)およびデバイス記述子(312)を含む、現在発見されているUSBデバイスのテーブル(308)を生成することができる。
図3の方法は、ハイパーバイザ(130)によって、1つまたは複数の論理区画(318)への発見された各USBデバイスの割り当て(316)を構成マネージャから受信すること(314)も含む。図3の方法は、ハイパーバイザ(130)によって、論理区画に割り当てられた各USBデバイスに対してキュー・ペア(134、136)を確立すること(320)も含む。
さらに詳細に説明するために、図4は、本発明の諸実施形態に従った、ホストUSBアダプタを仮想化するための他の例示的方法を示す流れ図を示す。図4の方法は、図4の方法が、1つまたは複数の論理区画(図1の106、118)を管理するハイパーバイザ(130)によって維持される仮想化環境内で実施されるという点において、図2の方法と同様である。図4の方法は、図4の方法が、USB I/O要求(212)を受信すること(210)と、論理USBアダプタに関連付けられたキュー・ペア(134、136)のキュー(136)内にWQE(140)を配置すること(220)と、DMAを用いて、USBデータ(224)をホストUSBアダプタから論理USBアダプタ用の専用メモリ領域(190)へと取り出すこと(228)により、論理区画とUSBデバイスとの間のUSBデータ通信を管理すること(226)とを含む、という点においても、図2の方法と同様である。
しかしながら図4の方法は、図4の方法が、ハイパーバイザによって、追加のUSBデバイスがホストUSBアダプタに結合されている旨の指標を受信すること(402)も含むという点において、図2の方法とは異なる。ハイパーバイザによって、追加のUSBデバイスがホストUSBアダプタに結合されている旨の指標を受信すること(402)は、たとえば、ダウンストリームUSBハブまたはホストUSBアダプタへの追加USBデバイスの接続時に発生するハードウェア割り込みを受信することを含む、様々な方法で実施することができる。
図4の方法は、ハイパーバイザ(130)によって、追加のUSBデバイスに物理デバイス・アドレスを割り当てること(404)、ハイパーバイザ(130)によって、追加のUSBデバイスを記述する情報を含むデバイス記述子を追加のUSBデバイスから取り出すこと(406)、および、ハイパーバイザ(130)によって、構成マネージャから提供された情報から追加のUSBデバイスが現在論理区画に割り当てられているかどうかを判別すること(408)も含む。追加のUSBデバイスが現在論理区画に割り当てられているかどうかを判別すること(408)は、追加のUSBデバイスのシリアル番号および任意の関連付けられた区画識別子(318)などの、デバイス記述子またはデバイス記述子の一部(312)に対するデバイス割り当てのテーブル(316)を検査することによって、実施することができる。
追加のUSBデバイスが現在1つまたは複数の論理区画に割り当てられていない場合、図4の方法は、ハイパーバイザ(130)によって、USBデバイスに対するキュー・ペアを確立しないこと(414)によって続行される。追加のUSBデバイスが現在1つまたは複数の論理区画に割り当てられている場合、図4の方法は、ハイパーバイザ(130)によって、追加のUSBデバイスが割り当てられた各論理区画に対するキュー・ペア(134、136)を確立すること(410)によって続行される。
図4の方法は、ハイパーバイザ(130)によって、追加のUSBデバイスが割り当てられている各論理区画に、追加のUSBデバイスの指標を提供すること(412)も含む。ハイパーバイザは、こうした目的用にオペレーティング・システムが指定されている区画内でソフトウェア割り込みを発生させること、または当業者であれば思いつくであろう他の方法で、追加のUSBデバイスが割り当てられている各論理区画に、追加のUSBデバイスの指標を提供すること(412)が可能である。
さらに詳細に説明するために、図5は、本発明の諸実施形態に従った、ホストUSBアダプタを仮想化するための他の例示的方法を示す流れ図を示す。図5の方法は、図5の方法が、1つまたは複数の論理区画(図1の106、118)を管理するハイパーバイザ(130)によって維持される仮想化環境内で実施されるという点において、図2の方法と同様である。図5の方法は、図5の方法が、USB I/O要求(212)を受信すること(210)と、論理USBアダプタに関連付けられたキュー・ペア(134、136)のキュー(136)内にWQE(140)を配置すること(220)と、DMAを用いて、USBデータ(224)をホストUSBアダプタから論理USBアダプタ用の専用メモリ領域(190)へと取り出すこと(228)により、論理区画とUSBデバイスとの間のUSBデータ通信を管理すること(226)とを含む、という点においても、図2の方法と同様である。
しかしながら図5の方法は、図5の方法が、ハイパーバイザ(130)によって、特定のUSBデバイスがホストUSBアダプタから切断された旨の指標を受信すること(502)、ハイパーバイザ(130)によって、この特定のUSBデバイスに関連付けられたすべてのキュー・ペアを使用不可にすること(504)、および、ハイパーバイザ(130)によって、この特定のUSBデバイスが割り当てられた各論理区画にこの特定のUSBデバイスの取り外しの指標を提供すること(506)も含むという点において、図2の方法とは異なる。
前述の説明から鑑みて、本発明の諸実施形態に従ってホストUSBアダプタを仮想化することの利点が、以下の点を含むことを理解されよう。
・1つの物理ハードウェアが多くの区画によって共有される。顧客はUSB接続を達成するために、各論理区画用に別々のアダプタを購入する必要がない。これにより、アダプタの費用と、アダプタの格納装置、ケーブル接続、および他の物理属性との、両方が節約される。
・デバイス・ドライバ間または区画間の調整が不要である。
・完全なハードウェア分離および保護が提供される。たとえその区画が挙動不良であっても、仮想化USBハードウェアを介して他の区画を破損する可能性はない。
・本発明の諸実施形態に従った仮想化を採用するために、既存のUSBインフラストラクチャを変更する必要はまったくない。諸実施形態は、標準の市販のコンポーネントおよび管理ソフトウェアと、完全に相互運用可能とすることができる。
・USBアダプタは、通常のホストUSBアダプタに対してネットワークとして出現する。
・論理USBアダプタは、適切に実装されたUSBアダプタとまったく同様にコピーの書き込み/読み取りを提供しないため、論理USBアダプタの仕様に関連付けられた性能に不利な条件に制限されない。
・アダプタ、アダプタの格納装置、およびUSBデバイスの数が削減されることによって、大幅な電力節約が可能である。
・USBアダプタを仮想化することにより、CPU処理能力およびメモリの大幅な節約が可能である。
・USBのための現在のオペレーティング・システム・デバイス・ドライバは変更することなく、本発明の諸実施形態に従って仮想化されたUSBホスト・アダプタと共に動作可能である。
当業者であれば理解できるように、本発明の諸態様は、システム、方法、またはコンピュータ・プログラム製品として具体化可能である。したがって、本発明の諸態様は、すべてが本明細書では一般に「回路」、「モジュール」、または「システム」と呼ばれることのある、完全なハードウェア実施形態、完全なソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアおよびハードウェアの諸態様を組み合わせた実施形態の形をとることができる。さらに、本発明の諸態様は、具体化されたコンピュータ読み取り可能プログラム・コードを有する、1つまたは複数のコンピュータ読み取り可能媒体において具体化されたコンピュータ・プログラム製品の形を取ることができる。
1つまたは複数のコンピュータ読み取り可能媒体の任意の組み合わせが利用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能ストレージ媒体とすることができる。コンピュータ読み取り可能ストレージ媒体は、たとえば電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイス、あるいはそれらの任意の好適な組み合わせとすることができるが、これらに限定されない。コンピュータ読み取り可能ストレージ媒体のより具体的な例(網羅的なリストではない)には、1本または複数の線を有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光ストレージ・デバイス、磁気ストレージ・デバイス、またはこれらの任意の好適な組み合わせが含まれることになる。本書との関連において、コンピュータ読み取り可能ストレージ媒体は、命令実行システム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを、包含または格納可能な、任意の有形媒体とすることができる。
コンピュータ読み取り可能信号媒体は、たとえば帯域幅内で、または搬送波の一部として、内部に具体化されたコンピュータ読み取り可能プログラム・コードを備えた、伝搬データ信号を含むことができる。こうした伝搬信号は、電磁、光、またはそれらの好適な組み合わせを含むがこれらに限定されない、様々な形のいずれかを取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能ストレージ媒体ではなく、命令実行システム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを通信、伝搬、または移送することが可能な、任意のコンピュータ読み取り可能媒体とすることができる。
コンピュータ読み取り可能媒体上で具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、RFなど、またはこれらの任意の好適な組み合わせを含むがこれらに限定されない、任意の適切な媒体を使用して伝送可能である。
本発明の諸態様に関する動作を実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++など、および、「C」プログラミング言語または同様のプログラミング言語などの従来の手続きプログラミング言語などの、オブジェクト指向プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで作成することができる。プログラム・コードは、全体としてユーザのコンピュータ上で、一部はスタンドアロン型ソフトウェア・パッケージとしてユーザのコンピュータ上で、一部はユーザのコンピュータ上かつ一部はリモート・コンピュータ上で、あるいは全体としてリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介して、ユーザのコンピュータに接続可能であるか、または(たとえばインターネット・サービス・プロバイダを介して)外部コンピュータへと接続することが可能である。
以上、本発明の諸態様について、本発明の諸実施形態に従った方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図あるいはブロック図またはその両方を参照しながら説明した。流れ図あるいはブロック図またはその両方の各ブロック、ならびに、流れ図あるいはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装可能であることを理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特定用途向けコンピュータ、または他のプログラマブル・データ処理装置の、プロセッサに提供し、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、流れ図あるいはブロック図またはその両方のブロックで指定された機能/動作を実装するための手段を作成するようなマシンを作成することができる。
コンピュータ読み取り可能媒体に格納された命令が、流れ図あるいはブロック図またはその両方のブロックで指定された機能/動作を実装する命令を含む製品を製造するように、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスが、特定の様式で機能するように命令可能な、これらのコンピュータ・プログラム命令は、コンピュータ読み取り可能媒体内に格納することもできる。
コンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル装置上で実行する命令が、流れ図あるいはブロック図またはその両方のブロックで指定された機能/動作を実装するためのプロセスを提供するように、コンピュータ実施プロセスを作成するために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるように、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードすることもできる。
図面における流れ図およびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この点で、流れ図またはブロック図における各ブロックは、コードのモジュール、セグメント、または一部を表し、指定された論理機能を実装するための1つまたは複数の実行可能命令を備える。いくつかの代替実装では、ブロック内に示された機能が、図に示された順序以外で実行可能であることにも留意されたい。たとえば、連続して示された2つのブロックが、実際にはほぼ同時に実行可能であるか、またはそのブロックが、関連する機能に応じて時には逆の順序で実行可能な場合がある。ブロック図あるいは流れ図またはその両方の各ブロック、および、ブロック図あるいは流れ図またはその両方におけるブロックの組み合わせが、指定された機能または動作、あるいは特定用途向けハードウェアおよびコンピュータ命令の組み合わせを実行する、特定用途向けハードウェア・ベース・システムによって実装可能であることにも留意されたい。
前述の説明から、本発明の様々な実施形態において、その趣旨を逸脱することなく、修正および変更が可能であることを理解されよう。本明細書の説明は単に例示を目的としており、限定的な意味で解釈されるべきではない。本発明の範囲は、以下の特許請求の範囲の記述によってのみ限定されるものである。
100 ネットワーク
102 インターフェース・デバイス
103 論理アドレス
104 ダイレクト・メモリ・アクセス
105 デバイス・アドレス
106、118 区画
107 区画ID
108、120 アプリケーション
109、113 仮想アドレス
110、122 オペレーティング・システム
111、115 物理アドレス
112、124 デバイス・ドライバ
114、126 USB I/O要求
116、128 論理USBアダプタ
117 記述子
119 デバイス割り当て
130 ハイパーバイザ
132、144 完了キュー
134、146 RQ
136、148 SQ
138、184 完了キュー要素
140、142、186、188 作業キュー要素
150 デバイス・アドレス・テーブル
152 コンピュータ
156 プロセッサ
158 バス・アダプタ
160 拡張バス
162 フロント・サイド・バス
164 ビデオ・バス
166 メモリ・バス
167 通信アダプタ
168 ランダム・アクセス・メモリ
170 ディスク・ドライブ
172 ドライブ・アダプタ
178 I/Oアダプタ
180 ディスプレイ
181 ユーザ入力デバイス
182 他のコンピュータ
190、192 専用メモリ領域
194、196 アドレス・テーブル
200 構成マネージャ
202 ホストUSBアダプタ
204 USBハブ
206、208 USBデバイス
209 ビデオ・アダプタ

Claims (18)

  1. ハイパーバイザによって維持される仮想化環境において、ホスト・ユニバーサル・シリアル・バス(「USB」)アダプタを仮想化する方法であって、前記ハイパーバイザは1つまたは複数の論理区画を管理し、
    前記ハイパーバイザによって論理区画から論理USBアダプタを介してUSB入力/出力(「I/O」)要求を受信することであって、前記論理USBアダプタは前記ホストUSBアダプタに結合されたUSBデバイスに関連付けられる、受信することと、
    前記ハイパーバイザによって前記論理USBアダプタに関連付けられたキュー・ペアのキュー内に作業キュー要素(「WQE」)を配置することと、
    前記WQEに基づき、インターフェース・デバイスによって、ダイレクト・メモリ・アクセス(「DMA」)を用いて、前記USBデバイスで生じたUSBデータを前記ホストUSBアダプタから前記論理USBアダプタ用の専用メモリ領域へと取り出すことを含む、前記論理区画と前記USBデバイスとの間のUSBデータ通信を管理することと、
    を含む、方法。
  2. 前記USB I/O要求に指定された仮想アドレス範囲に基づいて、前記専用メモリ領域を登録することをさらに含み、
    前記論理USBアダプタに関連付けられたキュー・ペアのキュー内にWQEを配置することが、前記USB I/O要求に含まれる前記USBデバイスの論理デバイス・アドレスを、前記USBデバイスの物理デバイス・アドレスに変換することをさらに含み、
    前記WQEが、転送タイプ、前記USBデバイスの前記物理デバイス・アドレス、エンドポイント識別子、および、前記専用メモリ領域の前記仮想アドレス範囲の指定を含む記述子リストをさらに備える、
    請求項1に記載の方法。
  3. 発見された各USBデバイスに物理デバイス・アドレスを割り当てること、および、発見された各USBデバイスから、前記USBデバイスを記述する情報を含むデバイス記述子を取り出すことを含む、前記ハイパーバイザによって、前記ホストUSBアダプタに結合されたUSBデバイスのUSBデバイス発見を開始することをさらに含む、請求項1に記載の方法。
  4. 前記ハイパーバイザによって、1つまたは複数の論理区画への発見された各USBデバイスの割り当てを構成マネージャから受信することと、
    前記ハイパーバイザによって、論理区画に割り当てられた各USBデバイスに対してキュー・ペアを確立すること(320)と、
    をさらに含む、請求項2に記載の方法。
  5. 前記ハイパーバイザによって、追加のUSBデバイスが前記ホストUSBアダプタに結合されている旨の指標を受信することと、
    前記ハイパーバイザによって、前記追加のUSBデバイスに物理デバイス・アドレスを割り当てることと、
    前記ハイパーバイザによって、前記追加のUSBデバイスを記述する情報を含むデバイス記述子を前記追加のUSBデバイスから取り出すことと、
    前記ハイパーバイザによって、構成マネージャによって提供された情報から、前記追加のUSBデバイスが現在論理区画に割り当てられているかどうかを判別することと、
    前記追加のUSBデバイスが現在1つまたは複数の論理区画に割り当てられている場合、前記ハイパーバイザによって、前記追加のUSBデバイスが割り当てられた各論理区画に対するキュー・ペアを確立することと、
    前記ハイパーバイザによって、前記追加のUSBデバイスが割り当てられた各論理区画に、前記追加のUSBデバイスの指標が提供されることと、
    をさらに含む、請求項1に記載の方法。
  6. 前記ハイパーバイザによって、特定のUSBデバイスが前記ホストUSBアダプタから切断された旨の指標を受信することと、
    前記ハイパーバイザによって、前記特定のUSBデバイスに関連付けられたすべてのキュー・ペアを使用不可にすることと、
    前記ハイパーバイザによって、前記特定のUSBデバイスが割り当てられた各論理区画に前記特定のUSBデバイスの取り外しの指標を提供することと、
    をさらに含む、請求項1に記載の方法。
  7. ハイパーバイザによって維持される仮想化環境において、ホスト・ユニバーサル・シリアル・バス(「USB」)アダプタを仮想化するための装置であって、前記ハイパーバイザは1つまたは複数の論理区画を管理し、前記装置は、コンピュータ・プロセッサと、前記コンピュータ・プロセッサに動作可能に結合されたコンピュータ・メモリとを備え、前記コンピュータ・メモリの内部には、
    前記ハイパーバイザによって論理区画から論理USBアダプタを介してUSB入力/出力(「I/O」)要求を受信することであって、前記論理USBアダプタは前記ホストUSBアダプタに結合されたUSBデバイスに関連付けられる、受信することと、
    前記ハイパーバイザによって前記論理USBアダプタに関連付けられたキュー・ペアのキュー内に作業キュー要素(「WQE」)を配置することと、
    前記WQEに基づき、インターフェース・デバイスによって、ダイレクト・メモリ・アクセス(「DMA」)を用いて、前記USBデバイスで生じたUSBデータを前記ホストUSBアダプタから前記論理USBアダプタ用の専用メモリ領域へと取り出すことを含む、前記論理区画と前記USBデバイスとの間のUSBデータ通信を管理することと、
    を実行可能な、コンピュータ・プログラム命令が配設された、装置。
  8. 前記USB I/O要求に指定された仮想アドレス範囲に基づいて、前記専用メモリ領域を登録することが実行可能であり、
    前記論理USBアダプタに関連付けられたキュー・ペアのキュー内にWQEを配置することが、前記USB I/O要求に含まれる前記USBデバイスの論理デバイス・アドレスを、前記USBデバイスの物理デバイス・アドレスに変換することをさらに含み、
    前記WQEが、転送タイプ、前記USBデバイスの前記物理デバイス・アドレス、エンドポイント識別子、および、前記専用メモリ領域の前記仮想アドレス範囲の指定を含む記述子リストをさらに備える、
    コンピュータ・プログラム命令をさらに備える、請求項7に記載の装置。
  9. 発見された各USBデバイスに物理デバイス・アドレスを割り当てること、および、発見された各USBデバイスから、前記USBデバイスを記述する情報を含むデバイス記述子を取り出すことを含む、前記ハイパーバイザによって、前記ホストUSBアダプタに結合されたUSBデバイスのUSBデバイス発見を開始することをさらに含む、請求項7に記載の装置。
  10. 前記ハイパーバイザによって、1つまたは複数の論理区画への発見された各USBデバイスの割り当てを構成マネージャから受信することと、
    前記ハイパーバイザによって、論理区画に割り当てられた各USBデバイスに対してキュー・ペアを確立すること(320)と、
    が実行可能な、コンピュータ・プログラム命令をさらに備える、請求項8に記載の装置。
  11. 前記ハイパーバイザによって、追加のUSBデバイスが前記ホストUSBアダプタに結合されている旨の指標を受信することと、
    前記ハイパーバイザによって、前記追加のUSBデバイスに物理デバイス・アドレスを割り当てることと、
    前記ハイパーバイザによって、前記追加のUSBデバイスを記述する情報を含むデバイス記述子を前記追加のUSBデバイスから取り出すことと、
    前記ハイパーバイザによって、構成マネージャによって提供された情報から、前記追加のUSBデバイスが現在論理区画に割り当てられているかどうかを判別することと、
    前記追加のUSBデバイスが現在1つまたは複数の論理区画に割り当てられている場合、前記ハイパーバイザによって、前記追加のUSBデバイスが割り当てられた各論理区画に対するキュー・ペアを確立することと、
    前記ハイパーバイザによって、前記追加のUSBデバイスが割り当てられた各論理区画に、前記追加のUSBデバイスの指標を提供することと、
    が実行可能な、コンピュータ・プログラム命令をさらに備える、請求項7に記載の装置。
  12. 前記ハイパーバイザによって、特定のUSBデバイスが前記ホストUSBアダプタから切断された旨の指標を受信することと、
    前記ハイパーバイザによって、前記特定のUSBデバイスに関連付けられたすべてのキュー・ペアを使用不可にすることと、
    前記ハイパーバイザによって、前記特定のUSBデバイスが割り当てられた各論理区画に前記特定のUSBデバイスの取り外しの指標を提供することと、
    が実行可能な、コンピュータ・プログラム命令をさらに備える、請求項7に記載の装置。
  13. ハイパーバイザによって維持される仮想化環境において、ホスト・ユニバーサル・シリアル・バス(「USB」)アダプタを仮想化するためのコンピュータ・プログラムであって、前記ハイパーバイザは1つまたは複数の論理区画を管理し、前記コンピュータ・プログラムは、コンピュータによって、
    前記ハイパーバイザによって論理区画から論理USBアダプタを介してUSB入力/出力(「I/O」)要求を受信することであって、前記論理USBアダプタは前記ホストUSBアダプタに結合されたUSBデバイスに関連付けられる、受信することと、
    前記ハイパーバイザによって前記論理USBアダプタに関連付けられたキュー・ペアのキュー内に作業キュー要素(「WQE」)を配置することと、
    前記WQEに基づき、インターフェース・デバイスによって、ダイレクト・メモリ・アクセス(「DMA」)を用いて、前記USBデバイスで生じたUSBデータを前記ホストUSBアダプタから前記論理USBアダプタ用の専用メモリ領域へと取り出すことを含む、前記論理区画と前記USBデバイスとの間のUSBデータ通信を管理することと、
    を実行可能な、コンピュータ・プログラム命令を備える、コンピュータ・プログラム。
  14. 前記USB I/O要求に指定された仮想アドレス範囲に基づいて、前記専用メモリ領域を登録することが実行可能であり、
    前記論理USBアダプタに関連付けられたキュー・ペアのキュー内にWQEを配置することが、前記USB I/O要求に含まれる前記USBデバイスの論理デバイス・アドレスを、前記USBデバイスの物理デバイス・アドレスに変換することをさらに含み、
    前記WQEが、転送タイプ、前記USBデバイスの前記物理デバイス・アドレス、エンドポイント識別子、および、前記専用メモリ領域の前記仮想アドレス範囲の指定を含む記述子リストをさらに備える、
    コンピュータ・プログラム命令をさらに備える、請求項13に記載のコンピュータ・プログラム。
  15. 発見された各USBデバイスに物理デバイス・アドレスを割り当てること、および、発見された各USBデバイスから、前記USBデバイスを記述する情報を含むデバイス記述子を取り出すことを含む、前記ハイパーバイザによって、前記ホストUSBアダプタに結合されたUSBデバイスのUSBデバイス発見を開始することをさらに含む、請求項13に記載のコンピュータ・プログラム。
  16. 前記ハイパーバイザによって、1つまたは複数の論理区画への発見された各USBデバイスの割り当てを構成マネージャから受信することと、
    前記ハイパーバイザによって、論理区画に割り当てられた各USBデバイスに対してキュー・ペアを確立すること(320)と、
    が実行可能な、コンピュータ・プログラム命令をさらに備える、請求項14に記載のコンピュータ・プログラム。
  17. 前記ハイパーバイザによって、追加のUSBデバイスが前記ホストUSBアダプタに結合されている旨の指標を受信することと、
    前記ハイパーバイザによって、前記追加のUSBデバイスに物理デバイス・アドレスを割り当てることと、
    前記ハイパーバイザによって、前記追加のUSBデバイスを記述する情報を含むデバイス記述子を前記追加のUSBデバイスから取り出すことと、
    前記ハイパーバイザによって、構成マネージャによって提供された情報から、前記追加のUSBデバイスが現在論理区画に割り当てられているかどうかを判別することと、
    前記追加のUSBデバイスが現在1つまたは複数の論理区画に割り当てられている場合、前記ハイパーバイザによって、前記追加のUSBデバイスが割り当てられた各論理区画に対するキュー・ペアを確立することと、
    前記ハイパーバイザによって、前記追加のUSBデバイスが割り当てられた各論理区画に、前記追加のUSBデバイスの指標を提供することと、
    が実行可能な、コンピュータ・プログラム命令をさらに備える、請求項13に記載のコンピュータ・プログラム。
  18. 前記ハイパーバイザによって、特定のUSBデバイスが前記ホストUSBアダプタから切断された旨の指標を受信することと、
    前記ハイパーバイザによって、前記特定のUSBデバイスに関連付けられたすべてのキュー・ペアを使用不可にすることと、
    前記ハイパーバイザによって、前記特定のUSBデバイスが割り当てられた各論理区画に前記特定のUSBデバイスの取り外しの指標を提供することと、
    が実行可能な、コンピュータ・プログラム命令をさらに備える、請求項13に記載のコンピュータ・プログラム。
JP2011001648A 2010-01-12 2011-01-07 ホストusbアダプタを仮想化するための方法、装置、およびコンピュータ・プログラム(ホストusbアダプタの仮想化) Active JP6004608B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/685,842 US9507619B2 (en) 2010-01-12 2010-01-12 Virtualizing a host USB adapter
US12/685842 2010-01-12

Publications (2)

Publication Number Publication Date
JP2011146044A true JP2011146044A (ja) 2011-07-28
JP6004608B2 JP6004608B2 (ja) 2016-10-12

Family

ID=44259385

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011001648A Active JP6004608B2 (ja) 2010-01-12 2011-01-07 ホストusbアダプタを仮想化するための方法、装置、およびコンピュータ・プログラム(ホストusbアダプタの仮想化)

Country Status (5)

Country Link
US (1) US9507619B2 (ja)
JP (1) JP6004608B2 (ja)
KR (1) KR101807310B1 (ja)
CN (1) CN102129384A (ja)
TW (1) TWI596485B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015514270A (ja) * 2012-03-26 2015-05-18 オラクル・インターナショナル・コーポレイション インフィニバンドネットワークにおけるバーチャルマシーンのライブマイグレーションをサポートするためのシステムおよび方法

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8572362B2 (en) * 2010-03-16 2013-10-29 International Business Machines Corporation Preinstalled operating system instances stored on removable storage devices
US8856407B2 (en) * 2011-11-23 2014-10-07 Red Hat, Inc. USB redirection for write streams
US9432304B2 (en) 2012-03-26 2016-08-30 Oracle International Corporation System and method for supporting live migration of virtual machines based on an extended host channel adaptor (HCA) model
US8973019B1 (en) * 2012-11-09 2015-03-03 Parallels IP Holdings GmbH Method and system for emulation of super speed devices in virtual machines
US20140160954A1 (en) 2012-12-12 2014-06-12 International Business Machines Corporation Host ethernet adapter frame forwarding
US10097534B2 (en) * 2015-08-28 2018-10-09 Dell Products L.P. System and method to redirect hardware secure USB storage devices in high latency VDI environments
US9760730B2 (en) 2015-08-28 2017-09-12 Dell Products L.P. System and method to redirect and unlock software secure disk devices in a high latency environment
US10148108B2 (en) * 2015-10-29 2018-12-04 Intel Corporation Battery charger with USB type-C adapter
CN106959927B (zh) * 2016-01-08 2020-08-25 阿里巴巴集团控股有限公司 获取虚拟机中的逻辑分区的位置信息的方法及装置
US10795608B2 (en) * 2016-02-19 2020-10-06 Hitachi, Ltd. Computer, communication driver, and communication control method
US9990222B2 (en) 2016-03-18 2018-06-05 Airwatch Llc Enforcing compliance rules against hypervisor and virtual machine using host management component
US20180088978A1 (en) * 2016-09-29 2018-03-29 Intel Corporation Techniques for Input/Output Access to Memory or Storage by a Virtual Machine or Container
US11050682B2 (en) * 2017-09-28 2021-06-29 Intel Corporation Reordering of data for parallel processing
CN108366129B (zh) * 2018-03-08 2019-05-07 北京淳中科技股份有限公司 Usb数据传输方法、装置及usb从设备适配器
US11762798B2 (en) * 2019-06-25 2023-09-19 Micron Technology, Inc. Aggregated and virtualized solid state drives with multiple host interfaces
US11586458B2 (en) 2020-02-26 2023-02-21 Red Hat, Inc. Fast device discovery for virtual machines
CN114265806B (zh) * 2021-12-17 2024-04-02 威创集团股份有限公司 一种实现usb数据信号共享的方法、装置、设备和存储介质
US20250053531A1 (en) * 2023-08-10 2025-02-13 Synaptics Incorporated Universal serial bus controller

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205253A1 (en) * 2003-04-10 2004-10-14 International Business Machines Corporation Apparatus, system and method for controlling access to facilities based on usage classes
JP2009187368A (ja) * 2008-02-07 2009-08-20 Hitachi Ltd Usbポートの共有制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636929B1 (en) * 2000-04-06 2003-10-21 Hewlett-Packard Development Company, L.P. USB virtual devices
US7095750B2 (en) * 2001-08-16 2006-08-22 International Business Machines Corporation Apparatus and method for virtualizing a queue pair space to minimize time-wait impacts
TWI311325B (en) * 2006-11-16 2009-06-21 Elite Semiconductor Esmt Transmission method for serial periphery interface serial flash
US20090006702A1 (en) * 2007-06-26 2009-01-01 Nitin Sarangdhar Sharing universal serial bus isochronous bandwidth between multiple virtual machines
US20090006690A1 (en) * 2007-06-27 2009-01-01 Balaji Vembu Providing universal serial bus device virtualization with a schedule merge from multiple virtual machines

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205253A1 (en) * 2003-04-10 2004-10-14 International Business Machines Corporation Apparatus, system and method for controlling access to facilities based on usage classes
JP2009187368A (ja) * 2008-02-07 2009-08-20 Hitachi Ltd Usbポートの共有制御方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CSNG200401457006; 広渕崇宏ほか: 'USBドライバスタックを拡張したリモートデバイス利用方式' 情報処理学会研究報告 Vol.2003 No.42, 20030509, 41-48頁, 社団法人情報処理学会 *
JPN6014053075; 岩松昇: 'Xenの準仮想化USBドライバの開発' xensummit_tokyo 発表スライド , 2008, 1-10頁 *
JPN6014053077; 広渕崇宏ほか: 'USBドライバスタックを拡張したリモートデバイス利用方式' 情報処理学会研究報告 Vol.2003 No.42, 20030509, 41-48頁, 社団法人情報処理学会 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015514270A (ja) * 2012-03-26 2015-05-18 オラクル・インターナショナル・コーポレイション インフィニバンドネットワークにおけるバーチャルマシーンのライブマイグレーションをサポートするためのシステムおよび方法

Also Published As

Publication number Publication date
KR20110083518A (ko) 2011-07-20
TWI596485B (zh) 2017-08-21
US9507619B2 (en) 2016-11-29
TW201202942A (en) 2012-01-16
JP6004608B2 (ja) 2016-10-12
US20110173353A1 (en) 2011-07-14
CN102129384A (zh) 2011-07-20
KR101807310B1 (ko) 2018-01-10

Similar Documents

Publication Publication Date Title
JP6004608B2 (ja) ホストusbアダプタを仮想化するための方法、装置、およびコンピュータ・プログラム(ホストusbアダプタの仮想化)
US11604741B2 (en) Method for dynamically provisioning virtualized functions in a USB device by means of a virtual USB hub
RU2532708C2 (ru) Способ и устройство для осуществления операции ввода/вывода в среде виртуализации
US9154451B2 (en) Systems and methods for sharing devices in a virtualization environment
JP5737050B2 (ja) 情報処理装置、割込み制御方法および割込み制御プログラム
US9354952B2 (en) Application-driven shared device queue polling
CN103874984B (zh) 可虚拟化以及前向兼容硬件‑软件接口
CN103455363B (zh) 一种虚拟机的指令处理方法、装置及物理主机
US9009702B2 (en) Application-driven shared device queue polling in a virtualized computing environment
US9806959B2 (en) Baseboard management controller (BMC) to host communication through device independent universal serial bus (USB) interface
JP2013530573A (ja) マルチキュー・ネットワーク・アダプタの動的再構成によるリソース・アフィニティ
CN104636076A (zh) 一种用于云存储的分布式块设备驱动方法和系统
CN106254170A (zh) 服务器联机状态检测及通知的方法及系统
TW201445449A (zh) 透過基板管理控制器管理虛擬機器的電腦主機與方法
US11392512B2 (en) USB method and apparatus in a virtualization environment with multi-VM
CN103262034B (zh) 将数据分区至虚拟机
CN115421795A (zh) 一种软硬件协同的多端口存储加速系统
CN116974736A (zh) 一种设备虚拟化方法及相关设备
WO2022068753A1 (zh) 服务器系统、容器设置方法及装置
US20200320029A1 (en) System and Method of Rerouting an Inter-Processor Communication Link Based on a Link Utilization Value
US10075398B2 (en) Systems and methods for enabling a host system to use a network interface of a management controller
CN113703913B (zh) 设备测试方法及装置
CN120066667A (zh) 数据传输的方法及装置、电子设备和存储介质
Zhang et al. NVMe-over-RPMsg: A Virtual Storage Device Model Applied to Heterogeneous Multi-Core SoCs
US12292845B2 (en) Methods and systems for establishing direct communications between a server computer and a smart network interface controller

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131003

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141216

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150311

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150707

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160906

R150 Certificate of patent or registration of utility model

Ref document number: 6004608

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150