(57)【特許請求の範囲】
【請求項１】
ホストワイヤアダプタと、前記ホストワイヤアダプタとワイヤレス通信を行うデバイスワイヤアダプタと、デバイスワイヤアダプタに接続されたＵＳＢ対応デバイスとを有しているワイヤレスＵＳＢシステムのためのスループットを増大させるための方法であって、
前記ＵＳＢ対応デバイスから転送を受信するために、前記ホストワイヤアダプタに関連づけられたデータバッファの利用可能性を決定することと、
前記データバッファの前記利用可能性に基づいてメッセージを生成することと、
前記データバッファが前記転送を受信することが利用可能である場合、前記メッセージとしてＩＮトークンを前記デバイスワイヤアダプタに提供することと、前記ＩＮトークンは転送結果をポーリングするために使用され、前記転送結果は、いつ前記転送が完了するかを決定するために前記ホストワイヤアダプタにより使用される、
を備える、方法。
【請求項２】
前記ＵＳＢ対応デバイスは、前記デバイスワイヤアダプタからのダウンストリームである、
請求項１に記載の方法。
【請求項３】
前記デバイスワイヤアダプタが、前記ＵＳＢ対応デバイスから前記転送を受信した後、前記ＩＮトークンに応答して、前記ホストワイヤアダプタへ、前記転送結果を送信することと
前記デバイスワイヤアダプタが、前記転送結果を送信した後、前記転送を前記ホストワイヤアダプタへ送信することと、
をさらに備える、請求項２に記載の方法。
【請求項４】
前記デバイスワイヤアダプタが、受信された前記転送を複数の転送セグメントにセグメント化することと、
前記デバイスワイヤアダプタから前記ホストワイヤアダプタへと、前記複数の転送セグメントを転送することと、
を含んでいる請求項２に記載の方法。
【請求項５】
前記複数の転送セグメントはサイズが異なる、請求項４に記載の方法。
【請求項６】
前記セグメント化することは、与えられたシチュエーションについてのスループットを最大化させるために、前記複数の転送セグメントのうち少なくとも１つのサイズを動的に適応的に調節することを含んでいる、請求項４に記載の方法。
【請求項７】
前記ホストワイヤデバイスから転送を受信するために、前記デバイスワイヤアダプタに関連づけられたデータバッファの利用可能性を決定することと、
前記データバッファの前記利用可能性に基づいてメッセージを生成することと、
前記データバッファが前記転送を受信することが利用可能でない場合、前記メッセージとしてネガティブアクナレッジメントを前記ホストワイヤアダプタに提供すること、をさらに備える
請求項１に記載の方法。
【請求項８】
前記ホストワイヤアダプタから前記デバイスワイヤアダプタへと、前記転送を送ることと、
前記デバイスワイヤアダプタのアップストリームポート上で、前記ホストワイヤアダプタから前記転送を受信することと、
最小量のデータが前記デバイスワイヤアダプタの前記アップストリームポートから受信されるとき、前記デバイスワイヤアダプタの前記アップストリームポートから前記デバイスワイヤアダプタのダウンストリームポートへと、前記転送を自動転送することと、
を含んでいる請求項７に記載の方法。
【発明の詳細な説明】
【分野】
【０００１】
本発明は、一般的に、認定ワイヤレスユニバーサルシリアルバス(Wireless Universal Serial Bus)（ＷＵＳＢ）のインタフェースに関する。より具体的には、本発明は、認定ワイヤレスＵＳＢのワイヤアダプタシステム(Certified Wire adapter system)のスループット(throughput)を改善することに関する。
【背景】
【０００２】
ユニバーサルシリアルバス(Universal Serial Bus)（ＵＳＢ）は、ホストコンピューティングデバイス(host computing device)に、電子周辺装置(electronic peripheral devices)を取りつける(attaching)ためのシリアルバス標準である。それは、パソコンのために設計されたが、その人気は、テレビゲームコンソール、ＰＤＡｓ、ポータブルＤＶＤプレーヤー、モバイル電話、及び他の人気の電子機器(electronic devices)に関してもまた陳腐化になるように駆り立てた。ＵＳＢの目標は、コンピュータ上でより古いシリアルでパラレルなポートを置き換えることである、というのは、これらは、たくさんのデバイスドライバ(device drivers)が開発され維持されるように、標準化されておらず、必要とされていなかった(called for)。
【０００３】
ＵＳＢは、コンピュータの拡張バスに拡張カードを差し込む必要性がなく、周辺装置が接続されることを可能にするように、そして、デバイスがホットスワップされる(hot-swapped)ことを可能にしてプラグアンドプレイ(plug-and-play)機能を改善するように、設計されており、ここにおいて、デバイスは、コンピュータの電源を切るあるいは再起動することなく接続されている、あるいは、接続が切れられている。デバイスが最初に接続されるとき、ホストは、それを列挙し(enumerates)、認識し、そして、そのデバイスにとって必要とされるデバイスドライバをロードする。
【０００４】
ＵＳＢは、マウスデバイス、キーボード、スキャナ、デジタルカメラ、プリンタ、外部のストレージデバイス等のような周辺装置を接続し、そして、これらのデバイスの多くにとっての標準的な接続方法となった。
【０００５】
ワイヤレスユニバーサルシリアルバスの仕様書（２００５年５月１２日に公開されており、ＵＳＢインプリメンターフォーラム株式会社から入手可能）の改訂版１．０は、拡張されたＵＳＢ／ＷＵＳＢシステムにおけるワイヤレスリンクの使用を可能にするワイヤードＵＳＢに対する拡張を説明し、特定する。ＵＳＢの仕様書に対するこれらのワイヤレス拡張は、認定ワイヤレスユニバーサルシリアルバスあるいは単なるワイヤレスＵＳＢ(ＷＵＳＢ)を指している。拡張は、既存のワイヤードＵＳＢの仕様書及びＷｉＭｅｄｉａアライアンスＭＡＣ及びＰＨＹウルトラワイドバンド（ＵＷＢ）ワイヤレス技術を構築する。
【０００６】
ＷＵＳＢの仕様書は、ワイヤアダプタ(Wire Adapters)（ＷＡ）として知られているデバイスの説明及び仕様書を含む。これらのデバイスは、「レガシ(legacy)」ワイヤードＵＳＢホスト及びデバイスが、ワイヤードリンクとワイヤレスリンクの両方を含んでいる拡張されたＵＳＢシステムにおいてＷＵＳＢデバイスと相互接続されることを可能にする、ワイヤードＵＳＢアダプタツーワイヤレスＵＳＢアダプタ(wired-USB-to-Wireless-USB adapters)である。
【０００７】
２タイプのワイヤアダプタがあり、互いに関連して機能するホストワイヤアダプタ(Host Wire adapter)（ＨＷＡ)とデバイスワイヤアダプタ(Device Wire adapter)（ＤＷＡ)がある。ＨＷＡｓは、ワイヤード「アップストリーム(upstream)」ＵＳＢポートとワイヤレス「ダウンストリーム(downstream)」ＷＵＳＢポートとを有しており、ワイヤードＵＳＢホストがＷＵＳＢデバイスと通信することを可能にする。
【０００８】
ＤＷＡｓは、ワイヤレス「アップストリーム」ＷＵＳＢポートと、１以上のワイヤード「ダウンストリーム」ＵＳＢポートとを有しており、ワイヤードＵＳＢデバイス(wired USB device)がワイヤレスＵＳＢホスト(Wireless USB host)と通信することを可能にする。
【０００９】
ＷＵＳＢの仕様書のワイヤアダプタプロトコルは、ＷＡｓを通じてデータを転送するために、そして、ＷＡｓを制御し管理するために、使用される。残念ながら、典型的なシチュエーションにおいてＷＵＳＢの仕様書で指定されるようなワイヤアダプタプロトコルは、とても非効率であり、受け入れ難いくらい低いスループットを結果としてもたらす。プロトコルの非効率は、主に、２つの要因に起因しており、プロトコルは、転送されたデータの各ブロックについて(for each block of data transferred)、制御を伝達している多数の非データメッセージと、伝送完了ステータス情報とが、交換されるという点で、「チャティ(chatty)」である。さらに、プロトコルは、システムを通じたデータフローの「パイプライニング(pipelining)」にあまり適しておらず、データの転送の間に高いレイテンシ、したがって低いスループット、を結果としてもたらす。
【００１０】
したがって、ワイヤードＵＳＢデバイスとワイヤレスＵＳＢデバイス(wired and wireless USB devices)の両方を含んでいるＵＳＢシステムにおいて、デバイスのためのスループットを改善するための方法を有することが望ましいであろう。
【図面の簡単な説明】
【００１１】
【図１】図１は、従来技術にしたがったワイヤードＵＳＢのシステムの標準的な構成を示す。
【図２】図２は、ＷＵＳＢホストに直接取り付けられた「ネイティブ」ＷＵＳＢデバイスを備えたワイヤレスＵＳＢシステムのための構成を示す。
【図３】図３は、２つのワイヤードＵＳＢデバイスに接続された、デバイスワイヤアダプタを示す。
【図４】図４は、従来技術にしたがって、レガシワイヤードＵＳＢデバイスにワイヤレスＵＳＢ機能を提供するために、デバイスワイヤアダプタとホストワイヤアダプタとを組み込んでいるシステムを示す。
【図５】図５は、図４で図示されたワイヤレスＵＳＢシステムにわたって通信するために使用されたデータパケットのシーケンス(the sequence of data packets)を示す。
【図６Ａ】図６Ａ及び６Ｂは、従来技術にしたがって標準ワイヤアダプタプロトコルを使用しているＩＮリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図６Ｂ】図６Ａ及び６Ｂは、従来技術にしたがって標準ワイヤアダプタプロトコルを使用しているＩＮリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図７Ａ】図７Ａ及び７Ｂは、従来技術にしたがって標準ワイヤアダプタプロトコルを使用しているＯＵＴリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図７Ｂ】図７Ａ及び７Ｂは、従来技術にしたがって標準ワイヤアダプタプロトコルを使用しているＯＵＴリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図８】図８は、本発明にしたがって一実施形態としてエンハンスドワイヤアダプタプロトコルを使用しているＩＮリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図９】図９は、本発明にしたがって一実施形態としてエンハンスドワイヤアダプタプロトコルを使用しているＯＵＴリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図１０】図１０は、本発明にしたがって一実施形態としてワイヤレスＵＳＢのハブを示す。
【図１１】図１１は、本発明の一実施形態におけるＯＵＴ転送リクエスト自動転送(an OUT Transfer Request forwarding)のためのパケットのフロー及びプロセッシングを図示している図を示す。
【図１２】図１２は、本発明の一実施形態におけるＩＮ転送リクエスト自動転送(an IN Transfer Request forwarding)のためのパケットのフロー及びプロセッシングを図示している図を示す。
【詳細な説明】
【００１２】
本開示の態様は、添付図面を用いて読み取るときに、次の詳細な説明から最良に理解される。
【００１３】
本発明の一実施形態は、ホストシステムとワイヤードＵＳＢデバイスとの間でデータを無線で送信するワイヤアダプタを含むワイヤレスＵＳＢシステムのためのデータスループットを改善するためにエンハンスドワイヤアダプタプロトコルを提供する。このプロトコルを使用して、ワイヤアダプタは、自動的に着信データ転送(incoming data transfers)をより小さいセグメントにセグメント化しており、なお、ワイヤアダプタは、どのくらいのデータをフェッチする(fetch)かを決定するためにそのバッファステータスを使用する。データは、ワイヤアダプタがアップストリームから指定された最小量のデータを受信するときに、完了データセグメントを受信することを待機することなくダウンストリームで転送される。エンハンスドプロトコルはまた、転送完了メッセージを分配し(dispenses)、代わりに、データ転送が転送結果についてダウンストリームでポーリングすることによって完了したときに、決定する。ワイヤアダプタはまた、転送リクエスト(transfer requests)をダウンストリームへ自動転送するために、遠隔パイプディスクリプタと共に(in conjunction with remote pipe descriptors)自動転送パイプディスクリプタ(forward pipe descriptors)を利用する。
【００１４】
本発明の別の実施形態は、ワイヤードＵＳＢデバイスとホストシステムとの間のワイヤレス通信を可能にするワイヤレスＵＳＢ(ＷＵＳＢ)のハブを提供する。ＷＵＳＢハブは、ワイヤードＵＳＢデバイスのためのプロキシとして作用しており、それらを、ホストシステムに対して、ネイティブＷＵＳＢデバイスであるかのように提供する。ＷＵＳＢハブは、それ自体のデバイスアドレスを備えた固有のＷＵＳＢデバイスとして、あるいは、すでに既存のデバイス（例えばＷＵＳＢハブ、そしてそれはデバイスワイヤアダプタとして列挙することができる）上の個別機能として、取り付けられたワイヤードＵＳＢデバイス(attached wired USB device)を提供する。
【００１５】
本発明の実施形態は、ＷＵＳＢのワイヤアダプタシステムのスループットを改善することを含んでいる。一実施形態は、ＷＵＳＢのワイヤアダプタシステムのスループットを改善するために、ワイヤアダプタプロトコルをスリム化することを含んでいる。別の実施形態は、それらが「ネイティブ」ＷＵＳＢデバイスであるかのように、ＷＵＳＢハブに差し込まれたワイヤードＵＳＢデバイスを提供することを含む。この実施形態は、ＵＳＢデバイスプロキシＷＵＳＢハブ、あるいは単にＷＵＳＢハブを指す。
【００１６】
図１は、従来技術にしたがって、ワイヤードＵＳＢのシステムの標準的な構成を示す。この構成において、ホストシステム(host system)１００は、ＵＳＢのルートハブハードウェア(USB root hub hardware)１０１、ＵＳＢのルートハブドライバ(USB root hub driver)１０２、及びデバイスドライバ(device driver)１０３、を含む。外部ＵＳＢデバイス１１０は、それ自体のアダプタハードウェア１１１と、その機能に関連づけられたソフトウェア１１２と、を含んでいる。ホスト１００と外部デバイス１１０は、それぞれのＵＳＢアダプタ１０１、１１１に差し込まれるワイヤードＵＳＢ接続(a wired USB connection)１２０によって接続されている。
【００１７】
図２は、ＷＵＳＢホストに直接取り付けられた「ネイティブ」ＷＵＳＢデバイスを備えたワイヤレスＵＳＢシステムについての構成を示す。図２で図示されたシステムは、図１で図示されたレイアウトにおいて同様であり、大きな違いは、ホスト２００と外部ＵＳＢデバイス(external USB device)２１０がそれぞれ組み込みのワイヤレスアダプタ(built-in wireless adapters)２０１、２１１を有しているということである。これらのアダプタ２０１、２１１は、ワイヤードケーブルを介する代わりに、アンテナ２２０、２２１によって提供されるワイヤレス信号にわたって通信する。図２のネイティブワイヤレスＵＳＢシステムは、コンピュータ／電気産業の多くが達しようとしている目標を表わしている。しかしながら、現在、ごくわずかのデバイスしか(very few devices)、ネイティブワイヤレス機能を有していない。したがって、産業が両方のワイヤードＵＳＢデバイスとワイヤレスＵＳＢデバイスとホストを含んでいるシステムに適応することが望ましい。
【００１８】
ＷＵＳＢシステムへとワイヤードＵＳＢデバイスを接続するための現在の解決策は、図３で図示されているように、デバイスワイヤアダプタ（ＤＷＡ）へとそれらを差し込むということである。ワイヤードＵＳＢデバイス３１０、３２０は、標準ＵＳＢケーブル３１１、３２１を使用して、ＤＷＡ３００へと差し込まれる。ＤＷＡ３００は、代わりに、ＵＳＢホストにワイヤレスリンクを提供するワイヤレスアンテナ３０１を提供される。
【００１９】
対応するホストワイヤアダプタ（ＨＷＡ）は、ＤＷＡと通信するためにホストシステムによって使用されることができる、あるいは、ＤＷＡは、「ネイティブ」ＷＵＳＢホストアダプタを通じてホストシステムと通信することができる。
【００２０】
図４は、レガシワイヤードＵＳＢデバイスにワイヤレスＵＳＢ機能を提供するためにデバイスワイヤアダプタとホストワイヤアダプタと組み込んでいるシステムを示す。この例は、外部デバイスとしてホスト４００に接続されたホストワイヤアダプタ（ＨＷＡ）４１０を示しており、それは、現在の設計の典型である。次第に、ＨＷＡ４１０は、ホスト４００システムの中に埋め込まれたネイティブＷＵＳＢホストアダプタによって置き換えられるであろう。
【００２１】
ＨＷＡ４１０及びＤＷＡｓ４１０、４２０はＵＳＢデバイスとして認識されているので、ホストシステム４００は、ＨＷＡ４１０及びＤＷＡｓ４２０、４３０を介してワイヤード外部ＵＳＢデバイス４２１、４２２、４３１、４３２との通信を可能にするために、マルチプルソフトウェアドライバ層を組み込む。
【００２２】
ホスト４００は、ＨＷＡ４１０が（ホストハウジングに対して外部あるいは内部いずれにせよ）接続されるワイヤードＵＳＢのルートハブ４０１を有する。次は、ルートハブドライバ４０２である。ホストは、ＤＷＡドライバ４０４と同様に個別のＨＷＡドライバ４０３を有している。それらの上には、チェインの終わりにある外部ＵＳＢデバイス４２１、４２２、４３１、４３２に特有であるデバイスドライバ４０５−４０８がある。デバイスドライバ４０５−４０８のそれぞれは、ＤＷＡドライバ４０４に取り付けられ、通信する。
【００２３】
データは、ワイヤード接続を通じてホスト４００からＨＷＡ４１０に通信される。ＨＷＡ４１０は、そのあとで、ＤＷＡｓ４２０、４３０のうちの１つにデータを送信するためにワイヤレスプロトコルを使用し、それは、代わりに(in return)、ワイヤード接続にわたって、特定のＵＳＢデバイス４２１、４２２、４３１あるいは４３２に、データを送る。
【００２４】
図５は、図４で図示されたワイヤレスＵＳＢシステムにわたって通信するために使用されるパケットのシーケンスを示す。システムにおけるＨＷＡとＤＷＡの存在により、パケットシーケンス５００は、どのポートがデータをルートしアクナレッジメントを得るかをＤＷＡに伝えるために、データの前に挿入された制御パケットを含む。このことは、外部デバイスとホストとの間のシステムにおける各ＨＷＡとＤＷＡに関して生じる。
【００２５】
図５で示された例において、データパケット(data packet)５０４は、転送リクエスト５０３に先立つ、一方で、転送リクエスト５０２は、転送リクエスト５０１によって先立つ(is preceded)。転送リクエスト５０１及び５０３は、ＤＷＡに転送リクエスト５０２とデータパケット５０４とを送るようにＨＷＡに指図する。転送リクエスト５０２は、ＵＳＢデバイスにデータパケット５０４を送るようにＤＷＡに指図する。転送リクエストは、その意図されたデバイスにそのようなものとして、出現のみする。例えば、ＤＷＡ転送リクエスト５０２は、ＨＷＡにとってはデータのようであるが、ＤＷＡにとっては転送リクエストのようである。
【００２６】
上記で説明されているように、現在のワイヤレスＵＳＢシステムは、ターゲットＵＳＢデバイスに／から、データのフローを指図するために、外部デバイスとホストにおけるその特定ドライバとの間でドライバのマルチプル層によって生成される制御パケット(転送リクエスト)を使用している。残念ながら、この設計は、動的にスループットを阻害する(hampers)。
【００２７】
図６Ａ及び６Ｂは、標準ワイヤアダプタプロトコルを使用しているＩＮリクエストについてのプロセスのフローを図示しているシーケンス図である。図７Ａ及び７Ｂは、標準ワイヤアダプタプロトコルを使用しているＯＵＴリクエストについてのプロセスのフローを図示しているシーケンス図である。これらのシーケンス図は、外部ＵＳＢデバイスとそのドライバとの間でデータを転送するために、標準プロトコル下で必要な多数の転送リクエストを図で図示している。この複雑性の多くは、システムの一層について意図された転送リクエストが他の層によってデータとして見られるという事実から生じ、その結果、行先 (destination)にデータ自体を最終的に配信する前に、システムの各層においてデータ受信についてのアクナレッジメントを引き起こす(invoke)。
【００２８】
本発明の実施形態は、データ転送の一部として交換されるメッセージの数を減らすことによってスループットを改善するエンハンスドワイヤアダプタプロトコルを含んでおり、その結果、ワイヤードＵＳＢインタフェースとワイヤレスメディアにわたるメッセージの処理時間と転送時間を減らす。スループットはまた、システムを通じてデータフローの「パイプライニング(pipelining)」を改善することによって増大させられ、そしてそれは、転送レイテンシを減らす。
【００２９】
エンハンスドワイヤアダプタプロトコルは、送信完了メッセージを削除し、そして、代わりに、いつ転送が完了したかを決定するために転送結果についてポーリングすることを使用する。ＩＮデータ転送は、ワイヤアダプタによって、より小さい転送へと、自動的にセグメント化されることができる（「自動セグメント化(auto-segmentation)」）。このことは、ワイヤアダプタ上へとインテリジェンス機能をプッシュし、そして、ホストソフトウェアから退ける（すなわち、ＤＷＡはバッファを管理する）。自動セグメント化の間に、各セグメントのサイズは異なってもよく、それによって、ワイヤアダプタは、与えられたシチュエーションについてのスループットを最大化させるために、動的にそして適応的にセグメントサイズを調節する。ワイヤアダプタは、ＩＮデータを受諾するのに利用可能であるバッファに基づいてペンディング転送のためのＩＮトークンを発行することによってその利用可能なバッファを自動的に管理する。
【００３０】
本発明の一実施形態において、ワイヤアダプタドライバは、転送リクエストをセグメント化し、そして、これらのすべてを一度に投入する(submits)。ＤＷＡは、自動的に、各セグメントを完了するためにメモリを管理する。ＩＮデータの場合には、ワイヤアダプタがＩＮ転送を開始する前にメモリをチェックし、また、ＯＵＴデータの場合には、ネガティブアクナレッジメントが、ワイヤアダプタが十分なメモリを有していないセグメントをバックプレッシャーするために、使用される。
【００３１】
本発明の一実施形態において、アップストリームＵＳＢインタフェースにわたるＵＳＢホストとＨＷＡとの間のマルチプル転送は、転送レイテンシを減らすために単一のＵＳＢ転送へとアグリゲートされることができる(may be aggregated)。特に、ＵＳＢホストは、ＨＷＡについてターゲットされたマルチプルＯＵＴ転送をアグリゲートすることができ、また、ＨＷＡは、ＵＳＢホストについてターゲットされたマルチプルＩＮ転送をアグリゲートすることができる。アグリゲートされた転送の受信機（ＯＵＴ転送のケースにおいてはＨＷＡｓ、ＩＮ転送のケースにおいてはＵＳＢ）は、データのさらなる処理の前に、アグリゲートされた転送をデアグリゲートする(de-aggregates)。受信機は、アグリゲートされた転送のコンテンツをパースすることによって、アグリゲートされたフレームにおいてデータバウンダリを決定する。
【００３２】
例えば、ＵＳＢホストは、次のＯＵＴ転送データでＯＵＴ転送リクエストをアグリゲートすることができる。アグリゲートされた転送を受信するＨＷＡは、次の転送が転送リクエストであることを予期する。アグリゲートされた転送において含まれる転送リクエストの長さを決定するために、アグリゲートされた転送の第１バイトを、審査する(examines)。転送リクエストにおけるｗＲＰｉｐｅフィールドは、関連づけられたｗＲＰｉｐｅディスクリプタを見つけ出す(locate)ように使用されており、そしてそれは、そのあと、転送リクエストがＯＵＴ転送リクエストであるということを決定するために使用される。転送リクエストがＯＵＴリクエストなので、ＨＷＡは、ＯＵＴ転送データとして転送リクエストの次にくるアグリゲーション転送(aggregation transfer)のデータを扱う。
【００３３】
ホスト及びＨＷＡｓは、転送が生じるエンドポイントのための標準エンドポイントディスクリプタにおいて表されるように、ｗＭａｘＰａｃｋｅｔＳｉｚｅの最大長さまで、転送をアグリゲートすることができる。アグリゲーションを使用しているホスト及びＨＷＡｓは、ｗＭａｘＰａｃｋｅｔＳｉｚｅバイトにいたるまで受信するように、転送ごとに、準備されていなくてはならない。ＩＮ転送の場合には、ホストは、ｗＭａｘＰａｃｋｅｔＳｉｚｅバイトについての入力リクエストを発行しなければならない。ＨＷＡｓは、完了制御転送とデータ転送が受信されると、「オンザフライ(on-the-fly)」でデアグリゲートすることができる。「オンザフライ(on-the-fly)」デアグリゲーションは、バッファ管理とデータフローの役に立つことができ、また、エンドツーエンドのレイテンシ(end-to-end latency)を減らすことが出来る。
【００３４】
いつアグリゲートするのか、アグリゲートするために何回転送するかという決定は、インプリメンテーションしだいである。典型的に「日和見主義(opportunistic)」アルゴリズムは、アグリゲーション決定を行なうために使用される。ホストあるいはＨＷＡは、ｗＭａｘＰａｃｋｅｔＳｉｚｅまで利用可能な転送をアグリゲートする。
【００３５】
ＯＵＴ転送データパケットについては、エンハンスドワイヤアダプタプロトコルは、「保存し自動転送する(store and forward)」転送を使用して、受け渡されているよりもむしろ「カットスルー(cut-through)」するパケットを使用する。この新しいアプローチを使用して、いくらかの最小量のＯＵＴデータ(some minimum amount of OUT data)がアップストリームポートから受信されるときにはいつでも、ワイヤアダプタは、データの完了セグメントが受信されるまで待機するよりもむしろ、ダウンストリームポート上でデータを転送することができる。反対に、ワイヤアダプタは、データバッファが着信データ(incoming data)を保つ(hold)のに利用可能ではないとき、ネガティブアクナレッジメント(negative acknowledgments)（ＮＡＫｓ）を発行することによって、アップストリームポート上で「バックプレッシャー(back pressure)」を置くことによって、その利用可能なデータバッファを自動的に管理する。
【００３６】
エンハンスドワイヤアダプタプロトコルは、ワイヤアダプタによる転送リクエストの自動転送を可能にし、その結果、データ転送を完了するために使用されたメッセージの数を減らす。図５の例に戻って、エンハンスドプロトコルの下で、ＤＷＡ転送リクエスト５０２は、データではなくＨＷＡにとっては転送リクエストのようである。したがって、ＨＷＡは、着信転送リクエスト(the incoming Transfer Request)は、本当にＤＷＡのためのものであるということを理解し、ＤＷＡにそれを自動転送する。自動転送パイプ(Forwarding Pipe)（ＦＰｉｐｅ）ディスクリプタは、転送リクエストパケットの自動転送を制御するために、遠隔パイプ（ＲＰｉｐｅ）ディスクリプタと共に(in conjunction with)使用される。
【００３７】
図１１を参照すると、図１１００は、本発明の一実施形態における、ＯＵＴ転送リクエスト自動転送についてのパケットのフロー及びプロセッシングを図示する。図１１００は、上記で説明されるように転送リクエスト自動転送(Transfer Request forwarding)がインプリメントされ(implemented)、そして転送完了メッセージが削除された(eliminated)ときに、転送を完了するためにＤＷＡビヘービア(behavior)に焦点を当てる。ホスト上のＵＳＢアプリケーションは、ＤＷＡ１１０４に取り付けられたＵＳＢデバイス１１０２についてターゲットされるデータを転送するリクエストをＤＷＡドライバに提供する。転送されるべき、データ１１０６は、転送リクエスト１１０８を提供される。ＤＷＡ及びＨＷＡホストドライバは、転送リクエストＯＵＴパケットを生成し、そして、ワイヤードＵＳＢバスにわたってＨＷＡ１１１０への転送のために転送リクエストと転送データをエンキューする。転送リクエスト１１０８は、転送リクエスト１１０８を自動転送するのに使用されるべきＨＷＡ１１１０のＦＰｉｐｅディスクリプタ(FPipe descriptor)１１１６を参照するＦＰｉｐｅディスクリプタ数(FPipe Descriptor number)１１１４（０ｘ８００１）を、ｗＲＰｉｐｅフィールド１１１２において、含む。
【００３８】
ＨＷＡ１１１０は、アップストリームワイヤードＵＳＢバスから、転送データ１１０６が次に来る、転送リクエストＯＵＴパケット１１０８を、受信する。ＨＷＡは、転送リクエスト１１０８をパースし、そして、転送リクエスト１１０８でｗＲＰｉｐｅフィールド１１１２を見つけ出す(locates)。この特定の例において、ｗＲＰｉｐｅフィールド１１１２は、０ｘ８００１を含む。
【００３９】
ＨＷＡ１１１０は、ｗＲＰｉｐｅ数(wRPipe number)１１１４がＦＰｉｐｅディスクリプタ１１１６を指すということを、決定する、というのは、ｗＲＰｉｐｅ数１１１４の最大有効ビットは、１つである。このことは、対応するパイプディスクリプタがＦＰｉｐｅディスクリプタ表１１１８において（ＲＰｉｐｅディスクリプタ表よりもむしろ）見つけられるということ、そして、転送リクエスト１１０８は自動転送されるべきであるということ、をＨＷＡ１１１０に対して指す。この特定の例において、ｗＲＰｉｐｅ数１１１４が０ｘ８００１なので、ＦＰｉｐｅディスクリプタ表１１１８におけるＦＰｉｐｅディスクリプタ１１１６のインデクスは、０ｘ０００１である。ＨＷＡ１１１０は、ＦＰｉｐｅディスクリプタ表１１１８におけるＦＰｉｐｅディスクリプタ１１１６の０ｘ０００１を見つけ出す(locates)。
【００４０】
ＦＰｉｐｅディスクリプタ０ｘ０００１(FPipe Descriptor 0x0001)（１１１６）におけるｗＲＰｉｐｅＩｎｄｅｘのフィールド１１２０は、転送リクエストＲＰｉｐｅディスクリプタ(Transfer Request RPipe Descriptor)１１２２を見つけ出すように使用される。この特定の例において、ＲＰｉｐｅディスクリプタのインデクス１１２４は、０ｘ０００１である。ＨＷＡ１１１０は、ＲＰｉｐｅディスクリプタ１１２２のｂＤｅｖｉｃｅＡｄｄｒｅｓｓとｂＥｎｄｐｉｎｔＡｄｄｒｅｓｓ１１２６を使用して、転送リクエストのターゲットデバイスアドレス、デバイスエンドポイント、及び指図を決定する。この例においては、転送リクエスト１１０８は、ＯＵＴであり、そしてそれは、ＨＷＡ１１１０がアップストリームＵＳＢバルクＩＮのエンドポイント１１２８上で転送リクエスト１１０８の次に来る転送データ１１０６を予期しているということを示しており、また、ＨＷＡは、自動転送転送リクエスト(forwarding Transfer Request)１１３０と転送データ１１３２の両方を配信するために、ＯＵＴ ＲＰｉｐｅ ディスクリプタ０ｘ０００１（１１２２）を使用すべきである。
【００４１】
ＨＷＡ１１１０は、ＦＰｉｐｅディスクリプタ１１１６のｗＦｏｒｗａｒｄＲＰｉｐｅ値１１３４で、受信された転送リクエスト１１０８のｗＲＰｉｐｅフィールド１１１２を置き換えることによって、自動転送転送リクエスト１１３０を生成するために、受信された転送リクエスト１１０８を使用する。
【００４２】
ＨＷＡ１１１０は、ＤＷＡ１１０４、自動転送転送リクエスト１１３０、及び転送データ１１３２への転送のためにダウンストリームワイヤレスインタフェース１１３６上でエンキューする（いったんデータがアップストリームのＵＳＢバルクＯＵＴのエンドポイント１１２８上で受信されると）。ＨＷＡは、ダウンストリームワイヤレスインタフェース１１３６上でそれらをエンキューする前に転送における各データパケットの初めと転送リクエストパケットの初めに２バイトのＷＵＳＢヘッダを加える。
【００４３】
いったん自動転送転送リクエスト１１３０と転送データ１１３２とがＤＷＡ１１０４に転送されると、ＨＷＡ１１１０は、ＯＵＴ ＲＰｉｐｅディスクリプタ１１２２（０ｘ０００１、転送リクエスト１１０８とデータ１１０６とを配信するために使用される）でｂＣｏｎｔｒｏｌフィールド１１３８を審査し(examines)、そして、転送結果及び転送データの自動リクエスト及び自動転送オプション(the Automatic Request and Forwarding of Transfer Results and Transfer Data option)がイネーブルされるということを決定する（ｂＣｏｎｔｒｏｌフィールドにおいてビット０）。ＨＷＡ１１１０は、そのあと、ダウンストリームＤＷＡ１１０４のバルクＩＮパイプ１１４４に関連づけられたＲＰｉｐｅディスクリプタ１１４２を見つけ出すために、ＯＵＴ ＲＰｉｐｅディスクリプタ１１２２においてｗＴｒａｎｓｆｅｒＲＰｉｐｅフィールド１１４０を使用する。ＩＮ ＲＰｉｐｅディスクリプタ１１４２に関連づけられたものは、ペンディング転送リストである(図１１００では示されていない)。ＨＷＡ１１１０は、ＯＵＴ転送についての転送結果がダウンストリームＤＷＡのバルクＩＮパイプ１１４４から予期されているということを指す、ペンディング転送リストにおいてエントリ(entry)を加える。
【００４４】
転送結果１１４６が予期されているものであるということを示している、ＩＮ ＲＰｉｐｅペンディングリストにおけるエントリのおかげで、ＨＷＡ１１１０は、予期された転送結果１１４６を受信するために、ダウンストリームＤＷＡ１１０４上でバルクＩＮのエンドポイント１１４４に対してＩＮトークンを発行し始める。
【００４５】
転送結果１１４６がＤＷＡ１１０４から受信されるとき、ＨＷＡ１１１０は、転送結果が受信されるデバイス及びエンドポイントに関連づけられたＲＰｉｐｅディスクリプタを見つけ出すために、パケットＭＡＣヘッダにおいてはＳｒｃＡｄｄｒフィールドを、ＷＵＳＢヘッダにおいてはエンドポイント番号フィールドを、使用する。この特定的な例において、デバイスはＤＷＡ１１０４であり、エンドポイントはＤＷＡバルクＩＮのエンドポイントであり、ＤＷＡエンドポイントについてＨＷＡの対応するＲＰｉｐｅは、ＲＰｉｐｅディスクリプタ０ｘ０００２（１１４８）である。
【００４６】
ＨＷＡ１１１０は、ペンディング転送リスト及び転送結果１１４６の転送ＩＤｓを整合させることに基づいて、受信された転送結果１１４６に対応するエントリをＲＰｉｐｅペンディング転送リストで見つけ出す。ＨＷＡ１１１０は、ペンディング転送リストエントリから転送結果１１４６はＯＵＴ転送のためであるということ、したがって、いずれのデータも転送結果１１４６の次に来ない、ということを決定する。
【００４７】
ＨＷＡ１１１０は、ＩＮ ＲＰｉｐｅディスクリプタの０ｘ０００２（１１４２）のｂＣｏｎｔｒｏｌフィールド１１５０を審査し、そして転送結果及び転送データの自動リクエスト及び自動転送オプションがイネーブルされるということを決定する（ｂＣｏｎｔｒｏｌフィールドにおいてはビット０）。イネーブルされるこのオプションに基づいて、ＨＷＡ１１１０は、ホストへの転送のために、アップストリームＵＳＢインタフェースのバルクＩＮのエンドポイント(the upstream USB interface bulk IN endpoint)１１５２上で転送結果パケット１１４６を自動的にエンキューする。ＨＷＡ１１１０は、そのあと、予期された転送結果１１４６に対応するＲＰｉｐｅディスクリプタの０ｘ０００２（１１４２)ペンディング転送リストで、エントリを削除する(deletes)。
【００４８】
ＨＷＡホストドライバは、ＨＷＡ１１１０におけるペンディング転送リストと同様のペンディング転送記録を保持する。ペンディング転送記録に基づいて、ＨＷＡドライバは、前に送った転送リクエスト１１０８についての転送結果１１４６を予期しており、したがって、ＨＷＡドライバは、ＩＮトークンがＨＷＡワイヤードＵＳＢインタフェースのバルクＩＮのエンドポイント(HWA wired USB interface bulk IN endpoint)１１５２に送られるようにするＩＮ転送をリクエストする。ＨＷＡは、転送結果１１４６が、バルクＩＮキューの上に来て、そしてＩＮトークンが受信されるとすぐに、ホストに転送結果を送る。転送結果１１４６がＨＷＡドライバに受け渡されるとき、ＨＷＡ１１１０は、転送結果１１４６の情報に基づいてその記録をアップデートし、そしてＷＵＳＢ転送は完了する。
【００４９】
図１２を参照すると、図１２００は、本発明の実施形態におけるＩＮ転送リクエスト自動転送に関するパケットのフロー及びプロセッシングを図示する。ＩＮ転送リクエスト自動転送に関するパケットのフロー及びプロセッシングは、ＯＵＴ転送リクエスト自動転送に関するパケットのフロー及びプロセッシングに似ている。差異は次の通りである：
ＩＮ自動転送転送リクエスト(IN forwarding Transfer Request)１２０４のｗＲＰｉｐｅフィールド１２０２（０ｘ８００２）は、ＩＮ ＲＰｉｐｅ１２１０を参照するｗＲＰｉｐｅＩｎｄｅｘフィールド１２０８（０ｘ０００２）を含んでいるＦＰｉｐｅディスクリプタ１２０６（０ｘ０００２）を参照する。このケースにおけるＲＰｉｐｅはＩＮについてなので、ＨＷＡ１２１２は、転送データが転送リクエスト１２０４の次に来ることを予期しない、したがって、次に来るデータなしに、転送リクエスト１２０４を自動転送する。
【００５０】
ＨＷＡ１２１２は、転送リクエスト１２０４を配信するために使用されるＯＵＴ ＲＰｉｐｅ１２１４を見つけ出すために、ＩＮ ＲＰｉｐｅ １２１０（０ｘ０００２）でｗＴｒａｎｓｆｅｒＲＰｉｐｅフィールド１２１１を使用する。転送リクエスト１２０４がＤＷＡ１２１６に転送された後で、ＨＷＡ１２１２は、ＩＮ転送についての転送結果１２１８がダウンストリームＤＷＡバルクＩＮパイプ１２１９から予期されているということを示すペンディング転送リストにおいてエントリを加える。
【００５１】
ＨＷＡ１２１２が転送結果１２１８を受信するとき、それは、そのあと、バイト数が受信された転送結果１２１８のｄｗＴｒａｎｓｆｅｒＬｅｎｇｔｈフィールドで示されている、ダウンストリームＤＷＡバルクＩＮのエンドポイント１２１９から読み取ることを試みる。ＨＷＡ１２１２は、ペンディング転送リストの対応するエントリがＩＮ転送を示すので、データを予期する。
【００５２】
ＨＷＡ２１２は予期されたデータを受信した後で、それは、ホストへの転送のために、アップストリームのワイヤードＵＳＢバルクＩＮのエンドポイント１２２２上で転送結果１２１８と転送データ１２２０とをエンキューする。もし自動セグメント化が可能である場合には、ＨＷＡ１２１２は、データをセグメント化し、各データセグメントで転送結果をエンキューすることができる。各転送結果におけるｂＴｒａｎｓｆｅｒＳｅｇｍｅｎｔフィールドは、セグメント数(the segment number)にセットされる。
【００５３】
転送リクエスト自動転送については、ワイヤアダプタホストドライバは、別のワイヤアダプタホストドライバから受諾された転送リクエストにおける転送ＩＤと、ワイヤアダプタによって生成された結果として生じる転送における転送ＩＤとの間で関連づけ(association)を保持する。それは、そのあとで、転送結果パケット及び転送リクエストにおける１つの転送ＩＤを修正するためにこの関連づけを使用する。
【００５４】
転送ＩＤｓは、転送を固有に識別するために、また、特定の転送とパケットを関連づけるために、ワイヤアダプタドライバとワイヤアダプタとによって使用された３２ビット値である。ＨＷＡあるいはＤＷＡホストドライバによって開始された各転送の場合、固有の転送ＩＤは、生成され、対応する転送リクエストに配置される(placed)。転送結果パケットを生成するとき、ＨＷＡｓとＤＷＡｓは、転送のために、転送リクエストから転送ＩＤを転送結果に配置する。
【００５５】
標準ワイヤアダプタプロトコルで、転送ＩＤｓは、一例のＤＷＡドライバあるいはＨＷＡドライバと、対応するワイヤアダプタと、のコンテキスト(context)において固有である。例をとってみると、代わりにホストに取り付けられたＨＷＡ、に取り付けられたＤＷＡのケースがある。ＤＷＡドライバは、転送リクエストを生成するとき、それは、転送リクエストにおいて配置するように固有の転送ＩＤを選択する。ＨＷＡドライバとＨＷＡは、転送リクエストのコンテンツを審査することなく、（ＨＷＡサブシステムに関する限り、転送リクエストは、転送されるべきデータである）ＤＷＡにＤＷＡドライブ転送リクエストを配信する。ＤＷＡに転送リクエストが配信されるとき、ＤＷＡは、何をするかを決定するために転送リクエストをパースし、そして、結果として生じる転送レスポンスにおいて転送ＩＤを使用する。
【００５６】
しかしながら、ＨＷＡドライバがＤＷＡ転送リクエストを配信するために、ＨＷＡドライバは、ＨＷＡのためのその転送リクエストを生成する。ＤＷＡ転送リクエストを配信するために使用されるＨＷＡ転送リクエストにおいて配置された転送ＩＤは、ＤＷＡ転送リクエストにおける配信ＩＤと無関係である。異なるように説明されており、各ワイヤアダプタドライバの「層(layer)」は、それ自体のセットの固有転送ＩＤｓを保持し、他のワイヤアダプタドライバによって生成され使用される転送ＩＤｓに気づかないでいる。
【００５７】
しかしながら、エンハンスドワイヤアダプタプロトコルの転送リクエストの自動転送(Enhanced Wire Adapter Protocol Transfer Request Forwarding)が使用されているとき、転送ＩＤｓの取り扱い(handling)は、標準プロトコルのよりも必然的に異なっている。転送リクエストが１つのワイヤアダプタから別のへと自動転送されるとき、転送リクエストは、自動転送ワイヤアダプタとターゲットワイヤアダプタの両方によって処理され、転送ＩＤが両方のワイヤアダプタによって使用される。このケースにおいて、両方のワイヤアダプタは、同じセットの転送ＩＤｓと機能する。自動転送された転送結果パケットにも同じことが言え、同じ転送ＩＤが、１つまたは複数のワイヤアダプタによって使用される。
【００５８】
自動転送は、ワイヤアダプタによる転送ＩＤｓの特別な取り扱いを必要としないが、ホストドライバによる特定のプロセッシングを必要とする。もし自動転送がホストドライバとその対応するワイヤアダプタによって使用されている場合には、そのときには、ホストドライバが別の（「アップストリーム」）ホストドライバから転送リクエストを受諾するときに、それは、転送ＩＤを見つけ出すために転送リクエストをパースする。ホストドライバは、そのあとで、ドライバとワイヤアダプタの範囲内で固有である新しい転送ＩＤを生成し、そして、次のドライバにそれを自動転送する前に、転送リクエストにおいて新しい転送ＩＤを配置する。ホストドライバはまた、アップストリームワイヤアダプタによって提供された転送ＩＤと、ホストドライバによって生成された転送ＩＤとの間の関連づけを提供する記録を作成する。
【００５９】
そのとき、ホストドライバが転送結果を受信するとき、転送ＩＤ関連づけ表(Transfer ID association table)において転送結果の転送ＩＤを調べ、そして、対応する転送リクエストが自動転送されたということを決定する。それは、そのあと、オリジナルリクエスティングドライバ(original requesting driver)に対して転送結果を受け渡す前に、転送ＩＤ関連づけ表（すなわち、オリジナル転送ＩＤを備えている）の値で転送ＩＤを置き換える。この方法で、「ダウンストリーム」ドライバによる転送ＩＤｓに関して自動転送することの効果は、ホスト“アップストリーム”のドライバに対してトランスパレント(transparent)になされる。
【００６０】
代替的に、単一のホストドライバが２つまたは複数のシリアル接続されたワイヤアダプタ（例えばＨＷＡに接続されたＤＷＡ）を管理する、インプリメンテーションが可能である。このケースにおいては、単一のホストドライバは、自動転送の効果を十分に知っており、ＤＷＡとＨＷＡの両方によって使用される転送ＩＤｓを生成することによってそれを説明することができる。
【００６１】
エンハンスドプロトコルの下で、ワイヤアダプタは、そのダウンストリームワイヤアダプタに対して、前の転送リクエストに基づいて、伝送結果パケットについてダウンストリームワイヤアダプタを自動的にポーリングする。同様に、ワイヤアダプタは、伝送完了と新しい転送結果を生成し自動転送するよりもむしろ、アップストリームインタフェースにいずれの受信された転送結果を自動転送する。
【００６２】
ホストドライバから転送リクエストを受信することによって開始されるダウンストリームデータについてのポールよりもむしろ、ワイヤアダプタは、ＩＮデータ転送についての転送結果を前に受信したことに基づいて、ＩＮデータについてのダウンストリームデバイスを自動的にポーリングする。同様に、送信完了と、新しい転送結果と、を生成し自動転送するよりもむしろ、ワイヤアダプタは、受信の後で、アップストリームインタフェースに対して、ＩＮ転送データを単に自動転送する。
【００６３】
本発明の一実施形態において、マルチプルワイヤアダプタドライバ（ＨＷＡ及びＤＷＡ)は、アプリケーションプログラミングインタフェース(Application Programming Interfaces)(ＡＰＩｓ)の数を減らすために単一のワイヤアダプタに結合されることができ、したがって、ＡＰＩｓにわたるメッセージの受け渡しによって、レイテンシが招かれる(incurred)。さらに、マルチプルワイヤアダプタドライバを結合させることは、転送リクエスト自動転送が使用されているときにアップストリームのドライバから提示される転送リクエストにおける転送ＩＤｓと、発行された転送リクエストにおける転送ＩＤｓとの間の関連づけを保持する必要性が削除される(eliminated)ので、転送ＩＤｓの割り当てにおけるコンソリデーション(consolidation)を可能にする。
【００６４】
図８は、本発明にしたがった一実施形態として、エンハンスドワイヤアダプタプロトコルを使用しているＩＮリクエストについてのプロセスフローを図示しているシーケンス図である。図９は、本発明にしたがった一実施形態として、エンハンスドワイヤアダプタプロトコルを使用しているＯＵＴリクエストについてのプロセスフローを図示しているシーケンス図である。図８及び図９は、既存のプロトコルを図示している図６Ａ、６Ｂ、７Ａ、および７Ｂで示されているシーケンス図と比べて、エンハンスドワイヤアダプタプロトコルによって提供される制御オーバーヘッドにおける削減(reduction in control overhead)を図示する。
【００６５】
図１０は、本発明にしたがった一実施形態としてワイヤレスＵＳＢのハブを示している。上記で説明されるように、現在のワイヤアダプタプロトコルは、比較的に非効率であるのに対して、「ネイティブ」ＷＵＳＢデバイスのためのＷＵＳＢプロトコルは、比較的能率がいい。プロキシＷＵＳＢハブ１０００は、ワイヤードＵＳＢデバイス１０１０、１０２０を、それらが「ネイティブ」ＷＵＳＢデバイスであるかのように、提供することによって、この効率のよさ(efficiency)を利用する。
【００６６】
プロキシＷＵＳＢハブ１０００は、ワイヤレスアップストリームポート１００１と１つまたは複数のワイヤードＵＳＢダウンストリームポート１００２、１００３を有しているという点において、ＤＷＡと類似しており、なお、ワイヤードＵＳＢデバイス１０１０、１０２０は、ダウンストリームワイヤードＵＳＢポートに差し込まれることができる。ＷＵＳＢハブは、ワイヤードＵＳＢデバイス１０１０、１０２０が、ネイティブＷＵＳＢデバイスであるかのようにホストには見える、という点でＤＷＡとは異なる。このことは、ＷＵＳＢハブ１０００「プロキシ(proxy)」を、ワイヤレスインタフェース上で取り付けられたダウンストリームワイヤードデバイスにすることによって達成される。したがって、ＷＵＳＢハブ１０００は、ＤＷＡではなく、１つまたは複数のＷＵＳＢデバイスとして、ホストには見えており、そしてそれは、標準ワイヤアダプタプロトコルによって使用される制御パケットオーバーヘッドの多くを削除する。
【００６７】
取り付けられたワイヤードＵＳＢデバイスは、いずれか、１）それ自体のデバイスアドレスで固有のＷＵＳＢデバイスとして提供されるか、あるいは、２）すでに存在しているデバイス（例えばＷＵＳＢハブ、そしてそれはＤＷＡとして列挙することができる）上の個別機能として提供される。後者のアプローチで、ワイヤードデバイスのエンドポイントは、ＷＵＳＢハブのエンドポイントへとマッピングされる。
【００６８】
ＷＵＳＢハブは、ＷＵＳＢデバイスであるかのように、ホストに、ＵＳＢデバイスを適切にプロキシサーバに送る(proxy)ために様々なメカニズムを使用する。以下の説明は、ＷＵＳＢハブがダウンストリームＵＳＢデバイスを、ＤＷＡ上の機能としてよりもむしろ、ＷＵＳＢデバイスとして提供するときのケースに適用する。
【００６９】
各ＷＵＳＢデバイスは、セキュリティ接続のコンテキストを保持する。接続のコンテキストは、最初の接続(first-time connection)の間にネゴシエートされる(negotiated)。ＷＵＳＢハブは、ダウンストリームデバイスを知ることなしにあるいは関与なしにＵＳＢデバイスについてセキュリティ接続のコンテキストをネゴシエートし、そして、セキュリティ接続のコンテキストを保存する。十分な数の固有セキュリティ接続のコンテキストは、ＷＵＳＢハブが同時にプロキシサーバに送る(proxying)ことができる、最大数のダウンストリームのＵＳＢデバイスをサポートするために、ネゴシエートされ、そして保持される。特定の接続コンテキストは、特定のダウンストリームＵＳＢデバイスと結び付けられておらず(not tied)、むしろ、接続コンテキストは、ＵＳＢデバイスが取り付けられたとき、必要なときに(as needed)適用される。
【００７０】
ＷＵＳＢハブは、各取り付けられたプロキシＵＳＢデバイスについて固有のＷＵＳＢデバイスのアドレスを保持し、そして、介在デバイス(intervening device)（ＤＷＡのような）として現れているよりもむしろ、プロキシサーバに送っているＷＵＳＢデバイスであるかのようにＷＵＳＢのプロトコルに関係する(participates in)。
【００７１】
ＷＵＳＢハブは、直接に、あるいは、取り付けられたダウンストリームハブから割り込みパケット(interrupt packets)をインターセプトすること(intercepting)によって、のいずれかで、ＵＳＢ取り付けを検出する。ダウンストリームデバイスの取り付けを検出するときに、ＷＵＳＢハブは、ホストに割り込みパケットを自動転送しない、あるいは、ＵＳＢ取り付けをホストに直接通知しない。代わりに、ＷＵＳＢハブは、ＵＳＢデバイスの代わりに、ＷＵＳＢデバイスの接続プロシージャを実行する。
【００７２】
ＷＵＳＢハブはＵＳＢデバイスのディスクリプタを読み取り、そして、それらがＷＵＳＢデバイスのためのディスクリプタと一致するように、それらを修正する。例えば、標準エンドポイントディスクリプタにおける最大のパケットサイズのフィールドは、それがＷＵＳＢのパケットサイズに一貫するように修正される。標準的な構成ディスクリプタのｂｍＡｔｔｒｉｂｕｔｅｓフィールドは、デバイスが自家動力(self-powered)であるということを示すためにセットされている。
【００７３】
転送の終了を示す、ゼロパケットの長さの意味(zero-packet-length semantics)を使用しないいくつかのＵＳＢデバイスについては、ＩＮ転送の長さが、正しいバイト数が読み取られるように使用されている。しかしながら、ＷＵＳＢハブのケースにおいては、ＩＮ転送の長さは、ＷＵＳＢのプロトコルを用いて利用可能ではない。転送リクエストなしに、読み取るためのデータの量に関して前に宣言された制限はない。幸運なことに、アップストリームワイヤレスデバイスは、転送の予期された長さを提供されている。
【００７４】
ＷＵＳＢのプロトコルは、ＷＵＳＢハブをサポートするために、わずかに修正される。２つのオプションが利用可能である。第１のオプションでは、ＷＵＳＢホストのマイクロスケジュールされた管理制御(Micro-scheduled Management Control)（ＭＭＣ）において送信された情報エレメント(Information Elements)（ＩＥｓ）、ＩＮチャネル時間割り付け(Channel Time Allocation)（ＣＴＥ）における最大のパケットサイズのフィールドは、予期された転送の長さを示すために使用されることができる。代替的に、フィールドは、予期された転送の長さを示すためにＣＴＡｓに加えられることができる。
【００７５】
本発明の実施形態においては、上記で説明されるように、ＷＵＳＢハブは、ＷＵＳＢハブの機能及びオペレーションを実行するために、コントローラ１００４を含む。
【００７６】
ＷＵＳＢハブがＷＵＳＢハブ/ＤＷＡ上の機能として１つまたは複数のダウンストリームＵＳＢデバイスをプロキシサーバに送るケースについては、上記の説明は、そのセキュリティ接続コンテキストをのぞいて一般に適用しており、また、ＷＵＳＢデバイスのアドレスは、ＷＵＳＢハブと共有される。さらに、ＵＳＢデバイスが取り付けるとき、ＷＵＳＢハブは、ＵＳＢデバイスのエンドポイントについて一対一でＷＵＳＢハブのワイヤレスエンドポイントをマッピングし、そして、ＷＵＳＢハブ上の機能として特定のＵＳＢデバイスに関連づけられたエンドポイントの集まりを扱う。ＷＵＳＢハブは、新しく取り付けられたデバイスについてのサポートをアクティブな状態にするために、新しい機能は列挙される必要があるということをホストに通知する。
【００７７】
本開示の実施形態は詳細に説明されていないが、当業者は、本開示の範囲及び精神から逸脱することなく、ここにおいて様々な変化(changes)、置き換え(substitutions)、代替 (alterations)を行なうことができるということを理解すべきである。
以下に本件出願当初の特許請求の範囲に記載された発明を付記する。
［１］
第１のＵＳＢ対応デバイスと第２のＵＳＢ対応デバイスとを有しているワイヤレスＵＳＢシステムのためのスループットを増大させるための方法であって、
前記第１のＵＳＢ対応デバイスにおいて複数のパケットをアグリゲートすることと、
前記のアグリゲートされた複数のパケットを、前記第１のＵＳＢ対応デバイスから前記第２のＵＳＢ対応デバイスへと転送することと、
前記の転送の後で、前記第２のＵＳＢ対応デバイスにおいて、前記のアグリゲートされた複数のパケットをディスアグリゲートすることと、
を備えている方法。
［２］
ＵＳＢ対応ホストデバイスとして前記第１のＵＳＢ対応デバイスを構成することを含んでおり、
ホストワイヤアダプタとして前記第２のＵＳＢ対応デバイスを構成することを含んでおり、
前記複数のパケットを前記アグリゲートすることは、前記ホストワイヤアダプタにターゲットされた複数のＯＵＴ転送をアグリゲートすることを含み、前記ＯＵＴ転送は制御メッセージとデータを含んでいる、
［１］に記載の方法。
［３］
ホストワイヤアダプタとして前記第１のＵＳＢ対応デバイスを構成することを含んでおり、
ＵＳＢ対応ホストデバイスとして前記第２のＵＳＢ対応デバイスを構成することを含んでおり、
前記複数のパケットを前記アグリゲートすることは、前記ＵＳＢ対応ホストデバイスにターゲットされた複数のＩＮ転送をアグリゲートすることを含み、前記ＩＮ転送は制御メッセージとデータを含んでいる、
［１］に記載の方法。
［４］
ワイヤアダプタとＵＳＢ対応デバイスとを有しているワイヤレスＵＳＢシステムのためのスループットを増大させるための方法であって、
前記ＵＳＢ対応デバイスから転送を受信するために、前記ワイヤアダプタに関連づけられたデータバッファの利用可能性を決定することと、
前記データバッファの前記利用可能性に基づいてメッセージを生成することと、
前記データバッファが前記転送を受信することが利用可能かどうかを示して前記ＵＳＢ対応デバイスに前記メッセージを提供することと、
を備えている方法。
［５］
前記ＵＳＢ対応デバイスは、前記ワイヤアダプタからのダウンストリームであり、
前記メッセージは、前記データバッファが前記ＵＳＢ対応デバイスから前記転送を受信することが利用可能であるということを示すトークンを含む、
［４］に記載の方法。
［６］
前記ワイヤアダプタを、デバイスワイヤアダプタとして構成すること、を含んでいる［５］に記載の方法。
［７］
前記ＵＳＢ対応デバイスをデバイスワイヤアダプタとして、構成することと、
を含んでおり、前記ワイヤアダプタを構成することは、ホストワイヤアダプタを含んでいる、［５］に記載の方法。
［８］
前記転送を複数の転送セグメントにセグメント化することと、
前記ＵＳＢ対応デバイスから前記ワイヤアダプタへと、前記複数の転送セグメントを転送することと、
を含んでいる［５］に記載の方法。
［９］
前記ＵＳＢ対応デバイスから前記ワイヤアダプタへと前記転送を転送することと、
前記転送を複数の転送セグメントにセグメント化することと、
を含んでいる［５］に記載の方法。
［１０］
前記複数の転送セグメントはサイズごとに異なる、［９］に記載の方法。
［１１］
前記セグメント化することは、与えられたシチュエーションについてのスループットを最大化させるために、前記複数の転送セグメントのうち少なくとも１つのサイズを動的に適応的に調節することを含んでいる、［９］に記載の方法。
［１２］
前記ＵＳＢ対応デバイスは、前記ワイヤアダプタからのアップストリームであり、
前記メッセージは、前記データバッファが前記ＵＳＢ対応デバイスから前記転送を受信することが利用可能ではないということを示すネガティブアクナレッジメントを含んでいる、
［４］に記載の方法。
［１３］
前記ＵＳＢ対応デバイスをホストワイヤアダプタとして構成することと、
前記ワイヤアダプタをデバイスワイヤアダプタとして構成することと、
を含んでいる［１２］に記載の方法。
［１４］
前記ＵＳＢ対応デバイスをＵＳＢ対応ホストデバイスとして構成することと、
前記ワイヤアダプタをホストワイヤアダプタとして構成することと、
を含んでいる［１２］に記載の方法。
［１５］
前記ＵＳＢ対応デバイスから前記ワイヤアダプタへと、前記転送を送ることと、
前記ワイヤアダプタのアップストリームポート上で、前記ＵＳＢ対応デバイスから前記転送を受信することと、
最小量のデータが前記ワイヤアダプタの前記アップストリームポートから受信されるとき、前記ワイヤアダプタの前記アップストリームポートから前記ワイヤアダプタのダウンストリームポートへと、前記転送を自動転送することと、
を含んでいる［１２］に記載の方法。
［１６］
ワイヤアダプタとダウンストリームワイヤアダプタとを有しているワイヤレスＵＳＢシステムのためのスループットを増大させるための方法であって、
パケットのための前記ダウンストリームワイヤアダプタをポーリングすることと、
前記ワイヤアダプタのダウンストリームインタフェース上で、前記ダウンストリームワイヤアダプタから前記パケットを受信することと、
前記パケットを前記受信した後で、前記ワイヤアダプタのアップストリームインタフェースに前記パケットを自動転送することと、
を備えている方法。
［１７］
前記パケットは、転送結果パケットを含んでおり、
前記転送結果パケットについての前記ダウンストリームワイヤアダプタを前記ポーリングすることは、前記ダウンストリームワイヤアダプタに転送リクエストパケットをあらかじめ送信することに基づいている、
［１６］に記載の方法。
［１８］
前記パケットは、着信データパケットを含んでおり、
前記着信データパケットのための前記ダウンストリームワイヤアダプタを前記ポーリングすることは、前記ダウンストリームワイヤアダプタから転送リクエストパケットを受信することに基づいている、
［１６］に記載の方法。
［１９］
第１のワイヤアダプタと第２のワイヤアダプタとを有しているワイヤレスＵＳＢシステムのためのスループットを増大させるための方法であって、
データ転送のタイプを示しているディスクリプタを含むように転送リクエストを生成することと、
前記第１のワイヤアダプタに前記転送リクエストを送ることと、
前記ディスクリプタに基づいて、前記第１のワイヤアダプタから前記第２のワイヤアダプタへと前記転送リクエストを自動転送することと、
を備えている方法。
［２０］
前記データ転送のタイプがＯＵＴ転送であるとき、前記転送リクエストと共に転送データを自動転送することを含んでいる、［１９］に記載の方法。
［２１］
自動転送ワイヤアダプタとターゲットワイヤアダプタとを有しているワイヤレスＵＳＢシステムのためのスループットを増大させるための方法であって、
前記自動転送ワイヤアダプタから前記ターゲットワイヤアダプタへと、転送リクエストパケットを転送することと、
前記転送リクエストパケットに基づいて、転送結果パケットについての前記ターゲットワイヤアダプタをポーリングすることと、
を備えている方法。
［２２］
ワイヤレスＵＳＢシステムにおいて、ワイヤードＵＳＢ対応デバイスと第１のワイヤレスＵＳＢ対応デバイスとの間で通信するための方法であって、
前記ワイヤードＵＳＢ対応デバイスを検出することと、
前記第１のワイヤレスＵＳＢ対応デバイスに、第２のワイヤレスＵＳＢ対応デバイスとして前記ワイヤードＵＳＢ対応デバイスを提供することと、
を備えている方法。
［２３］
前記ワイヤードＵＳＢ対応デバイスからデバイスディスクリプタを読み取ることと、
あらかじめ決定されたワイヤレスＵＳＢ標準規格によって指定されるようにいずれのワイヤレスＵＳＢ対応デバイスのためのデバイスディスクリプタと一致するように、前記デバイスディスクリプタを修正することと、
前記ワイヤードＵＳＢ対応デバイスから前記第１のワイヤレスＵＳＢ対応デバイスへと転送されるべき、予期された量のデータを決定することと、
前記予期された量のデータを含むようにあらかじめ決定されたワイヤレスＵＳＢプロトコルを修正することと、
前記第１のワイヤレスＵＳＢ対応デバイスに、前記予期された量のデータを提供することと、
をさらに備えている［２２］に記載の方法。
［２４］
前記デバイスディスクリプタは、標準エンドポイントディスクリプタを含み、
前記デバイスディスクリプタを前記修正することは、ワイヤレスＵＳＢのパケットサイズと一致するように、前記標準エンドポイントディスクリプタにおいて、最大のパケットサイズのフィールドをセットすることを含んでいる、
［２３］に記載の方法。
［２５］
前記あらかじめ決定されたワイヤレスＵＳＢプロトコルは、あらかじめ決定されたワイヤレスＵＳＢワイヤアダプタプロトコルを含んでおり、
前記あらかじめ決定されたワイヤレスＵＳＢプロトコルを前記修正することは、前記あらかじめ決定されたワイヤレスＵＳＢワイヤアダプタプロトコルのチャネル時間割り付け部分においてフィールドを加えることを含んでおり、前記フィールドは、前記予期された量のデータを指定している、
［２３］に記載の方法。
［２６］
前記あらかじめ決定されたワイヤレスＵＳＢプロトコルは、あらかじめ決定されたワイヤレスＵＳＢワイヤアダプタプロトコルを含んでおり、
前記あらかじめ決定されたワイヤレスＵＳＢプロトコルを前記修正することは、前記あらかじめ決定されたワイヤレスＵＳＢワイヤアダプタプロトコルのチャネル時間割り付け部分において最大のパケットサイズのフィールドをセットすることを含んでおり、前記のフィールドは、前記予期された量のデータを指定している、
［２３］に記載の方法。
［２７］
前記ワイヤレスＵＳＢ対応デバイスとの通信のために、ワイヤレスＵＳＢのセキュリティ接続コンテキストをネゴシエートし且つ保持することと、
前記ワイヤードＵＳＢ対応デバイスを検出した後で、前記ワイヤレスＵＳＢのセキュリティ接続コンテキストを適用することと、
をさらに備えている［２２］に記載の方法。
［２８］
前記ワイヤードＵＳＢ対応デバイスのために固有ワイヤレスＵＳＢデバイスのアドレスを保持すること、をさらに備えており、前記ワイヤードＵＳＢ対応デバイスを提供することは、前記固有ワイヤレスＵＳＢデバイスアドレスを有している前記ワイヤードＵＳＢ対応デバイスを提供することを含んでいる、［２２］に記載の方法。
［２９］
前記ワイヤードＵＳＢ対応デバイスに関連づけられた第１のエンドポイントを、前記第１のワイヤレスＵＳＢ対応デバイスに関連づけられた第２のエンドポイントにマッピングすることと；
新しい関数が列挙されるべきであるということを前記第１のワイヤレスＵＳＢ対応デバイスに通知することと、前記新しい関数は、前記第１のワイヤレスＵＳＢ対応デバイスに関連づけられている；
をさらに備えている［２２］に記載の方法。
［３０］
前記第１のワイヤレスＵＳＢ対応デバイスから読み取りディスクリプタリクエストをインターセプトすることと、
前記デバイスディスクリプタを前記修正した後で、前記読み取りディスクリプタリクエストに応じて、前記第１のワイヤレスＵＳＢ対応デバイスを提供することと、
をさらに備えている［２３］に記載の方法。
［３１］
ワイヤードＵＳＢ対応デバイスと第１のワイヤレスＵＳＢ対応デバイスとの間の通信を容易にするワイヤレスＵＳＢ対応ハブであって、
前記ワイヤードＵＳＢ対応デバイスと通信するように構成された第１のポートと、
前記第１のワイヤレスＵＳＢ対応デバイスと通信するように構成された第２のポートと、
前記ワイヤードＵＳＢ対応デバイスを検出し、前記第１のワイヤレスＵＳＢ対応デバイスに、ネイティブワイヤレスＵＳＢ対応デバイスとして前記ワイヤードＵＳＢ対応デバイスを提供する、ように構成されたコントローラと、
を備えているワイヤレスＵＳＢ対応ハブ。
［３２］
前記コントローラは、前記第１のワイヤレスＵＳＢ対応デバイスに対して、デバイスワイヤアダプタとして前記ハブを提供するように構成されており、
前記第１のワイヤレスＵＳＢ対応デバイスは、ワイヤレスＵＳＢ対応ホストを含んでいる、
［３１］に記載のワイヤレスＵＳＢ対応ハブ。
［３３］
前記コントローラは、自身のアドレスを有している固有ワイヤレスＵＳＢ対応デバイスとして前記第１のワイヤレスＵＳＢ対応デバイスに、前記ワイヤードＵＳＢ対応デバイスを提供するように構成されている、［３１］に記載のワイヤレスＵＳＢ対応ハブ。
［３４］
前記コントローラは、ワイヤードＵＳＢ対応デバイスのエンドポイントをワイヤレスＵＳＢ対応ハブのエンドポイントにマッピングすることによって、ワイヤレスＵＳＢ対応ハブ上で個別の機能として前記ワイヤードＵＳＢ対応デバイスを提供するように構成されている、［３１］に記載のワイヤレスＵＳＢ対応ハブ。
［３５］
前記コントローラは、
複数のダウンストリームワイヤードＵＳＢ対応デバイスのそれぞれについてワイヤレスＵＳＢアドレスを保持するように、
前記複数のダウンストリームＵＳＢ対応デバイスのうちの１つに指示されたワイヤレスＵＳＢパケットに応答するように、
構成されている、［３１］に記載のワイヤレスＵＳＢ対応ハブ。
［３６］
前記コントローラは、
前記第１のワイヤレスＵＳＢ対応デバイスからデバイスディスクリプタリクエストをインターセプトするように、
前記ワイヤードＵＳＢ対応デバイスからデバイスディスクリプタを読み取るように、
あらかじめ決定されたワイヤレスＵＳＢ標準によって指定されるように、いずれのワイヤレスＵＳＢ対応デバイスのためのデバイスディスクリプタと一致するように、前記デバイスディスクリプタを修正するように、
前記第１のワイヤレスＵＳＢ対応デバイスに前記の修正されたデバイスディスクリプタを提供することによって前記ネイティブワイヤレスＵＳＢ対応デバイスとして前記ワイヤードＵＳＢ対応デバイスを提供するように、
構成されている、［３１］に記載のワイヤレスＵＳＢ対応ハブ。
［３７］
前記デバイスディスクリプタは、標準エンドポイントディスクリプタを含んでおり、
前記コントローラは、ワイヤレスＵＳＢのパケットサイズと一致するように前記標準エンドポイントディスクリプタにおいて最大のパケットサイズのフィールドをセットすることによって、前記デバイスディスクリプタを修正するように構成されている、
［３６］に記載のワイヤレスＵＳＢ対応ハブ。
［３８］
前記コントローラは、
前記ワイヤードＵＳＢ対応デバイスから前記第１のワイヤレスＵＳＢ対応デバイスへと転送されるべき予期された量のデータを決定するように、
前記予期された量のデータを含むようにあらかじめ決定されたワイヤレスＵＳＢプロトコルを修正するように、
構成されている、［３１］に記載のワイヤレスＵＳＢ対応ハブ。
［３９］
前記あらかじめ決定されたワイヤレスＵＳＢプロトコルは、あらかじめ決定されたワイヤレスＵＳＢワイヤアダプタプロトコルを含んでおり、
前記コントローラは、チャネル時間割り付け部分において最大のパケットサイズのフィールドをセットすることによって前記あらかじめ決定されたワイヤレスＵＳＢワイヤアダプタプロトコルを修正するように構成されており、前記最大のパケットサイズのフィールドは、前記予期された量のデータを指定している、
［３８］に記載のワイヤレスＵＳＢ対応ハブ。
［４０］
前記あらかじめ決定されたワイヤレスＵＳＢプロトコルは、あらかじめ決定されたワイヤレスＵＳＢワイヤアダプタプロトコルを含んでおり、
前記コントローラは、前記あらかじめ決定されたワイヤレスＵＳＢワイヤアダプタプロトコルのチャネル時間割り付け部分においてフィールドを加えることによって、前記あらかじめ決定されたワイヤレスＵＳＢワイヤアダプタプロトコルを修正するように構成されており、前記フィールドは、前記予期された量のデータを指定している、
［３８］に記載のワイヤレスＵＳＢ対応ハブ。
［４１］
前記コントローラは、
前記ワイヤレスＵＳＢ対応デバイスとの通信のためにワイヤレスＵＳＢのセキュリティ接続コンテキストをネゴシエートし且つ保持するように、
前記コントローラが前記ワイヤードＵＳＢ対応デバイスを検出した後で、前記ワイヤレスＵＳＢのセキュリティ接続コンテキストを適用する、
［３１］に記載のワイヤレスＵＳＢ対応ハブ。
【図１】
0005551193.tif 000002
【図２】
0005551193.tif 000003
【図３】
0005551193.tif 000004
【図４】
0005551193.tif 000005
【図５】
0005551193.tif 000006
【図６Ａ】
0005551193.tif 000007
【図６Ｂ】
0005551193.tif 000008
【図７Ａ】
0005551193.tif 000009
【図７Ｂ】
0005551193.tif 000010
【図８】
0005551193.tif 000011
【図９】
0005551193.tif 000012
【図１０】
0005551193.tif 000013
【図１１】
0005551193.tif 000014
【図１２】
0005551193.tif 000015