エンハンスドワイヤレスUSBプロトコル及びハブ
【課題】ホストシステムとワイヤードUSBデバイスとの間でデータを無線で送るワイヤアダプタを含むワイヤレスUSBシステムのためのデータスループットを改善するための方法を提供する。
【解決手段】ワイヤードUSBデバイス1010、1020のためのプロキシとして動作するワイヤレスUSBのハブ1000を提供し、また、自身のアドレスを備えた固有WUSBデバイスとして、あるいはすでに既存のWUSBデバイス上の個別機能として、のいずれかで、ホストにそれらを提示する。
【解決手段】ワイヤードUSBデバイス1010、1020のためのプロキシとして動作するワイヤレスUSBのハブ1000を提供し、また、自身のアドレスを備えた固有WUSBデバイスとして、あるいはすでに既存のWUSBデバイス上の個別機能として、のいずれかで、ホストにそれらを提示する。
【発明の詳細な説明】
【分野】
【0001】
本発明は、一般的に、認定ワイヤレスユニバーサルシリアルバス(Wireless Universal Serial Bus)(WUSB)のインタフェースに関する。より具体的には、本発明は、認定ワイヤレスUSBのワイヤアダプタシステム(Certified Wire adapter system)のスループット(throughput)を改善することに関する。
【背景】
【0002】
ユニバーサルシリアルバス(Universal Serial Bus)(USB)は、ホストコンピューティングデバイス(host computing device)に、電子周辺装置(electronic peripheral devices)を取りつける(attaching)ためのシリアルバス標準である。それは、パソコンのために設計されたが、その人気は、テレビゲームコンソール、PDAs、ポータブルDVDプレーヤー、モバイル電話、及び他の人気の電子機器(electronic devices)に関してもまた陳腐化になるように駆り立てた。USBの目標は、コンピュータ上でより古いシリアルでパラレルなポートを置き換えることである、というのは、これらは、たくさんのデバイスドライバ(device drivers)が開発され維持されるように、標準化されておらず、必要とされていなかった(called for)。
【0003】
USBは、コンピュータの拡張バスに拡張カードを差し込む必要性がなく、周辺装置が接続されることを可能にするように、そして、デバイスがホットスワップされる(hot-swapped)ことを可能にしてプラグアンドプレイ(plug-and-play)機能を改善するように、設計されており、ここにおいて、デバイスは、コンピュータの電源を切るあるいは再起動することなく接続されている、あるいは、接続が切れられている。デバイスが最初に接続されるとき、ホストは、それを列挙し(enumerates)、認識し、そして、そのデバイスにとって必要とされるデバイスドライバをロードする。
【0004】
USBは、マウスデバイス、キーボード、スキャナ、デジタルカメラ、プリンタ、外部のストレージデバイス等のような周辺装置を接続し、そして、これらのデバイスの多くにとっての標準的な接続方法となった。
【0005】
ワイヤレスユニバーサルシリアルバスの仕様書(2005年5月12日に公開されており、USBインプリメンターフォーラム株式会社から入手可能)の改訂版1.0は、拡張されたUSB/WUSBシステムにおけるワイヤレスリンクの使用を可能にするワイヤードUSBに対する拡張を説明し、特定する。USBの仕様書に対するこれらのワイヤレス拡張は、認定ワイヤレスユニバーサルシリアルバスあるいは単なるワイヤレスUSB(WUSB)を指している。拡張は、既存のワイヤードUSBの仕様書及びWiMediaアライアンスMAC及びPHYウルトラワイドバンド(UWB)ワイヤレス技術を構築する。
【0006】
WUSBの仕様書は、ワイヤアダプタ(Wire Adapters)(WA)として知られているデバイスの説明及び仕様書を含む。これらのデバイスは、「レガシ(legacy)」ワイヤードUSBホスト及びデバイスが、ワイヤードリンクとワイヤレスリンクの両方を含んでいる拡張されたUSBシステムにおいてWUSBデバイスと相互接続されることを可能にする、ワイヤードUSBアダプタツーワイヤレスUSBアダプタ(wired-USB-to-Wireless-USB adapters)である。
【0007】
2タイプのワイヤアダプタがあり、互いに関連して機能するホストワイヤアダプタ(Host Wire adapter)(HWA)とデバイスワイヤアダプタ(Device Wire adapter)(DWA)がある。HWAsは、ワイヤード「アップストリーム(upstream)」USBポートとワイヤレス「ダウンストリーム(downstream)」WUSBポートとを有しており、ワイヤードUSBホストがWUSBデバイスと通信することを可能にする。
【0008】
DWAsは、ワイヤレス「アップストリーム」WUSBポートと、1以上のワイヤード「ダウンストリーム」USBポートとを有しており、ワイヤードUSBデバイス(wired USB device)がワイヤレスUSBホスト(Wireless USB host)と通信することを可能にする。
【0009】
WUSBの仕様書のワイヤアダプタプロトコルは、WAsを通じてデータを転送するために、そして、WAsを制御し管理するために、使用される。残念ながら、典型的なシチュエーションにおいてWUSBの仕様書で指定されるようなワイヤアダプタプロトコルは、とても非効率であり、受け入れ難いくらい低いスループットを結果としてもたらす。プロトコルの非効率は、主に、2つの要因に起因しており、プロトコルは、転送されたデータの各ブロックについて(for each block of data transferred)、制御を伝達している多数の非データメッセージと、伝送完了ステータス情報とが、交換されるという点で、「チャティ(chatty)」である。さらに、プロトコルは、システムを通じたデータフローの「パイプライニング(pipelining)」にあまり適しておらず、データの転送の間に高いレイテンシ、したがって低いスループット、を結果としてもたらす。
【0010】
したがって、ワイヤードUSBデバイスとワイヤレスUSBデバイス(wired and wireless USB devices)の両方を含んでいるUSBシステムにおいて、デバイスのためのスループットを改善するための方法を有することが望ましいであろう。
【図面の簡単な説明】
【0011】
【図1】図1は、従来技術にしたがったワイヤードUSBのシステムの標準的な構成を示す。
【図2】図2は、WUSBホストに直接取り付けられた「ネイティブ」WUSBデバイスを備えたワイヤレスUSBシステムのための構成を示す。
【図3】図3は、2つのワイヤードUSBデバイスに接続された、デバイスワイヤアダプタを示す。
【図4】図4は、従来技術にしたがって、レガシワイヤードUSBデバイスにワイヤレスUSB機能を提供するために、デバイスワイヤアダプタとホストワイヤアダプタとを組み込んでいるシステムを示す。
【図5】図5は、図4で図示されたワイヤレスUSBシステムにわたって通信するために使用されたデータパケットのシーケンス(the sequence of data packets)を示す。
【図6A】図6A及び6Bは、従来技術にしたがって標準ワイヤアダプタプロトコルを使用しているINリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図6B】図6A及び6Bは、従来技術にしたがって標準ワイヤアダプタプロトコルを使用しているINリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図7A】図7A及び7Bは、従来技術にしたがって標準ワイヤアダプタプロトコルを使用しているOUTリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図7B】図7A及び7Bは、従来技術にしたがって標準ワイヤアダプタプロトコルを使用しているOUTリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図8】図8は、本発明にしたがって一実施形態としてエンハンスドワイヤアダプタプロトコルを使用しているINリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図9】図9は、本発明にしたがって一実施形態としてエンハンスドワイヤアダプタプロトコルを使用しているOUTリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図10】図10は、本発明にしたがって一実施形態としてワイヤレスUSBのハブを示す。
【図11】図11は、本発明の一実施形態におけるOUT転送リクエスト自動転送(an OUT Transfer Request forwarding)のためのパケットのフロー及びプロセッシングを図示している図を示す。
【図12】図12は、本発明の一実施形態におけるIN転送リクエスト自動転送(an IN Transfer Request forwarding)のためのパケットのフロー及びプロセッシングを図示している図を示す。
【詳細な説明】
【0012】
本開示の態様は、添付図面を用いて読み取るときに、次の詳細な説明から最良に理解される。
【0013】
本発明の一実施形態は、ホストシステムとワイヤードUSBデバイスとの間でデータを無線で送信するワイヤアダプタを含むワイヤレスUSBシステムのためのデータスループットを改善するためにエンハンスドワイヤアダプタプロトコルを提供する。このプロトコルを使用して、ワイヤアダプタは、自動的に着信データ転送(incoming data transfers)をより小さいセグメントにセグメント化しており、なお、ワイヤアダプタは、どのくらいのデータをフェッチする(fetch)かを決定するためにそのバッファステータスを使用する。データは、ワイヤアダプタがアップストリームから指定された最小量のデータを受信するときに、完了データセグメントを受信することを待機することなくダウンストリームで転送される。エンハンスドプロトコルはまた、転送完了メッセージを分配し(dispenses)、代わりに、データ転送が転送結果についてダウンストリームでポーリングすることによって完了したときに、決定する。ワイヤアダプタはまた、転送リクエスト(transfer requests)をダウンストリームへ自動転送するために、遠隔パイプディスクリプタと共に(in conjunction with remote pipe descriptors)自動転送パイプディスクリプタ(forward pipe descriptors)を利用する。
【0014】
本発明の別の実施形態は、ワイヤードUSBデバイスとホストシステムとの間のワイヤレス通信を可能にするワイヤレスUSB(WUSB)のハブを提供する。WUSBハブは、ワイヤードUSBデバイスのためのプロキシとして作用しており、それらを、ホストシステムに対して、ネイティブWUSBデバイスであるかのように提供する。WUSBハブは、それ自体のデバイスアドレスを備えた固有のWUSBデバイスとして、あるいは、すでに既存のデバイス(例えばWUSBハブ、そしてそれはデバイスワイヤアダプタとして列挙することができる)上の個別機能として、取り付けられたワイヤードUSBデバイス(attached wired USB device)を提供する。
【0015】
本発明の実施形態は、WUSBのワイヤアダプタシステムのスループットを改善することを含んでいる。一実施形態は、WUSBのワイヤアダプタシステムのスループットを改善するために、ワイヤアダプタプロトコルをスリム化することを含んでいる。別の実施形態は、それらが「ネイティブ」WUSBデバイスであるかのように、WUSBハブに差し込まれたワイヤードUSBデバイスを提供することを含む。この実施形態は、USBデバイスプロキシWUSBハブ、あるいは単にWUSBハブを指す。
【0016】
図1は、従来技術にしたがって、ワイヤードUSBのシステムの標準的な構成を示す。この構成において、ホストシステム(host system)100は、USBのルートハブハードウェア(USB root hub hardware)101、USBのルートハブドライバ(USB root hub driver)102、及びデバイスドライバ(device driver)103、を含む。外部USBデバイス110は、それ自体のアダプタハードウェア111と、その機能に関連づけられたソフトウェア112と、を含んでいる。ホスト100と外部デバイス110は、それぞれのUSBアダプタ101、111に差し込まれるワイヤードUSB接続(a wired USB connection)120によって接続されている。
【0017】
図2は、WUSBホストに直接取り付けられた「ネイティブ」WUSBデバイスを備えたワイヤレスUSBシステムについての構成を示す。図2で図示されたシステムは、図1で図示されたレイアウトにおいて同様であり、大きな違いは、ホスト200と外部USBデバイス(external USB device)210がそれぞれ組み込みのワイヤレスアダプタ(built-in wireless adapters)201、211を有しているということである。これらのアダプタ201、211は、ワイヤードケーブルを介する代わりに、アンテナ220、221によって提供されるワイヤレス信号にわたって通信する。図2のネイティブワイヤレスUSBシステムは、コンピュータ/電気産業の多くが達しようとしている目標を表わしている。しかしながら、現在、ごくわずかのデバイスしか(very few devices)、ネイティブワイヤレス機能を有していない。したがって、産業が両方のワイヤードUSBデバイスとワイヤレスUSBデバイスとホストを含んでいるシステムに適応することが望ましい。
【0018】
WUSBシステムへとワイヤードUSBデバイスを接続するための現在の解決策は、図3で図示されているように、デバイスワイヤアダプタ(DWA)へとそれらを差し込むということである。ワイヤードUSBデバイス310、320は、標準USBケーブル311、321を使用して、DWA300へと差し込まれる。DWA300は、代わりに、USBホストにワイヤレスリンクを提供するワイヤレスアンテナ301を提供される。
【0019】
対応するホストワイヤアダプタ(HWA)は、DWAと通信するためにホストシステムによって使用されることができる、あるいは、DWAは、「ネイティブ」WUSBホストアダプタを通じてホストシステムと通信することができる。
【0020】
図4は、レガシワイヤードUSBデバイスにワイヤレスUSB機能を提供するためにデバイスワイヤアダプタとホストワイヤアダプタと組み込んでいるシステムを示す。この例は、外部デバイスとしてホスト400に接続されたホストワイヤアダプタ(HWA)410を示しており、それは、現在の設計の典型である。次第に、HWA410は、ホスト400システムの中に埋め込まれたネイティブWUSBホストアダプタによって置き換えられるであろう。
【0021】
HWA410及びDWAs410、420はUSBデバイスとして認識されているので、ホストシステム400は、HWA410及びDWAs420、430を介してワイヤード外部USBデバイス421、422、431、432との通信を可能にするために、マルチプルソフトウェアドライバ層を組み込む。
【0022】
ホスト400は、HWA410が(ホストハウジングに対して外部あるいは内部いずれにせよ)接続されるワイヤードUSBのルートハブ401を有する。次は、ルートハブドライバ402である。ホストは、DWAドライバ404と同様に個別のHWAドライバ403を有している。それらの上には、チェインの終わりにある外部USBデバイス421、422、431、432に特有であるデバイスドライバ405−408がある。デバイスドライバ405−408のそれぞれは、DWAドライバ404に取り付けられ、通信する。
【0023】
データは、ワイヤード接続を通じてホスト400からHWA410に通信される。HWA410は、そのあとで、DWAs420、430のうちの1つにデータを送信するためにワイヤレスプロトコルを使用し、それは、代わりに(in return)、ワイヤード接続にわたって、特定のUSBデバイス421、422、431あるいは432に、データを送る。
【0024】
図5は、図4で図示されたワイヤレスUSBシステムにわたって通信するために使用されるパケットのシーケンスを示す。システムにおけるHWAとDWAの存在により、パケットシーケンス500は、どのポートがデータをルートしアクナレッジメントを得るかをDWAに伝えるために、データの前に挿入された制御パケットを含む。このことは、外部デバイスとホストとの間のシステムにおける各HWAとDWAに関して生じる。
【0025】
図5で示された例において、データパケット(data packet)504は、転送リクエスト503に先立つ、一方で、転送リクエスト502は、転送リクエスト501によって先立つ(is preceded)。転送リクエスト501及び503は、DWAに転送リクエスト502とデータパケット504とを送るようにHWAに指図する。転送リクエスト502は、USBデバイスにデータパケット504を送るようにDWAに指図する。転送リクエストは、その意図されたデバイスにそのようなものとして、出現のみする。例えば、DWA転送リクエスト502は、HWAにとってはデータのようであるが、DWAにとっては転送リクエストのようである。
【0026】
上記で説明されているように、現在のワイヤレスUSBシステムは、ターゲットUSBデバイスに/から、データのフローを指図するために、外部デバイスとホストにおけるその特定ドライバとの間でドライバのマルチプル層によって生成される制御パケット(転送リクエスト)を使用している。残念ながら、この設計は、動的にスループットを阻害する(hampers)。
【0027】
図6A及び6Bは、標準ワイヤアダプタプロトコルを使用しているINリクエストについてのプロセスのフローを図示しているシーケンス図である。図7A及び7Bは、標準ワイヤアダプタプロトコルを使用しているOUTリクエストについてのプロセスのフローを図示しているシーケンス図である。これらのシーケンス図は、外部USBデバイスとそのドライバとの間でデータを転送するために、標準プロトコル下で必要な多数の転送リクエストを図で図示している。この複雑性の多くは、システムの一層について意図された転送リクエストが他の層によってデータとして見られるという事実から生じ、その結果、行先 (destination)にデータ自体を最終的に配信する前に、システムの各層においてデータ受信についてのアクナレッジメントを引き起こす(invoke)。
【0028】
本発明の実施形態は、データ転送の一部として交換されるメッセージの数を減らすことによってスループットを改善するエンハンスドワイヤアダプタプロトコルを含んでおり、その結果、ワイヤードUSBインタフェースとワイヤレスメディアにわたるメッセージの処理時間と転送時間を減らす。スループットはまた、システムを通じてデータフローの「パイプライニング(pipelining)」を改善することによって増大させられ、そしてそれは、転送レイテンシを減らす。
【0029】
エンハンスドワイヤアダプタプロトコルは、送信完了メッセージを削除し、そして、代わりに、いつ転送が完了したかを決定するために転送結果についてポーリングすることを使用する。INデータ転送は、ワイヤアダプタによって、より小さい転送へと、自動的にセグメント化されることができる(「自動セグメント化(auto-segmentation)」)。このことは、ワイヤアダプタ上へとインテリジェンス機能をプッシュし、そして、ホストソフトウェアから退ける(すなわち、DWAはバッファを管理する)。自動セグメント化の間に、各セグメントのサイズは異なってもよく、それによって、ワイヤアダプタは、与えられたシチュエーションについてのスループットを最大化させるために、動的にそして適応的にセグメントサイズを調節する。ワイヤアダプタは、INデータを受諾するのに利用可能であるバッファに基づいてペンディング転送のためのINトークンを発行することによってその利用可能なバッファを自動的に管理する。
【0030】
本発明の一実施形態において、ワイヤアダプタドライバは、転送リクエストをセグメント化し、そして、これらのすべてを一度に投入する(submits)。DWAは、自動的に、各セグメントを完了するためにメモリを管理する。INデータの場合には、ワイヤアダプタがIN転送を開始する前にメモリをチェックし、また、OUTデータの場合には、ネガティブアクナレッジメントが、ワイヤアダプタが十分なメモリを有していないセグメントをバックプレッシャーするために、使用される。
【0031】
本発明の一実施形態において、アップストリームUSBインタフェースにわたるUSBホストとHWAとの間のマルチプル転送は、転送レイテンシを減らすために単一のUSB転送へとアグリゲートされることができる(may be aggregated)。特に、USBホストは、HWAについてターゲットされたマルチプルOUT転送をアグリゲートすることができ、また、HWAは、USBホストについてターゲットされたマルチプルIN転送をアグリゲートすることができる。アグリゲートされた転送の受信機(OUT転送のケースにおいてはHWAs、IN転送のケースにおいてはUSB)は、データのさらなる処理の前に、アグリゲートされた転送をデアグリゲートする(de-aggregates)。受信機は、アグリゲートされた転送のコンテンツをパースすることによって、アグリゲートされたフレームにおいてデータバウンダリを決定する。
【0032】
例えば、USBホストは、次のOUT転送データでOUT転送リクエストをアグリゲートすることができる。アグリゲートされた転送を受信するHWAは、次の転送が転送リクエストであることを予期する。アグリゲートされた転送において含まれる転送リクエストの長さを決定するために、アグリゲートされた転送の第1バイトを、審査する(examines)。転送リクエストにおけるwRPipeフィールドは、関連づけられたwRPipeディスクリプタを見つけ出す(locate)ように使用されており、そしてそれは、そのあと、転送リクエストがOUT転送リクエストであるということを決定するために使用される。転送リクエストがOUTリクエストなので、HWAは、OUT転送データとして転送リクエストの次にくるアグリゲーション転送(aggregation transfer)のデータを扱う。
【0033】
ホスト及びHWAsは、転送が生じるエンドポイントのための標準エンドポイントディスクリプタにおいて表されるように、wMaxPacketSizeの最大長さまで、転送をアグリゲートすることができる。アグリゲーションを使用しているホスト及びHWAsは、wMaxPacketSizeバイトにいたるまで受信するように、転送ごとに、準備されていなくてはならない。IN転送の場合には、ホストは、wMaxPacketSizeバイトについての入力リクエストを発行しなければならない。HWAsは、完了制御転送とデータ転送が受信されると、「オンザフライ(on-the-fly)」でデアグリゲートすることができる。「オンザフライ(on-the-fly)」デアグリゲーションは、バッファ管理とデータフローの役に立つことができ、また、エンドツーエンドのレイテンシ(end-to-end latency)を減らすことが出来る。
【0034】
いつアグリゲートするのか、アグリゲートするために何回転送するかという決定は、インプリメンテーションしだいである。典型的に「日和見主義(opportunistic)」アルゴリズムは、アグリゲーション決定を行なうために使用される。ホストあるいはHWAは、wMaxPacketSizeまで利用可能な転送をアグリゲートする。
【0035】
OUT転送データパケットについては、エンハンスドワイヤアダプタプロトコルは、「保存し自動転送する(store and forward)」転送を使用して、受け渡されているよりもむしろ「カットスルー(cut-through)」するパケットを使用する。この新しいアプローチを使用して、いくらかの最小量のOUTデータ(some minimum amount of OUT data)がアップストリームポートから受信されるときにはいつでも、ワイヤアダプタは、データの完了セグメントが受信されるまで待機するよりもむしろ、ダウンストリームポート上でデータを転送することができる。反対に、ワイヤアダプタは、データバッファが着信データ(incoming data)を保つ(hold)のに利用可能ではないとき、ネガティブアクナレッジメント(negative acknowledgments)(NAKs)を発行することによって、アップストリームポート上で「バックプレッシャー(back pressure)」を置くことによって、その利用可能なデータバッファを自動的に管理する。
【0036】
エンハンスドワイヤアダプタプロトコルは、ワイヤアダプタによる転送リクエストの自動転送を可能にし、その結果、データ転送を完了するために使用されたメッセージの数を減らす。図5の例に戻って、エンハンスドプロトコルの下で、DWA転送リクエスト502は、データではなくHWAにとっては転送リクエストのようである。したがって、HWAは、着信転送リクエスト(the incoming Transfer Request)は、本当にDWAのためのものであるということを理解し、DWAにそれを自動転送する。自動転送パイプ(Forwarding Pipe)(FPipe)ディスクリプタは、転送リクエストパケットの自動転送を制御するために、遠隔パイプ(RPipe)ディスクリプタと共に(in conjunction with)使用される。
【0037】
図11を参照すると、図1100は、本発明の一実施形態における、OUT転送リクエスト自動転送についてのパケットのフロー及びプロセッシングを図示する。図1100は、上記で説明されるように転送リクエスト自動転送(Transfer Request forwarding)がインプリメントされ(implemented)、そして転送完了メッセージが削除された(eliminated)ときに、転送を完了するためにDWAビヘービア(behavior)に焦点を当てる。ホスト上のUSBアプリケーションは、DWA1104に取り付けられたUSBデバイス1102についてターゲットされるデータを転送するリクエストをDWAドライバに提供する。転送されるべき、データ1106は、転送リクエスト1108を提供される。DWA及びHWAホストドライバは、転送リクエストOUTパケットを生成し、そして、ワイヤードUSBバスにわたってHWA1110への転送のために転送リクエストと転送データをエンキューする。転送リクエスト1108は、転送リクエスト1108を自動転送するのに使用されるべきHWA1110のFPipeディスクリプタ(FPipe descriptor)1116を参照するFPipeディスクリプタ数(FPipe Descriptor number)1114(0x8001)を、wRPipeフィールド1112において、含む。
【0038】
HWA1110は、アップストリームワイヤードUSBバスから、転送データ1106が次に来る、転送リクエストOUTパケット1108を、受信する。HWAは、転送リクエスト1108をパースし、そして、転送リクエスト1108でwRPipeフィールド1112を見つけ出す(locates)。この特定の例において、wRPipeフィールド1112は、0x8001を含む。
【0039】
HWA1110は、wRPipe数(wRPipe number)1114がFPipeディスクリプタ1116を指すということを、決定する、というのは、wRPipe数1114の最大有効ビットは、1つである。このことは、対応するパイプディスクリプタがFPipeディスクリプタ表1118において(RPipeディスクリプタ表よりもむしろ)見つけられるということ、そして、転送リクエスト1108は自動転送されるべきであるということ、をHWA1110に対して指す。この特定の例において、wRPipe数1114が0x8001なので、FPipeディスクリプタ表1118におけるFPipeディスクリプタ1116のインデクスは、0x0001である。HWA1110は、FPipeディスクリプタ表1118におけるFPipeディスクリプタ1116の0x0001を見つけ出す(locates)。
【0040】
FPipeディスクリプタ0x0001(FPipe Descriptor 0x0001)(1116)におけるwRPipeIndexのフィールド1120は、転送リクエストRPipeディスクリプタ(Transfer Request RPipe Descriptor)1122を見つけ出すように使用される。この特定の例において、RPipeディスクリプタのインデクス1124は、0x0001である。HWA1110は、RPipeディスクリプタ1122のbDeviceAddressとbEndpintAddress1126を使用して、転送リクエストのターゲットデバイスアドレス、デバイスエンドポイント、及び指図を決定する。この例においては、転送リクエスト1108は、OUTであり、そしてそれは、HWA1110がアップストリームUSBバルクINのエンドポイント1128上で転送リクエスト1108の次に来る転送データ1106を予期しているということを示しており、また、HWAは、自動転送転送リクエスト(forwarding Transfer Request)1130と転送データ1132の両方を配信するために、OUT RPipe ディスクリプタ0x0001(1122)を使用すべきである。
【0041】
HWA1110は、FPipeディスクリプタ1116のwForwardRPipe値1134で、受信された転送リクエスト1108のwRPipeフィールド1112を置き換えることによって、自動転送転送リクエスト1130を生成するために、受信された転送リクエスト1108を使用する。
【0042】
HWA1110は、DWA1104、自動転送転送リクエスト1130、及び転送データ1132への転送のためにダウンストリームワイヤレスインタフェース1136上でエンキューする(いったんデータがアップストリームのUSBバルクOUTのエンドポイント1128上で受信されると)。HWAは、ダウンストリームワイヤレスインタフェース1136上でそれらをエンキューする前に転送における各データパケットの初めと転送リクエストパケットの初めに2バイトのWUSBヘッダを加える。
【0043】
いったん自動転送転送リクエスト1130と転送データ1132とがDWA1104に転送されると、HWA1110は、OUT RPipeディスクリプタ1122(0x0001、転送リクエスト1108とデータ1106とを配信するために使用される)でbControlフィールド1138を審査し(examines)、そして、転送結果及び転送データの自動リクエスト及び自動転送オプション(the Automatic Request and Forwarding of Transfer Results and Transfer Data option)がイネーブルされるということを決定する(bControlフィールドにおいてビット0)。HWA1110は、そのあと、ダウンストリームDWA1104のバルクINパイプ1144に関連づけられたRPipeディスクリプタ1142を見つけ出すために、OUT RPipeディスクリプタ1122においてwTransferRPipeフィールド1140を使用する。IN RPipeディスクリプタ1142に関連づけられたものは、ペンディング転送リストである(図1100では示されていない)。HWA1110は、OUT転送についての転送結果がダウンストリームDWAのバルクINパイプ1144から予期されているということを指す、ペンディング転送リストにおいてエントリ(entry)を加える。
【0044】
転送結果1146が予期されているものであるということを示している、IN RPipeペンディングリストにおけるエントリのおかげで、HWA1110は、予期された転送結果1146を受信するために、ダウンストリームDWA1104上でバルクINのエンドポイント1144に対してINトークンを発行し始める。
【0045】
転送結果1146がDWA1104から受信されるとき、HWA1110は、転送結果が受信されるデバイス及びエンドポイントに関連づけられたRPipeディスクリプタを見つけ出すために、パケットMACヘッダにおいてはSrcAddrフィールドを、WUSBヘッダにおいてはエンドポイント番号フィールドを、使用する。この特定的な例において、デバイスはDWA1104であり、エンドポイントはDWAバルクINのエンドポイントであり、DWAエンドポイントについてHWAの対応するRPipeは、RPipeディスクリプタ0x0002(1148)である。
【0046】
HWA1110は、ペンディング転送リスト及び転送結果1146の転送IDsを整合させることに基づいて、受信された転送結果1146に対応するエントリをRPipeペンディング転送リストで見つけ出す。HWA1110は、ペンディング転送リストエントリから転送結果1146はOUT転送のためであるということ、したがって、いずれのデータも転送結果1146の次に来ない、ということを決定する。
【0047】
HWA1110は、IN RPipeディスクリプタの0x0002(1142)のbControlフィールド1150を審査し、そして転送結果及び転送データの自動リクエスト及び自動転送オプションがイネーブルされるということを決定する(bControlフィールドにおいてはビット0)。イネーブルされるこのオプションに基づいて、HWA1110は、ホストへの転送のために、アップストリームUSBインタフェースのバルクINのエンドポイント(the upstream USB interface bulk IN endpoint)1152上で転送結果パケット1146を自動的にエンキューする。HWA1110は、そのあと、予期された転送結果1146に対応するRPipeディスクリプタの0x0002(1142)ペンディング転送リストで、エントリを削除する(deletes)。
【0048】
HWAホストドライバは、HWA1110におけるペンディング転送リストと同様のペンディング転送記録を保持する。ペンディング転送記録に基づいて、HWAドライバは、前に送った転送リクエスト1108についての転送結果1146を予期しており、したがって、HWAドライバは、INトークンがHWAワイヤードUSBインタフェースのバルクINのエンドポイント(HWA wired USB interface bulk IN endpoint)1152に送られるようにするIN転送をリクエストする。HWAは、転送結果1146が、バルクINキューの上に来て、そしてINトークンが受信されるとすぐに、ホストに転送結果を送る。転送結果1146がHWAドライバに受け渡されるとき、HWA1110は、転送結果1146の情報に基づいてその記録をアップデートし、そしてWUSB転送は完了する。
【0049】
図12を参照すると、図1200は、本発明の実施形態におけるIN転送リクエスト自動転送に関するパケットのフロー及びプロセッシングを図示する。IN転送リクエスト自動転送に関するパケットのフロー及びプロセッシングは、OUT転送リクエスト自動転送に関するパケットのフロー及びプロセッシングに似ている。差異は次の通りである:
IN自動転送転送リクエスト(IN forwarding Transfer Request)1204のwRPipeフィールド1202(0x8002)は、IN RPipe1210を参照するwRPipeIndexフィールド1208(0x0002)を含んでいるFPipeディスクリプタ1206(0x0002)を参照する。このケースにおけるRPipeはINについてなので、HWA1212は、転送データが転送リクエスト1204の次に来ることを予期しない、したがって、次に来るデータなしに、転送リクエスト1204を自動転送する。
【0050】
HWA1212は、転送リクエスト1204を配信するために使用されるOUT RPipe1214を見つけ出すために、IN RPipe 1210(0x0002)でwTransferRPipeフィールド1211を使用する。転送リクエスト1204がDWA1216に転送された後で、HWA1212は、IN転送についての転送結果1218がダウンストリームDWAバルクINパイプ1219から予期されているということを示すペンディング転送リストにおいてエントリを加える。
【0051】
HWA1212が転送結果1218を受信するとき、それは、そのあと、バイト数が受信された転送結果1218のdwTransferLengthフィールドで示されている、ダウンストリームDWAバルクINのエンドポイント1219から読み取ることを試みる。HWA1212は、ペンディング転送リストの対応するエントリがIN転送を示すので、データを予期する。
【0052】
HWA212は予期されたデータを受信した後で、それは、ホストへの転送のために、アップストリームのワイヤードUSBバルクINのエンドポイント1222上で転送結果1218と転送データ1220とをエンキューする。もし自動セグメント化が可能である場合には、HWA1212は、データをセグメント化し、各データセグメントで転送結果をエンキューすることができる。各転送結果におけるbTransferSegmentフィールドは、セグメント数(the segment number)にセットされる。
【0053】
転送リクエスト自動転送については、ワイヤアダプタホストドライバは、別のワイヤアダプタホストドライバから受諾された転送リクエストにおける転送IDと、ワイヤアダプタによって生成された結果として生じる転送における転送IDとの間で関連づけ(association)を保持する。それは、そのあとで、転送結果パケット及び転送リクエストにおける1つの転送IDを修正するためにこの関連づけを使用する。
【0054】
転送IDsは、転送を固有に識別するために、また、特定の転送とパケットを関連づけるために、ワイヤアダプタドライバとワイヤアダプタとによって使用された32ビット値である。HWAあるいはDWAホストドライバによって開始された各転送の場合、固有の転送IDは、生成され、対応する転送リクエストに配置される(placed)。転送結果パケットを生成するとき、HWAsとDWAsは、転送のために、転送リクエストから転送IDを転送結果に配置する。
【0055】
標準ワイヤアダプタプロトコルで、転送IDsは、一例のDWAドライバあるいはHWAドライバと、対応するワイヤアダプタと、のコンテキスト(context)において固有である。例をとってみると、代わりにホストに取り付けられたHWA、に取り付けられたDWAのケースがある。DWAドライバは、転送リクエストを生成するとき、それは、転送リクエストにおいて配置するように固有の転送IDを選択する。HWAドライバとHWAは、転送リクエストのコンテンツを審査することなく、(HWAサブシステムに関する限り、転送リクエストは、転送されるべきデータである)DWAにDWAドライブ転送リクエストを配信する。DWAに転送リクエストが配信されるとき、DWAは、何をするかを決定するために転送リクエストをパースし、そして、結果として生じる転送レスポンスにおいて転送IDを使用する。
【0056】
しかしながら、HWAドライバがDWA転送リクエストを配信するために、HWAドライバは、HWAのためのその転送リクエストを生成する。DWA転送リクエストを配信するために使用されるHWA転送リクエストにおいて配置された転送IDは、DWA転送リクエストにおける配信IDと無関係である。異なるように説明されており、各ワイヤアダプタドライバの「層(layer)」は、それ自体のセットの固有転送IDsを保持し、他のワイヤアダプタドライバによって生成され使用される転送IDsに気づかないでいる。
【0057】
しかしながら、エンハンスドワイヤアダプタプロトコルの転送リクエストの自動転送(Enhanced Wire Adapter Protocol Transfer Request Forwarding)が使用されているとき、転送IDsの取り扱い(handling)は、標準プロトコルのよりも必然的に異なっている。転送リクエストが1つのワイヤアダプタから別のへと自動転送されるとき、転送リクエストは、自動転送ワイヤアダプタとターゲットワイヤアダプタの両方によって処理され、転送IDが両方のワイヤアダプタによって使用される。このケースにおいて、両方のワイヤアダプタは、同じセットの転送IDsと機能する。自動転送された転送結果パケットにも同じことが言え、同じ転送IDが、1つまたは複数のワイヤアダプタによって使用される。
【0058】
自動転送は、ワイヤアダプタによる転送IDsの特別な取り扱いを必要としないが、ホストドライバによる特定のプロセッシングを必要とする。もし自動転送がホストドライバとその対応するワイヤアダプタによって使用されている場合には、そのときには、ホストドライバが別の(「アップストリーム」)ホストドライバから転送リクエストを受諾するときに、それは、転送IDを見つけ出すために転送リクエストをパースする。ホストドライバは、そのあとで、ドライバとワイヤアダプタの範囲内で固有である新しい転送IDを生成し、そして、次のドライバにそれを自動転送する前に、転送リクエストにおいて新しい転送IDを配置する。ホストドライバはまた、アップストリームワイヤアダプタによって提供された転送IDと、ホストドライバによって生成された転送IDとの間の関連づけを提供する記録を作成する。
【0059】
そのとき、ホストドライバが転送結果を受信するとき、転送ID関連づけ表(Transfer ID association table)において転送結果の転送IDを調べ、そして、対応する転送リクエストが自動転送されたということを決定する。それは、そのあと、オリジナルリクエスティングドライバ(original requesting driver)に対して転送結果を受け渡す前に、転送ID関連づけ表(すなわち、オリジナル転送IDを備えている)の値で転送IDを置き換える。この方法で、「ダウンストリーム」ドライバによる転送IDsに関して自動転送することの効果は、ホスト“アップストリーム”のドライバに対してトランスパレント(transparent)になされる。
【0060】
代替的に、単一のホストドライバが2つまたは複数のシリアル接続されたワイヤアダプタ(例えばHWAに接続されたDWA)を管理する、インプリメンテーションが可能である。このケースにおいては、単一のホストドライバは、自動転送の効果を十分に知っており、DWAとHWAの両方によって使用される転送IDsを生成することによってそれを説明することができる。
【0061】
エンハンスドプロトコルの下で、ワイヤアダプタは、そのダウンストリームワイヤアダプタに対して、前の転送リクエストに基づいて、伝送結果パケットについてダウンストリームワイヤアダプタを自動的にポーリングする。同様に、ワイヤアダプタは、伝送完了と新しい転送結果を生成し自動転送するよりもむしろ、アップストリームインタフェースにいずれの受信された転送結果を自動転送する。
【0062】
ホストドライバから転送リクエストを受信することによって開始されるダウンストリームデータについてのポールよりもむしろ、ワイヤアダプタは、INデータ転送についての転送結果を前に受信したことに基づいて、INデータについてのダウンストリームデバイスを自動的にポーリングする。同様に、送信完了と、新しい転送結果と、を生成し自動転送するよりもむしろ、ワイヤアダプタは、受信の後で、アップストリームインタフェースに対して、IN転送データを単に自動転送する。
【0063】
本発明の一実施形態において、マルチプルワイヤアダプタドライバ(HWA及びDWA)は、アプリケーションプログラミングインタフェース(Application Programming Interfaces)(APIs)の数を減らすために単一のワイヤアダプタに結合されることができ、したがって、APIsにわたるメッセージの受け渡しによって、レイテンシが招かれる(incurred)。さらに、マルチプルワイヤアダプタドライバを結合させることは、転送リクエスト自動転送が使用されているときにアップストリームのドライバから提示される転送リクエストにおける転送IDsと、発行された転送リクエストにおける転送IDsとの間の関連づけを保持する必要性が削除される(eliminated)ので、転送IDsの割り当てにおけるコンソリデーション(consolidation)を可能にする。
【0064】
図8は、本発明にしたがった一実施形態として、エンハンスドワイヤアダプタプロトコルを使用しているINリクエストについてのプロセスフローを図示しているシーケンス図である。図9は、本発明にしたがった一実施形態として、エンハンスドワイヤアダプタプロトコルを使用しているOUTリクエストについてのプロセスフローを図示しているシーケンス図である。図8及び図9は、既存のプロトコルを図示している図6A、6B、7A、および7Bで示されているシーケンス図と比べて、エンハンスドワイヤアダプタプロトコルによって提供される制御オーバーヘッドにおける削減(reduction in control overhead)を図示する。
【0065】
図10は、本発明にしたがった一実施形態としてワイヤレスUSBのハブを示している。上記で説明されるように、現在のワイヤアダプタプロトコルは、比較的に非効率であるのに対して、「ネイティブ」WUSBデバイスのためのWUSBプロトコルは、比較的能率がいい。プロキシWUSBハブ1000は、ワイヤードUSBデバイス1010、1020を、それらが「ネイティブ」WUSBデバイスであるかのように、提供することによって、この効率のよさ(efficiency)を利用する。
【0066】
プロキシWUSBハブ1000は、ワイヤレスアップストリームポート1001と1つまたは複数のワイヤードUSBダウンストリームポート1002、1003を有しているという点において、DWAと類似しており、なお、ワイヤードUSBデバイス1010、1020は、ダウンストリームワイヤードUSBポートに差し込まれることができる。WUSBハブは、ワイヤードUSBデバイス1010、1020が、ネイティブWUSBデバイスであるかのようにホストには見える、という点でDWAとは異なる。このことは、WUSBハブ1000「プロキシ(proxy)」を、ワイヤレスインタフェース上で取り付けられたダウンストリームワイヤードデバイスにすることによって達成される。したがって、WUSBハブ1000は、DWAではなく、1つまたは複数のWUSBデバイスとして、ホストには見えており、そしてそれは、標準ワイヤアダプタプロトコルによって使用される制御パケットオーバーヘッドの多くを削除する。
【0067】
取り付けられたワイヤードUSBデバイスは、いずれか、1)それ自体のデバイスアドレスで固有のWUSBデバイスとして提供されるか、あるいは、2)すでに存在しているデバイス(例えばWUSBハブ、そしてそれはDWAとして列挙することができる)上の個別機能として提供される。後者のアプローチで、ワイヤードデバイスのエンドポイントは、WUSBハブのエンドポイントへとマッピングされる。
【0068】
WUSBハブは、WUSBデバイスであるかのように、ホストに、USBデバイスを適切にプロキシサーバに送る(proxy)ために様々なメカニズムを使用する。以下の説明は、WUSBハブがダウンストリームUSBデバイスを、DWA上の機能としてよりもむしろ、WUSBデバイスとして提供するときのケースに適用する。
【0069】
各WUSBデバイスは、セキュリティ接続のコンテキストを保持する。接続のコンテキストは、最初の接続(first-time connection)の間にネゴシエートされる(negotiated)。WUSBハブは、ダウンストリームデバイスを知ることなしにあるいは関与なしにUSBデバイスについてセキュリティ接続のコンテキストをネゴシエートし、そして、セキュリティ接続のコンテキストを保存する。十分な数の固有セキュリティ接続のコンテキストは、WUSBハブが同時にプロキシサーバに送る(proxying)ことができる、最大数のダウンストリームのUSBデバイスをサポートするために、ネゴシエートされ、そして保持される。特定の接続コンテキストは、特定のダウンストリームUSBデバイスと結び付けられておらず(not tied)、むしろ、接続コンテキストは、USBデバイスが取り付けられたとき、必要なときに(as needed)適用される。
【0070】
WUSBハブは、各取り付けられたプロキシUSBデバイスについて固有のWUSBデバイスのアドレスを保持し、そして、介在デバイス(intervening device)(DWAのような)として現れているよりもむしろ、プロキシサーバに送っているWUSBデバイスであるかのようにWUSBのプロトコルに関係する(participates in)。
【0071】
WUSBハブは、直接に、あるいは、取り付けられたダウンストリームハブから割り込みパケット(interrupt packets)をインターセプトすること(intercepting)によって、のいずれかで、USB取り付けを検出する。ダウンストリームデバイスの取り付けを検出するときに、WUSBハブは、ホストに割り込みパケットを自動転送しない、あるいは、USB取り付けをホストに直接通知しない。代わりに、WUSBハブは、USBデバイスの代わりに、WUSBデバイスの接続プロシージャを実行する。
【0072】
WUSBハブはUSBデバイスのディスクリプタを読み取り、そして、それらがWUSBデバイスのためのディスクリプタと一致するように、それらを修正する。例えば、標準エンドポイントディスクリプタにおける最大のパケットサイズのフィールドは、それがWUSBのパケットサイズに一貫するように修正される。標準的な構成ディスクリプタのbmAttributesフィールドは、デバイスが自家動力(self-powered)であるということを示すためにセットされている。
【0073】
転送の終了を示す、ゼロパケットの長さの意味(zero-packet-length semantics)を使用しないいくつかのUSBデバイスについては、IN転送の長さが、正しいバイト数が読み取られるように使用されている。しかしながら、WUSBハブのケースにおいては、IN転送の長さは、WUSBのプロトコルを用いて利用可能ではない。転送リクエストなしに、読み取るためのデータの量に関して前に宣言された制限はない。幸運なことに、アップストリームワイヤレスデバイスは、転送の予期された長さを提供されている。
【0074】
WUSBのプロトコルは、WUSBハブをサポートするために、わずかに修正される。2つのオプションが利用可能である。第1のオプションでは、WUSBホストのマイクロスケジュールされた管理制御(Micro-scheduled Management Control)(MMC)において送信された情報エレメント(Information Elements)(IEs)、INチャネル時間割り付け(Channel Time Allocation)(CTE)における最大のパケットサイズのフィールドは、予期された転送の長さを示すために使用されることができる。代替的に、フィールドは、予期された転送の長さを示すためにCTAsに加えられることができる。
【0075】
本発明の実施形態においては、上記で説明されるように、WUSBハブは、WUSBハブの機能及びオペレーションを実行するために、コントローラ1004を含む。
【0076】
WUSBハブがWUSBハブ/DWA上の機能として1つまたは複数のダウンストリームUSBデバイスをプロキシサーバに送るケースについては、上記の説明は、そのセキュリティ接続コンテキストをのぞいて一般に適用しており、また、WUSBデバイスのアドレスは、WUSBハブと共有される。さらに、USBデバイスが取り付けるとき、WUSBハブは、USBデバイスのエンドポイントについて一対一でWUSBハブのワイヤレスエンドポイントをマッピングし、そして、WUSBハブ上の機能として特定のUSBデバイスに関連づけられたエンドポイントの集まりを扱う。WUSBハブは、新しく取り付けられたデバイスについてのサポートをアクティブな状態にするために、新しい機能は列挙される必要があるということをホストに通知する。
【0077】
本開示の実施形態は詳細に説明されていないが、当業者は、本開示の範囲及び精神から逸脱することなく、ここにおいて様々な変化(changes)、置き換え(substitutions)、代替 (alterations)を行なうことができるということを理解すべきである。
【分野】
【0001】
本発明は、一般的に、認定ワイヤレスユニバーサルシリアルバス(Wireless Universal Serial Bus)(WUSB)のインタフェースに関する。より具体的には、本発明は、認定ワイヤレスUSBのワイヤアダプタシステム(Certified Wire adapter system)のスループット(throughput)を改善することに関する。
【背景】
【0002】
ユニバーサルシリアルバス(Universal Serial Bus)(USB)は、ホストコンピューティングデバイス(host computing device)に、電子周辺装置(electronic peripheral devices)を取りつける(attaching)ためのシリアルバス標準である。それは、パソコンのために設計されたが、その人気は、テレビゲームコンソール、PDAs、ポータブルDVDプレーヤー、モバイル電話、及び他の人気の電子機器(electronic devices)に関してもまた陳腐化になるように駆り立てた。USBの目標は、コンピュータ上でより古いシリアルでパラレルなポートを置き換えることである、というのは、これらは、たくさんのデバイスドライバ(device drivers)が開発され維持されるように、標準化されておらず、必要とされていなかった(called for)。
【0003】
USBは、コンピュータの拡張バスに拡張カードを差し込む必要性がなく、周辺装置が接続されることを可能にするように、そして、デバイスがホットスワップされる(hot-swapped)ことを可能にしてプラグアンドプレイ(plug-and-play)機能を改善するように、設計されており、ここにおいて、デバイスは、コンピュータの電源を切るあるいは再起動することなく接続されている、あるいは、接続が切れられている。デバイスが最初に接続されるとき、ホストは、それを列挙し(enumerates)、認識し、そして、そのデバイスにとって必要とされるデバイスドライバをロードする。
【0004】
USBは、マウスデバイス、キーボード、スキャナ、デジタルカメラ、プリンタ、外部のストレージデバイス等のような周辺装置を接続し、そして、これらのデバイスの多くにとっての標準的な接続方法となった。
【0005】
ワイヤレスユニバーサルシリアルバスの仕様書(2005年5月12日に公開されており、USBインプリメンターフォーラム株式会社から入手可能)の改訂版1.0は、拡張されたUSB/WUSBシステムにおけるワイヤレスリンクの使用を可能にするワイヤードUSBに対する拡張を説明し、特定する。USBの仕様書に対するこれらのワイヤレス拡張は、認定ワイヤレスユニバーサルシリアルバスあるいは単なるワイヤレスUSB(WUSB)を指している。拡張は、既存のワイヤードUSBの仕様書及びWiMediaアライアンスMAC及びPHYウルトラワイドバンド(UWB)ワイヤレス技術を構築する。
【0006】
WUSBの仕様書は、ワイヤアダプタ(Wire Adapters)(WA)として知られているデバイスの説明及び仕様書を含む。これらのデバイスは、「レガシ(legacy)」ワイヤードUSBホスト及びデバイスが、ワイヤードリンクとワイヤレスリンクの両方を含んでいる拡張されたUSBシステムにおいてWUSBデバイスと相互接続されることを可能にする、ワイヤードUSBアダプタツーワイヤレスUSBアダプタ(wired-USB-to-Wireless-USB adapters)である。
【0007】
2タイプのワイヤアダプタがあり、互いに関連して機能するホストワイヤアダプタ(Host Wire adapter)(HWA)とデバイスワイヤアダプタ(Device Wire adapter)(DWA)がある。HWAsは、ワイヤード「アップストリーム(upstream)」USBポートとワイヤレス「ダウンストリーム(downstream)」WUSBポートとを有しており、ワイヤードUSBホストがWUSBデバイスと通信することを可能にする。
【0008】
DWAsは、ワイヤレス「アップストリーム」WUSBポートと、1以上のワイヤード「ダウンストリーム」USBポートとを有しており、ワイヤードUSBデバイス(wired USB device)がワイヤレスUSBホスト(Wireless USB host)と通信することを可能にする。
【0009】
WUSBの仕様書のワイヤアダプタプロトコルは、WAsを通じてデータを転送するために、そして、WAsを制御し管理するために、使用される。残念ながら、典型的なシチュエーションにおいてWUSBの仕様書で指定されるようなワイヤアダプタプロトコルは、とても非効率であり、受け入れ難いくらい低いスループットを結果としてもたらす。プロトコルの非効率は、主に、2つの要因に起因しており、プロトコルは、転送されたデータの各ブロックについて(for each block of data transferred)、制御を伝達している多数の非データメッセージと、伝送完了ステータス情報とが、交換されるという点で、「チャティ(chatty)」である。さらに、プロトコルは、システムを通じたデータフローの「パイプライニング(pipelining)」にあまり適しておらず、データの転送の間に高いレイテンシ、したがって低いスループット、を結果としてもたらす。
【0010】
したがって、ワイヤードUSBデバイスとワイヤレスUSBデバイス(wired and wireless USB devices)の両方を含んでいるUSBシステムにおいて、デバイスのためのスループットを改善するための方法を有することが望ましいであろう。
【図面の簡単な説明】
【0011】
【図1】図1は、従来技術にしたがったワイヤードUSBのシステムの標準的な構成を示す。
【図2】図2は、WUSBホストに直接取り付けられた「ネイティブ」WUSBデバイスを備えたワイヤレスUSBシステムのための構成を示す。
【図3】図3は、2つのワイヤードUSBデバイスに接続された、デバイスワイヤアダプタを示す。
【図4】図4は、従来技術にしたがって、レガシワイヤードUSBデバイスにワイヤレスUSB機能を提供するために、デバイスワイヤアダプタとホストワイヤアダプタとを組み込んでいるシステムを示す。
【図5】図5は、図4で図示されたワイヤレスUSBシステムにわたって通信するために使用されたデータパケットのシーケンス(the sequence of data packets)を示す。
【図6A】図6A及び6Bは、従来技術にしたがって標準ワイヤアダプタプロトコルを使用しているINリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図6B】図6A及び6Bは、従来技術にしたがって標準ワイヤアダプタプロトコルを使用しているINリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図7A】図7A及び7Bは、従来技術にしたがって標準ワイヤアダプタプロトコルを使用しているOUTリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図7B】図7A及び7Bは、従来技術にしたがって標準ワイヤアダプタプロトコルを使用しているOUTリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図8】図8は、本発明にしたがって一実施形態としてエンハンスドワイヤアダプタプロトコルを使用しているINリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図9】図9は、本発明にしたがって一実施形態としてエンハンスドワイヤアダプタプロトコルを使用しているOUTリクエストについてのプロセスのフローを図示しているシーケンス図である。
【図10】図10は、本発明にしたがって一実施形態としてワイヤレスUSBのハブを示す。
【図11】図11は、本発明の一実施形態におけるOUT転送リクエスト自動転送(an OUT Transfer Request forwarding)のためのパケットのフロー及びプロセッシングを図示している図を示す。
【図12】図12は、本発明の一実施形態におけるIN転送リクエスト自動転送(an IN Transfer Request forwarding)のためのパケットのフロー及びプロセッシングを図示している図を示す。
【詳細な説明】
【0012】
本開示の態様は、添付図面を用いて読み取るときに、次の詳細な説明から最良に理解される。
【0013】
本発明の一実施形態は、ホストシステムとワイヤードUSBデバイスとの間でデータを無線で送信するワイヤアダプタを含むワイヤレスUSBシステムのためのデータスループットを改善するためにエンハンスドワイヤアダプタプロトコルを提供する。このプロトコルを使用して、ワイヤアダプタは、自動的に着信データ転送(incoming data transfers)をより小さいセグメントにセグメント化しており、なお、ワイヤアダプタは、どのくらいのデータをフェッチする(fetch)かを決定するためにそのバッファステータスを使用する。データは、ワイヤアダプタがアップストリームから指定された最小量のデータを受信するときに、完了データセグメントを受信することを待機することなくダウンストリームで転送される。エンハンスドプロトコルはまた、転送完了メッセージを分配し(dispenses)、代わりに、データ転送が転送結果についてダウンストリームでポーリングすることによって完了したときに、決定する。ワイヤアダプタはまた、転送リクエスト(transfer requests)をダウンストリームへ自動転送するために、遠隔パイプディスクリプタと共に(in conjunction with remote pipe descriptors)自動転送パイプディスクリプタ(forward pipe descriptors)を利用する。
【0014】
本発明の別の実施形態は、ワイヤードUSBデバイスとホストシステムとの間のワイヤレス通信を可能にするワイヤレスUSB(WUSB)のハブを提供する。WUSBハブは、ワイヤードUSBデバイスのためのプロキシとして作用しており、それらを、ホストシステムに対して、ネイティブWUSBデバイスであるかのように提供する。WUSBハブは、それ自体のデバイスアドレスを備えた固有のWUSBデバイスとして、あるいは、すでに既存のデバイス(例えばWUSBハブ、そしてそれはデバイスワイヤアダプタとして列挙することができる)上の個別機能として、取り付けられたワイヤードUSBデバイス(attached wired USB device)を提供する。
【0015】
本発明の実施形態は、WUSBのワイヤアダプタシステムのスループットを改善することを含んでいる。一実施形態は、WUSBのワイヤアダプタシステムのスループットを改善するために、ワイヤアダプタプロトコルをスリム化することを含んでいる。別の実施形態は、それらが「ネイティブ」WUSBデバイスであるかのように、WUSBハブに差し込まれたワイヤードUSBデバイスを提供することを含む。この実施形態は、USBデバイスプロキシWUSBハブ、あるいは単にWUSBハブを指す。
【0016】
図1は、従来技術にしたがって、ワイヤードUSBのシステムの標準的な構成を示す。この構成において、ホストシステム(host system)100は、USBのルートハブハードウェア(USB root hub hardware)101、USBのルートハブドライバ(USB root hub driver)102、及びデバイスドライバ(device driver)103、を含む。外部USBデバイス110は、それ自体のアダプタハードウェア111と、その機能に関連づけられたソフトウェア112と、を含んでいる。ホスト100と外部デバイス110は、それぞれのUSBアダプタ101、111に差し込まれるワイヤードUSB接続(a wired USB connection)120によって接続されている。
【0017】
図2は、WUSBホストに直接取り付けられた「ネイティブ」WUSBデバイスを備えたワイヤレスUSBシステムについての構成を示す。図2で図示されたシステムは、図1で図示されたレイアウトにおいて同様であり、大きな違いは、ホスト200と外部USBデバイス(external USB device)210がそれぞれ組み込みのワイヤレスアダプタ(built-in wireless adapters)201、211を有しているということである。これらのアダプタ201、211は、ワイヤードケーブルを介する代わりに、アンテナ220、221によって提供されるワイヤレス信号にわたって通信する。図2のネイティブワイヤレスUSBシステムは、コンピュータ/電気産業の多くが達しようとしている目標を表わしている。しかしながら、現在、ごくわずかのデバイスしか(very few devices)、ネイティブワイヤレス機能を有していない。したがって、産業が両方のワイヤードUSBデバイスとワイヤレスUSBデバイスとホストを含んでいるシステムに適応することが望ましい。
【0018】
WUSBシステムへとワイヤードUSBデバイスを接続するための現在の解決策は、図3で図示されているように、デバイスワイヤアダプタ(DWA)へとそれらを差し込むということである。ワイヤードUSBデバイス310、320は、標準USBケーブル311、321を使用して、DWA300へと差し込まれる。DWA300は、代わりに、USBホストにワイヤレスリンクを提供するワイヤレスアンテナ301を提供される。
【0019】
対応するホストワイヤアダプタ(HWA)は、DWAと通信するためにホストシステムによって使用されることができる、あるいは、DWAは、「ネイティブ」WUSBホストアダプタを通じてホストシステムと通信することができる。
【0020】
図4は、レガシワイヤードUSBデバイスにワイヤレスUSB機能を提供するためにデバイスワイヤアダプタとホストワイヤアダプタと組み込んでいるシステムを示す。この例は、外部デバイスとしてホスト400に接続されたホストワイヤアダプタ(HWA)410を示しており、それは、現在の設計の典型である。次第に、HWA410は、ホスト400システムの中に埋め込まれたネイティブWUSBホストアダプタによって置き換えられるであろう。
【0021】
HWA410及びDWAs410、420はUSBデバイスとして認識されているので、ホストシステム400は、HWA410及びDWAs420、430を介してワイヤード外部USBデバイス421、422、431、432との通信を可能にするために、マルチプルソフトウェアドライバ層を組み込む。
【0022】
ホスト400は、HWA410が(ホストハウジングに対して外部あるいは内部いずれにせよ)接続されるワイヤードUSBのルートハブ401を有する。次は、ルートハブドライバ402である。ホストは、DWAドライバ404と同様に個別のHWAドライバ403を有している。それらの上には、チェインの終わりにある外部USBデバイス421、422、431、432に特有であるデバイスドライバ405−408がある。デバイスドライバ405−408のそれぞれは、DWAドライバ404に取り付けられ、通信する。
【0023】
データは、ワイヤード接続を通じてホスト400からHWA410に通信される。HWA410は、そのあとで、DWAs420、430のうちの1つにデータを送信するためにワイヤレスプロトコルを使用し、それは、代わりに(in return)、ワイヤード接続にわたって、特定のUSBデバイス421、422、431あるいは432に、データを送る。
【0024】
図5は、図4で図示されたワイヤレスUSBシステムにわたって通信するために使用されるパケットのシーケンスを示す。システムにおけるHWAとDWAの存在により、パケットシーケンス500は、どのポートがデータをルートしアクナレッジメントを得るかをDWAに伝えるために、データの前に挿入された制御パケットを含む。このことは、外部デバイスとホストとの間のシステムにおける各HWAとDWAに関して生じる。
【0025】
図5で示された例において、データパケット(data packet)504は、転送リクエスト503に先立つ、一方で、転送リクエスト502は、転送リクエスト501によって先立つ(is preceded)。転送リクエスト501及び503は、DWAに転送リクエスト502とデータパケット504とを送るようにHWAに指図する。転送リクエスト502は、USBデバイスにデータパケット504を送るようにDWAに指図する。転送リクエストは、その意図されたデバイスにそのようなものとして、出現のみする。例えば、DWA転送リクエスト502は、HWAにとってはデータのようであるが、DWAにとっては転送リクエストのようである。
【0026】
上記で説明されているように、現在のワイヤレスUSBシステムは、ターゲットUSBデバイスに/から、データのフローを指図するために、外部デバイスとホストにおけるその特定ドライバとの間でドライバのマルチプル層によって生成される制御パケット(転送リクエスト)を使用している。残念ながら、この設計は、動的にスループットを阻害する(hampers)。
【0027】
図6A及び6Bは、標準ワイヤアダプタプロトコルを使用しているINリクエストについてのプロセスのフローを図示しているシーケンス図である。図7A及び7Bは、標準ワイヤアダプタプロトコルを使用しているOUTリクエストについてのプロセスのフローを図示しているシーケンス図である。これらのシーケンス図は、外部USBデバイスとそのドライバとの間でデータを転送するために、標準プロトコル下で必要な多数の転送リクエストを図で図示している。この複雑性の多くは、システムの一層について意図された転送リクエストが他の層によってデータとして見られるという事実から生じ、その結果、行先 (destination)にデータ自体を最終的に配信する前に、システムの各層においてデータ受信についてのアクナレッジメントを引き起こす(invoke)。
【0028】
本発明の実施形態は、データ転送の一部として交換されるメッセージの数を減らすことによってスループットを改善するエンハンスドワイヤアダプタプロトコルを含んでおり、その結果、ワイヤードUSBインタフェースとワイヤレスメディアにわたるメッセージの処理時間と転送時間を減らす。スループットはまた、システムを通じてデータフローの「パイプライニング(pipelining)」を改善することによって増大させられ、そしてそれは、転送レイテンシを減らす。
【0029】
エンハンスドワイヤアダプタプロトコルは、送信完了メッセージを削除し、そして、代わりに、いつ転送が完了したかを決定するために転送結果についてポーリングすることを使用する。INデータ転送は、ワイヤアダプタによって、より小さい転送へと、自動的にセグメント化されることができる(「自動セグメント化(auto-segmentation)」)。このことは、ワイヤアダプタ上へとインテリジェンス機能をプッシュし、そして、ホストソフトウェアから退ける(すなわち、DWAはバッファを管理する)。自動セグメント化の間に、各セグメントのサイズは異なってもよく、それによって、ワイヤアダプタは、与えられたシチュエーションについてのスループットを最大化させるために、動的にそして適応的にセグメントサイズを調節する。ワイヤアダプタは、INデータを受諾するのに利用可能であるバッファに基づいてペンディング転送のためのINトークンを発行することによってその利用可能なバッファを自動的に管理する。
【0030】
本発明の一実施形態において、ワイヤアダプタドライバは、転送リクエストをセグメント化し、そして、これらのすべてを一度に投入する(submits)。DWAは、自動的に、各セグメントを完了するためにメモリを管理する。INデータの場合には、ワイヤアダプタがIN転送を開始する前にメモリをチェックし、また、OUTデータの場合には、ネガティブアクナレッジメントが、ワイヤアダプタが十分なメモリを有していないセグメントをバックプレッシャーするために、使用される。
【0031】
本発明の一実施形態において、アップストリームUSBインタフェースにわたるUSBホストとHWAとの間のマルチプル転送は、転送レイテンシを減らすために単一のUSB転送へとアグリゲートされることができる(may be aggregated)。特に、USBホストは、HWAについてターゲットされたマルチプルOUT転送をアグリゲートすることができ、また、HWAは、USBホストについてターゲットされたマルチプルIN転送をアグリゲートすることができる。アグリゲートされた転送の受信機(OUT転送のケースにおいてはHWAs、IN転送のケースにおいてはUSB)は、データのさらなる処理の前に、アグリゲートされた転送をデアグリゲートする(de-aggregates)。受信機は、アグリゲートされた転送のコンテンツをパースすることによって、アグリゲートされたフレームにおいてデータバウンダリを決定する。
【0032】
例えば、USBホストは、次のOUT転送データでOUT転送リクエストをアグリゲートすることができる。アグリゲートされた転送を受信するHWAは、次の転送が転送リクエストであることを予期する。アグリゲートされた転送において含まれる転送リクエストの長さを決定するために、アグリゲートされた転送の第1バイトを、審査する(examines)。転送リクエストにおけるwRPipeフィールドは、関連づけられたwRPipeディスクリプタを見つけ出す(locate)ように使用されており、そしてそれは、そのあと、転送リクエストがOUT転送リクエストであるということを決定するために使用される。転送リクエストがOUTリクエストなので、HWAは、OUT転送データとして転送リクエストの次にくるアグリゲーション転送(aggregation transfer)のデータを扱う。
【0033】
ホスト及びHWAsは、転送が生じるエンドポイントのための標準エンドポイントディスクリプタにおいて表されるように、wMaxPacketSizeの最大長さまで、転送をアグリゲートすることができる。アグリゲーションを使用しているホスト及びHWAsは、wMaxPacketSizeバイトにいたるまで受信するように、転送ごとに、準備されていなくてはならない。IN転送の場合には、ホストは、wMaxPacketSizeバイトについての入力リクエストを発行しなければならない。HWAsは、完了制御転送とデータ転送が受信されると、「オンザフライ(on-the-fly)」でデアグリゲートすることができる。「オンザフライ(on-the-fly)」デアグリゲーションは、バッファ管理とデータフローの役に立つことができ、また、エンドツーエンドのレイテンシ(end-to-end latency)を減らすことが出来る。
【0034】
いつアグリゲートするのか、アグリゲートするために何回転送するかという決定は、インプリメンテーションしだいである。典型的に「日和見主義(opportunistic)」アルゴリズムは、アグリゲーション決定を行なうために使用される。ホストあるいはHWAは、wMaxPacketSizeまで利用可能な転送をアグリゲートする。
【0035】
OUT転送データパケットについては、エンハンスドワイヤアダプタプロトコルは、「保存し自動転送する(store and forward)」転送を使用して、受け渡されているよりもむしろ「カットスルー(cut-through)」するパケットを使用する。この新しいアプローチを使用して、いくらかの最小量のOUTデータ(some minimum amount of OUT data)がアップストリームポートから受信されるときにはいつでも、ワイヤアダプタは、データの完了セグメントが受信されるまで待機するよりもむしろ、ダウンストリームポート上でデータを転送することができる。反対に、ワイヤアダプタは、データバッファが着信データ(incoming data)を保つ(hold)のに利用可能ではないとき、ネガティブアクナレッジメント(negative acknowledgments)(NAKs)を発行することによって、アップストリームポート上で「バックプレッシャー(back pressure)」を置くことによって、その利用可能なデータバッファを自動的に管理する。
【0036】
エンハンスドワイヤアダプタプロトコルは、ワイヤアダプタによる転送リクエストの自動転送を可能にし、その結果、データ転送を完了するために使用されたメッセージの数を減らす。図5の例に戻って、エンハンスドプロトコルの下で、DWA転送リクエスト502は、データではなくHWAにとっては転送リクエストのようである。したがって、HWAは、着信転送リクエスト(the incoming Transfer Request)は、本当にDWAのためのものであるということを理解し、DWAにそれを自動転送する。自動転送パイプ(Forwarding Pipe)(FPipe)ディスクリプタは、転送リクエストパケットの自動転送を制御するために、遠隔パイプ(RPipe)ディスクリプタと共に(in conjunction with)使用される。
【0037】
図11を参照すると、図1100は、本発明の一実施形態における、OUT転送リクエスト自動転送についてのパケットのフロー及びプロセッシングを図示する。図1100は、上記で説明されるように転送リクエスト自動転送(Transfer Request forwarding)がインプリメントされ(implemented)、そして転送完了メッセージが削除された(eliminated)ときに、転送を完了するためにDWAビヘービア(behavior)に焦点を当てる。ホスト上のUSBアプリケーションは、DWA1104に取り付けられたUSBデバイス1102についてターゲットされるデータを転送するリクエストをDWAドライバに提供する。転送されるべき、データ1106は、転送リクエスト1108を提供される。DWA及びHWAホストドライバは、転送リクエストOUTパケットを生成し、そして、ワイヤードUSBバスにわたってHWA1110への転送のために転送リクエストと転送データをエンキューする。転送リクエスト1108は、転送リクエスト1108を自動転送するのに使用されるべきHWA1110のFPipeディスクリプタ(FPipe descriptor)1116を参照するFPipeディスクリプタ数(FPipe Descriptor number)1114(0x8001)を、wRPipeフィールド1112において、含む。
【0038】
HWA1110は、アップストリームワイヤードUSBバスから、転送データ1106が次に来る、転送リクエストOUTパケット1108を、受信する。HWAは、転送リクエスト1108をパースし、そして、転送リクエスト1108でwRPipeフィールド1112を見つけ出す(locates)。この特定の例において、wRPipeフィールド1112は、0x8001を含む。
【0039】
HWA1110は、wRPipe数(wRPipe number)1114がFPipeディスクリプタ1116を指すということを、決定する、というのは、wRPipe数1114の最大有効ビットは、1つである。このことは、対応するパイプディスクリプタがFPipeディスクリプタ表1118において(RPipeディスクリプタ表よりもむしろ)見つけられるということ、そして、転送リクエスト1108は自動転送されるべきであるということ、をHWA1110に対して指す。この特定の例において、wRPipe数1114が0x8001なので、FPipeディスクリプタ表1118におけるFPipeディスクリプタ1116のインデクスは、0x0001である。HWA1110は、FPipeディスクリプタ表1118におけるFPipeディスクリプタ1116の0x0001を見つけ出す(locates)。
【0040】
FPipeディスクリプタ0x0001(FPipe Descriptor 0x0001)(1116)におけるwRPipeIndexのフィールド1120は、転送リクエストRPipeディスクリプタ(Transfer Request RPipe Descriptor)1122を見つけ出すように使用される。この特定の例において、RPipeディスクリプタのインデクス1124は、0x0001である。HWA1110は、RPipeディスクリプタ1122のbDeviceAddressとbEndpintAddress1126を使用して、転送リクエストのターゲットデバイスアドレス、デバイスエンドポイント、及び指図を決定する。この例においては、転送リクエスト1108は、OUTであり、そしてそれは、HWA1110がアップストリームUSBバルクINのエンドポイント1128上で転送リクエスト1108の次に来る転送データ1106を予期しているということを示しており、また、HWAは、自動転送転送リクエスト(forwarding Transfer Request)1130と転送データ1132の両方を配信するために、OUT RPipe ディスクリプタ0x0001(1122)を使用すべきである。
【0041】
HWA1110は、FPipeディスクリプタ1116のwForwardRPipe値1134で、受信された転送リクエスト1108のwRPipeフィールド1112を置き換えることによって、自動転送転送リクエスト1130を生成するために、受信された転送リクエスト1108を使用する。
【0042】
HWA1110は、DWA1104、自動転送転送リクエスト1130、及び転送データ1132への転送のためにダウンストリームワイヤレスインタフェース1136上でエンキューする(いったんデータがアップストリームのUSBバルクOUTのエンドポイント1128上で受信されると)。HWAは、ダウンストリームワイヤレスインタフェース1136上でそれらをエンキューする前に転送における各データパケットの初めと転送リクエストパケットの初めに2バイトのWUSBヘッダを加える。
【0043】
いったん自動転送転送リクエスト1130と転送データ1132とがDWA1104に転送されると、HWA1110は、OUT RPipeディスクリプタ1122(0x0001、転送リクエスト1108とデータ1106とを配信するために使用される)でbControlフィールド1138を審査し(examines)、そして、転送結果及び転送データの自動リクエスト及び自動転送オプション(the Automatic Request and Forwarding of Transfer Results and Transfer Data option)がイネーブルされるということを決定する(bControlフィールドにおいてビット0)。HWA1110は、そのあと、ダウンストリームDWA1104のバルクINパイプ1144に関連づけられたRPipeディスクリプタ1142を見つけ出すために、OUT RPipeディスクリプタ1122においてwTransferRPipeフィールド1140を使用する。IN RPipeディスクリプタ1142に関連づけられたものは、ペンディング転送リストである(図1100では示されていない)。HWA1110は、OUT転送についての転送結果がダウンストリームDWAのバルクINパイプ1144から予期されているということを指す、ペンディング転送リストにおいてエントリ(entry)を加える。
【0044】
転送結果1146が予期されているものであるということを示している、IN RPipeペンディングリストにおけるエントリのおかげで、HWA1110は、予期された転送結果1146を受信するために、ダウンストリームDWA1104上でバルクINのエンドポイント1144に対してINトークンを発行し始める。
【0045】
転送結果1146がDWA1104から受信されるとき、HWA1110は、転送結果が受信されるデバイス及びエンドポイントに関連づけられたRPipeディスクリプタを見つけ出すために、パケットMACヘッダにおいてはSrcAddrフィールドを、WUSBヘッダにおいてはエンドポイント番号フィールドを、使用する。この特定的な例において、デバイスはDWA1104であり、エンドポイントはDWAバルクINのエンドポイントであり、DWAエンドポイントについてHWAの対応するRPipeは、RPipeディスクリプタ0x0002(1148)である。
【0046】
HWA1110は、ペンディング転送リスト及び転送結果1146の転送IDsを整合させることに基づいて、受信された転送結果1146に対応するエントリをRPipeペンディング転送リストで見つけ出す。HWA1110は、ペンディング転送リストエントリから転送結果1146はOUT転送のためであるということ、したがって、いずれのデータも転送結果1146の次に来ない、ということを決定する。
【0047】
HWA1110は、IN RPipeディスクリプタの0x0002(1142)のbControlフィールド1150を審査し、そして転送結果及び転送データの自動リクエスト及び自動転送オプションがイネーブルされるということを決定する(bControlフィールドにおいてはビット0)。イネーブルされるこのオプションに基づいて、HWA1110は、ホストへの転送のために、アップストリームUSBインタフェースのバルクINのエンドポイント(the upstream USB interface bulk IN endpoint)1152上で転送結果パケット1146を自動的にエンキューする。HWA1110は、そのあと、予期された転送結果1146に対応するRPipeディスクリプタの0x0002(1142)ペンディング転送リストで、エントリを削除する(deletes)。
【0048】
HWAホストドライバは、HWA1110におけるペンディング転送リストと同様のペンディング転送記録を保持する。ペンディング転送記録に基づいて、HWAドライバは、前に送った転送リクエスト1108についての転送結果1146を予期しており、したがって、HWAドライバは、INトークンがHWAワイヤードUSBインタフェースのバルクINのエンドポイント(HWA wired USB interface bulk IN endpoint)1152に送られるようにするIN転送をリクエストする。HWAは、転送結果1146が、バルクINキューの上に来て、そしてINトークンが受信されるとすぐに、ホストに転送結果を送る。転送結果1146がHWAドライバに受け渡されるとき、HWA1110は、転送結果1146の情報に基づいてその記録をアップデートし、そしてWUSB転送は完了する。
【0049】
図12を参照すると、図1200は、本発明の実施形態におけるIN転送リクエスト自動転送に関するパケットのフロー及びプロセッシングを図示する。IN転送リクエスト自動転送に関するパケットのフロー及びプロセッシングは、OUT転送リクエスト自動転送に関するパケットのフロー及びプロセッシングに似ている。差異は次の通りである:
IN自動転送転送リクエスト(IN forwarding Transfer Request)1204のwRPipeフィールド1202(0x8002)は、IN RPipe1210を参照するwRPipeIndexフィールド1208(0x0002)を含んでいるFPipeディスクリプタ1206(0x0002)を参照する。このケースにおけるRPipeはINについてなので、HWA1212は、転送データが転送リクエスト1204の次に来ることを予期しない、したがって、次に来るデータなしに、転送リクエスト1204を自動転送する。
【0050】
HWA1212は、転送リクエスト1204を配信するために使用されるOUT RPipe1214を見つけ出すために、IN RPipe 1210(0x0002)でwTransferRPipeフィールド1211を使用する。転送リクエスト1204がDWA1216に転送された後で、HWA1212は、IN転送についての転送結果1218がダウンストリームDWAバルクINパイプ1219から予期されているということを示すペンディング転送リストにおいてエントリを加える。
【0051】
HWA1212が転送結果1218を受信するとき、それは、そのあと、バイト数が受信された転送結果1218のdwTransferLengthフィールドで示されている、ダウンストリームDWAバルクINのエンドポイント1219から読み取ることを試みる。HWA1212は、ペンディング転送リストの対応するエントリがIN転送を示すので、データを予期する。
【0052】
HWA212は予期されたデータを受信した後で、それは、ホストへの転送のために、アップストリームのワイヤードUSBバルクINのエンドポイント1222上で転送結果1218と転送データ1220とをエンキューする。もし自動セグメント化が可能である場合には、HWA1212は、データをセグメント化し、各データセグメントで転送結果をエンキューすることができる。各転送結果におけるbTransferSegmentフィールドは、セグメント数(the segment number)にセットされる。
【0053】
転送リクエスト自動転送については、ワイヤアダプタホストドライバは、別のワイヤアダプタホストドライバから受諾された転送リクエストにおける転送IDと、ワイヤアダプタによって生成された結果として生じる転送における転送IDとの間で関連づけ(association)を保持する。それは、そのあとで、転送結果パケット及び転送リクエストにおける1つの転送IDを修正するためにこの関連づけを使用する。
【0054】
転送IDsは、転送を固有に識別するために、また、特定の転送とパケットを関連づけるために、ワイヤアダプタドライバとワイヤアダプタとによって使用された32ビット値である。HWAあるいはDWAホストドライバによって開始された各転送の場合、固有の転送IDは、生成され、対応する転送リクエストに配置される(placed)。転送結果パケットを生成するとき、HWAsとDWAsは、転送のために、転送リクエストから転送IDを転送結果に配置する。
【0055】
標準ワイヤアダプタプロトコルで、転送IDsは、一例のDWAドライバあるいはHWAドライバと、対応するワイヤアダプタと、のコンテキスト(context)において固有である。例をとってみると、代わりにホストに取り付けられたHWA、に取り付けられたDWAのケースがある。DWAドライバは、転送リクエストを生成するとき、それは、転送リクエストにおいて配置するように固有の転送IDを選択する。HWAドライバとHWAは、転送リクエストのコンテンツを審査することなく、(HWAサブシステムに関する限り、転送リクエストは、転送されるべきデータである)DWAにDWAドライブ転送リクエストを配信する。DWAに転送リクエストが配信されるとき、DWAは、何をするかを決定するために転送リクエストをパースし、そして、結果として生じる転送レスポンスにおいて転送IDを使用する。
【0056】
しかしながら、HWAドライバがDWA転送リクエストを配信するために、HWAドライバは、HWAのためのその転送リクエストを生成する。DWA転送リクエストを配信するために使用されるHWA転送リクエストにおいて配置された転送IDは、DWA転送リクエストにおける配信IDと無関係である。異なるように説明されており、各ワイヤアダプタドライバの「層(layer)」は、それ自体のセットの固有転送IDsを保持し、他のワイヤアダプタドライバによって生成され使用される転送IDsに気づかないでいる。
【0057】
しかしながら、エンハンスドワイヤアダプタプロトコルの転送リクエストの自動転送(Enhanced Wire Adapter Protocol Transfer Request Forwarding)が使用されているとき、転送IDsの取り扱い(handling)は、標準プロトコルのよりも必然的に異なっている。転送リクエストが1つのワイヤアダプタから別のへと自動転送されるとき、転送リクエストは、自動転送ワイヤアダプタとターゲットワイヤアダプタの両方によって処理され、転送IDが両方のワイヤアダプタによって使用される。このケースにおいて、両方のワイヤアダプタは、同じセットの転送IDsと機能する。自動転送された転送結果パケットにも同じことが言え、同じ転送IDが、1つまたは複数のワイヤアダプタによって使用される。
【0058】
自動転送は、ワイヤアダプタによる転送IDsの特別な取り扱いを必要としないが、ホストドライバによる特定のプロセッシングを必要とする。もし自動転送がホストドライバとその対応するワイヤアダプタによって使用されている場合には、そのときには、ホストドライバが別の(「アップストリーム」)ホストドライバから転送リクエストを受諾するときに、それは、転送IDを見つけ出すために転送リクエストをパースする。ホストドライバは、そのあとで、ドライバとワイヤアダプタの範囲内で固有である新しい転送IDを生成し、そして、次のドライバにそれを自動転送する前に、転送リクエストにおいて新しい転送IDを配置する。ホストドライバはまた、アップストリームワイヤアダプタによって提供された転送IDと、ホストドライバによって生成された転送IDとの間の関連づけを提供する記録を作成する。
【0059】
そのとき、ホストドライバが転送結果を受信するとき、転送ID関連づけ表(Transfer ID association table)において転送結果の転送IDを調べ、そして、対応する転送リクエストが自動転送されたということを決定する。それは、そのあと、オリジナルリクエスティングドライバ(original requesting driver)に対して転送結果を受け渡す前に、転送ID関連づけ表(すなわち、オリジナル転送IDを備えている)の値で転送IDを置き換える。この方法で、「ダウンストリーム」ドライバによる転送IDsに関して自動転送することの効果は、ホスト“アップストリーム”のドライバに対してトランスパレント(transparent)になされる。
【0060】
代替的に、単一のホストドライバが2つまたは複数のシリアル接続されたワイヤアダプタ(例えばHWAに接続されたDWA)を管理する、インプリメンテーションが可能である。このケースにおいては、単一のホストドライバは、自動転送の効果を十分に知っており、DWAとHWAの両方によって使用される転送IDsを生成することによってそれを説明することができる。
【0061】
エンハンスドプロトコルの下で、ワイヤアダプタは、そのダウンストリームワイヤアダプタに対して、前の転送リクエストに基づいて、伝送結果パケットについてダウンストリームワイヤアダプタを自動的にポーリングする。同様に、ワイヤアダプタは、伝送完了と新しい転送結果を生成し自動転送するよりもむしろ、アップストリームインタフェースにいずれの受信された転送結果を自動転送する。
【0062】
ホストドライバから転送リクエストを受信することによって開始されるダウンストリームデータについてのポールよりもむしろ、ワイヤアダプタは、INデータ転送についての転送結果を前に受信したことに基づいて、INデータについてのダウンストリームデバイスを自動的にポーリングする。同様に、送信完了と、新しい転送結果と、を生成し自動転送するよりもむしろ、ワイヤアダプタは、受信の後で、アップストリームインタフェースに対して、IN転送データを単に自動転送する。
【0063】
本発明の一実施形態において、マルチプルワイヤアダプタドライバ(HWA及びDWA)は、アプリケーションプログラミングインタフェース(Application Programming Interfaces)(APIs)の数を減らすために単一のワイヤアダプタに結合されることができ、したがって、APIsにわたるメッセージの受け渡しによって、レイテンシが招かれる(incurred)。さらに、マルチプルワイヤアダプタドライバを結合させることは、転送リクエスト自動転送が使用されているときにアップストリームのドライバから提示される転送リクエストにおける転送IDsと、発行された転送リクエストにおける転送IDsとの間の関連づけを保持する必要性が削除される(eliminated)ので、転送IDsの割り当てにおけるコンソリデーション(consolidation)を可能にする。
【0064】
図8は、本発明にしたがった一実施形態として、エンハンスドワイヤアダプタプロトコルを使用しているINリクエストについてのプロセスフローを図示しているシーケンス図である。図9は、本発明にしたがった一実施形態として、エンハンスドワイヤアダプタプロトコルを使用しているOUTリクエストについてのプロセスフローを図示しているシーケンス図である。図8及び図9は、既存のプロトコルを図示している図6A、6B、7A、および7Bで示されているシーケンス図と比べて、エンハンスドワイヤアダプタプロトコルによって提供される制御オーバーヘッドにおける削減(reduction in control overhead)を図示する。
【0065】
図10は、本発明にしたがった一実施形態としてワイヤレスUSBのハブを示している。上記で説明されるように、現在のワイヤアダプタプロトコルは、比較的に非効率であるのに対して、「ネイティブ」WUSBデバイスのためのWUSBプロトコルは、比較的能率がいい。プロキシWUSBハブ1000は、ワイヤードUSBデバイス1010、1020を、それらが「ネイティブ」WUSBデバイスであるかのように、提供することによって、この効率のよさ(efficiency)を利用する。
【0066】
プロキシWUSBハブ1000は、ワイヤレスアップストリームポート1001と1つまたは複数のワイヤードUSBダウンストリームポート1002、1003を有しているという点において、DWAと類似しており、なお、ワイヤードUSBデバイス1010、1020は、ダウンストリームワイヤードUSBポートに差し込まれることができる。WUSBハブは、ワイヤードUSBデバイス1010、1020が、ネイティブWUSBデバイスであるかのようにホストには見える、という点でDWAとは異なる。このことは、WUSBハブ1000「プロキシ(proxy)」を、ワイヤレスインタフェース上で取り付けられたダウンストリームワイヤードデバイスにすることによって達成される。したがって、WUSBハブ1000は、DWAではなく、1つまたは複数のWUSBデバイスとして、ホストには見えており、そしてそれは、標準ワイヤアダプタプロトコルによって使用される制御パケットオーバーヘッドの多くを削除する。
【0067】
取り付けられたワイヤードUSBデバイスは、いずれか、1)それ自体のデバイスアドレスで固有のWUSBデバイスとして提供されるか、あるいは、2)すでに存在しているデバイス(例えばWUSBハブ、そしてそれはDWAとして列挙することができる)上の個別機能として提供される。後者のアプローチで、ワイヤードデバイスのエンドポイントは、WUSBハブのエンドポイントへとマッピングされる。
【0068】
WUSBハブは、WUSBデバイスであるかのように、ホストに、USBデバイスを適切にプロキシサーバに送る(proxy)ために様々なメカニズムを使用する。以下の説明は、WUSBハブがダウンストリームUSBデバイスを、DWA上の機能としてよりもむしろ、WUSBデバイスとして提供するときのケースに適用する。
【0069】
各WUSBデバイスは、セキュリティ接続のコンテキストを保持する。接続のコンテキストは、最初の接続(first-time connection)の間にネゴシエートされる(negotiated)。WUSBハブは、ダウンストリームデバイスを知ることなしにあるいは関与なしにUSBデバイスについてセキュリティ接続のコンテキストをネゴシエートし、そして、セキュリティ接続のコンテキストを保存する。十分な数の固有セキュリティ接続のコンテキストは、WUSBハブが同時にプロキシサーバに送る(proxying)ことができる、最大数のダウンストリームのUSBデバイスをサポートするために、ネゴシエートされ、そして保持される。特定の接続コンテキストは、特定のダウンストリームUSBデバイスと結び付けられておらず(not tied)、むしろ、接続コンテキストは、USBデバイスが取り付けられたとき、必要なときに(as needed)適用される。
【0070】
WUSBハブは、各取り付けられたプロキシUSBデバイスについて固有のWUSBデバイスのアドレスを保持し、そして、介在デバイス(intervening device)(DWAのような)として現れているよりもむしろ、プロキシサーバに送っているWUSBデバイスであるかのようにWUSBのプロトコルに関係する(participates in)。
【0071】
WUSBハブは、直接に、あるいは、取り付けられたダウンストリームハブから割り込みパケット(interrupt packets)をインターセプトすること(intercepting)によって、のいずれかで、USB取り付けを検出する。ダウンストリームデバイスの取り付けを検出するときに、WUSBハブは、ホストに割り込みパケットを自動転送しない、あるいは、USB取り付けをホストに直接通知しない。代わりに、WUSBハブは、USBデバイスの代わりに、WUSBデバイスの接続プロシージャを実行する。
【0072】
WUSBハブはUSBデバイスのディスクリプタを読み取り、そして、それらがWUSBデバイスのためのディスクリプタと一致するように、それらを修正する。例えば、標準エンドポイントディスクリプタにおける最大のパケットサイズのフィールドは、それがWUSBのパケットサイズに一貫するように修正される。標準的な構成ディスクリプタのbmAttributesフィールドは、デバイスが自家動力(self-powered)であるということを示すためにセットされている。
【0073】
転送の終了を示す、ゼロパケットの長さの意味(zero-packet-length semantics)を使用しないいくつかのUSBデバイスについては、IN転送の長さが、正しいバイト数が読み取られるように使用されている。しかしながら、WUSBハブのケースにおいては、IN転送の長さは、WUSBのプロトコルを用いて利用可能ではない。転送リクエストなしに、読み取るためのデータの量に関して前に宣言された制限はない。幸運なことに、アップストリームワイヤレスデバイスは、転送の予期された長さを提供されている。
【0074】
WUSBのプロトコルは、WUSBハブをサポートするために、わずかに修正される。2つのオプションが利用可能である。第1のオプションでは、WUSBホストのマイクロスケジュールされた管理制御(Micro-scheduled Management Control)(MMC)において送信された情報エレメント(Information Elements)(IEs)、INチャネル時間割り付け(Channel Time Allocation)(CTE)における最大のパケットサイズのフィールドは、予期された転送の長さを示すために使用されることができる。代替的に、フィールドは、予期された転送の長さを示すためにCTAsに加えられることができる。
【0075】
本発明の実施形態においては、上記で説明されるように、WUSBハブは、WUSBハブの機能及びオペレーションを実行するために、コントローラ1004を含む。
【0076】
WUSBハブがWUSBハブ/DWA上の機能として1つまたは複数のダウンストリームUSBデバイスをプロキシサーバに送るケースについては、上記の説明は、そのセキュリティ接続コンテキストをのぞいて一般に適用しており、また、WUSBデバイスのアドレスは、WUSBハブと共有される。さらに、USBデバイスが取り付けるとき、WUSBハブは、USBデバイスのエンドポイントについて一対一でWUSBハブのワイヤレスエンドポイントをマッピングし、そして、WUSBハブ上の機能として特定のUSBデバイスに関連づけられたエンドポイントの集まりを扱う。WUSBハブは、新しく取り付けられたデバイスについてのサポートをアクティブな状態にするために、新しい機能は列挙される必要があるということをホストに通知する。
【0077】
本開示の実施形態は詳細に説明されていないが、当業者は、本開示の範囲及び精神から逸脱することなく、ここにおいて様々な変化(changes)、置き換え(substitutions)、代替 (alterations)を行なうことができるということを理解すべきである。
【特許請求の範囲】
【請求項1】
第1のUSB対応デバイスと第2のUSB対応デバイスとを有しているワイヤレスUSBシステムのためのスループットを増大させるための方法であって、
前記第1のUSB対応デバイスにおいて複数のパケットをアグリゲートすることと、
前記のアグリゲートされた複数のパケットを、前記第1のUSB対応デバイスから前記第2のUSB対応デバイスへと転送することと、
前記の転送の後で、前記第2のUSB対応デバイスにおいて、前記のアグリゲートされた複数のパケットをディスアグリゲートすることと、
を備えている方法。
【請求項2】
USB対応ホストデバイスとして前記第1のUSB対応デバイスを構成することを含んでおり、
ホストワイヤアダプタとして前記第2のUSB対応デバイスを構成することを含んでおり、
前記複数のパケットを前記アグリゲートすることは、前記ホストワイヤアダプタにターゲットされた複数のOUT転送をアグリゲートすることを含み、前記OUT転送は制御メッセージとデータを含んでいる、
請求項1に記載の方法。
【請求項3】
ホストワイヤアダプタとして前記第1のUSB対応デバイスを構成することを含んでおり、
USB対応ホストデバイスとして前記第2のUSB対応デバイスを構成することを含んでおり、
前記複数のパケットを前記アグリゲートすることは、前記USB対応ホストデバイスにターゲットされた複数のIN転送をアグリゲートすることを含み、前記IN転送は制御メッセージとデータを含んでいる、
請求項1に記載の方法。
【請求項4】
ワイヤアダプタとUSB対応デバイスとを有しているワイヤレスUSBシステムのためのスループットを増大させるための方法であって、
前記USB対応デバイスから転送を受信するために、前記ワイヤアダプタに関連づけられたデータバッファの利用可能性を決定することと、
前記データバッファの前記利用可能性に基づいてメッセージを生成することと、
前記データバッファが前記転送を受信することが利用可能かどうかを示して前記USB対応デバイスに前記メッセージを提供することと、
を備えている方法。
【請求項5】
前記USB対応デバイスは、前記ワイヤアダプタからのダウンストリームであり、
前記メッセージは、前記データバッファが前記USB対応デバイスから前記転送を受信することが利用可能であるということを示すトークンを含む、
請求項4に記載の方法。
【請求項6】
前記ワイヤアダプタを、デバイスワイヤアダプタとして構成すること、を含んでいる請求項5に記載の方法。
【請求項7】
前記USB対応デバイスをデバイスワイヤアダプタとして、構成することと、
を含んでおり、前記ワイヤアダプタを構成することは、ホストワイヤアダプタを含んでいる、請求項5に記載の方法。
【請求項8】
前記転送を複数の転送セグメントにセグメント化することと、
前記USB対応デバイスから前記ワイヤアダプタへと、前記複数の転送セグメントを転送することと、
を含んでいる請求項5に記載の方法。
【請求項9】
前記USB対応デバイスから前記ワイヤアダプタへと前記転送を転送することと、
前記転送を複数の転送セグメントにセグメント化することと、
を含んでいる請求項5に記載の方法。
【請求項10】
前記複数の転送セグメントはサイズごとに異なる、請求項9に記載の方法。
【請求項11】
前記セグメント化することは、与えられたシチュエーションについてのスループットを最大化させるために、前記複数の転送セグメントのうち少なくとも1つのサイズを動的に適応的に調節することを含んでいる、請求項9に記載の方法。
【請求項12】
前記USB対応デバイスは、前記ワイヤアダプタからのアップストリームであり、
前記メッセージは、前記データバッファが前記USB対応デバイスから前記転送を受信することが利用可能ではないということを示すネガティブアクナレッジメントを含んでいる、
請求項4に記載の方法。
【請求項13】
前記USB対応デバイスをホストワイヤアダプタとして構成することと、
前記ワイヤアダプタをデバイスワイヤアダプタとして構成することと、
を含んでいる請求項12に記載の方法。
【請求項14】
前記USB対応デバイスをUSB対応ホストデバイスとして構成することと、
前記ワイヤアダプタをホストワイヤアダプタとして構成することと、
を含んでいる請求項12に記載の方法。
【請求項15】
前記USB対応デバイスから前記ワイヤアダプタへと、前記転送を送ることと、
前記ワイヤアダプタのアップストリームポート上で、前記USB対応デバイスから前記転送を受信することと、
最小量のデータが前記ワイヤアダプタの前記アップストリームポートから受信されるとき、前記ワイヤアダプタの前記アップストリームポートから前記ワイヤアダプタのダウンストリームポートへと、前記転送を自動転送することと、
を含んでいる請求項12に記載の方法。
【請求項16】
ワイヤアダプタとダウンストリームワイヤアダプタとを有しているワイヤレスUSBシステムのためのスループットを増大させるための方法であって、
パケットのための前記ダウンストリームワイヤアダプタをポーリングすることと、
前記ワイヤアダプタのダウンストリームインタフェース上で、前記ダウンストリームワイヤアダプタから前記パケットを受信することと、
前記パケットを前記受信した後で、前記ワイヤアダプタのアップストリームインタフェースに前記パケットを自動転送することと、
を備えている方法。
【請求項17】
前記パケットは、転送結果パケットを含んでおり、
前記転送結果パケットについての前記ダウンストリームワイヤアダプタを前記ポーリングすることは、前記ダウンストリームワイヤアダプタに転送リクエストパケットをあらかじめ送信することに基づいている、
請求項16に記載の方法。
【請求項18】
前記パケットは、着信データパケットを含んでおり、
前記着信データパケットのための前記ダウンストリームワイヤアダプタを前記ポーリングすることは、前記ダウンストリームワイヤアダプタから転送リクエストパケットを受信することに基づいている、
請求項16に記載の方法。
【請求項19】
第1のワイヤアダプタと第2のワイヤアダプタとを有しているワイヤレスUSBシステムのためのスループットを増大させるための方法であって、
データ転送のタイプを示しているディスクリプタを含むように転送リクエストを生成することと、
前記第1のワイヤアダプタに前記転送リクエストを送ることと、
前記ディスクリプタに基づいて、前記第1のワイヤアダプタから前記第2のワイヤアダプタへと前記転送リクエストを自動転送することと、
を備えている方法。
【請求項20】
前記データ転送のタイプがOUT転送であるとき、前記転送リクエストと共に転送データを自動転送することを含んでいる、請求項19に記載の方法。
【請求項21】
自動転送ワイヤアダプタとターゲットワイヤアダプタとを有しているワイヤレスUSBシステムのためのスループットを増大させるための方法であって、
前記自動転送ワイヤアダプタから前記ターゲットワイヤアダプタへと、転送リクエストパケットを転送することと、
前記転送リクエストパケットに基づいて、転送結果パケットについての前記ターゲットワイヤアダプタをポーリングすることと、
を備えている方法。
【請求項22】
ワイヤレスUSBシステムにおいて、ワイヤードUSB対応デバイスと第1のワイヤレスUSB対応デバイスとの間で通信するための方法であって、
前記ワイヤードUSB対応デバイスを検出することと、
前記第1のワイヤレスUSB対応デバイスに、第2のワイヤレスUSB対応デバイスとして前記ワイヤードUSB対応デバイスを提供することと、
を備えている方法。
【請求項23】
前記ワイヤードUSB対応デバイスからデバイスディスクリプタを読み取ることと、
あらかじめ決定されたワイヤレスUSB標準規格によって指定されるようにいずれのワイヤレスUSB対応デバイスのためのデバイスディスクリプタと一致するように、前記デバイスディスクリプタを修正することと、
前記ワイヤードUSB対応デバイスから前記第1のワイヤレスUSB対応デバイスへと転送されるべき、予期された量のデータを決定することと、
前記予期された量のデータを含むようにあらかじめ決定されたワイヤレスUSBプロトコルを修正することと、
前記第1のワイヤレスUSB対応デバイスに、前記予期された量のデータを提供することと、
をさらに備えている請求項22に記載の方法。
【請求項24】
前記デバイスディスクリプタは、標準エンドポイントディスクリプタを含み、
前記デバイスディスクリプタを前記修正することは、ワイヤレスUSBのパケットサイズと一致するように、前記標準エンドポイントディスクリプタにおいて、最大のパケットサイズのフィールドをセットすることを含んでいる、
請求項23に記載の方法。
【請求項25】
前記あらかじめ決定されたワイヤレスUSBプロトコルは、あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルを含んでおり、
前記あらかじめ決定されたワイヤレスUSBプロトコルを前記修正することは、前記あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルのチャネル時間割り付け部分においてフィールドを加えることを含んでおり、前記フィールドは、前記予期された量のデータを指定している、
請求項23に記載の方法。
【請求項26】
前記あらかじめ決定されたワイヤレスUSBプロトコルは、あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルを含んでおり、
前記あらかじめ決定されたワイヤレスUSBプロトコルを前記修正することは、前記あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルのチャネル時間割り付け部分において最大のパケットサイズのフィールドをセットすることを含んでおり、前記のフィールドは、前記予期された量のデータを指定している、
請求項23に記載の方法。
【請求項27】
前記ワイヤレスUSB対応デバイスとの通信のために、ワイヤレスUSBのセキュリティ接続コンテキストをネゴシエートし且つ保持することと、
前記ワイヤードUSB対応デバイスを検出した後で、前記ワイヤレスUSBのセキュリティ接続コンテキストを適用することと、
をさらに備えている請求項22に記載の方法。
【請求項28】
前記ワイヤードUSB対応デバイスのために固有ワイヤレスUSBデバイスのアドレスを保持すること、をさらに備えており、前記ワイヤードUSB対応デバイスを提供することは、前記固有ワイヤレスUSBデバイスアドレスを有している前記ワイヤードUSB対応デバイスを提供することを含んでいる、請求項22に記載の方法。
【請求項29】
前記ワイヤードUSB対応デバイスに関連づけられた第1のエンドポイントを、前記第1のワイヤレスUSB対応デバイスに関連づけられた第2のエンドポイントにマッピングすることと;
新しい関数が列挙されるべきであるということを前記第1のワイヤレスUSB対応デバイスに通知することと、前記新しい関数は、前記第1のワイヤレスUSB対応デバイスに関連づけられている;
をさらに備えている請求項22に記載の方法。
【請求項30】
前記第1のワイヤレスUSB対応デバイスから読み取りディスクリプタリクエストをインターセプトすることと、
前記デバイスディスクリプタを前記修正した後で、前記読み取りディスクリプタリクエストに応じて、前記第1のワイヤレスUSB対応デバイスを提供することと、
をさらに備えている請求項23に記載の方法。
【請求項31】
ワイヤードUSB対応デバイスと第1のワイヤレスUSB対応デバイスとの間の通信を容易にするワイヤレスUSB対応ハブであって、
前記ワイヤードUSB対応デバイスと通信するように構成された第1のポートと、
前記第1のワイヤレスUSB対応デバイスと通信するように構成された第2のポートと、
前記ワイヤードUSB対応デバイスを検出し、前記第1のワイヤレスUSB対応デバイスに、ネイティブワイヤレスUSB対応デバイスとして前記ワイヤードUSB対応デバイスを提供する、ように構成されたコントローラと、
を備えているワイヤレスUSB対応ハブ。
【請求項32】
前記コントローラは、前記第1のワイヤレスUSB対応デバイスに対して、デバイスワイヤアダプタとして前記ハブを提供するように構成されており、
前記第1のワイヤレスUSB対応デバイスは、ワイヤレスUSB対応ホストを含んでいる、
請求項31に記載のワイヤレスUSB対応ハブ。
【請求項33】
前記コントローラは、自身のアドレスを有している固有ワイヤレスUSB対応デバイスとして前記第1のワイヤレスUSB対応デバイスに、前記ワイヤードUSB対応デバイスを提供するように構成されている、請求項31に記載のワイヤレスUSB対応ハブ。
【請求項34】
前記コントローラは、ワイヤードUSB対応デバイスのエンドポイントをワイヤレスUSB対応ハブのエンドポイントにマッピングすることによって、ワイヤレスUSB対応ハブ上で個別の機能として前記ワイヤードUSB対応デバイスを提供するように構成されている、請求項31に記載のワイヤレスUSB対応ハブ。
【請求項35】
前記コントローラは、
複数のダウンストリームワイヤードUSB対応デバイスのそれぞれについてワイヤレスUSBアドレスを保持するように、
前記複数のダウンストリームUSB対応デバイスのうちの1つに指示されたワイヤレスUSBパケットに応答するように、
構成されている、請求項31に記載のワイヤレスUSB対応ハブ。
【請求項36】
前記コントローラは、
前記第1のワイヤレスUSB対応デバイスからデバイスディスクリプタリクエストをインターセプトするように、
前記ワイヤードUSB対応デバイスからデバイスディスクリプタを読み取るように、
あらかじめ決定されたワイヤレスUSB標準によって指定されるように、いずれのワイヤレスUSB対応デバイスのためのデバイスディスクリプタと一致するように、前記デバイスディスクリプタを修正するように、
前記第1のワイヤレスUSB対応デバイスに前記の修正されたデバイスディスクリプタを提供することによって前記ネイティブワイヤレスUSB対応デバイスとして前記ワイヤードUSB対応デバイスを提供するように、
構成されている、請求項31に記載のワイヤレスUSB対応ハブ。
【請求項37】
前記デバイスディスクリプタは、標準エンドポイントディスクリプタを含んでおり、
前記コントローラは、ワイヤレスUSBのパケットサイズと一致するように前記標準エンドポイントディスクリプタにおいて最大のパケットサイズのフィールドをセットすることによって、前記デバイスディスクリプタを修正するように構成されている、
請求項36に記載のワイヤレスUSB対応ハブ。
【請求項38】
前記コントローラは、
前記ワイヤードUSB対応デバイスから前記第1のワイヤレスUSB対応デバイスへと転送されるべき予期された量のデータを決定するように、
前記予期された量のデータを含むようにあらかじめ決定されたワイヤレスUSBプロトコルを修正するように、
構成されている、請求項31に記載のワイヤレスUSB対応ハブ。
【請求項39】
前記あらかじめ決定されたワイヤレスUSBプロトコルは、あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルを含んでおり、
前記コントローラは、チャネル時間割り付け部分において最大のパケットサイズのフィールドをセットすることによって前記あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルを修正するように構成されており、前記最大のパケットサイズのフィールドは、前記予期された量のデータを指定している、
請求項38に記載のワイヤレスUSB対応ハブ。
【請求項40】
前記あらかじめ決定されたワイヤレスUSBプロトコルは、あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルを含んでおり、
前記コントローラは、前記あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルのチャネル時間割り付け部分においてフィールドを加えることによって、前記あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルを修正するように構成されており、前記フィールドは、前記予期された量のデータを指定している、
請求項38に記載のワイヤレスUSB対応ハブ。
【請求項41】
前記コントローラは、
前記ワイヤレスUSB対応デバイスとの通信のためにワイヤレスUSBのセキュリティ接続コンテキストをネゴシエートし且つ保持するように、
前記コントローラが前記ワイヤードUSB対応デバイスを検出した後で、前記ワイヤレスUSBのセキュリティ接続コンテキストを適用する、
請求項31に記載のワイヤレスUSB対応ハブ。
【請求項1】
第1のUSB対応デバイスと第2のUSB対応デバイスとを有しているワイヤレスUSBシステムのためのスループットを増大させるための方法であって、
前記第1のUSB対応デバイスにおいて複数のパケットをアグリゲートすることと、
前記のアグリゲートされた複数のパケットを、前記第1のUSB対応デバイスから前記第2のUSB対応デバイスへと転送することと、
前記の転送の後で、前記第2のUSB対応デバイスにおいて、前記のアグリゲートされた複数のパケットをディスアグリゲートすることと、
を備えている方法。
【請求項2】
USB対応ホストデバイスとして前記第1のUSB対応デバイスを構成することを含んでおり、
ホストワイヤアダプタとして前記第2のUSB対応デバイスを構成することを含んでおり、
前記複数のパケットを前記アグリゲートすることは、前記ホストワイヤアダプタにターゲットされた複数のOUT転送をアグリゲートすることを含み、前記OUT転送は制御メッセージとデータを含んでいる、
請求項1に記載の方法。
【請求項3】
ホストワイヤアダプタとして前記第1のUSB対応デバイスを構成することを含んでおり、
USB対応ホストデバイスとして前記第2のUSB対応デバイスを構成することを含んでおり、
前記複数のパケットを前記アグリゲートすることは、前記USB対応ホストデバイスにターゲットされた複数のIN転送をアグリゲートすることを含み、前記IN転送は制御メッセージとデータを含んでいる、
請求項1に記載の方法。
【請求項4】
ワイヤアダプタとUSB対応デバイスとを有しているワイヤレスUSBシステムのためのスループットを増大させるための方法であって、
前記USB対応デバイスから転送を受信するために、前記ワイヤアダプタに関連づけられたデータバッファの利用可能性を決定することと、
前記データバッファの前記利用可能性に基づいてメッセージを生成することと、
前記データバッファが前記転送を受信することが利用可能かどうかを示して前記USB対応デバイスに前記メッセージを提供することと、
を備えている方法。
【請求項5】
前記USB対応デバイスは、前記ワイヤアダプタからのダウンストリームであり、
前記メッセージは、前記データバッファが前記USB対応デバイスから前記転送を受信することが利用可能であるということを示すトークンを含む、
請求項4に記載の方法。
【請求項6】
前記ワイヤアダプタを、デバイスワイヤアダプタとして構成すること、を含んでいる請求項5に記載の方法。
【請求項7】
前記USB対応デバイスをデバイスワイヤアダプタとして、構成することと、
を含んでおり、前記ワイヤアダプタを構成することは、ホストワイヤアダプタを含んでいる、請求項5に記載の方法。
【請求項8】
前記転送を複数の転送セグメントにセグメント化することと、
前記USB対応デバイスから前記ワイヤアダプタへと、前記複数の転送セグメントを転送することと、
を含んでいる請求項5に記載の方法。
【請求項9】
前記USB対応デバイスから前記ワイヤアダプタへと前記転送を転送することと、
前記転送を複数の転送セグメントにセグメント化することと、
を含んでいる請求項5に記載の方法。
【請求項10】
前記複数の転送セグメントはサイズごとに異なる、請求項9に記載の方法。
【請求項11】
前記セグメント化することは、与えられたシチュエーションについてのスループットを最大化させるために、前記複数の転送セグメントのうち少なくとも1つのサイズを動的に適応的に調節することを含んでいる、請求項9に記載の方法。
【請求項12】
前記USB対応デバイスは、前記ワイヤアダプタからのアップストリームであり、
前記メッセージは、前記データバッファが前記USB対応デバイスから前記転送を受信することが利用可能ではないということを示すネガティブアクナレッジメントを含んでいる、
請求項4に記載の方法。
【請求項13】
前記USB対応デバイスをホストワイヤアダプタとして構成することと、
前記ワイヤアダプタをデバイスワイヤアダプタとして構成することと、
を含んでいる請求項12に記載の方法。
【請求項14】
前記USB対応デバイスをUSB対応ホストデバイスとして構成することと、
前記ワイヤアダプタをホストワイヤアダプタとして構成することと、
を含んでいる請求項12に記載の方法。
【請求項15】
前記USB対応デバイスから前記ワイヤアダプタへと、前記転送を送ることと、
前記ワイヤアダプタのアップストリームポート上で、前記USB対応デバイスから前記転送を受信することと、
最小量のデータが前記ワイヤアダプタの前記アップストリームポートから受信されるとき、前記ワイヤアダプタの前記アップストリームポートから前記ワイヤアダプタのダウンストリームポートへと、前記転送を自動転送することと、
を含んでいる請求項12に記載の方法。
【請求項16】
ワイヤアダプタとダウンストリームワイヤアダプタとを有しているワイヤレスUSBシステムのためのスループットを増大させるための方法であって、
パケットのための前記ダウンストリームワイヤアダプタをポーリングすることと、
前記ワイヤアダプタのダウンストリームインタフェース上で、前記ダウンストリームワイヤアダプタから前記パケットを受信することと、
前記パケットを前記受信した後で、前記ワイヤアダプタのアップストリームインタフェースに前記パケットを自動転送することと、
を備えている方法。
【請求項17】
前記パケットは、転送結果パケットを含んでおり、
前記転送結果パケットについての前記ダウンストリームワイヤアダプタを前記ポーリングすることは、前記ダウンストリームワイヤアダプタに転送リクエストパケットをあらかじめ送信することに基づいている、
請求項16に記載の方法。
【請求項18】
前記パケットは、着信データパケットを含んでおり、
前記着信データパケットのための前記ダウンストリームワイヤアダプタを前記ポーリングすることは、前記ダウンストリームワイヤアダプタから転送リクエストパケットを受信することに基づいている、
請求項16に記載の方法。
【請求項19】
第1のワイヤアダプタと第2のワイヤアダプタとを有しているワイヤレスUSBシステムのためのスループットを増大させるための方法であって、
データ転送のタイプを示しているディスクリプタを含むように転送リクエストを生成することと、
前記第1のワイヤアダプタに前記転送リクエストを送ることと、
前記ディスクリプタに基づいて、前記第1のワイヤアダプタから前記第2のワイヤアダプタへと前記転送リクエストを自動転送することと、
を備えている方法。
【請求項20】
前記データ転送のタイプがOUT転送であるとき、前記転送リクエストと共に転送データを自動転送することを含んでいる、請求項19に記載の方法。
【請求項21】
自動転送ワイヤアダプタとターゲットワイヤアダプタとを有しているワイヤレスUSBシステムのためのスループットを増大させるための方法であって、
前記自動転送ワイヤアダプタから前記ターゲットワイヤアダプタへと、転送リクエストパケットを転送することと、
前記転送リクエストパケットに基づいて、転送結果パケットについての前記ターゲットワイヤアダプタをポーリングすることと、
を備えている方法。
【請求項22】
ワイヤレスUSBシステムにおいて、ワイヤードUSB対応デバイスと第1のワイヤレスUSB対応デバイスとの間で通信するための方法であって、
前記ワイヤードUSB対応デバイスを検出することと、
前記第1のワイヤレスUSB対応デバイスに、第2のワイヤレスUSB対応デバイスとして前記ワイヤードUSB対応デバイスを提供することと、
を備えている方法。
【請求項23】
前記ワイヤードUSB対応デバイスからデバイスディスクリプタを読み取ることと、
あらかじめ決定されたワイヤレスUSB標準規格によって指定されるようにいずれのワイヤレスUSB対応デバイスのためのデバイスディスクリプタと一致するように、前記デバイスディスクリプタを修正することと、
前記ワイヤードUSB対応デバイスから前記第1のワイヤレスUSB対応デバイスへと転送されるべき、予期された量のデータを決定することと、
前記予期された量のデータを含むようにあらかじめ決定されたワイヤレスUSBプロトコルを修正することと、
前記第1のワイヤレスUSB対応デバイスに、前記予期された量のデータを提供することと、
をさらに備えている請求項22に記載の方法。
【請求項24】
前記デバイスディスクリプタは、標準エンドポイントディスクリプタを含み、
前記デバイスディスクリプタを前記修正することは、ワイヤレスUSBのパケットサイズと一致するように、前記標準エンドポイントディスクリプタにおいて、最大のパケットサイズのフィールドをセットすることを含んでいる、
請求項23に記載の方法。
【請求項25】
前記あらかじめ決定されたワイヤレスUSBプロトコルは、あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルを含んでおり、
前記あらかじめ決定されたワイヤレスUSBプロトコルを前記修正することは、前記あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルのチャネル時間割り付け部分においてフィールドを加えることを含んでおり、前記フィールドは、前記予期された量のデータを指定している、
請求項23に記載の方法。
【請求項26】
前記あらかじめ決定されたワイヤレスUSBプロトコルは、あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルを含んでおり、
前記あらかじめ決定されたワイヤレスUSBプロトコルを前記修正することは、前記あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルのチャネル時間割り付け部分において最大のパケットサイズのフィールドをセットすることを含んでおり、前記のフィールドは、前記予期された量のデータを指定している、
請求項23に記載の方法。
【請求項27】
前記ワイヤレスUSB対応デバイスとの通信のために、ワイヤレスUSBのセキュリティ接続コンテキストをネゴシエートし且つ保持することと、
前記ワイヤードUSB対応デバイスを検出した後で、前記ワイヤレスUSBのセキュリティ接続コンテキストを適用することと、
をさらに備えている請求項22に記載の方法。
【請求項28】
前記ワイヤードUSB対応デバイスのために固有ワイヤレスUSBデバイスのアドレスを保持すること、をさらに備えており、前記ワイヤードUSB対応デバイスを提供することは、前記固有ワイヤレスUSBデバイスアドレスを有している前記ワイヤードUSB対応デバイスを提供することを含んでいる、請求項22に記載の方法。
【請求項29】
前記ワイヤードUSB対応デバイスに関連づけられた第1のエンドポイントを、前記第1のワイヤレスUSB対応デバイスに関連づけられた第2のエンドポイントにマッピングすることと;
新しい関数が列挙されるべきであるということを前記第1のワイヤレスUSB対応デバイスに通知することと、前記新しい関数は、前記第1のワイヤレスUSB対応デバイスに関連づけられている;
をさらに備えている請求項22に記載の方法。
【請求項30】
前記第1のワイヤレスUSB対応デバイスから読み取りディスクリプタリクエストをインターセプトすることと、
前記デバイスディスクリプタを前記修正した後で、前記読み取りディスクリプタリクエストに応じて、前記第1のワイヤレスUSB対応デバイスを提供することと、
をさらに備えている請求項23に記載の方法。
【請求項31】
ワイヤードUSB対応デバイスと第1のワイヤレスUSB対応デバイスとの間の通信を容易にするワイヤレスUSB対応ハブであって、
前記ワイヤードUSB対応デバイスと通信するように構成された第1のポートと、
前記第1のワイヤレスUSB対応デバイスと通信するように構成された第2のポートと、
前記ワイヤードUSB対応デバイスを検出し、前記第1のワイヤレスUSB対応デバイスに、ネイティブワイヤレスUSB対応デバイスとして前記ワイヤードUSB対応デバイスを提供する、ように構成されたコントローラと、
を備えているワイヤレスUSB対応ハブ。
【請求項32】
前記コントローラは、前記第1のワイヤレスUSB対応デバイスに対して、デバイスワイヤアダプタとして前記ハブを提供するように構成されており、
前記第1のワイヤレスUSB対応デバイスは、ワイヤレスUSB対応ホストを含んでいる、
請求項31に記載のワイヤレスUSB対応ハブ。
【請求項33】
前記コントローラは、自身のアドレスを有している固有ワイヤレスUSB対応デバイスとして前記第1のワイヤレスUSB対応デバイスに、前記ワイヤードUSB対応デバイスを提供するように構成されている、請求項31に記載のワイヤレスUSB対応ハブ。
【請求項34】
前記コントローラは、ワイヤードUSB対応デバイスのエンドポイントをワイヤレスUSB対応ハブのエンドポイントにマッピングすることによって、ワイヤレスUSB対応ハブ上で個別の機能として前記ワイヤードUSB対応デバイスを提供するように構成されている、請求項31に記載のワイヤレスUSB対応ハブ。
【請求項35】
前記コントローラは、
複数のダウンストリームワイヤードUSB対応デバイスのそれぞれについてワイヤレスUSBアドレスを保持するように、
前記複数のダウンストリームUSB対応デバイスのうちの1つに指示されたワイヤレスUSBパケットに応答するように、
構成されている、請求項31に記載のワイヤレスUSB対応ハブ。
【請求項36】
前記コントローラは、
前記第1のワイヤレスUSB対応デバイスからデバイスディスクリプタリクエストをインターセプトするように、
前記ワイヤードUSB対応デバイスからデバイスディスクリプタを読み取るように、
あらかじめ決定されたワイヤレスUSB標準によって指定されるように、いずれのワイヤレスUSB対応デバイスのためのデバイスディスクリプタと一致するように、前記デバイスディスクリプタを修正するように、
前記第1のワイヤレスUSB対応デバイスに前記の修正されたデバイスディスクリプタを提供することによって前記ネイティブワイヤレスUSB対応デバイスとして前記ワイヤードUSB対応デバイスを提供するように、
構成されている、請求項31に記載のワイヤレスUSB対応ハブ。
【請求項37】
前記デバイスディスクリプタは、標準エンドポイントディスクリプタを含んでおり、
前記コントローラは、ワイヤレスUSBのパケットサイズと一致するように前記標準エンドポイントディスクリプタにおいて最大のパケットサイズのフィールドをセットすることによって、前記デバイスディスクリプタを修正するように構成されている、
請求項36に記載のワイヤレスUSB対応ハブ。
【請求項38】
前記コントローラは、
前記ワイヤードUSB対応デバイスから前記第1のワイヤレスUSB対応デバイスへと転送されるべき予期された量のデータを決定するように、
前記予期された量のデータを含むようにあらかじめ決定されたワイヤレスUSBプロトコルを修正するように、
構成されている、請求項31に記載のワイヤレスUSB対応ハブ。
【請求項39】
前記あらかじめ決定されたワイヤレスUSBプロトコルは、あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルを含んでおり、
前記コントローラは、チャネル時間割り付け部分において最大のパケットサイズのフィールドをセットすることによって前記あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルを修正するように構成されており、前記最大のパケットサイズのフィールドは、前記予期された量のデータを指定している、
請求項38に記載のワイヤレスUSB対応ハブ。
【請求項40】
前記あらかじめ決定されたワイヤレスUSBプロトコルは、あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルを含んでおり、
前記コントローラは、前記あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルのチャネル時間割り付け部分においてフィールドを加えることによって、前記あらかじめ決定されたワイヤレスUSBワイヤアダプタプロトコルを修正するように構成されており、前記フィールドは、前記予期された量のデータを指定している、
請求項38に記載のワイヤレスUSB対応ハブ。
【請求項41】
前記コントローラは、
前記ワイヤレスUSB対応デバイスとの通信のためにワイヤレスUSBのセキュリティ接続コンテキストをネゴシエートし且つ保持するように、
前記コントローラが前記ワイヤードUSB対応デバイスを検出した後で、前記ワイヤレスUSBのセキュリティ接続コンテキストを適用する、
請求項31に記載のワイヤレスUSB対応ハブ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6A】
【図6B】
【図7A】
【図7B】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6A】
【図6B】
【図7A】
【図7B】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−142957(P2012−142957A)
【公開日】平成24年7月26日(2012.7.26)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−26469(P2012−26469)
【出願日】平成24年2月9日(2012.2.9)
【分割の表示】特願2009−543275(P2009−543275)の分割
【原出願日】平成19年12月21日(2007.12.21)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】
【公開日】平成24年7月26日(2012.7.26)
【国際特許分類】
【出願番号】特願2012−26469(P2012−26469)
【出願日】平成24年2月9日(2012.2.9)
【分割の表示】特願2009−543275(P2009−543275)の分割
【原出願日】平成19年12月21日(2007.12.21)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】
[ Back to top ]