(57)【特許請求の範囲】
【請求項１】
１つまたは複数の論理区画を管理するハイパーバイザによって維持される仮想化環境において、ホスト・ユニバーサル・シリアル・バス（「ＵＳＢ」）アダプタを仮想化する方法であって、
前記ハイパーバイザによって、複数の論理区画について、論理区画に割り当てられた各ＵＳＢデバイスに対してキュー・ペアを確立することと、
前記ハイパーバイザによって論理区画から論理ＵＳＢアダプタを介してＵＳＢ入力／出力（「Ｉ／Ｏ」）要求を受信することであって、前記論理ＵＳＢアダプタは前記ホストＵＳＢアダプタに結合されたＵＳＢデバイスに関連付けられる、受信することと、
前記ハイパーバイザによって前記論理ＵＳＢアダプタに関連付けられたキュー・ペアのキュー内に作業キュー要素（「ＷＱＥ」）を配置することと、
前記ＷＱＥに基づき、インターフェース・デバイスによって、ダイレクト・メモリ・アクセス（「ＤＭＡ」）を用いて、前記ＵＳＢデバイスで生じたＵＳＢデータを前記ホストＵＳＢアダプタから前記論理ＵＳＢアダプタ用の専用メモリ領域へと取り出すことを含む、前記論理区画と前記ＵＳＢデバイスとの間のＵＳＢデータ通信を管理することと、
を含む、方法。
【請求項２】
前記ＵＳＢ  Ｉ／Ｏ要求に指定された仮想アドレス範囲に基づいて、前記専用メモリ領域を登録することをさらに含み、
前記論理ＵＳＢアダプタに関連付けられたキュー・ペアのキュー内にＷＱＥを配置することが、前記ＵＳＢ  Ｉ／Ｏ要求に含まれる前記ＵＳＢデバイスの論理デバイス・アドレスを、前記ＵＳＢデバイスの物理デバイス・アドレスに変換することをさらに含み、
前記ＷＱＥが、転送タイプ、前記ＵＳＢデバイスの前記物理デバイス・アドレス、エンドポイント識別子、および、前記専用メモリ領域の前記仮想アドレス範囲の指定を含む記述子リストをさらに備える、
請求項１に記載の方法。
【請求項３】
発見された各ＵＳＢデバイスに物理デバイス・アドレスを割り当てること、および、発見された各ＵＳＢデバイスから、前記ＵＳＢデバイスを記述する情報を含むデバイス記述子を取り出すことを含む、前記ハイパーバイザによって、前記ホストＵＳＢアダプタに結合されたＵＳＢデバイスのＵＳＢデバイス発見を開始することをさらに含む、請求項１に記載の方法。
【請求項４】
前記ハイパーバイザによって、１つまたは複数の論理区画への発見された各ＵＳＢデバイスの割り当てを構成マネージャから受信すること、
をさらに含む、請求項２に記載の方法。
【請求項５】
前記ハイパーバイザによって、追加のＵＳＢデバイスが前記ホストＵＳＢアダプタに結合されている旨の指標を受信することと、
前記ハイパーバイザによって、前記追加のＵＳＢデバイスに物理デバイス・アドレスを割り当てることと、
前記ハイパーバイザによって、前記追加のＵＳＢデバイスを記述する情報を含むデバイス記述子を前記追加のＵＳＢデバイスから取り出すことと、
前記ハイパーバイザによって、構成マネージャによって提供された情報から、前記追加のＵＳＢデバイスが現在論理区画に割り当てられているかどうかを判別することと、
前記追加のＵＳＢデバイスが現在１つまたは複数の論理区画に割り当てられている場合、前記ハイパーバイザによって、前記追加のＵＳＢデバイスが割り当てられた各論理区画に対するキュー・ペアを確立することと、
前記ハイパーバイザによって、前記追加のＵＳＢデバイスが割り当てられた各論理区画に、前記追加のＵＳＢデバイスの指標が提供されることと、
をさらに含む、請求項１に記載の方法。
【請求項６】
前記ハイパーバイザによって、特定のＵＳＢデバイスが前記ホストＵＳＢアダプタから切断された旨の指標を受信することと、
前記ハイパーバイザによって、前記特定のＵＳＢデバイスに関連付けられたすべてのキュー・ペアを使用不可にすることと、
前記ハイパーバイザによって、前記特定のＵＳＢデバイスが割り当てられた各論理区画に前記特定のＵＳＢデバイスの取り外しの指標を提供することと、
をさらに含む、請求項１に記載の方法。
【請求項７】
１つまたは複数の論理区画を管理するハイパーバイザによって維持される仮想化環境において、ホスト・ユニバーサル・シリアル・バス（「ＵＳＢ」）アダプタを仮想化するための装置であって、前記装置は、コンピュータ・プロセッサと、前記コンピュータ・プロセッサに動作可能に結合されたコンピュータ・メモリとを備え、前記コンピュータ・メモリの内部には、
前記ハイパーバイザによって、複数の論理区画について、論理区画に割り当てられた各ＵＳＢデバイスに対してキュー・ペアを確立することと、
前記ハイパーバイザによって論理区画から論理ＵＳＢアダプタを介してＵＳＢ入力／出力（「Ｉ／Ｏ」）要求を受信することであって、前記論理ＵＳＢアダプタは前記ホストＵＳＢアダプタに結合されたＵＳＢデバイスに関連付けられる、受信することと、
前記ハイパーバイザによって前記論理ＵＳＢアダプタに関連付けられたキュー・ペアのキュー内に作業キュー要素（「ＷＱＥ」）を配置することと、
前記ＷＱＥに基づき、インターフェース・デバイスによって、ダイレクト・メモリ・アクセス（「ＤＭＡ」）を用いて、前記ＵＳＢデバイスで生じたＵＳＢデータを前記ホストＵＳＢアダプタから前記論理ＵＳＢアダプタ用の専用メモリ領域へと取り出すことを含む、前記論理区画と前記ＵＳＢデバイスとの間のＵＳＢデータ通信を管理することと、
を実行可能な、コンピュータ・プログラム命令が配設された、装置。
【請求項８】
前記ＵＳＢ  Ｉ／Ｏ要求に指定された仮想アドレス範囲に基づいて、前記専用メモリ領域を登録することが実行可能であり、
前記論理ＵＳＢアダプタに関連付けられたキュー・ペアのキュー内にＷＱＥを配置することが、前記ＵＳＢ  Ｉ／Ｏ要求に含まれる前記ＵＳＢデバイスの論理デバイス・アドレスを、前記ＵＳＢデバイスの物理デバイス・アドレスに変換することをさらに含み、
前記ＷＱＥが、転送タイプ、前記ＵＳＢデバイスの前記物理デバイス・アドレス、エンドポイント識別子、および、前記専用メモリ領域の前記仮想アドレス範囲の指定を含む記述子リストをさらに備える、
コンピュータ・プログラム命令をさらに備える、請求項７に記載の装置。
【請求項９】
発見された各ＵＳＢデバイスに物理デバイス・アドレスを割り当てること、および、発見された各ＵＳＢデバイスから、前記ＵＳＢデバイスを記述する情報を含むデバイス記述子を取り出すことを含む、前記ハイパーバイザによって、前記ホストＵＳＢアダプタに結合されたＵＳＢデバイスのＵＳＢデバイス発見を開始することをさらに含む、請求項７に記載の装置。
【請求項１０】
前記ハイパーバイザによって、１つまたは複数の論理区画への発見された各ＵＳＢデバイスの割り当てを構成マネージャから受信すること、
が実行可能な、コンピュータ・プログラム命令をさらに備える、請求項８に記載の装置。
【請求項１１】
前記ハイパーバイザによって、追加のＵＳＢデバイスが前記ホストＵＳＢアダプタに結合されている旨の指標を受信することと、
前記ハイパーバイザによって、前記追加のＵＳＢデバイスに物理デバイス・アドレスを割り当てることと、
前記ハイパーバイザによって、前記追加のＵＳＢデバイスを記述する情報を含むデバイス記述子を前記追加のＵＳＢデバイスから取り出すことと、
前記ハイパーバイザによって、構成マネージャによって提供された情報から、前記追加のＵＳＢデバイスが現在論理区画に割り当てられているかどうかを判別することと、
前記追加のＵＳＢデバイスが現在１つまたは複数の論理区画に割り当てられている場合、前記ハイパーバイザによって、前記追加のＵＳＢデバイスが割り当てられた各論理区画に対するキュー・ペアを確立することと、
前記ハイパーバイザによって、前記追加のＵＳＢデバイスが割り当てられた各論理区画に、前記追加のＵＳＢデバイスの指標を提供することと、
が実行可能な、コンピュータ・プログラム命令をさらに備える、請求項７に記載の装置。
【請求項１２】
前記ハイパーバイザによって、特定のＵＳＢデバイスが前記ホストＵＳＢアダプタから切断された旨の指標を受信することと、
前記ハイパーバイザによって、前記特定のＵＳＢデバイスに関連付けられたすべてのキュー・ペアを使用不可にすることと、
前記ハイパーバイザによって、前記特定のＵＳＢデバイスが割り当てられた各論理区画に前記特定のＵＳＢデバイスの取り外しの指標を提供することと、
が実行可能な、コンピュータ・プログラム命令をさらに備える、請求項７に記載の装置。
【請求項１３】
１つまたは複数の論理区画を管理するハイパーバイザによって維持される仮想化環境において、ホスト・ユニバーサル・シリアル・バス（「ＵＳＢ」）アダプタを仮想化するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、コンピュータによって、
前記ハイパーバイザによって、複数の論理区画について、論理区画に割り当てられた各ＵＳＢデバイスに対してキュー・ペアを確立することと、
前記ハイパーバイザによって論理区画から論理ＵＳＢアダプタを介してＵＳＢ入力／出力（「Ｉ／Ｏ」）要求を受信することであって、前記論理ＵＳＢアダプタは前記ホストＵＳＢアダプタに結合されたＵＳＢデバイスに関連付けられる、受信することと、
前記ハイパーバイザによって前記論理ＵＳＢアダプタに関連付けられたキュー・ペアのキュー内に作業キュー要素（「ＷＱＥ」）を配置することと、
前記ＷＱＥに基づき、インターフェース・デバイスによって、ダイレクト・メモリ・アクセス（「ＤＭＡ」）を用いて、前記ＵＳＢデバイスで生じたＵＳＢデータを前記ホストＵＳＢアダプタから前記論理ＵＳＢアダプタ用の専用メモリ領域へと取り出すことを含む、前記論理区画と前記ＵＳＢデバイスとの間のＵＳＢデータ通信を管理することと、
を実行可能な、コンピュータ・プログラム命令を備える、コンピュータ・プログラム。
【請求項１４】
前記ＵＳＢ  Ｉ／Ｏ要求に指定された仮想アドレス範囲に基づいて、前記専用メモリ領域を登録することが実行可能であり、
前記論理ＵＳＢアダプタに関連付けられたキュー・ペアのキュー内にＷＱＥを配置することが、前記ＵＳＢ  Ｉ／Ｏ要求に含まれる前記ＵＳＢデバイスの論理デバイス・アドレスを、前記ＵＳＢデバイスの物理デバイス・アドレスに変換することをさらに含み、
前記ＷＱＥが、転送タイプ、前記ＵＳＢデバイスの前記物理デバイス・アドレス、エンドポイント識別子、および、前記専用メモリ領域の前記仮想アドレス範囲の指定を含む記述子リストをさらに備える、
コンピュータ・プログラム命令をさらに備える、請求項１３に記載のコンピュータ・プログラム。
【請求項１５】
発見された各ＵＳＢデバイスに物理デバイス・アドレスを割り当てること、および、発見された各ＵＳＢデバイスから、前記ＵＳＢデバイスを記述する情報を含むデバイス記述子を取り出すことを含む、前記ハイパーバイザによって、前記ホストＵＳＢアダプタに結合されたＵＳＢデバイスのＵＳＢデバイス発見を開始することをさらに含む、請求項１３に記載のコンピュータ・プログラム。
【請求項１６】
前記ハイパーバイザによって、１つまたは複数の論理区画への発見された各ＵＳＢデバイスの割り当てを構成マネージャから受信すること、
が実行可能な、コンピュータ・プログラム命令をさらに備える、請求項１４に記載のコンピュータ・プログラム。
【請求項１７】
前記ハイパーバイザによって、追加のＵＳＢデバイスが前記ホストＵＳＢアダプタに結合されている旨の指標を受信することと、
前記ハイパーバイザによって、前記追加のＵＳＢデバイスに物理デバイス・アドレスを割り当てることと、
前記ハイパーバイザによって、前記追加のＵＳＢデバイスを記述する情報を含むデバイス記述子を前記追加のＵＳＢデバイスから取り出すことと、
前記ハイパーバイザによって、構成マネージャによって提供された情報から、前記追加のＵＳＢデバイスが現在論理区画に割り当てられているかどうかを判別することと、
前記追加のＵＳＢデバイスが現在１つまたは複数の論理区画に割り当てられている場合、前記ハイパーバイザによって、前記追加のＵＳＢデバイスが割り当てられた各論理区画に対するキュー・ペアを確立することと、
前記ハイパーバイザによって、前記追加のＵＳＢデバイスが割り当てられた各論理区画に、前記追加のＵＳＢデバイスの指標を提供することと、
が実行可能な、コンピュータ・プログラム命令をさらに備える、請求項１３に記載のコンピュータ・プログラム。
【請求項１８】
前記ハイパーバイザによって、特定のＵＳＢデバイスが前記ホストＵＳＢアダプタから切断された旨の指標を受信することと、
前記ハイパーバイザによって、前記特定のＵＳＢデバイスに関連付けられたすべてのキュー・ペアを使用不可にすることと、
前記ハイパーバイザによって、前記特定のＵＳＢデバイスが割り当てられた各論理区画に前記特定のＵＳＢデバイスの取り外しの指標を提供することと、
が実行可能な、コンピュータ・プログラム命令をさらに備える、請求項１３に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野はデータ処理であるか、またはより具体的に言えば、ホスト・ユニバーサル・シリアル・バス（「ＵＳＢ」）アダプタを仮想化するための方法、装置、およびコンピュータ・プログラムである。
【背景技術】
【０００２】
１９４８年のＥＤＶＡＣコンピュータ・システムの開発が、コンピュータ時代の始まりであるとしばしば言われる。その時から、コンピュータ・システムは非常に複雑なデバイスへと発達してきた。現在のコンピュータは、ＥＤＶＡＣのような初期のシステムよりもさらに高度化している。コンピュータ・システムは、通常、ハードウェアおよびソフトウェアのコンポーネント、アプリケーション・プログラム、オペレーティング・システム、プロセッサ、バス、メモリ、入力／出力デバイスなどの、組み合わせを含む。半導体処理およびコンピュータ・アーキテクチャの進化によってコンピュータの性能がさらに向上するにつれて、より高いハードウェア性能を利用するためのより高度なコンピュータ・ソフトウェアが開発されてきた結果、現在のコンピュータ・システムは、わずか数年前に比べてもはるかに強力である。
【０００３】
現在の多くの周辺コンピュータ・コンポーネントは、データ通信のために、ユニバーサル・シリアル・バス仕様に従ってアダプタに結合される。ＵＳＢアダプタは、本質的には２地点間通信であり、仮想化環境において区画間で容易に共有されない。現在のユーザは、ＵＳＢデバイスに接続するために１区画あたり少なくとも１つの物理ＵＳＢアダプタを必要とする。多くの区画を備えるかまたはデータ・センタ内にある大型システムの場合、この要件によって、多数の物理アダプタ、ならびにコスト、処理能力、コンピュータ・メモリの使用、および電力消費における、かなりの追加費用を要することにつながる。物理アダプタの数が増える結果として提示されるこれらのマイナス要因は、一部分はアダプタそのものに起因するが、関連付けられたＰＣＩ又はＰＣＩｅアダプタ・スロットを提供する必要があるエンクロージャにも起因する。
【０００４】
ＵＳＢアダプタの仮想化により、ＵＳＢデバイス、ハブ、アダプタ、およびエンクロージャにおける電力消費が引き下げられる。ＵＳＢデバイスを仮想化するためのソフトウェア・ソリューションが存在する。これらのソリューションは単一の共有キューを使用し、ここではＵＳＢフレームを単一の共有キューから多くの区画へとソートしなければならない。これは、ＣＰＵおよびメモリを多用する実装である。単一のキュー・ソリューションも性能が低い。
【０００５】
現在のＵＳＢデバイスは、一般に、キーボード、マウス、スピーカ、およびフラッシュ・ドライブ・デバイスを含む。ＵＳＢが成長を続け、より速い速度が可能になるにつれて、ますますＵＳＢはテープ・ドライブ、取り外し可能ハード・ディスク・ドライブ、および光ドライブに使用されるようになっている。区分化されたコンピュータ・システムにおける、効率的、低コスト、低電力でない、ＵＳＢの仮想化は重大な問題である。ＵＳＢ  ２．０の１０倍以上高速のＵＳＢ  ３．０は、さらに広範囲にわたるデバイスによって利用されることになる。帯域幅の追加によって、同じリンク上で同時により多くのデバイスが使用できる。業界は、テープ・ドライブおよび取り外し可能ハード・ドライブを、好ましい接続機構としてのＵＳＢに移行している。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
現在、改良されたＵＳＢの仮想化がますます求められている。
【課題を解決するための手段】
【０００７】
ハイパーバイザによって維持される仮想化環境において、ホスト・ユニバーサル・シリアル・バス（「ＵＳＢ」）アダプタを仮想化するための方法、装置、および製品が開示される。本発明の諸実施形態では、ハイパーバイザは１つまたは複数の論理区画を管理し、ホストＵＳＢアダプタの仮想化は、ハイパーバイザによって論理区画から論理ＵＳＢアダプタを介してＵＳＢ入力／出力（「Ｉ／Ｏ」）要求を受信することであって、この論理ＵＳＢアダプタはホストＵＳＢアダプタに結合されたＵＳＢデバイスに関連付けられる、受信することと、ハイパーバイザによって論理ＵＳＢアダプタに関連付けられたキュー・ペアのキュー内に作業キュー要素（「ＷＱＥ」）を配置することと、ＷＱＥに基づき、インターフェース・デバイスによって、ダイレクト・メモリ・アクセス（「ＤＭＡ」）を用いて、ＵＳＢデバイスで生じたＵＳＢデータをホストＵＳＢアダプタから論理ＵＳＢアダプタ用の専用メモリ領域へと取り出すことを含む、論理区画とＵＳＢデバイスとの間のＵＳＢデータ通信を管理することと、を含む。
【０００８】
本発明の前述および他の目的、特徴、および利点は、同様の参照番号が本発明の例示的諸実施形態の同様の部分を全体として表す添付の図面に示された、本発明の例示的諸実施形態についての以下のより具体的な説明から明らかになろう。
【図面の簡単な説明】
【０００９】
【図１】本発明の諸実施形態に従った、ホストＵＳＢアダプタを仮想化するための例示的システムを示すネットワーク図である。
【図２】本発明の諸実施形態に従った、ホストＵＳＢアダプタを仮想化するための例示的方法を示す流れ図である。
【図３】本発明の諸実施形態に従った、ホストＵＳＢアダプタを仮想化するための他の例示的方法を示す流れ図である。
【図４】本発明の諸実施形態に従った、ホストＵＳＢアダプタを仮想化するための他の例示的方法を示す流れ図である。
【図５】本発明の諸実施形態に従った、ホストＵＳＢアダプタを仮想化するための他の例示的方法を示す流れ図である。
【発明を実施するための形態】
【００１０】
本発明の諸実施形態に従ってホストＵＳＢアダプタを仮想化するための方法、装置、およびコンピュータ・プログラムについて、図１から始まる添付の図面を参照しながら説明する。図１は、本発明の諸実施形態に従った、ホストＵＳＢアダプタを仮想化するための例示的システムを示すネットワーク図である。図１のシステムは、本発明の諸実施形態に従ってホストＵＳＢアダプタを仮想化する際に役立つ例示的コンピュータ（１５２）を備える、自動化コンピューティング機構を含む。図１のコンピュータ（１５２）は、少なくとも１つのコンピュータ・プロセッサ（１５６）すなわち「ＣＰＵ」、ならびに、高速メモリ・バス（１６６）およびバス・アダプタ（１５８）を介してプロセッサ（１５６）とコンピュータ（１５２）の他のコンポーネントとに接続された、ランダム・アクセス・メモリ（１６８）（「ＲＡＭ」）を含む。
【００１１】
ＲＡＭ（１６８）には、コンピュータ・プログラム命令、コンピュータ・ハードウェアなどの、任意の組み合わせを備えることが可能な、自動化コンピューティング機構である、ハイパーバイザ（１３０）が格納される。図１の例におけるハイパーバイザ（１３０）は、仮想化環境を維持する。ハイパーバイザは仮想マシン・モニタ（ＶＭＭ）とも呼ばれ、複数のオペレーティング・システムが１つのホスト・コンピュータ上で同時に実行できるようにするために、ソフトウェアおよびハードウェアのプラットフォーム仮想化を実行する。ハイパーバイザはホストのハードウェア上で直接、ハードウェア・アクセスの制御およびゲスト・オペレーティング・システムの監視を実行する。ゲスト・オペレーティング・システムは、ハイパーバイザより上のレベルで実行する。ハイパーバイザによって提供されるプラットフォーム仮想化が、本明細書では仮想化環境と呼ばれる。仮想化環境とは、コンピューティング・プラットフォームの物理的特徴、すなわちコンピュータ・プロセッサ、コンピュータ・メモリ、Ｉ／Ｏアダプタなどが、オペレーティング・システムおよび他のソフトウェア・アプリケーションの観点から抽出される環境である。
【００１２】
図１の例では、ハイパーバイザ（１３０）は、２つの論理区画（１０６、１１８）を含む仮想化環境を維持する。本明細書で使用される用語としての論理区画とは、内部でオペレーティング・システムおよび他のアプリケーションが実行可能なハイパーバイザによって提供される、固有の仮想マシンのことである。各論理区画（１０６、１１８）は、アプリケーション（１０８、１２０）およびオペレーティング・システム（１１０、１２２）を含む。アプリケーション（１０８、１２０）は、ユーザ・レベルのデータ処理タスクを実行することができるコンピュータ・プログラム命令のモジュールである。こうしたアプリケーションの例には、当業者であれば思いつくであろう、ワード・プロセッシング・アプリケーション、スプレッドシート・アプリケーション、ウェブ・サーバ・アプリケーション、データベース管理アプリケーション、メディア・ライブラリ・アプリケーション、メディア再生アプリケーション、メディア変換アプリケーションなどが含まれる。本発明の諸実施形態に従ってホストＵＳＢアダプタを仮想化するシステムにおいて有用なオペレーティング・システムには、当業者であれば思いつくであろう、ＵＮＩＴ（ＴＭ）、Ｌｉｎｕｘ（ＴＭ）、Ｍｉｃｒｏｓｏｆｔ  ＸＰ（ＴＭ）、ＡＩＸ（ＴＭ）、ＩＢＭ社のｉ５／ＯＳ（ＴＭ）、およびその他が含まれる。
【００１３】
図１の例では、ハイパーバイザ（１３０）は、一般に、本発明の諸実施形態に従ったホストＵＳＢアダプタ（２０２）を仮想化するためにも動作する。ＵＳＢは、デバイスとホスト・コントローラとの間の通信を確立するための仕様である。ＵＳＢは、マウス、キーボード、デジタル・カメラ、プリンタ、パーソナル・メディア・プレーヤ、フラッシュ・ドライブ、および外付けハード・ドライブなどの、コンピュータ周辺装置を接続することができる。こうしたデバイスの多くでは、ＵＳＢは標準接続方法となってきている。ＵＳＢはパーソナル・コンピュータ用に設計されたが、スマートフォン、携帯情報端末（ＰＤＡ）、およびビデオ・ゲーム・コンソールなど、ならびに、デバイスとバッテリ充電用のコンセントに差し込まれるＡＣアダプタとの間の電源コードなどの、他のデバイスで普及してきた。ＵＳＢの設計は、コンピュータおよび電子産業から主要な企業を組み入れた業界規格化団体である、ＵＳＢインプリメンターズ・フォーラム（ＵＳＢ−ＩＦ）によって規格化される。
【００１４】
ＵＳＢデバイスは、ホストＵＳＢアダプタを介してホスト・コンピュータ・システムに結合される。図１の例では、ホストＵＳＢアダプタ（２０２）は、ＵＳＢハブ（２０４）を介して２つのＵＳＢデバイス（２０６、２０８）に結合される。ＵＳＢハブとは、多くのＵＳＢデバイスを、ホスト・コンピュータ又は他のハブ上の単一のＵＳＢポートに接続できるようにするデバイスである。
【００１５】
ハイパーバイザ（１３０）は、ホストＵＳＢアダプタ（２０２）に結合されたＵＳＢデバイス（２０６、２０８）のＵＳＢデバイス発見を開始することによって、
ホストＵＳＢアダプタ（２０２）を仮想化することができる。ＵＳＢデバイス（２０６、２０８）のＵＳＢデバイス発見の開始は、発見された各ＵＳＢデバイスに物理デバイス・アドレス（１０５）を割り当てること、および、発見された各ＵＳＢデバイスからＵＳＢデバイスを記述する情報を含むデバイス記述子（１１７）を取り出すことを、含むことができる。デバイス記述子（１１７）は、たとえばＵＳＢデバイスのデバイス・クラス、ＵＳＢデバイスのベンダ識別子、ＵＳＢデバイスの製品識別子、およびＵＳＢデバイスのシリアル番号を含むことができる。
【００１６】
物理デバイス・アドレス（１０５）の割り当ては、デフォルトのターゲット・アドレスを使用してＵＳＢファブリックを探査すること、ＵＳＢデバイスに物理デバイス・アドレスを割り当てるために制御移行によって探査中に識別された各デバイスをプログラミングすることを含む、ＵＳＢ仕様によって定義されたような典型的な様式で実施することができる。ハイパーバイザ（１３０）は、は、デバイスの探査中に、現時点で発見されているＵＳＢデバイスが示された、テーブル、リスト、または論理ツリーなどの、データ構造を生成することができる。ハイパーバイザ（１３０）は、たとえば、物理デバイス・アドレス（１０５）およびデバイス記述子（１１７）間の関連性を含むテーブル（図示せず）を生成することができる。
【００１７】
ハイパーバイザ（１３０）は、構成マネージャ（２００）から、１つまたは複数の論理区画への発見された各ＵＳＢデバイス割り当て（１１９）を受信することもできる。構成マネージャとは、図１のコンピュータ（１５２）に関する構成メカニズムをユーザに提供する、自動化コンピューティング機構のモジュールである。構成マネージャ（２００）は、たとえば、ユーザ入力を取り込む際に介することが可能なグラフィカル・ユーザ・インターフェース（「ＧＵＩ」）を提示することができる。こうしたＧＵＩによって、ユーザは、たとえば論理区画（１０６、１１８）へのＵＳＢデバイス（２０６、２０８）の割り当てを含む、図１のコンピュータ（１５２）の様々なコンポーネントを構成することができる。図１の例の構成マネージャ（２００）は、ＧＵＩによって受信されたユーザ入力に応答して、１つまたは複数の論理区画への発見された各ＵＳＢデバイス割り当て（１１９）を指定することができる。こうした割り当て（１１９）の受信に応答して、ハイパーバイザ（１３０）は、物理デバイス・アドレス（１０５）と、論理デバイス・アドレス（１０３）、区画識別子（１０７）、およびデバイス記述子（１１７）との関連性を含む、図１の例示的デバイス・アドレス・テーブル（１５０）などの、割り当てを表すデータ構造を生成することができる。構成マネージャ（２００）は、ＵＳＢデバイス発見中にあらかじめ発見されなかったＵＳＢデバイスについて、ハイパーバイザに通知することもできる。こうしたデバイスは、現在、電力節約のために電源がオフになっている、修理に出されているなどの可能性がある。
【００１８】
ハイパーバイザ（１３０）は、論理区画（１０６、１１８）に割り当てられた各ＵＳＢデバイス（２０６、２０８）について、キュー・ペア（１３４＆１３６、１４６＆１４８）を確立することができる。さらにハイパーバイザは、区画に割り当てられた各ＵＳＢデバイスについて、別々の論理ＵＳＢアダプタ（１１６、１１８）を提示する。たとえば、３つのデバイスが割り当てられた論理区画の場合、ハイパーバイザは３つのキュー・ペアを確立することが可能であり、さらに、その論理区画に３つの別々の論理ＵＳＢアダプタを提示することが可能である。論理ＵＳＢアダプタとは、ＵＳＢデータ通信を実行するための手段として論理区画（１０６）に提示される自動化コンピューティング機構のモジュールであり、ここで論理ＵＳＢアダプタは、ホストＵＳＢアダプタ（２０２）に結合された特定のＵＳＢデバイスに関連付けられる。論理ＵＳＢアダプタは、区画の観点からすると、ホストＵＳＢアダプタ（２０２）の抽出である。図１のシステムでは、論理区画内のオペレーティング・システムの観点からすると、実際は１つのハードウェアＵＳＢアダプタ（２０２）のみが存在する場合、論理区画に割り当てられた各ＵＳＢデバイスは異なるホストＵＳＢアダプタ、すなわち論理ＵＳＢアダプタに、直接結合される。１つのＵＳＢデバイスを複数の論理区画に割り当てることができる。ＵＳＢデバイスが割り当てられた各論理区画について、ハイパーバイザは別々のキュー・ペアを確立し、その区画に論理ＵＳＢアダプタを提示する。
【００１９】
論理区画に割り当てられた各ＵＳＢデバイスに対するキュー・ペアの確立に加えて、またその確立の後、ハイパーバイザは、論理区画に割り当てられた各ＵＳＢデバイスに、ＵＳＢデバイスの存在のインジケーションを提供することができる。こうしたインジケーションの後、区画（１０６、１１８）のオペレーティング・システム（１１０、１２２）は、ＵＳＢデバイスのためのデバイス・ドライバ（１１２、１２４）をロードすることができる。
【００２０】
ハイパーバイザは、論理ＵＳＢアダプタ（１１６、１２８）を介して論理区画（１０６、１１８）からＵＳＢ入力／出力（「Ｉ／Ｏ」）要求（１１４、１２６）を受信することによって、図１のホストＵＳＢアダプタ（２０２）を仮想化することもできる。各論理ＵＳＢアダプタ（１１６、１２８）は、ホストＵＳＢアダプタ（２０４）に結合されたＵＳＢデバイス（２０６、２０８）に関連付けられる。ハイパーバイザは、ハイパーバイザによって各区画に使用可能となった機能へのライブラリ機能呼び出しを受信することによって、ＵＳＢ  Ｉ／Ｏ要求（１１４、１２６）を受信することが可能であり、より具体的に言えば、デバイス・ドライバ（１１２、１２４）は、１つまたは複数のハイパーバイザ機能呼び出しを実行し、ＵＳＢデバイスから受信したＵＳＢデータを格納するためのメモリ領域を定義する仮想アドレス範囲、ＵＳＢデバイスを識別する論理デバイス・アドレス、および実行するＩ／Ｏのタイプなどの、ＵＳＢ  Ｉ／Ｏ要求のペイロード・データを、機能呼び出しへの引数として渡すことができる。
【００２１】
ハイパーバイザは、ＵＳＢ  Ｉ／Ｏ要求（１１４、１２６）に指定された仮想アドレス範囲に基づいて、専用メモリ領域（１９０、１９２）を登録することができる。ハイパーバイザは、メモリ・ページングから物理メモリ・セグメントをピンニング（pinning）すること、および仮想アドレス範囲を物理メモリ・セグメントにマッピングすることによって、専用メモリ領域（１９０、１９２）を登録することができる。こうした仮想アドレス範囲（１０９、１１３）の物理アドレス範囲（１１１、１１５）へのマッピングを、たとえばアドレス・テーブル（１９４、１９６）内などの、各区画（１０６、１１８）に関する別々のデータ構造内に格納することができる。
【００２２】
ハイパーバイザ（１３０）は、論理ＵＳＢアダプタ（１１６、１２８）に関連付けられたキュー・ペアのキュー（１３４、１３６、１４６、１４８）内に作業キュー要素（「ＷＱＥ」）を配置することもできる。キュー・ペアとは、仮想化されたホストＵＳＢアダプタに伝送／受信または送信／受信機能を提供する、２つのキューのセットである。キュー・ペアは、Ｈｏｓｔ  Ｅｔｈｅｒｎｅｔ  Ａｄａｐｔｅｒで実装されたキュー・ペアと同様の様式で、またはＩｎｆｉｎｉｂａｎｄ（ＴＭ）技術で、実装可能である。キュー・ペアのキュー内にＷＱＥを配置する際に、ハイパーバイザは、ＵＳＢ  Ｉ／Ｏ要求（１１４、１２６）に含まれるＵＳＢデバイス（２０６、２０８）の論理デバイス・アドレス（１０３）を、ＵＳＢデバイス（２０６、２０８）の物理デバイス・アドレス（１０５）に変換することができる。ＷＱＥとは、ＵＳＢデータ通信を介して実施されることになる送信または受信コマンドなどの特定の動作を定義する要素である。送信ＷＱＥはキュー・ペアの送信キュー内に配置することが可能であり、受信ＷＱＥはキュー・ペアの受信キュー内に配置することが可能である。ＷＱＥは、転送タイプ、ＵＳＢデバイスの物理デバイス・アドレス、エンドポイント識別子、および、専用メモリ領域の仮想アドレス範囲の指定を含む記述子リストを指定することができる。転送タイプは、大容量転送、割り込みタイプ転送、等時性（Isochronous）転送、または制御転送などの、実施するためのデータ通信転送のタイプを記述する。エンドポイント識別子は、通信パーティ、ＵＳＢデバイスによって公開される、インターフェースの識別子である。
【００２３】
各論理ＵＳＢアダプタ（１１６、１２８）は、各キュー・ペアの送信キューおよび受信キューに加えて、完了キュー（１３２、１４４）にも関連付けられる。完了キュー（１３２、１４４）は、ＷＱＥの完了を示す要素、完了キュー要素を格納するように構成される。完了キュー（１３２、１４４）には、完了キュー要素（「ＣＱＥ」）（１３８、１８４）が格納される。
【００２４】
図１のコンピュータは、インターフェース・デバイス（１０２）も含む。図１のインターフェース・デバイス（１０２）は、ＷＱＥに基づいて論理区画とＵＳＢデバイスとの間のＵＳＢデータ通信を管理するように構成された、自動化コンピューティング機構を備える。図１の例におけるインターフェース・デバイス（１０２）は、ダイレクト・メモリ・アクセス（「ＤＭＡ」）エンジン（１０４）も含む。ＵＳＢデータ通信を管理する際に、インターフェース・デバイス（１０２）は、ＤＭＡを用いて、ＵＳＢデバイス（２０６、２０８）で生じたＵＳＢデータをホストＵＳＢアダプタ（２０２）から論理ＵＳＢアダプタ（１１６、１２８）用の専用メモリ領域（１９０、１９２）へと取り出すことができる。ＤＭＡは、コンピュータ内のハードウェア・サブシステムが、中央処理ユニットとは無関係に読み取りおよび書き込みのためにシステム・メモリにアクセスできるようにする、最新のコンピュータおよびマイクロプロセッサの機能である。多くのハードウェア・システムは、ディスク・ドライブ・コントローラ、グラフィックス・カード、ネットワーク・カード、およびサウンド・カードを含む、ＤＭＡを使用する。ＤＭＡは、複数コア・プロセッサ内での、特に、その処理要素にローカル・メモリ（しばしばスクラッチパッド・メモリと呼ばれる）が装備され、ＤＭＡがローカル・メモリとメイン・メモリとの間でデータを転送するために使用される、オンチップ・マルチプロセッサ・システム内での、チップ間データ転送にも使用される。ＤＭＡチャネルを有するコンピュータは、ＤＭＡチャネルを有さないコンピュータに比べてはるかに少ないＣＰＵオーバヘッドで、デバイスとの間でデータを転送することができる。同様に、マルチコア・プロセッサ内部の処理要素は、そのプロセッサ時間を占有することなく、また計算およびデータ転送の同時実行を可能にしながら、そのローカル・メモリとの間でデータを転送することが可能である。
【００２５】
インターフェース・デバイスは、物理デバイス・アドレスおよびパケット識別子（「ＰＩＤ」）に基づいて、ホストＵＳＢアダプタによって受信された着信データのＵＳＢフレーム・ルーティングを実行する。ＵＳＢフレーム内のＰＩＤは、ＵＳＢフレームのタイプを識別する。例示的なＰＩＤには、ＳＰＬＩＴ、ＰＩＮＧ、ＰＲＥ、ＥＲＲ、ＡＣＫ、ＮＡＣＫ  ＮＹＥＴ、ＳＴＡＬＬ、ＯＵＴ、ＩＮ、ＳＯＦ、ＳＥＴＵＰ、ＤＡＴＡ０、ＤＡＴＡ１、ＤＡＴＡ２、ＭＤＡＴＡなどが含まれる。ＰＩＤおよびデバイス・アドレスを使用して、インターフェース・デバイスによって関連付けられたＷＱＥおよびＷＱＥからの専用メモリの仮想アドレス範囲を識別することができる。インターフェース・デバイスは、ＷＱＥならびにアドレス・テーブル（１９４、１９６）に含まれる仮想アドレス範囲を使用して、仮想アドレスを物理アドレスに変換し、ＤＭＡをその物理アドレス範囲に直接変換することができる。
【００２６】
ＲＡＭ（１６８）内には、論理区画（１０６、１１８）、アプリケーション（１０８、１２０）、オペレーティング・システム（１１０、１２２）、デバイス・ドライバ（１１２、１２４）、ＵＳＢ  Ｉ／Ｏ要求（１１４、１２６）、論理ＵＳＢアダプタ（１１６、１２８）、ハイパーバイザ（１３０）、キュー・ペア（１３４＆１３６、１４６＆１４８）、他のデータ、データ構造、および図１の例におけるコンピュータ・プログラム命令のモジュールが示されているが、こうしたソフトウェアの多くのコンポーネントは、たとえばディスク・ドライブ（１７０）などの不揮発性メモリ内にも格納される。
【００２７】
図１のコンピュータ（１５２）は、拡張バス（１６０）およびバス・アダプタ（１５８）を介してプロセッサ（１５６）およびコンピュータ（１５２）の他のコンポーネントに結合された、ディスク・ドライブ・アダプタ（１７２）を含む。ディスク・ドライブ・アダプタ（１７２）は、不揮発性データ・ストレージをディスク・ドライブ（１７０）の形でコンピュータ（１５２）に接続する。本発明の諸実施形態に従ってホストＵＳＢアダプタを仮想化するためにコンピュータ内で有用なディスク・ドライブ・アダプタは、当業者であれば思いつくであろうＩｎｔｅｇａｔｅｄ  Ｄｒｉｖｅ  Ｅｅｃｔｒｏｎｉｃｓ（「ＩＤＥ」）アダプタ、Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（「ＳＣＳＩ」）アダプタ、およびその他を含む。不揮発性コンピュータ・メモリは、当業者であれば思いつくであろう光ディスク・ドライブ、電気消去可能プログラマブル読み取り専用メモリ（いわゆる「ＥＥＰＲＯＭ」または「フラッシュ」メモリ）、ＲＡＭドライブなどとしても実装可能である。
【００２８】
図１の例示的コンピュータ（１５２）は、１つまたは複数の入力／出力（「Ｉ／Ｏ」）アダプタ（１７８）を含む。Ｉ／Ｏアダプタは、たとえば、ソフトウェア・ドライブおよびコンピュータ・ハードウェアを介して、コンピュータ・ディスプレイなどのディスプレイ・デバイスへの出力、ならびにキーボードおよびマウスなどのユーザ入力デバイス（１８１）からのユーザ入力を制御するための、ユーザ指向入力／出力を実装する。図１の例示的コンピュータ（１５２）は、ディスプレイ画面またはコンピュータ・モニタなどのディスプレイ・デバイス（１８０）へのグラフィック出力向けに特別に設計されたＩ／Ｏアダプタの一例である、ビデオ・アダプタ（２０９）を含む。ビデオ・アダプタ（２０９）は、高速ビデオ・バス（１６４）、バス・アダプタ（１５８）、および、同じく高速バスであるフロント・サイド・バス（１６２）を介して、プロセッサ（１５６）に接続される。
【００２９】
図１の例示的コンピュータ（１５２）は、他のコンピュータ（１８２）とのデータ通信用、およびデータ通信ネットワーク（１００）とのデータ通信用の、通信アダプタ（１６７）を含む。こうしたデータ通信は、ＲＳ−２３２接続を介して、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（「ＵＳＢ」）などの外部バスを介して、ＩＰデータ通信ネットワークなどのデータ通信ネットワークを介して、および当業者であれば思いつくであろう他の方法で、順次実施することができる。通信アダプタは、１つのコンピュータが他のコンピュータへ、直接またはデータ通信ネットワークを介してデータ通信を送信する際に介するハードウェア・レベルのデータ通信を実装する。本発明の諸実施形態に従ってホストＵＳＢアダプタを仮想化するために有用な通信アダプタの例には、有線ダイアルアップ通信用モデム、有線データ通信ネットワーク通信用Ｅｔｈｅｒｎｅｔ（ＩＥＥＥ  ８０２．３）アダプタ、および無線データ通信ネットワーク通信用８０２．１１アダプタが含まれる。
【００３０】
図１に示された例示的システムを構成しているサーバおよび他のデバイスの配置構成は、説明のためであり、限定的なものではない。本発明の様々な実施形態に従った有用なデータ処理システムは、当業者であれば思いつくであろう、図１に示されていない追加のサーバ、ルータ、他のデバイス、およびピアツーピア・アーキテクチャを含むことができる。こうしたデータ処理システムにおけるネットワークは、
たとえば、当業者であれば思いつくであろう、ＴＣＰ（伝送制御プロトコル）、ＩＰ（インターネット・プロトコル）、ＨＴＴＰ（ハイパーテキスト転送プロトコル）、ＷＡＰ（無線アクセス・プロトコル）、ＨＤＴＰ（ハンドヘルド・デバイス転送プロトコル）、およびその他を含む、多くのデータ通信プロトコルをサポートすることができる。本発明の様々な実施形態は、図１に示されたものに加えて様々なハードウェア・プラットフォーム上で実装可能である。
【００３１】
さらに詳細に説明するために、図２は、本発明の諸実施形態に従ってホストＵＳＢアダプタを仮想化するための例示的方法を示す流れ図を示す。図２の方法は、１つまたは複数の論理区画（図１の１０６、１１８）を管理するハイパーバイザ（１３０）によって維持される、仮想化環境内で実施される。
【００３２】
図２の方法は、ハイパーバイザ（１３０）により、論理ＵＳＢアダプタを介して論理区画からＵＳＢ  Ｉ／Ｏ要求（２１２）を受信すること（２１０）を含む。図２の方法では、ホストＵＳＢアダプタに結合されたＵＳＢデバイスに関連付けられた論理ＵＳＢアダプタはホストＵＳＢアダプタに結合される。同様に図２の方法では、ＵＳＢ  Ｉ／Ｏ要求（２１２）は、登録するメモリ領域を指定する、仮想アドレス範囲（２１４）と、ＵＳＢデバイスを識別する論理デバイス・アドレスとを含む。
【００３３】
図２の方法は、ＵＳＢ  Ｉ／Ｏ要求（２１２）に指定された仮想アドレス範囲（２１４）に基づいて、専用メモリ領域（１９０）を登録すること（２１８）も含む。前述のように、ハイパーバイザは、ＤＭＡ転送を実行する際にインターフェース・デバイスによって後に使用するための物理アドレス・マッピングへの仮想アドレスのページングおよび格納から、メモリ領域をピンニングすることによって、専用メモリ領域（１９０）を登録すること（２１８）ができる。
【００３４】
図２の方法は、ハイパーバイザ（１３０）によって、論理ＵＳＢアダプタに関連付けられたキュー・ペア（１３４、１３６）のキュー（１３６）内にＷＱＥ（１４０）を配置すること（２２０）も含む。図２の方法では、キュー（１３６）内にＷＱＥ（１４０）を配置すること（２２０）は、ＵＳＢ  Ｉ／Ｏ要求（２１８）に含まれるＵＳＢデバイスの論理デバイス・アドレス（２１６）を、ＵＳＢデバイスの物理デバイス・アドレス（２３２）に変換すること（２２２）を含む。図２の方法では、ＷＱＥ（１４０）は、転送タイプ（２３０）、ＵＳＢデバイスの物理デバイス・アドレス（２３２）、エンドポイント識別子（２３４）、および、専用メモリ領域（１９０）の仮想アドレス範囲（２１４）の指定を含む記述子リスト（２３６）を含む。
【００３５】
図２の方法は、ＷＱＥ（１４０）に基づき、論理区画とＵＳＢデバイスとの間のＵＳＢデータ通信をインターフェース・デバイス（１０２）によって管理すること（２２６）も含む。図２の方法では、ＵＳＢデータ通信を管理すること（２２６）は、ＤＭＡを用いて、ＵＳＢデバイスで生じたＵＳＢデータ（２２４）をホストＵＳＢアダプタから論理ＵＳＢアダプタ用の専用メモリ領域（１９０）へと取り出すこと（２２８）によって実施される。
【００３６】
さらに詳細に説明するために、図３は、本発明の諸実施形態に従った、ホストＵＳＢアダプタを仮想化するための他の例示的方法を示す流れ図を示す。図３の方法は、図３の方法が、１つまたは複数の論理区画（図１の１０６、１１８）を管理するハイパーバイザ（１３０）によって維持される仮想化環境内で実施されるという点において、図２の方法と同様である。図３の方法は、図３の方法が、ＵＳＢ  Ｉ／Ｏ要求（２１２）を受信すること（２１０）と、論理ＵＳＢアダプタに関連付けられたキュー・ペア（１３４、１３６）のキュー（１３６）内にＷＱＥ（１４０）を配置すること（２２０）と、ＤＭＡを用いて、ＵＳＢデータ（２２４）をホストＵＳＢアダプタから論理ＵＳＢアダプタ用の専用メモリ領域（１９０）へと取り出すこと（２２８）により、論理区画とＵＳＢデバイスとの間のＵＳＢデータ通信を管理すること（２２６）とを含む、という点においても、図２の方法と同様である。
【００３７】
しかしながら図３の方法は、図３の方法が、ハイパーバイザ（１３０）によって、ホストＵＳＢアダプタに結合されたＵＳＢデバイスのＵＳＢデバイス発見を開始すること（３０２）も含むという点において、図２の方法とは異なる。図２の方法では、ホストＵＳＢアダプタに結合されたＵＳＢデバイスのＵＳＢデバイス発見を開始すること（３０２）は、発見された各ＵＳＢデバイスに物理デバイス・アドレス（３１０）を割り当てること（３０４）、および、発見された各ＵＳＢデバイスから、ＵＳＢデバイスを記述する情報を含むデバイス記述子（３１２）を取り出すこと（３０６）によって、実施される。ハイパーバイザは、発見された各デバイスの物理デバイス・アドレス（３１０）およびデバイス記述子（３１２）を含む、現在発見されているＵＳＢデバイスのテーブル（３０８）を生成することができる。
【００３８】
図３の方法は、ハイパーバイザ（１３０）によって、１つまたは複数の論理区画（３１８）への発見された各ＵＳＢデバイスの割り当て（３１６）を構成マネージャから受信すること（３１４）も含む。図３の方法は、ハイパーバイザ（１３０）によって、論理区画に割り当てられた各ＵＳＢデバイスに対してキュー・ペア（１３４、１３６）を確立すること（３２０）も含む。
【００３９】
さらに詳細に説明するために、図４は、本発明の諸実施形態に従った、ホストＵＳＢアダプタを仮想化するための他の例示的方法を示す流れ図を示す。図４の方法は、図４の方法が、１つまたは複数の論理区画（図１の１０６、１１８）を管理するハイパーバイザ（１３０）によって維持される仮想化環境内で実施されるという点において、図２の方法と同様である。図４の方法は、図４の方法が、ＵＳＢ  Ｉ／Ｏ要求（２１２）を受信すること（２１０）と、論理ＵＳＢアダプタに関連付けられたキュー・ペア（１３４、１３６）のキュー（１３６）内にＷＱＥ（１４０）を配置すること（２２０）と、ＤＭＡを用いて、ＵＳＢデータ（２２４）をホストＵＳＢアダプタから論理ＵＳＢアダプタ用の専用メモリ領域（１９０）へと取り出すこと（２２８）により、論理区画とＵＳＢデバイスとの間のＵＳＢデータ通信を管理すること（２２６）とを含む、という点においても、図２の方法と同様である。
【００４０】
しかしながら図４の方法は、図４の方法が、ハイパーバイザによって、追加のＵＳＢデバイスがホストＵＳＢアダプタに結合されている旨の指標を受信すること（４０２）も含むという点において、図２の方法とは異なる。ハイパーバイザによって、追加のＵＳＢデバイスがホストＵＳＢアダプタに結合されている旨の指標を受信すること（４０２）は、たとえば、ダウンストリームＵＳＢハブまたはホストＵＳＢアダプタへの追加ＵＳＢデバイスの接続時に発生するハードウェア割り込みを受信することを含む、様々な方法で実施することができる。
【００４１】
図４の方法は、ハイパーバイザ（１３０）によって、追加のＵＳＢデバイスに物理デバイス・アドレスを割り当てること（４０４）、ハイパーバイザ（１３０）によって、追加のＵＳＢデバイスを記述する情報を含むデバイス記述子を追加のＵＳＢデバイスから取り出すこと（４０６）、および、ハイパーバイザ（１３０）によって、構成マネージャから提供された情報から追加のＵＳＢデバイスが現在論理区画に割り当てられているかどうかを判別すること（４０８）も含む。追加のＵＳＢデバイスが現在論理区画に割り当てられているかどうかを判別すること（４０８）は、追加のＵＳＢデバイスのシリアル番号および任意の関連付けられた区画識別子（３１８）などの、デバイス記述子またはデバイス記述子の一部（３１２）に対するデバイス割り当てのテーブル（３１６）を検査することによって、実施することができる。
【００４２】
追加のＵＳＢデバイスが現在１つまたは複数の論理区画に割り当てられていない場合、図４の方法は、ハイパーバイザ（１３０）によって、ＵＳＢデバイスに対するキュー・ペアを確立しないこと（４１４）によって続行される。追加のＵＳＢデバイスが現在１つまたは複数の論理区画に割り当てられている場合、図４の方法は、ハイパーバイザ（１３０）によって、追加のＵＳＢデバイスが割り当てられた各論理区画に対するキュー・ペア（１３４、１３６）を確立すること（４１０）によって続行される。
【００４３】
図４の方法は、ハイパーバイザ（１３０）によって、追加のＵＳＢデバイスが割り当てられている各論理区画に、追加のＵＳＢデバイスの指標を提供すること（４１２）も含む。ハイパーバイザは、こうした目的用にオペレーティング・システムが指定されている区画内でソフトウェア割り込みを発生させること、または当業者であれば思いつくであろう他の方法で、追加のＵＳＢデバイスが割り当てられている各論理区画に、追加のＵＳＢデバイスの指標を提供すること（４１２）が可能である。
【００４４】
さらに詳細に説明するために、図５は、本発明の諸実施形態に従った、ホストＵＳＢアダプタを仮想化するための他の例示的方法を示す流れ図を示す。図５の方法は、図５の方法が、１つまたは複数の論理区画（図１の１０６、１１８）を管理するハイパーバイザ（１３０）によって維持される仮想化環境内で実施されるという点において、図２の方法と同様である。図５の方法は、図５の方法が、ＵＳＢ  Ｉ／Ｏ要求（２１２）を受信すること（２１０）と、論理ＵＳＢアダプタに関連付けられたキュー・ペア（１３４、１３６）のキュー（１３６）内にＷＱＥ（１４０）を配置すること（２２０）と、ＤＭＡを用いて、ＵＳＢデータ（２２４）をホストＵＳＢアダプタから論理ＵＳＢアダプタ用の専用メモリ領域（１９０）へと取り出すこと（２２８）により、論理区画とＵＳＢデバイスとの間のＵＳＢデータ通信を管理すること（２２６）とを含む、という点においても、図２の方法と同様である。
【００４５】
しかしながら図５の方法は、図５の方法が、ハイパーバイザ（１３０）によって、特定のＵＳＢデバイスがホストＵＳＢアダプタから切断された旨の指標を受信すること（５０２）、ハイパーバイザ（１３０）によって、この特定のＵＳＢデバイスに関連付けられたすべてのキュー・ペアを使用不可にすること（５０４）、および、ハイパーバイザ（１３０）によって、この特定のＵＳＢデバイスが割り当てられた各論理区画にこの特定のＵＳＢデバイスの取り外しの指標を提供すること（５０６）も含むという点において、図２の方法とは異なる。
【００４６】
前述の説明から鑑みて、本発明の諸実施形態に従ってホストＵＳＢアダプタを仮想化することの利点が、以下の点を含むことを理解されよう。
・１つの物理ハードウェアが多くの区画によって共有される。顧客はＵＳＢ接続を達成するために、各論理区画用に別々のアダプタを購入する必要がない。これにより、アダプタの費用と、アダプタの格納装置、ケーブル接続、および他の物理属性との、両方が節約される。
・デバイス・ドライバ間または区画間の調整が不要である。
・完全なハードウェア分離および保護が提供される。たとえその区画が挙動不良であっても、仮想化ＵＳＢハードウェアを介して他の区画を破損する可能性はない。
・本発明の諸実施形態に従った仮想化を採用するために、既存のＵＳＢインフラストラクチャを変更する必要はまったくない。諸実施形態は、標準の市販のコンポーネントおよび管理ソフトウェアと、完全に相互運用可能とすることができる。
・ＵＳＢアダプタは、通常のホストＵＳＢアダプタに対してネットワークとして出現する。
・論理ＵＳＢアダプタは、適切に実装されたＵＳＢアダプタとまったく同様にコピーの書き込み／読み取りを提供しないため、論理ＵＳＢアダプタの仕様に関連付けられた性能に不利な条件に制限されない。
・アダプタ、アダプタの格納装置、およびＵＳＢデバイスの数が削減されることによって、大幅な電力節約が可能である。
・ＵＳＢアダプタを仮想化することにより、ＣＰＵ処理能力およびメモリの大幅な節約が可能である。
・ＵＳＢのための現在のオペレーティング・システム・デバイス・ドライバは変更することなく、本発明の諸実施形態に従って仮想化されたＵＳＢホスト・アダプタと共に動作可能である。
【００４７】
当業者であれば理解できるように、本発明の諸態様は、システム、方法、またはコンピュータ・プログラム製品として具体化可能である。したがって、本発明の諸態様は、すべてが本明細書では一般に「回路」、「モジュール」、または「システム」と呼ばれることのある、完全なハードウェア実施形態、完全なソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェアおよびハードウェアの諸態様を組み合わせた実施形態の形をとることができる。さらに、本発明の諸態様は、具体化されたコンピュータ読み取り可能プログラム・コードを有する、１つまたは複数のコンピュータ読み取り可能媒体において具体化されたコンピュータ・プログラム製品の形を取ることができる。
【００４８】
１つまたは複数のコンピュータ読み取り可能媒体の任意の組み合わせが利用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能ストレージ媒体とすることができる。コンピュータ読み取り可能ストレージ媒体は、たとえば電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイス、あるいはそれらの任意の好適な組み合わせとすることができるが、これらに限定されない。コンピュータ読み取り可能ストレージ媒体のより具体的な例（網羅的なリストではない）には、１本または複数の線を有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、またはこれらの任意の好適な組み合わせが含まれることになる。本書との関連において、コンピュータ読み取り可能ストレージ媒体は、命令実行システム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを、包含または格納可能な、任意の有形媒体とすることができる。
【００４９】
コンピュータ読み取り可能信号媒体は、たとえば帯域幅内で、または搬送波の一部として、内部に具体化されたコンピュータ読み取り可能プログラム・コードを備えた、伝搬データ信号を含むことができる。こうした伝搬信号は、電磁、光、またはそれらの好適な組み合わせを含むがこれらに限定されない、様々な形のいずれかを取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能ストレージ媒体ではなく、命令実行システム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを通信、伝搬、または移送することが可能な、任意のコンピュータ読み取り可能媒体とすることができる。
【００５０】
コンピュータ読み取り可能媒体上で具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、またはこれらの任意の好適な組み合わせを含むがこれらに限定されない、任意の適切な媒体を使用して伝送可能である。
【００５１】
本発明の諸態様に関する動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋など、および、「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続きプログラミング言語などの、オブジェクト指向プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで作成することができる。プログラム・コードは、全体としてユーザのコンピュータ上で、一部はスタンドアロン型ソフトウェア・パッケージとしてユーザのコンピュータ上で、一部はユーザのコンピュータ上かつ一部はリモート・コンピュータ上で、あるいは全体としてリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介して、ユーザのコンピュータに接続可能であるか、または（たとえばインターネット・サービス・プロバイダを介して）外部コンピュータへと接続することが可能である。
【００５２】
以上、本発明の諸態様について、本発明の諸実施形態に従った方法、装置（システム）、およびコンピュータ・プログラム製品の流れ図あるいはブロック図またはその両方を参照しながら説明した。流れ図あるいはブロック図またはその両方の各ブロック、ならびに、流れ図あるいはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装可能であることを理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特定用途向けコンピュータ、または他のプログラマブル・データ処理装置の、プロセッサに提供し、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、流れ図あるいはブロック図またはその両方のブロックで指定された機能／動作を実装するための手段を作成するようなマシンを作成することができる。
【００５３】
コンピュータ読み取り可能媒体に格納された命令が、流れ図あるいはブロック図またはその両方のブロックで指定された機能／動作を実装する命令を含む製品を製造するように、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスが、特定の様式で機能するように命令可能な、これらのコンピュータ・プログラム命令は、コンピュータ読み取り可能媒体内に格納することもできる。
【００５４】
コンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル装置上で実行する命令が、流れ図あるいはブロック図またはその両方のブロックで指定された機能／動作を実装するためのプロセスを提供するように、コンピュータ実施プロセスを作成するために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるように、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードすることもできる。
【００５５】
図面における流れ図およびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この点で、流れ図またはブロック図における各ブロックは、コードのモジュール、セグメント、または一部を表し、指定された論理機能を実装するための１つまたは複数の実行可能命令を備える。いくつかの代替実装では、ブロック内に示された機能が、図に示された順序以外で実行可能であることにも留意されたい。たとえば、連続して示された２つのブロックが、実際にはほぼ同時に実行可能であるか、またはそのブロックが、関連する機能に応じて時には逆の順序で実行可能な場合がある。ブロック図あるいは流れ図またはその両方の各ブロック、および、ブロック図あるいは流れ図またはその両方におけるブロックの組み合わせが、指定された機能または動作、あるいは特定用途向けハードウェアおよびコンピュータ命令の組み合わせを実行する、特定用途向けハードウェア・ベース・システムによって実装可能であることにも留意されたい。
【００５６】
前述の説明から、本発明の様々な実施形態において、その趣旨を逸脱することなく、修正および変更が可能であることを理解されよう。本明細書の説明は単に例示を目的としており、限定的な意味で解釈されるべきではない。本発明の範囲は、以下の特許請求の範囲の記述によってのみ限定されるものである。
【符号の説明】
【００５７】
１００    ネットワーク
１０２    インターフェース・デバイス
１０３    論理アドレス
１０４    ダイレクト・メモリ・アクセス
１０５    デバイス・アドレス
１０６、１１８    区画
１０７    区画ＩＤ
１０８、１２０    アプリケーション
１０９、１１３    仮想アドレス
１１０、１２２    オペレーティング・システム
１１１、１１５    物理アドレス
１１２、１２４    デバイス・ドライバ
１１４、１２６    ＵＳＢ  Ｉ／Ｏ要求
１１６、１２８    論理ＵＳＢアダプタ
１１７    記述子
１１９    デバイス割り当て
１３０    ハイパーバイザ
１３２、１４４    完了キュー
１３４、１４６    ＲＱ
１３６、１４８    ＳＱ
１３８、１８４    完了キュー要素
１４０、１４２、１８６、１８８    作業キュー要素
１５０    デバイス・アドレス・テーブル
１５２    コンピュータ
１５６    プロセッサ
１５８    バス・アダプタ
１６０    拡張バス
１６２    フロント・サイド・バス
１６４    ビデオ・バス
１６６    メモリ・バス
１６７    通信アダプタ
１６８    ランダム・アクセス・メモリ
１７０    ディスク・ドライブ
１７２    ドライブ・アダプタ
１７８    Ｉ／Ｏアダプタ
１８０    ディスプレイ
１８１    ユーザ入力デバイス
１８２    他のコンピュータ
１９０、１９２    専用メモリ領域
１９４、１９６    アドレス・テーブル
２００    構成マネージャ
２０２    ホストＵＳＢアダプタ
２０４    ＵＳＢハブ
２０６、２０８    ＵＳＢデバイス
２０９    ビデオ・アダプタ
【図１】
0006004608.tif 000002
【図２】
0006004608.tif 000003
【図３】
0006004608.tif 000004
【図４】
0006004608.tif 000005
【図５】
0006004608.tif 000006