(57)【要約】  一例では、データを送信するための方法が、ユニバーサルシリアルバス(USB)ホストにおいて、ホストデバイスからUSBデバイスへ送信されるUSBデータのUSBデータ転送タイプを決定するステップと、決定されたUSBデータ転送タイプに基づいてUSBデータの優先度を決定するステップとを含む。例示的な方法はまた、決定された優先度に基づいて、USBホストのプロトコルアダプテーションレイヤ(PAL)からUSBホストのネットワークレイヤへのUSBデータの転送を制御するステップを含む。
2018513451.tif 000002
【特許請求の範囲】
【請求項１】
データを送信するための方法であって、
ユニバーサルシリアルバス(USB)ホストにおいて、前記ホストデバイスからUSBデバイスへ送信されるUSBデータのUSBデータ転送タイプを決定するステップと、
前記決定されたUSBデータ転送タイプに基づいて、前記USBデータの優先度を決定するステップと、
前記決定された優先度に基づいて前記USBホストのプロトコルアダプテーションレイヤ(PAL)から前記USBホストのネットワークレイヤへの前記USBデータの転送を制御するステップと
を含む、方法。
【請求項２】
前記優先度を決定するステップは、バルクデータ転送タイプ、アイソクロナスデータ転送タイプ、およびインタラプトデータ転送タイプのうちの1つとして前記データ転送タイプを識別するステップを含む、請求項1に記載の方法。
【請求項３】
前記優先度を決定するステップは、前記アイソクロナスデータ転送タイプおよび前記インタラプトデータ転送タイプよりも低い優先度を前記バルクデータ転送タイプに割り当てることを含む、請求項2に記載の方法。
【請求項４】
前記USBデータ転送タイプに基づいて、前記USBデータの前記優先度を決定するステップは、前記USBデータの前記USBデータ転送タイプの未解決の転送要求に対するしきい値を決定するステップを含み、前記決定された優先度に基づいて前記USBデータの転送を制御するステップは、
前記USBデータの前記USBデータ転送タイプを有するUSBデータの未解決の転送要求の数が前記しきい値以下のとき、前記USBホストの前記PALから前記ネットワークレイヤへ前記USBデータを転送するステップと、
前記USBデータの前記USBデータ転送タイプを有するUSBデータの未解決の転送要求の数が前記しきい値よりも多いとき、前記USBデータの前記USBデータ転送タイプの未解決の転送要求の数が前記しきい値以下になるまで、前記USBホストの前記PALの転送キューに前記USBデータを保持するステップと
を含む、請求項1に記載の方法。
【請求項５】
前記USBデータの前記USBデータ転送タイプはバルク転送タイプを含み、未解決の転送要求に対する前記しきい値を決定するステップは、未解決のバルクデータ転送要求に対するしきい値を決定するステップを含む、請求項4に記載の方法。
【請求項６】
前記USBホストから前記USBデバイスへ第2のUSBデータを配信することに関連付けられるレイテンシに基づいて、前記しきい値を動的に決定するステップをさらに含む、請求項4に記載の方法。
【請求項７】
前記第2のUSBデータは、インタラプトデータ転送タイプに関連付けられる少なくとも1つのインタラプトパケットであり、前記方法は、
前記第2のUSBデータが前記ネットワークレイヤに送信される時間と、前記USBデバイスからのアクノリッジが受信される時間との差に基づいて前記レイテンシを決定するステップをさらに含む、請求項6に記載の方法。
【請求項８】
前記USBの前記PALから前記ネットワークレイヤへ前記USBデータを転送するのに先立って、前記USBホストの前記PALに関連付けられるバッファに前記USBデータを記憶するステップをさらに含む、請求項1に記載の方法。
【請求項９】
前記USBホストの前記PALから前記USBデータを転送するステップは、前記ネットワークレイヤに関連付けられるUSBデバイスバッファに、前記PALに関連付けられる前記バッファに記憶された前記USBデータをリリースするステップを含む、請求項8に記載の方法。
【請求項１０】
前記USBデータが前記USBホストの前記PALに関連付けられる前記バッファからリリースされると、前記USBデバイスバッファのクレジットの割振りを解除するステップをさらに含む、請求項9に記載の方法。
【請求項１１】
前記USBデータはUSBデータパケットを含む、請求項1に記載の方法。
【請求項１２】
データを送信するためのデバイスであって、
ユニバーサルシリアルバス(USB)データを記憶するように構成されるメモリと、
USBホストデバイスの1つまたは複数のプロセッサであって、
前記USBホストデバイスにおいて、前記ホストデバイスからUSBデバイスへ送信されるUSBデータのUSBデータ転送タイプを決定し、
前記決定されたUSBデータ転送タイプに基づいて前記USBデータの優先度を決定し、
前記決定された優先度に基づいて、前記USBホストのプロトコルアダプテーションレイヤ(PAL)から前記USBホストのネットワークレイヤへの前記USBデータの転送を制御するように構成されるプロセッサと
を備える、デバイス。
【請求項１３】
前記優先度を決定するために、前記1つまたは複数のプロセッサは、バルクデータ転送タイプ、アイソクロナスデータ転送タイプ、およびインタラプトデータ転送タイプのうちの1つとして前記データ転送タイプを識別するように構成される、請求項12に記載のデバイス。
【請求項１４】
前記優先度を決定するために、前記1つまたは複数のプロセッサは、前記アイソクロナスデータ転送タイプおよび前記インタラプトデータ転送タイプよりも低い優先度を前記バルクデータ転送タイプに割り当てるように構成される、請求項13に記載のデバイス。
【請求項１５】
前記USBデータ転送タイプに基づいて、前記USBデータの前記優先度を決定するために、前記1つまたは複数のプロセッサは、前記USBデータの前記USBデータ転送タイプの未解決の転送要求に対するしきい値を決定するように構成され、前記決定された優先度に基づいて前記USBデータの転送を制御するために、前記1つまたは複数のプロセッサは、
前記USBデータの前記USBデータ転送タイプを有するUSBデータの未解決の転送要求の数が前記しきい値以下のとき、前記USBホストの前記PALから前記ネットワークレイヤへ前記USBデータを転送し、
前記USBデータの前記USBデータ転送タイプを有するUSBデータの未解決の転送要求の数が前記しきい値よりも多いとき、前記USBデータの前記USBデータ転送タイプの未解決の転送要求の数が前記しきい値以下になるまで、前記USBホストの前記PALの転送キューに前記USBデータを保持する
ように構成される、請求項12に記載のデバイス。
【請求項１６】
前記USBデータの前記USBデータ転送タイプはバルク転送タイプを含み、未解決の転送要求に対する前記しきい値を決定するために、前記1つまたは複数のプロセッサは、未解決のバルクデータ転送要求に対するしきい値を決定するように構成される、請求項15に記載のデバイス。
【請求項１７】
前記1つまたは複数のプロセッサは、前記USBホストから前記USBデバイスへ第2のUSBデータを配信することに関連付けられるレイテンシに基づいて、前記しきい値を動的に決定するようにさらに構成される、請求項15に記載のデバイス。
【請求項１８】
前記第2のUSBデータは、インタラプトデータ転送タイプに関連付けられる少なくとも1つのインタラプトパケットであり、前記1つまたは複数のプロセッサは、
前記第2のUSBデータが前記ネットワークレイヤに送信される時間と、前記USBデバイスからのアクノリッジが受信される時間との差に基づいて前記レイテンシを決定するようにさらに構成される、請求項17に記載のデバイス。
【請求項１９】
前記1つまたは複数のプロセッサは、前記USBの前記PALから前記ネットワークレイヤへ前記USBデータを転送するのに先立って、前記USBホストの前記PALに関連付けられるバッファに前記USBデータを記憶するようにさらに構成される、請求項12に記載のデバイス。
【請求項２０】
前記USBホストの前記PALから前記USBデータを転送するために、前記1つまたは複数のプロセッサは、前記ネットワークレイヤに関連付けられるUSBデバイスバッファに、前記PALに関連付けられる前記バッファに記憶された前記USBデータをリリースするように構成される、請求項19に記載のデバイス。
【請求項２１】
前記1つまたは複数のプロセッサは、前記USBデータが前記USBホストの前記PALに関連付けられる前記バッファからリリースされると、前記USBデバイスバッファのクレジットの割振りを解除するようにさらに構成される、請求項20に記載のデバイス。
【請求項２２】
前記装置は、
集積回路、
マイクロプロセッサ、または
ワイヤレス通信デバイス
のうちの少なくとも1つを備える、請求項12に記載のデバイス。
【請求項２３】
データを送信するための装置であって、
ユニバーサルシリアルバス(USB)ホストにおいて、前記ホストデバイスからUSBデバイスへ送信されるUSBデータのUSBデータ転送タイプを決定するための手段と、
前記決定されたUSBデータ転送タイプに基づいて前記USBデータの優先度を決定するための手段と、
前記決定された優先度に基づいて、前記USBホストのプロトコルアダプテーションレイヤ(PAL)から前記USBホストのネットワークレイヤへの前記USBデータの転送を制御するための手段と
を備える、装置。
【請求項２４】
前記優先度を決定するための手段は、バルクデータ転送タイプ、アイソクロナスデータ転送タイプ、およびインタラプトデータ転送タイプのうちの1つとして前記データ転送タイプを識別するための手段を含む、請求項23に記載の装置。
【請求項２５】
前記優先度を決定するための手段は、前記アイソクロナスデータ転送タイプおよび前記インタラプトデータ転送タイプよりも低い優先度を前記バルクデータ転送タイプに割り当てるための手段を含む、請求項24に記載の装置。
【請求項２６】
前記USBデータ転送タイプに基づいて、前記USBデータの前記優先度を決定するための手段は、前記USBデータの前記USBデータ転送タイプの未解決の転送要求に対するしきい値を決定するための手段を含み、前記決定された優先度に基づいて前記USBデータの転送を制御するための手段は、
前記USBデータの前記USBデータ転送タイプを有するUSBデータの未解決の転送要求の数が前記しきい値以下のとき、前記USBホストの前記PALから前記ネットワークレイヤへ前記USBデータを転送するための手段と、
前記USBデータの前記USBデータ転送タイプを有するUSBデータの未解決の転送要求の数が前記しきい値よりも多いとき、前記USBデータの前記USBデータ転送タイプの未解決の転送要求の数が前記しきい値以下になるまで、前記USBホストの前記PALの転送キューに前記USBデータを保持するための手段と
を含む、請求項23に記載の装置。
【請求項２７】
命令を記憶した非一時的コンピュータ可読記録媒体であって、前記命令が、実行されると、1つまたは複数のプロセッサに、
ユニバーサルシリアルバス(USB)ホストデバイスにおいて、前記ホストデバイスからUSBデバイスへ送信されるUSBデータのUSBデータ転送タイプを決定させ、
前記決定されたUSBデータ転送タイプに基づいて、前記USBデータの優先度を決定させ、
前記決定された優先度に基づいて、前記USBホストのプロトコルアダプテーションレイヤ(PAL)から前記USBホストのネットワークレイヤへの前記USBデータの転送を制御させる、
非一時的コンピュータ可読記録媒体。
【請求項２８】
前記優先度を決定するために、前記命令は前記1つまたは複数のプロセッサに、バルクデータ転送タイプ、アイソクロナスデータ転送タイプ、およびインタラプトデータ転送タイプのうちの1つとして前記データ転送タイプを識別させる、請求項27に記載の非一時的コンピュータ可読記録媒体。
【請求項２９】
前記優先度を決定するために、前記命令は前記1つまたは複数のプロセッサに、前記アイソクロナスデータ転送タイプおよび前記インタラプトデータ転送タイプよりも低い優先度を前記バルクデータ転送タイプに割り当てさせる、請求項28に記載の非一時的コンピュータ可読記録媒体。
【請求項３０】
前記USBデータ転送タイプに基づいて、前記USBデータの前記優先度を決定するために、前記命令は前記1つまたは複数のプロセッサに、前記USBデータの前記USBデータ転送タイプの未解決の転送要求に対するしきい値を決定させ、前記決定された優先度に基づいて前記USBデータの転送を制御するために、前記命令は前記1つまたは複数のプロセッサに、
前記USBデータの前記USBデータ転送タイプを有するUSBデータの未解決の転送要求の数が前記しきい値以下のとき、前記USBホストの前記PALから前記ネットワークレイヤへ前記USBデータを転送させ、
前記USBデータの前記USBデータ転送タイプを有するUSBデータの未解決の転送要求の数が前記しきい値よりも多いとき、前記USBデータの前記USBデータ転送タイプの未解決の転送要求の数が前記しきい値以下になるまで、前記USBホストの前記PALの転送キューに前記USBデータを保持させる、請求項27に記載の非一時的コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ワイヤレス通信技法に関する。
【背景技術】
【０００２】
モバイルデバイスは、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ワイヤレス通信カードをもつポータブルコンピュータ、携帯情報端末(PDA)、デジタルカメラ、ビデオゲームデバイス、ポータブルメディアプレーヤ、ワイヤレス通信機能をもつフラッシュメモリデバイス、いわゆる「スマート」フォンおよび「スマート」パッドまたはタブレットを含むワイヤレス通信デバイス、電子リーダー、あるいは多種多様な他のタイプのポータブルデバイスの他のものの形態をとる場合がある。モバイルデバイスは、高電力プロセッサと、メディアコンテンツを処理する能力と、クラウドにおいてネットワークと対話する能力との追加とともにますます強力になっている。これらの改善により、より良いユーザエクスペリエンスを与え、生産性を改善するモバイルデバイスのための新しい使用モデルを開発することが可能になる。
【０００３】
加えて、モバイルデバイスおよび他のコンピューティングデバイス(たとえば、パーソナルコンピュータ、携帯電話、電子ハンドヘルドデバイス、ゲーミングコンソール、または他の同様のデバイス)は、通信規格を用いて様々な周辺デバイスと通信する場合がある。1つのそのような通信規格は、ユニバーサルシリアルバス(USB)接続を含む。USB接続を使用する場合がある周辺デバイスのいくつかの例としては、マウスまたは他のポインティング/選択デバイス、キーボード、デジタルカメラ、プリンタ、パーソナルメディアプレーヤ、フラッシュドライブなどの大容量ストレージデバイス、ネットワークアダプタ、および外部ハードドライブがある。それらのデバイスの多数にとって、USBは、周辺デバイス接続を容易にする非常に一般的な通信規格になった。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示の技法は、一般に、電子デバイス間でデータを転送するための技法に関する。たとえば、本開示の技法は、USBデータのフローを制御し、高優先度パケットの配信レイテンシを低減するために用いられてもよい。本技法は、送信されているデータのUSBデータ転送タイプに基づいて所与の媒体を介した送信に対してUSBデータに優先度を付けるのに役立つ場合がある。いくつかの事例では、本技法は、より厳しいレイテンシ要件を有するより優先度の高いデータパケットが比較的優先度の低いデータパケットによって遅延される問題を緩和するのに役立つ場合がある。
【課題を解決するための手段】
【０００５】
一例では、データを送信するための方法が、ユニバーサルシリアルバス(USB)ホストにおいて、ホストデバイスからUSBデバイスへ送信されるUSBデータのUSBデータ転送タイプを決定するステップと、決定されたUSBデータ転送タイプに基づいてUSBデータの優先度を決定するステップと、決定された優先度に基づいてUSBホストのプロトコルアダプテーションレイヤ(PAL)からUSBホストのネットワークレイヤへのUSBデータの転送を制御するステップとを含む。
【０００６】
別の例では、データを送信するためのデバイスが、ユニバーサルシリアルバス(USB)データを記憶するように構成されるメモリと、USBホストデバイスの1つまたは複数のプロセッサとを含む。USBホストデバイスにおいて、ホストデバイスからUSBデバイスへ送信されるUSBデータのUSBデータ転送タイプを決定するように構成される1つまたは複数のプロセッサが、決定されたUSBデータ転送タイプに基づいてUSBデータの優先度を決定し、決定された優先度に基づいてUSBホストのプロトコルアダプテーションレイヤ(PAL)からUSBホストのネットワークレイヤへのUSBデータの転送を制御する。
【０００７】
別の例では、データを送信するための装置が、ユニバーサルシリアルバス(USB)ホストにおいて、ホストデバイスからUSBデバイスへ送信されるUSBデータのUSBデータ転送タイプを決定するための手段と、決定されたUSBデータ転送タイプに基づいてUSBデータの優先度を決定するための手段と、決定された優先度に基づいてUSBホストのプロトコルアダプテーションレイヤ(PAL)からUSBホストのネットワークレイヤへのUSBデータの転送を制御するための手段とを含む。
【０００８】
別の例では、非一時的コンピュータ可読媒体が、実行されたときに1つまたは複数のプロセッサに、ユニバーサルシリアルバス(USB)ホストデバイスにおいて、ホストデバイスからUSBデバイスへ送信されるUSBデータのUSBデータ転送タイプを決定させ、決定されたUSBデータ転送タイプに基づいてUSBデータの優先度を決定させ、決定された優先度に基づいてUSBホストのプロトコルアダプテーションレイヤ(PAL)からUSBホストのネットワークレイヤへのUSBデータの転送を制御させる命令をその上に記憶されている。
【０００９】
本開示の1つまたは複数の態様の詳細を添付の図面および以下の説明に記載する。本開示で説明する技法の他の特徴、目的、および利点は、これらの説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１０】
【図１】USBデバイスと通信しているUSBホストを示す概念図である。
【図２】例示的なUSBプロトコル階層を示すブロック図である。
【図３Ａ】USBプロトコルアダプテーションレイヤ(PAL)からネットワークスタックへのデータ転送を示す概念図である。
【図３Ｂ】USB PALからネットワークスタックへのデータ転送を示す別の概念図である。
【図４】本開示の技法によるデータ送信の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
コンピューティングデバイス(たとえば、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、いわゆる「スマートフォン」などの携帯電話、電子ハンドヘルドデバイス、電子リーダー、デジタルビデオカメラ、デジタルカメラ、ハンドヘルドゲーミングデバイス、ゲーミングコンソール、または他の同類のデバイス)は、通信規格を用いる様々な周辺デバイスと通信する場合がある。1つのそのような通信規格は、ユニバーサルシリアルバス(USB)接続を含む。USB接続を使用する場合がある周辺デバイスのいくつかの例としては、マウスまたは他のポインティング/選択デバイス、キーボード、ディスプレイ、デジタルカメラ、プリンタ、パーソナルメディアプレーヤ、フラッシュドライブなどの大容量ストレージデバイス、ネットワークアダプタ、および外部ハードドライブがある。それらのデバイスの多数にとって、USBは、周辺デバイス接続を容易にする非常に一般的な通信規格になった。
【００１２】
したがって、本開示は、「USBデバイス」を、ホストコンピューティングデバイスと通信することが可能なUSB接続を有する周辺デバイスとして呼ぶことがある。いくつかの例では、ホストデバイスは、タブレットコンピュータ、スマートフォン、または他のポータブル電子デバイスなどのモバイルデバイスであってもよい。いくつかの例では、USBデバイスとホストデバイスは、共通のUSB通信仕様に従って通信してもよい。すなわち、一例では、USBデバイスは、http://www.usb.org/developers/docs/usb_20_021411.zipで一般に入手可能な、2010年7月26日に改訂および公開されたUSB 2.0仕様に従ってホストデバイスと通信してもよい。別の例では、USBデバイスおよびホストデバイスは、http://www.usb.org/developers/docs/usb_31_121314.zipで一般に入手可能な、2013年7月26日に公開されたUSB 3.1などの別のUSB仕様、または現在利用可能であるかもしくは将来に現れる可能性がある他のシリアルバス仕様もしくはプロプライエタリなシリアルバス通信仕様などに従って通信するように構成されてもよい。
【００１３】
ホストデバイスは、様々な媒体を使用してUSBデバイスと通信してもよい。以下でより詳細に説明するように、「媒体」は一般に、ホストデバイスとUSBデバイスとが接続されるチャネルを指す。いくつかの例では、ホストデバイスは、WiFi、Bluetoothなどのような短距離通信チャネルといったワイヤレス通信チャネルを使用してUSBデバイスと通信してもよい。しかしながら、通信チャネルは、必ずしもこの点に限定される必要はなく、高周波(RF)スペクトル、または1つもしくは複数の物理的な送信線、またはワイヤレスおよびワイヤード媒体の任意の組合せなど、任意のワイヤレスもしくはワイヤード通信媒体を含んでよい。いくつかの例では、通信チャネルは、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークなどの、パケットベースネットワークの一部を形成してもよい。
【００１４】
いかなる特定の通信規格にも限定されるものではないが、本開示の技法は、2014年2月25日に公開され、http://www.usb.org/developers/docs/devclass_docs/Media_Agnostic_USB_v1.0.zip("MA-USB"規格)で一般に入手可能なMedia Agnostic USB規格に適用可能な場合がある。Media Agnostic(MA) USBに対する1つの動機づけは、既存のUSBインフラストラクチャを最大限に利用しながら、たとえば、ワイヤレスまたはIPリンクなど、USB以外の媒体を介したUSB接続性を提供することである。
【００１５】
許容可能なユーザエクスペリエンスをUSBデバイスが提供するために、USBデバイスは、データの受信に関連するレイテンシ要件を有してもよい。たとえば、USBデータ転送のいくつかのタイプが、許容可能なユーザエクスペリエンスを提供するために、USBデータ転送の他のタイプよりも低いレイテンシを必要とすることがある。データ転送タイプは一般に、ホストデバイスとUSBデバイスとの間で通信されるデータの構造を指す場合がある。例示的なデータ転送タイプには、(たとえば、USBコマンドおよびステータス動作に関連付けられるデータのための)コントロール転送、(たとえば、時間に依存しないデータの通信のための)バルク転送、(たとえば、制限付きのレイテンシを必要とするデータの非周期的転送のための)インタラプト転送、および(たとえば、時間ベースの配信モデルを用いるデータの周期的転送のための)アイソクロナス転送が含まれる。他のタイプのデータ転送もまた考えられてもよい。特定のデータ転送タイプがUSBデバイスにおいて特定のエンドポイントによって受信されてもよい。たとえば、バルクデータ転送タイプは、バルクエンドポイントに関連付けられていると言われてもよく、インタラプトデータ転送タイプはインタラプトエンドポイントと関連していると言われてもよい。
【００１６】
上記で参照したMA-USB規格で説明したシステムなど、いくつかのUSBシステムは、ホストデバイスとUSBデバイスとの間のデータのフローを調整するためにバッファを使用してもよい。そのようなバッファリングは、クレジットベースのフロー制御と呼ばれることもあり、ここでUSBデバイスは、データを受信するために利用可能なバッファスペースの量をホストデバイスに指示する。ホストデバイスは次いで、USBデバイスが受け入れられる限りの多量のデータをUSBデバイスに送信する場合がある。たとえば、通信媒体の効率的な使用を確実にするために、出力転送プロトコルは、クレジットベースのフロー制御を利用して、ホストデバイスからUSBデバイスへのデータのフローを、USBデバイスバッファの中に正常に受け入れられ得る量で計量供給してもよい。USBデバイスは、利用可能なバッファスペースをホストデバイスに通知してもよい。ホストデバイスは、USBデバイスにデータを送信するときにクレジットを低減してもよい。ホストデバイスは、データが転送されUSBデバイスのバッファから除去されたというアクノリッジを受信したときにクレジットを割り振ってもよい。
【００１７】
いくつかの事例では、USBデバイスバッファは比較的大きくてもよく、その結果、大量のクレジットがホストデバイスにおいて利用可能となる場合がある。そのような事例では、ホストデバイスは、USBデバイスに比較的大量のデータを送信してもよい。様々なUSBデータ転送タイプを含んだ比較的大量のデータを送信することは結果として、より優先度の高いパケットが許容可能な時間量内で送信されることをより優先度の低いデータパケットがブロックすることになる場合がある。一例として、ホストデバイスがインタラプト転送を発行するのに先立っていくつかのバルク転送を発行するとき、ホストデバイスは、先行するバルクデータのすべてを送信するまで、インタラプトデータを送信しないこともある。この例では、ホストデバイスは、インタラプトデータのレイテンシ要件内でインタラプトデータを送信しないこともある。
【００１８】
USB通信の状況下では、ネットワークスタック(プロトコルスタックとも呼ばれる)は一般に、ホストデバイスとUSBデバイスとの間でデータをトランスポートする役目を果たす1つまたは複数のプロトコルを参照してもよい。すなわち、ネットワークスタックは、ホストデバイスとUSBデバイスとを接続する特定の媒体を介してデータパケットを送信する役目を果たしてもよい。いくつかのネットワークスタックは、特定のデータの優先度を付けるサービス品質(QoS)サポートを有してもよい。たとえば、インターネットプロトコル(IP)を使用するホストデバイスは、IPヘッダ内のタイプオブサービス(ToS)フィールドを使用して種々のトラフィックタイプを識別し、より優先度の高い特定のパケットを供給してもよい。
【００１９】
しかしながら、すべてのネットワークスタックがQoSサポートを含むわけではない。いくつかのトランスポート媒体は、規定されたQoSサポート(たとえば、Bluetooth)を有さないこともある。いくつかの例では、ホストデバイスは、そのようなサポートが利用可能である場合にもQoSサポートを使用しない動作モードを使用してもよい。さらに、ネットワークスタックにおいてQoSサポートを用いても、複数のサービスが同じ優先度レベルのデータトラフィックを生成する(たとえば、ともに同じ優先度レベルに分類されるUSBデータと他のオーディオ/ビデオデータをデバイスが同時に送信する)事例でレイテンシが生じる場合がある。
【００２０】
本開示の技法は、USBデータのフローを制御し、より優先度の高いパケットの配信レイテンシを低減するために用いられてもよい。たとえば、本技法は、送信されているデータのUSBデータ転送タイプに基づいて所与の媒体を介した送信に対してUSBデータに優先度を付けるのに役立つ場合がある。いくつかの事例では、本技法は、より厳しいレイテンシ要件を有するより優先度の高いデータパケットが相対的により優先度の低いデータパケットによって遅延される問題を緩和するのに役立つ場合がある。
【００２１】
本開示の態様によれば、ホストデバイスは、プロトコルアダプテーションレイヤ(PAL)にそれらの技法を実装してもよい。USB PALは、ホストデバイスと1つまたは複数のUSBデバイスとの間の接続性を可能にしてもよい。いくつかの事例では、PALは1つまたは複数の規格に準拠してもよい。一例では説明の目的で、PALは、MA-USB規格に準拠してもよく、たとえば、ワイヤレスおよびIPリンクを含めたUSB以外の媒体を介したホストデバイスと1つまたは複数のUSBデバイスとの間の接続性を可能にしてもよい。
【００２２】
USB PALは、ネットワークスタックに関連付けられるネットワークレイヤとは別のものである。たとえば、以下でより詳細に説明するように、ホストPALは、USBデバイスの管理および所与のトランスポート媒体を介したUSBペイロードのトランスポートの役目を果たしてもよい。ホストPALは、ネットワークスタックの上で動作し、トランスポート媒体を介した配信のためにネットワークスタックにデータを発行してもよい。したがって、本開示の技法は、一般にネットワークスタックに関連付けられる上記のQoSサポートとは異なるものである。すなわち、これらの技法は、ホストデバイスからトランスポートレイヤへのデータのフローを制御するために用いられる場合があるが、トランスポートレイヤは、トランスポート媒体を介したデータの配信の役目を果たしてもよい(また、それ自体の別個のフロー制御技法を実装してもしなくてもよい)。
【００２３】
いくつかの本開示の技法はUSB規格に関して説明されているが、それらのUSB規格は本開示に一致する場合がある通信規格のいくつかの例にすぎないことを理解されたい。したがって、それらの技法はUSB規格の状況下で説明されているが、他の同様の通信規格(たとえば、IEEE 1394規格、Ethernet規格、シリアルアドバンスドテクノロジーアタッチメント規格、高解像度マルチメディアインターフェース(HDMI(登録商標))規格、およびThunderbolt規格)またはさらに未来の通信規格もしくは技法が同様に、本開示の教示から恩恵を受けてもよい。
【００２４】
図1は、トランスポート媒体(32)(「物理リンク」と呼ばれることもある)を介してUSBデバイスバッファ28を有するUSBデバイス24と通信しているホストデバイス20を有する例示的なシステムを示すブロック図である。
【００２５】
ホストデバイス20は、USBデバイス24などの1つまたは複数の他のデバイスにホスティング(たとえば、通信)することが可能な電子デバイスを含む。いくつかの例では、ホストデバイス20には、スマートフォン、タブレット、または他のモバイルデバイスが含まれてもよい。主にスマートフォンおよびタブレットなどのモバイルデバイスに関して説明しているが、ホストデバイス20は、1つまたは複数の他のデバイスにホスティングすることが可能な任意の電子デバイスを含んでもよく、また、たとえば、本明細書で説明する技法に一致するデータ転送機能を実施することが可能なアプライアンス、自動車、航空機、船舶または任意の他のデバイスに統合されてもよい。いくつかの例では、ホストデバイス20は、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せとして実装されてもよい。
【００２６】
明快のために図示しないが、ホストデバイス20は、限定はしないが、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、磁気ランダムアクセスメモリ(MRAM)、FLASHメモリなどを含む、多種多様な揮発性または不揮発性メモリのいずれかから構成されるメモリを含んでもよい。メモリは、オーディオデータ、ビデオデータ、ならびに他の種類のデータを記憶するためのコンピュータ可読記憶媒体を含んでもよい。ホストデバイス20はまた、モデムと、様々なミキサ、フィルタ、増幅器、および信号変調のために設計された他の構成要素、ならびに、1つまたは複数のアンテナ、およびデータを送信し、受信するために設計された他の構成要素を含むトランスミッタ/レシーバユニットとを含んでもよい。
【００２７】
USBデバイス24は、ホストデバイス20との通信のためにUSB通信規格に準拠する多種多様なデバイスのうちのいずれかを含んでもよい。いくつかの事例では、USBデバイス24は、ヒューマンインターフェースデバイス(HID)であってもよい。たとえば、USBデバイス24は、ユーザがホストデバイス20と対話することを可能にする入力デバイスであってもよい。例示的なHIDには、マウス、キーボード、トラックパッド、カメラなどが含まれてもよい。他の例では、USBデバイスは、USB規格を介して通信することが可能な大容量記憶デバイス、ディスプレイ、または任意の他のデバイスであってよい。
【００２８】
図1に示す例では、USBデバイス24はUSBデバイスバッファ28を含む。USBデバイスバッファ28は、多種多様な揮発性または不揮発性メモリのうちのいずれかから構成されるメモリを含んでもよい。以下でより詳細に説明するように、USBデバイスバッファ28は、ホストデバイス20から受信されたデータを記憶してもよい。いくつかの事例では、USBデバイス24は、ホストデバイス20からデータを受信するのに先立って、USBデバイスバッファ28のサイズをホストデバイス20に最初に通知してもよい。
【００２９】
ホストデバイス20は、ワイヤードまたはワイヤレストランスポート媒体32(物理リンクまたは単純にリンクと呼ばれることもある)を介してUSBデバイス24と通信してもよい。したがって、トランスポート媒体32は一般に、図1に示すデバイスの間でデータを送信するための、任意の好適な通信媒体または種々の通信媒体の集合を表す。トランスポート媒体32は、WiFi、Bluetooth(登録商標)などに類似した比較的短距離の通信チャネルを含んでもよい。しかしながら、トランスポート媒体32は、必ずしもこの点に限定されるものではなく、高周波(RF)スペクトル、または1つもしくは複数の物理的な送信線、またはワイヤレスおよびワイヤード媒体の任意の組合せなど、任意のワイヤレスまたはワイヤード通信媒体を含んでもよい。
【００３０】
トランスポート媒体32はさらには、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成してもよい。トランスポート媒体32は、インフラストラクチャ支援型であってもよく、またはピアツーピアであってもよい。図1のデバイスは、図3に関して以下でより詳細に説明するように、IEEE 1402.11の規格ファミリーによる規格または任意の他の通信プロトコルもしくはフォーマットなどの通信プロトコルを使用して、トランスポート媒体32を介して通信してもよい。
【００３１】
いくつかの例では、図1のデバイスは、USB規格またはWiFiなどの他のワイヤレス送信規格に準拠するワイヤードまたはワイヤレス接続を介して通信する。たとえば、上述のように、図1のデバイスは、USB 2.0仕様、USB 3.0仕様、または現在利用可能であるかもしくは将来に現れる可能性がある他の規格もしくはプロプライエタリな通信仕様に準拠して通信してもよい。いくつかの例では、ホストデバイス20とUSBデバイス24はMA USB規格を使用して通信する場合があるが、このMA USB規格は、既存のUSBインフラストラクチャを最大限に利用しながら、USB以外のトランスポート媒体32、たとえば、ワイヤレスまたはIPリンクを介したUSB接続性を可能にする場合があるものである。
【００３２】
一般に、USB規格を使用して通信するとき、ホストデバイス20はUSBデバイス24とのデータ転送を実現してもよい。USBデバイス24が許容可能なユーザエクスペリエンスを提供するために、USBデバイス24はデータレイテンシ要件を有してもよい。たとえば、USBデータ転送のいくつかのタイプが、許容可能なユーザエクスペリエンスを提供するために、USBデータ転送の他のタイプよりも低いレイテンシを必要とすることがある。例示的なデータ転送タイプとしては、コントロール転送、バルク転送、インタラプト転送、およびアイソクロナス転送がある。一般に、バルク転送は、ホストとデバイスとの間の時間に依存しない通信(たとえば、ファイルをフラッシュドライブに転送する)に使用される。インタラプト転送は一般に、制限付きのレイテンシを必要とする非周期的転送である。アイソクロナス転送は一般に、(1)周期的配信を必要とし、(2)時々のデータ損失に耐性があるデータストリームをサポートする。
【００３３】
USBデバイス24と接続すると、ホストデバイス20は最初に、USBデバイスバッファ28のサイズの指示を受け取ってもよい。いくつかの例では、ホストデバイス20は、ホストデバイス20とUSBデバイス24との間のデータのフローを調整するために、USBデバイスバッファ28を使用してもよい。そのようなバッファリングは、クレジットベースのフロー制御と呼ばれることがある。このモデルを使用して、ホストデバイス20は、USBデバイス24が受け入れられる限りの多量のデータを送ってもよい。たとえば、ホストデバイス20は、データをUSBデバイス24に送信するときにUSBデバイス24において利用可能なクレジットの量を低減してもよい。ホストデバイス20は、データが転送されUSBデバイスバッファ28から除去されたというアクノリッジを受信したときにクレジットを割り振ってもよい。
【００３４】
いくつかの事例では、USBデバイスバッファ28は比較的大きくてもよく、その結果、大量のクレジットがホストデバイス20において利用可能となる場合がある。そのような事例では、ホストデバイス20は、USBデバイス24に比較的大量のデータを送信する場合がある。様々なUSBデータ転送タイプを含んだ比較的大量のデータを送信することは結果として、より優先度の高いパケットが許容可能な時間量内で送信されることをより優先度の低いデータパケットがブロックすることになる場合がある。
【００３５】
本開示の態様によれば、ホストデバイス20は、USBデバイス24へのUSBデータのフローを制御して、特定のデータパケットの配信レイテンシを低減してもよい。たとえば、ホストデバイス20は、送信されているデータのUSBデータ転送タイプに基づいて所与の媒体を介した送信に対してUSBデータに優先度を付けるデータフロー制御技法を実装してもよい。いくつかの事例では、本技法は、より厳しいレイテンシ要件を有するより優先度の高いデータパケットが相対的に優先度の低いデータパケットによって遅延される問題を緩和するのに役立つ場合がある。
【００３６】
本開示の態様によれば、ホストデバイス20は、USB PALにそれらの技法を実装してもよい。一例では、本開示の態様によれば、ホストデバイス20は、ホストデバイス20からUSBデバイス24に送信されるUSBデータのUSBデータ転送タイプを決定してもよい。ホストデバイス20は、決定された転送タイプに基づいてUSBデータの優先度を決定してもよい。ホストデバイス20は次いで、トランスポート媒体32にわたるデータの送信のために、決定された優先度に基づいてホストデバイス20のPALからホストデバイス20のネットワークレイヤへUSBデータを転送してもよい。
【００３７】
一例では説明の目的で、ホストデバイス20は、データの転送タイプがバルク、インタラプト、アイソクロナス、または別の転送タイプであるかを決定してもよい。ホストデバイス20は、これらの転送タイプのうちの1つまたは複数に他の転送タイプよりも高い優先度を割り当ててもよい。たとえば、ホストデバイス20は、インタラプトおよびアイソクロナス転送にバルク転送よりも高い優先度を割り当ててもよい。
【００３８】
いくつかの例では、ホストデバイス20は、USBデータ転送タイプの未解決の転送(すなわち、ネットワークスタックに要求がリリースされているが、応答がまだ受信されていないデータ転送)に対するしきい値を使用して、USBデバイス24に送信されるUSBデータの優先度を決定してもよい。たとえば、ホストデバイス20は、USBデバイス24に送信されるUSBデータをいくつかの転送要求(TransferReq)に分割してもよく、各々の転送要求は、それ自体の要求識別子およびシーケンス番号に関連付けられる。ホストデバイス20は、USBデバイス24から、要求識別子、シーケンス番号、ならびに他のデータを含んだ転送応答(TransferResp)を受信してもよい。ホストデバイス20は次いで、USBデバイス24に、転送が受信されたというアクノリッジ(TransferAck)を送ってもよいが、USBデバイス24はこのアクノリッジを、データがUSBデバイスバッファ28から除去されてもよいというシグナルとして使用してもよい。
【００３９】
本開示の態様によれば、ホストデバイス20は、1つまたは複数の転送タイプに対する未解決の転送要求(たとえば、発行されているが確認されていない転送要求)の数を制御するためのしきい値を決定してもよい。いくつかの例では、送信されているUSBデータの転送タイプの未解決の転送要求の数がしきい値以下のとき、ホストデバイス20は、ホストデバイス20のPALからホストデバイス20のネットワークレイヤへUSBデータを転送してもよい。逆に、USBデータの転送タイプの未解決の転送要求の数がしきい値よりも多いとき、ホストデバイス20は、USBデータの転送タイプの未解決の転送要求の数がしきい値以下になるまで、ホストデバイス20のPALの転送キューにUSBデータをバッファリングしてもよい。
【００４０】
上記で説明したしきい値を使用して特定のデータ転送タイプの未解決のデータ転送要求の数を制限することは、ホストデバイスのネットワークレイヤに関連付けられるバッファで経験されるレイテンシに影響を及ぼす場合がある。たとえば、ホストデバイス20は、特定のタイプの未解決の転送要求の数をしきい値数に制限してもよいが、他のすべてのデータ転送タイプを制限なしにネットワークレイヤに送信することを可能にしてもよい。特定のタイプの未解決のデータ要求の数を制限することで、ホストデバイス20がネットワークレイヤにそのようなデータを送信する(たとえばむしろ、ホストPAL 64においてデータをバッファリングする)ことが防止されてもよい。このようにしてデータ転送を制御することにより、ホストデバイス20は、ネットワークレイヤにおいてバッファリングされる特定のタイプのデータ量を管理し、それによって他の転送タイプのデータがネットワークレイヤにおいてより迅速に処理されることを可能にしてもよい。
【００４１】
本開示の態様によれば、ホストデバイス20は、各転送タイプまたはすべてに満たない転送タイプに対するしきい値を決定してもよい。一例では説明の目的で、ホストデバイス20は、バルクデータ転送に対するしきい値のみを使用して、未解決のバルク転送タイプの数を制限する場合がある。この例では、ホストデバイス20は、未解決のバルク転送要求の数をしきい値数に制限する場合があるが、他のすべてのデータ転送タイプを制限なしにネットワークレイヤに送信することを可能にしてもよい。
【００４２】
いくつかの例では、ホストデバイス20は、1つまたは複数のしきい値を動的に決定する場合がある。たとえば、ホストデバイス20は、特定のUSBデータをホストデバイス20からUSBデバイス24に配信することに関連するレイテンシに基づいて、データ転送タイプしきい値を動的に決定してもよい。一例では、ホストデバイス20は、インタラプトデータの転送を完了することに関連する時間量(たとえば、TransferCompleteTime)を測定してもよい。この例では、ホストデバイス20は、インタラプトデータの転送を完了するための時間量が比較的高いときに、未解決のバルク転送要求に対するしきい値を低減してもよく、また、インタラプトデータの転送を完了するための時間量が比較的低いときに、未解決のバルク転送要求に対するしきい値を低減してもよい。追加または代替として、ホストデバイス20は、以下でより詳細に説明するように、しきい値を決定するための様々な他の技法を使用してもよい。
【００４３】
図1は、単一のUSBデバイス24とのみ通信するホストデバイス20を示しているが、それらの技法はこのように限定されるものではない。他の例では、ホストデバイス20は、以下でより詳細に説明するように、複数のUSBデバイスおよび/またはUSB通信規格に必ずしも準拠しない様々な他のデバイスと通信してもよい。
【００４４】
図2は、USBホスト40およびUSBデバイス42に対する例示的なUSBプロトコル階層を示すブロック図である。いくつかの例では、USBホスト40およびUSBデバイス42は、図1に関して上記で説明したホストデバイス20およびUSBデバイス24と同様に構成されてもよい。図2に関して説明する技法はしかしながら、様々な他のデバイスによって実装されてもよい。
【００４５】
図2の例では、USBホスト40は、トランスポートおよびネットワークレイヤ46と、論理リンク制御(LLC)サブレイヤ48と、媒体アクセス制御(MAC)サブレイヤ50と、物理(PHY)サブレイヤ52とを有するネットワークスタック44を含む。USBデバイス42は、交換的に構成されており、トランスポートおよびネットワークレイヤ56と、LLCサブレイヤ58と、MACサブレイヤ60と、PHYサブレイヤ62とを有するネットワークスタック54を含む。ネットワークスタック44およびネットワークスタック54は例にすぎず、他のネットワークスタックが、図2に示す構成要素と比べて、より多数の、より少数の、または異なる構成要素を有する場合があることを理解されたい。USBホスト40はまたホストPAL 64を含んでおり、USBデバイス42はデバイスPAL 66を含む。
【００４６】
USBホスト40とUSBデバイス42は、物理リンク68を介して接続されており、物理リンク68は様々なワイヤードまたはワイヤレスリンクを含んでもよい。図2の例では、物理リンク68は、管理チャネル70とデータチャネル72とを含む。物理リンク68は一般に、たとえば、WiFi、Bluetooth、RFスペクトルまたは1つもしくは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を含めて、USBホスト40とUSBデバイス42との間でデータを送信するための、任意の好適な通信媒体、または種々の通信媒体の集合を表してもよい。
【００４７】
USBホスト40およびUSBデバイス42のネットワークスタックは、同様の機能を実施してもよい。たとえば、トランスポートおよびネットワークレイヤ46ならびにトランスポートおよびネットワークレイヤ56は、物理リンク68を介したデータの送信のために、見出し情報を加える役目を果たしてもよい。いくつかの例では、トランスポートおよびネットワークレイヤ46ならびにトランスポートおよびネットワークレイヤ56はいくつかのプロトコルを含んでもよい。たとえば、トランスポートおよびネットワークレイヤ46ならびにトランスポートおよびネットワークレイヤ56は、インターネットプロトコル(IP)の上で動作するユーザデータグラムプロトコル(UDP)の上で動作する伝送制御プロトコル(TCP)を含んでもよい(TCP/UDP/IP)。LLCサブレイヤ48およびLLCサブレイヤ58は、それぞれのネットワークスタックのデータリンクレイヤ内に含められてもよく、ネットワーキングプロトコルに対する多重化をもたらしてもよい。MACサブレイヤ50およびMACサブレイヤ60は、LLCサブレイヤから受信したコンテンツからMACパケットを生成してもよい。PHYサブレイヤ52およびPHYサブレイヤ62は、物理リンク68を介した送信のために、MACパケットをPHYレイヤパケットへと変換してもよい。
【００４８】
一般に、ホストPAL 64およびデバイスPAL 66は、物理リンク68を介した送信のために、USBデータパケットを形成し、そのデータパケットをそれぞれのネットワークスタックにプッシュする役目を果たす。図1に関して上述したように、PALデータパケットは、たとえば、コントロール、バルク、インタラプト、およびアイソクロナスを含めた多種多様なUSBデータ転送タイプに属してもよい。加えて、いくつかのUSBデータ転送タイプは、他のデータ転送タイプとは異なるレイテンシ要件を有してもよい。たとえば、アイソクロナス転送は時間依存データを搬送してもよい。インタラプト転送(典型的にはHID周辺装置によって使用される場合がある)は、ユーザエクスペリエンス要件を満たすために、比較的低いパケット配信レイテンシを必要とする場合がある。いくつかの事例では、最小のレイテンシ要件は、種々の使用事例に対して異なる(たとえば、ユーザは、USBマウスカーソルに関連付けられるポインタラグに比較的敏感となる場合があるため、パケット配信レイテンシに対する許容度は比較的低くなる場合がある)。
【００４９】
ホストPAL 64がネットワークスタック44にデータパケットを送信した後、パケットは、実際の送信に先立って、ネットワークスタック44に関連付けられるキューにバッファリングされた状態で残留する場合がある。たとえば、ネットワークスタック44がデータパケットを送信するのを遅延させる場合があるスリープ/ウェイクスケジューリング機能が存在してもよく、または、ネットワークスタック44を共有する1つよりも多い機能ブロック(たとえば、Bluetoothモジュールと無線ブロックを共有するワイヤレスローカルエリアネットワーク(WLAN))が存在してもよい。いくつかの例では、データパケットはまた、最大トランスポートスループットおよび/または低帯域幅の利用可能性などの物理リンク68における変化する条件により、ネットワークスタック44にバッファリングされてもよい。
【００５０】
いくつかの事例では、ネットワークスタック44は、特定のタイプのトラフィックを迅速化するいくつかの機構を含んでもよい。たとえば、USBホスト40は、IPモードを使用してUSBデバイス42にデータを送信してもよい。このモードでは、ネットワークスタック44は、データパケットのためのIPヘッダを形成してもよく、トランスポートおよびネットワークレイヤ46は、そのIPヘッダ内のタイプオブサービス(ToS)フィールドを使用して、種々のトラフィックタイプを区別し、特定のパケットにより高い優先度を与えてもよい。しかしながら、そのような優先度を付けられたパケット配信は必ずしも利用可能ではない。たとえば、USBホスト40は、IPヘッダを使用しないモード(たとえば、MA USBネイティブモード)で動作する場合がある。さらに、ネットワークスタック構成および/またはトランスポート媒体(たとえば、Bluetooth)の中にはQoSサポートを有さないものもある。
【００５１】
複数のサービスが同じネットワークスタックを使用するとき、QoSサポートがネットワークスタック44において利用可能でない事例など、いくつかの事例では、または他の事例でも、より優先度の高いパケットが他のより優先度の低いパケットによってブロックされることがあり、その結果、より優先度の高いパケットに対するレイテンシが増大することになる。一例では説明の目的で、USBデバイス42のバッファは比較的大きくてもよく、(たとえば、図1に関して上記で説明したように)それによってUSBホスト40がUSBデバイス42に大量のデータを送信することが可能となる場合がある。ヘッドオブライン(HOL)ブロッキングは、ホストPAL 64がUSBデバイス42への送信のためにネットワークスタック44にバルクデータ転送のバーストを発行するときに生じる場合がある。データパケットを送信することに関連するレイテンシは、送信されるデータのキューの長さに比例してもよい。この例では、比較的限られた時間の中での(より優先度の高い)インタラプトまたはアイソクロナスパケットがバルクデータのバーストによってブロックされる場合がある。物理リンク68における低スループット、ネットワークスタック44に実装されたスケジューリングポリシー、または他の要因が、このレイテンシの問題をさらに悪化させる場合がある。
【００５２】
たとえば、USB 3.0規格をサポートするデバイスは、USB 3.0データのバーストを処理することがある比較的大きなバッファを有する場合がある。MA USB仕様で説明したものなど、クレジットベースのフロー制御機構を使用すると、バルクエンドポイントは、多数の未解決のデータ転送(たとえば、要求がネットワークスタックにリリースされているが、応答はまだ受信されていない転送)を有することがあり、その結果として、多くの保留パケットがネットワークスタック44のバッファ内で送信されるのを待機することになる場合がある。バッファに記憶されるデータの量は、USBバルクトラフィックのバーストとともに迅速に増加する場合がある。
【００５３】
本開示の態様によれば、ホストPAL 64は、USBデータのデータ転送タイプに基づいて、ネットワークスタック44に送信されるUSBデータのフローを制御してもよい。たとえば、ホストPAL 64は最初に、送信されるUSBデータのデータ転送タイプを決定してもよい。ホストPAL 64は、決定された転送タイプに基づいてUSBデータの優先度を決定してもよい。ホストPAL 64は次いで、決定された優先度に基づいて、ネットワークスタック44にUSBデータを転送してもよい。一例では説明の目的で、ホストPAL 64は、データの転送タイプがバルク、インタラプト、アイソクロナス、または別の転送タイプであるかを決定してもよい。ホストPAL 64は、これらの転送タイプのうちの1つまたは複数に他の転送タイプよりも高い優先度を割り当ててもよい。たとえば、ホストPAL 64は、インタラプトおよびアイソクロナス転送にバルク転送よりも高い優先度を割り当ててもよい。
【００５４】
いくつかの例では、ホストPAL 64は、USBデータ転送タイプの未解決の転送要求に対するしきい値を使用して、USBデータの優先度を決定してもよい。たとえば、本開示の態様によれば、ホストPAL 64は、1つまたは複数の転送タイプに対する未解決の転送要求(たとえば、発行されているが確認されていない転送要求)の数を制御するためのしきい値を決定してもよい。ホストPAL 64は、各転送タイプまたはすべてに満たない転送タイプに対するしきい値を決定してもよい。
【００５５】
一例では説明の目的で、ホストPAL 64は、バルクデータ転送に対するしきい値を使用して、未解決のバルクデータ転送タイプの数を制限してもよい。この例では、ホストデバイス20は、未解決のバルク転送要求の数をしきい値数に制限する場合があるが、他のすべてのデータ転送タイプを制限なしにネットワークスタック44に送信することを可能にしてもよい。未解決のバルクデータ要求の数を制限することで、ホストPAL 64がネットワークスタック44にバルクデータ転送を送信する(たとえばむしろ、ホストPAL 64においてデータをバッファリングする)ことが防止されてもよい。ネットワークスタック44に送信されるバルクデータの量を制御することにより、ホストPAL 64は、ネットワークスタック44においてバッファリングされるバルクデータの量を管理してもよい。このようにして、ホストPAL 64は、ネットワークスタック44においてバッファリングされるバルクデータの量を限定し、それによって他の転送タイプのデータがネットワークスタック44においてより迅速に処理されることを可能にしてもよい。
【００５６】
いかなる特定の規格にも限定されないが、それらの技法は、いくつかの事例では、MA USB規格および関連する指定のプロトコルスタックと併せて使用されてもよい。たとえば、ワイヤードシリアルバスを介したUSB通信は、比較的高い帯域幅と、比較的低いパケット配信レイテンシを有する場合がある。本開示の技法はしかしながら、比較的低い帯域幅と、高いパケット配信レイテンシを有する場合がある媒体にも適用可能としてもよい。
【００５７】
図3Aは、(たとえば、USBホスト40の)USB PAL 90から(たとえば、USBホスト40の)ネットワークスタック92へのデータ転送を示す概念図である。図3Aの例では、PAL 90は、優先度の高いエンドポイントに関連する第1のデータ転送タイプに関連付けられた第1のデータ94と、優先度の低いエンドポイントに関連する第2のデータ転送タイプに関連付けられた第2のデータ96とを含む。ネットワークスタック92は、先入れ先出し(FIFO)ベースで動作し、送信リンク100を介してデータトラフィックを送信するのに先立ってPAL 90から受信されたデータトラフィックをバッファリングするために使用されるバッファ98を含む。
【００５８】
いくつかの事例では、PAL 90は、データを受信しているUSBデバイスによって受信されることが可能である限りの多くのデータをネットワークスタック92に送信する。たとえば、PAL 90は、クレジットベースのシステムを使用して、第1のデータ94および第2のデータ96のうちのどれだけをネットワークスタック92に送信すべきかを決定してもよい。この例では、PAL 90は、ネットワークスタック92が利用可能になると直ちに、送信されているトラフィックタイプにかかわらず、ネットワークスタック92に第1のデータ94および第2のデータ96を送信してもよい。
【００５９】
しかしながら、複数のエンドポイントがUSBセッションにおいてサービスされるとき、いくつかのエンドポイント(たとえば、インタラプトまたはアイソクロナスエンドポイント)は、他のエンドポイント(たとえば、バルクエンドポイント)よりも低いパケット配信レイテンシを必要とする場合がある。図3Aの例では、第1のデータ94は、より低いパケット配信レイテンシを必要とするより優先度の高いエンドポイントに関連し、第2のデータ96は、より優先度の低いエンドポイントに関連している。ネットワークスタック92がQoSサポートを有さない事例では、すべての発信パケットが同じバッファ98を共有し、優先度の高いパケットが、先行する他の優先度の低いパケットによってバッファ98においてブロックされる場合がある。そのようなHOLブロッキングは、特に送信リンク100のスループットが低いときに、高いパケット配信レイテンシを生じる場合がある。
【００６０】
図3Bは、(たとえば、USBホスト40の)USB PAL 110から(たとえば、USBホスト40の)ネットワークスタック112へのデータ転送を示す別の概念図である。図3Bの例では、PAL 110は、優先度の高いエンドポイントに関連する第1のデータ転送タイプに関連付けられた第1のデータ114と、優先度の低いエンドポイントに関連する第2のデータ転送タイプに関連付けられた第2のデータ116とを含む。ネットワークスタック112は、先入れ先出し(FIFO)ベースで動作し、送信リンク120を介してデータトラフィックを送信するのに先立ってPAL 110から受信されたデータトラフィックをバッファリングするために使用されるバッファ118を含む。
【００６１】
本開示の態様によれば、PAL 110は、送信リンク120を介した送信のためにネットワークスタック112に第1のデータ114および第2のデータ116が与えられる方式を管理するために、優先度ベースのフロー制御機構を使用してもよい。たとえば、PAL 110(いくつかの事例では、ホストデバイス20またはUSBホスト40などのUSBホストデバイスによって実装される場合がある)は、第1のデータ114および第2のデータ116のUSBデータ転送タイプを決定してもよい。PAL 110は、決定された転送タイプに基づいて、USBデータの優先度を決定してもよい。たとえば、PAL 110は、第2のデータ116など、優先度のより低いエンドポイントに関連付けられるデータ(たとえば、バルク転送タイプ)が比較的低い優先度を有し、したがってフロー制御の対象となることを決定してもよい。PAL 110は次いで、決定された優先度に基づいて、ネットワークスタック112との間でUSBデータを転送してもよい。
【００６２】
本明細書で説明するフロー制御技法は、図3Bの第1のデータ114など、優先度の高いパケットのパケット配信レイテンシを低減してもよい。いくつかの例では、本開示の態様によれば、PAL 110は、第1のデータ114などの優先度の高いパケットに対して長期間のHOLブロッキング時間を回避するために、バッファ118の最大キューの長さを制限してもよい。たとえば、PAL 110は、第2のデータ116をネットワークスタック112に送信する速度を調整してもよい。いくつかの例では、PAL 110は、第2のデータ116のデータ転送タイプを有するエンドポイントに対して許可される未解決の転送のリミットを一時的に低減してもよい。この例では、第2のデータ116(低優先度のパケット)は、ネットワークスタック112のバッファ118で待機する代わりに、PAL 110においてバッファ内にキューイングされた状態で残留する場合がある。
【００６３】
たとえば、許可される特定のタイプの未解決のデータ転送の数を制限することにより、PAL 110は、第2のデータ116の多数のパケットをバッファ118に送信することを制限される。バッファ118内で待機する保留中のパケットがより少なくなることにより、PAL 110はしたがって、高優先度データがバッファ118に到着したときにHOLブロッキング時間を低減する。
【００６４】
図3Bの例では、PAL 110は、第2のデータ116をネットワークスタック112に送信することよりも、第1のデータ114をネットワークスタック112に送信することを優先する。この例では、PAL 110は、第2のデータ116の転送タイプの未解決のデータ転送の数に対するしきい値を強制するが、第1のデータ114の転送タイプのデータ転送にはそのような制限を課さない。たとえば、PAL 110は、第2のデータ116の転送タイプの未解決のデータ転送の数を(ブラケット122で示すように)2に制限する。このようにして、PAL 110は、バッファ118に第2のデータ116を充填することを防止され、これによって、バッファ118内の第2のデータ116の量およびそのようなデータに関連付けられるブロッキング時間が潜在的に低減される。2というしきい値は説明の目的で記述されたものであり、PAL 110は様々な他のしきい値を使用してもよいことを理解されたい。
【００６５】
特定のデータ転送タイプの未解決のデータ転送の数に対してしきい値を課すことは、高優先度のパケットの配信レイテンシを低減する場合があるが、そのような技法は、いくつかの事例では、特に送信リンク120がより高いスループットをもたらすことが可能であるとき、特定のデータ転送のエンドツーエンドのデータスループットを低減する場合がある。特定のデータ転送タイプのスループットを不必要に犠牲にすることを回避するために、本開示の態様によれば、PAL 110は(静的なしきい値を有することに加えてまたは代替として)しきい値を動的に調節してもよい。一例では説明の目的で、PAL 110は、許可される未解決のバルクデータ転送の数に対してしきい値を設定してもよい。この例では、しきい値を増加させると、より多くの未解決のバルク転送が許可され、潜在的により高いデータスループットがもたらされることになる。逆に、しきい値を低下させると、バッファ118の最大キューの長さが減じられて、HOLブロッキング時間が低減されることになる。
【００６６】
いくつかの事例では、PAL 110は、バッファ118に送信されることを制限されているデータ(第1のデータ114および第2のデータ116など)を記憶するために、バッファ118とは別のバッファを使用する場合がある。たとえば、PAL 110は、未解決のデータ転送の数がしきい値数よりも少ないかまたはそれに等しくなるまで、バッファにデータを格納してもよい。PAL 110は次いで、バッファからデータをリリースして、バッファ118に転送してもよい。加えて、PAL 110はまた、データを受信するUSBデバイスに関連付けられるバッファのクレジットの割振りを解除してもよい。すなわち、PAL 110は、バッファからリリースされるデータに基づいて、本明細書で説明するデータ転送のためにクレジットベースのシステムを管理してもよい。
【００６７】
PAL 110は、特定のUSBデータを配信することに関連付けられるレイテンシに基づいて、データ転送タイプしきい値を動的に決定してもよい。たとえば、PAL 110は、インタラプト転送に関連付けられる観測されたレイテンシに基づいて、本明細書で説明するフロー制御技法を動的に調節してもよい。(たとえば、MA USBのTransferCompleteTime変数を使用して測定される)インタラプト転送に対するPAL応答を受信するようにとのPAL要求を送信することに関連付けられる時間の量、転送タイムアウトおよび/またはリトライ計算、バッファ118のキューの長さなど、インタラプトパケット配信レイテンシを推定するために使用される場合があるいくつかのヒューリスティックが存在する。
【００６８】
本開示の態様によれば、PAL 110は、ヒューリスティックを使用して1つまたは複数のデータ転送タイプしきい値を動的に決定してもよい。たとえば、インタラプトパケット配信レイテンシ(または別のタイプのデータパケット)が高いとPAL 110が決定した場合、PAL 110は、低優先度パケットに対して許可される未解決の転送のリミットを低減してもよい。この例では、低優先度パケットは、ネットワークスタック112のバッファ118で待機する代わりに、PAL 110においてバッファ内にキューイングされた状態で残留する場合がある。代替的に、インタラプトパケット配信レイテンシ(または別のタイプのデータパケット)が低いとPAL 110が決定した場合、PAL 110は、低優先度パケットに対して許可される未解決の転送のリミットを増大させてもよい。この例では、相対的により多数の低優先度パケットがネットワークスタック112のバッファ118に送信され、それによってスループットが増大される場合がある。特定のデータ転送タイプに対するしきい値を動的に調節することにより、PAL 110は、スループットの不必要な犠牲を回避しながら、高優先度の転送に対する転送レイテンシを低減する(それによって、肯定的なユーザエクスペリエンスをもたらす)場合がある。
【００６９】
いくつかの事例では、未解決のデータ転送タイプに対するしきい値は、使用事例に基づいて、追加または代替として決定されても、および/または動的に調節されてもよい。たとえば、特定のタイプのUSBデバイスは種々の特性を有する場合がある。一例では説明の目的で、上述のように、ユーザは、USBマウスカーソルに関連付けられるポインタラグに比較的敏感となる場合があるため、パケット配信レイテンシに対する許容度は比較的低くなる場合がある。この例では、未解決のデータ転送タイプのしきい値は、(たとえば、特定のデータタイプに対して許可される未解決の転送の数を制限することによって)レイテンシを低減するように決定および/または動的に調節されてもよい。別の例では、ユーザは、USBキーボード上でタイピングすることに関連付けられるラグに対して、あまり敏感とならないこともある。この例では、未解決のデータ転送タイプのしきい値は、(たとえば、特定のデータタイプに対して許可される未解決の転送の数を増加させることによって)スループットを最大化するように決定および/または動的に調節されてもよい。したがって、本開示の態様によれば、未解決のデータ転送タイプに対するしきい値は、追加または代替として、データを受信するUSBデバイスのタイプに基づいてまたは他の要因に基づいて、決定および/または動的に調節されてもよい。
【００７０】
いくつかの例によれば、PAL 110は、フロー制御を全体的に有効または無効にしてもよい。たとえば、PAL 110は、観測されたパケット配信レイテンシ、受信側USBデバイスの能力(たとえば、受信側USBデバイスのバッファのサイズ)、ネットワーク状態、または他の要因に基づいて、上記で説明したしきい値を動的に実現(または無効化)してもよい。たとえば、PAL 110は通常、上記で説明したしきい値なしに動作してもよい。PAL 110は、パケット配信レイテンシを観測すること、USBデバイスが比較的大きなバッファを有する(たとえば、その結果、本明細書で説明したようにHOLブロッキングを生じる場合がある)という指示を受信すること、ネットワークが比較的低い帯域幅を有することを観測すること、または他の要因に基づいて、本開示のフロー制御技法を有効化してもよい。PAL 110は、そのような状態が緩和されると、フロー制御技法を無効化してもよい。
【００７１】
本開示の態様によれば、フロー制御技法は、ネットワークスタック112などのネットワークスタックのいかなる修正もなしに、USBレイヤ(たとえば、MA USBレイヤ)においてのみ実装されてもよい。上述のように、それらの技法は、ネットワークスタック112が優先度つきキューのサポートを有していないときに、高優先度パケットの配信レイテンシを低減してもよい。しかしながら、ネットワークスタック112がQoSサポートを有していると仮定したとしても、他のトラフィックがUSB転送としてバッファ118を共有する場合がある。そのような事例では、それらの技法は依然として、低優先度トラフィックを調整するために使用されてもよい。
【００７２】
一例では説明の目的で、ミラキャストトラフィックが、第2のデータ116とバッファ118を共有してもよい。この例では、PAL 110は、ミラキャストトラフィックのレイテンシおよび/またはスループット要件を満たすように、バッファ118への第2のデータ116のフローを調整してもよい。たとえば、ネットワークを介した送信のためにバッファ118に記憶された比較的大量のミラキャストトラフィック(または高優先度ミラキャストトラフィック)が存在するとPAL 110が決定した場合、PAL 110は、低優先度パケットに対して許可される未解決の転送のリミットを低減してもよい。この例では、低優先度パケットは、ネットワークスタック112のバッファ118で待機する代わりに、PAL 110においてバッファ内にキューイングされた状態で残留し、それによってミラキャストトラフィックを送信することを可能にしてもよい。代替的に、バッファ118に他のトラフィックが比較的少ないとPAL 110が決定した場合、PAL 110は、低優先度パケットに対して許可される未解決の転送のリミットを増大させてもよい。この例では、相対的により多数の低優先度パケットがネットワークスタック112のバッファ118に送信され、それによってUSBデータのスループットが増大されてもよい。
【００７３】
図4は、本開示の技法によるUSBデータ送信の一例を示すフローチャートである。たとえば、図4は全体的に、トランスポート媒体にわたる送信のために、ネットワークレイヤにデータを送信するホストUSBデバイスのPALを示している。例としてホストデバイス20に関して説明するが、図4の技法は、様々な他のデバイスによっても実行されてもよいことを理解されたい。
【００７４】
図4の例では、ホストデバイス20は、USBデバイス24などのUSBデバイスへの送信のために、USBデータを受信する(130)。たとえば、ホストデバイス20は、ホストデバイス20に関連付けられるドライバからデータを受信してもよい。ホストデバイス20は次いで、優先度スケジューリングが有効化されているかどうかを決定してもよい(132)。たとえば、上述のように、本開示の態様によれば、ホストデバイス20は、前述のように、観測されたパケット配信レイテンシ、受信側USBデバイスの能力(たとえば、受信側USBデバイスのバッファのサイズ)、ネットワーク状態、または他の要因に基づいて送信されるデータのUSBデータ転送タイプに基づいた優先度ベースのフロー制御機構を動的に有効化(または無効化)してもよい。
【００７５】
優先度スケジューリングが有効化されているとき(ステップ132のYES分岐)、ホストデバイス20は、送信されるデータのタイプに対する優先度を決定してもよい(134)。たとえば、本開示の態様によれば、ホストデバイス20は、バルクデータ、インタラプトデータ、アイソクロナスデータ、または別のデータタイプのうちの1つとして、送信されているデータを識別してもよい。いくつかの事例では、ホストデバイス20は、そのようなデータ転送タイプのうちの1つまたは複数に対する優先度を決定してもよい。
【００７６】
本開示の態様によれば、ホストデバイス20は、送信されているデータのタイプに対する未解決のデータ転送要求のしきい値に従って優先度を決定してもよい。たとえば、ホストデバイス20は、1つまたは複数の転送タイプに対する未解決の転送要求(たとえば、発行されているが確認されていない転送要求)の数を制御するためのしきい値を決定してもよい。いくつかの例では、送信されているUSBデータの転送タイプの未解決の転送要求の数がしきい値以下のとき、ホストデバイス20は、ホストデバイス20のPALからホストデバイス20のネットワークレイヤへUSBデータを転送してもよい。逆に、USBデータの転送タイプの未解決の転送要求の数がしきい値よりも多いとき、ホストデバイス20は、USBデータの転送タイプの未解決の転送要求の数がしきい値よりも少なくなるまで、ホストデバイス20のPALの転送キューにUSBデータをバッファリングしてもよい。
【００７７】
したがって、図4の例では、ホストデバイス20は、送信されているデータのタイプに対する未解決の転送要求の数がしきい値未満であるかどうかを決定してもよい(136)。要求の数がしきい値以上である場合(ステップ136のNO分岐)、ホストデバイス20は、未解決の要求の数がしきい値未満となるまで、PALレベルでデータをバッファリングしてもよい(138)。要求の数がしきい値未満である場合(ステップ136のYES分岐)、ホストデバイス20は、USBデバイスへの送信のために、ネットワークレイヤにデータを転送してもよい(たとえば、PALバッファからネットワークスタックのバッファへデータをリリースする)(140)。
【００７８】
図4に関して図示し説明したステップは、単に一例として提供されていることも理解されたい。すなわち、図4の方法のステップは、必ずしも図4に示す順序で実行される必要はなく、より少ない、追加の、または代替的なステップが実行されてよい。
【００７９】
上述のように、いくつかの本開示の技法は概してUSB規格に関して説明されているが、USB規格は本開示に一致する場合がある通信規格の例にすぎないことを理解されたい。したがって、それらの技法はUSB規格の状況下で説明されているが、他の同様の通信規格(たとえば、IEEE 1394規格("FireWire"として知られる)、Ethernet規格、シリアルアドバンスドテクノロジーアタッチメント規格、高解像度マルチメディアインターフェース(HDMI)規格、およびThunderbolt規格)またはさらに同様の未来の通信規格もしくは技法が同様に、本開示の教示から恩恵を受けてもよい。
【００８０】
1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装されてもよい。ソフトウェアで実装される場合、機能は、1つもしくは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信されてもよく、かつハードウェアに基づく処理ユニットによって実行されてもよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含むことがある。このようにして、コンピュータ可読媒体は、概して、(1)非一時的な有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応する場合がある。データ記憶媒体は、本開示で説明される技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされることが可能な任意の利用可能な媒体であってもよい。コンピュータプログラム製品がコンピュータ可読媒体を含んでもよい。
【００８１】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または命令もしくはデータ構造の形式の所望のプログラムコードを記憶するために使用されることが可能で、またコンピュータによってアクセスされることが可能な任意の他の媒体を備えることができる。また、いかなる接続も厳密にはコンピュータ可読媒体と呼ばれる。たとえば、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。ディスク(disk)およびディスク(disc)は、本明細書で使用するとき、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、一方、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
【００８２】
命令は、1つもしくは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積されたもしくは個別の論理回路などの、1つまたは複数のプロセッサによって実行されてもよい。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または本明細書で説明する技法の実装に適した任意の他の構造のいずれかを指す場合がある。さらに、いくつかの態様では、本明細書で説明する機能は、符号化および復号のために構成される専用のハードウェアモジュールおよび/またはソフトウェアモジュール内に与えられてよく、あるいは複合コーデックに組み込まれてよい。また、本技法は、1つまたは複数の回路または論理要素に完全に実装されてもよい。
【００８３】
本開示の技法は、ワイヤレス送受話器、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、様々なデバイスもしくは装置において実施されてもよい。本開示では、開示される技法を実行するように構成されるデバイスの機能的側面を強調するために、様々なコンポーネント、モジュール、またはユニットが説明されているが、それらは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて結合されてもよく、または適切なソフトウェアおよび/もしくはファームウェアとともに、上で説明されたような1つもしくは複数のプロセッサを含む相互動作可能なハードウェアユニットの集合によって提供されてもよい。
【００８４】
様々な例について述べた。これらの例および他の例は以下の特許請求の範囲内に入る。
【符号の説明】
【００８５】
24  USBデバイス
40  USBホスト
42  USBデバイス
64  ホストPAL
66  デバイスPAL
【図１】
2018513451.tif 000003
【図２】
2018513451.tif 000004
【図３Ａ】
2018513451.tif 000005
【図３Ｂ】
2018513451.tif 000006
【図４】
2018513451.tif 000007
【手続補正書】
【提出日】平成29年8月28日(2017.8.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを処理するための方法であって、
送信のために提供されるユニバーサルシリアルバス(USB)データのタイプを決定するステップと、
前記USBデータの前記タイプに基づいて前記USBデータの優先度を決定するステップと、
前記決定された優先度に基づいて、USBホストのプロトコルアダプテーションレイヤ(PAL)から前記USBホストのネットワークレイヤへの前記USBデータの転送を制御するステップと
を含み、
前記USBデータの前記タイプに基づいて前記USBデータの前記優先度を決定するステップは、前記USBデータの前記タイプの未解決の転送要求に対するしきい値を決定するステップを含み、前記未解決の転送要求は、前記ネットワークレイヤにリリースされ、かつ送信されるのを待機しており、前記決定された優先度に基づいて前記USBデータの転送を制御するステップは、
前記USBデータの前記タイプの未解決の転送要求の数が前記しきい値以下の場合、前記PALに関連付けられるバッファに前記USBデータを記憶するステップと、前記記憶するステップに続いて、前記PALから前記ネットワークレイヤへの前記USBデータの前記転送を制御するステップと、
前記USBデータの前記タイプの未解決の転送要求の数が前記しきい値よりも多い場合、前記USBデータの前記タイプの未解決の転送要求の数が前記しきい値以下になるまで、前記PALの転送キューに前記USBデータを保持するステップと
を含む、方法。
【請求項２】
前記優先度を決定するステップは、バルクデータ、アイソクロナスデータ、およびインタラプトデータのうちの1つとして前記USBデータの前記タイプを識別するステップを含む、請求項1に記載の方法。
【請求項３】
前記優先度を決定するステップは、前記アイソクロナスデータおよび前記インタラプトデータよりも低い優先度を前記バルクデータに割り当てることを含む、請求項2に記載の方法。
【請求項４】
前記USBデータの前記タイプはバルクデータを含み、未解決の転送要求に対する前記しきい値を決定するステップは、未解決のバルクデータ転送要求に対するしきい値を決定するステップを含む、請求項1に記載の方法。
【請求項５】
前記USBホストから第2のUSBデータを受信するUSBデバイスへ前記第2のUSBデータを配信することに関連付けられるレイテンシに基づいて、前記しきい値を動的に決定するステップをさらに含む、請求項1に記載の方法。
【請求項６】
前記第2のUSBデータは、インタラプトデータの少なくとも1つのインタラプトパケットであり、前記方法は、
前記第2のUSBデータが前記ネットワークレイヤに送信される時間と、前記USBデバイスからのアクノリッジが受信される時間との差に基づいて前記レイテンシを決定するステップをさらに含む、請求項5に記載の方法。
【請求項７】
前記記憶するステップに続いて、前記USBデータの前記転送を制御するステップは、前記ネットワークレイヤから前記USBデータを受信するUSBデバイスのバッファリング能力に基づいたクレジットベースの転送を制御するステップを含む、請求項1に記載の方法。
【請求項８】
前記記憶するステップに続いて、前記PALからの前記USBデータの転送を制御するステップは、前記ネットワークレイヤに関連付けられるUSBデバイスバッファに、前記PALに関連付けられる前記バッファに記憶された前記USBデータをリリースするステップを含む、請求項1に記載の方法。
【請求項９】
前記USBデータが前記PALに関連付けられる前記バッファからリリースされると、前記USBデバイスバッファのクレジットの割振りを解除するステップをさらに含む、請求項8に記載の方法。
【請求項１０】
前記USBデータはUSBデータパケットを含む、請求項1に記載の方法。
【請求項１１】
データを処理するためのデバイスであって、
1つまたは複数のプロセッサであって、
送信のために提供されるユニバーサルシリアルバス(USB)データのタイプを決定し、
前記USBデータの前記タイプに基づいて前記USBデータの優先度を決定し、
前記決定された優先度に基づいて、USBホストのプロトコルアダプテーションレイヤ(PAL)から前記USBホストのネットワークレイヤへの前記USBデータの転送を制御するように構成されるプロセッサ
を備え、
前記USBデータの前記タイプに基づいて前記USBデータの前記優先度を決定するために、前記1つまたは複数のプロセッサは、前記USBデータの前記タイプの未解決の転送要求に対するしきい値を決定するように構成され、前記未解決の転送要求は、前記ネットワークレイヤにリリースされ、かつ送信されるのを待機しており、前記決定された優先度に基づいて前記USBデータの転送を制御するために、前記1つまたは複数のプロセッサは、
前記USBデータの前記転送タイプの未解決の転送要求の数が前記しきい値以下の場合、前記PALに関連付けられるバッファに前記USBデータを記憶し、前記記憶することに続いて、前記PALから前記ネットワークレイヤへの前記USBデータの前記転送を制御し、
前記USBデータの前記タイプの未解決の転送要求の数が前記しきい値よりも多い場合、前記USBデータの前記タイプの未解決の転送要求の数が前記しきい値以下になるまで、前記PALの転送キューに前記USBデータを保持する
ように構成される、デバイス。
【請求項１２】
前記優先度を決定するために、前記1つまたは複数のプロセッサは、バルクデータ、アイソクロナスデータ、およびインタラプトデータのうちの1つとして前記USBデータの前記タイプを識別するように構成される、請求項11に記載のデバイス。
【請求項１３】
前記優先度を決定するために、前記1つまたは複数のプロセッサは、前記アイソクロナスデータおよび前記インタラプトデータよりも低い優先度を前記バルクデータに割り当てるように構成される、請求項12に記載のデバイス。
【請求項１４】
前記USBデータの前記タイプはバルクデータを含み、未解決の転送要求に対する前記しきい値を決定するために、前記1つまたは複数のプロセッサは、未解決のバルクデータ転送要求に対するしきい値を決定するように構成される、請求項11に記載のデバイス。
【請求項１５】
前記1つまたは複数のプロセッサは、前記USBホストから第2のUSBデータを受信するUSBデバイスへ前記第2のUSBデータを配信することに関連付けられるレイテンシに基づいて、前記しきい値を動的に決定するようにさらに構成される、請求項11に記載のデバイス。
【請求項１６】
前記第2のUSBデータは、インタラプトデータの少なくとも1つのインタラプトパケットであり、前記1つまたは複数のプロセッサは、
前記第2のUSBデータが前記ネットワークレイヤに送信される時間と、前記USBデバイスからのアクノリッジが受信される時間との差に基づいて前記レイテンシを決定する
ようにさらに構成される、請求項15に記載のデバイス。
【請求項１７】
前記記憶することに続いて、前記USBデータの前記転送を制御するために、前記1つまたは複数のプロセッサは、前記ネットワークレイヤから前記USBデータを受信するUSBデバイスのバッファリング能力に基づいたクレジットベースの転送を制御するように構成される、請求項11に記載のデバイス。
【請求項１８】
前記記憶することに続いて、前記PALからの前記USBデータの転送を制御するために、前記1つまたは複数のプロセッサは、前記ネットワークレイヤに関連付けられるUSBデバイスバッファに、前記PALに関連付けられる前記バッファに記憶された前記USBデータをリリースするように構成される、請求項11に記載のデバイス。
【請求項１９】
前記1つまたは複数のプロセッサは、前記USBデータが前記PALに関連付けられる前記バッファからリリースされると、前記USBデバイスバッファのクレジットの割振りを解除するようにさらに構成される、請求項18に記載のデバイス。
【請求項２０】
集積回路、または
マイクロプロセッサ
のうちの少なくとも1つを備える、請求項11に記載のデバイス。
【請求項２１】
前記ネットワークレイヤのネットワークプロトコルを使用した送信のために前記USBデータをパッケージングするように構成されるトランスミッタをさらに備え、
前記デバイスはUSBホストデバイスとして構成される、
請求項11に記載のデバイス。
【請求項２２】
データを送信するための装置であって、
送信のために提供されるユニバーサルシリアルバス(USB)データのタイプを決定するための手段と、
前記USBデータの前記タイプに基づいて前記USBデータの優先度を決定するための手段と、
前記決定された優先度に基づいて、USBホストのプロトコルアダプテーションレイヤ(PAL)から前記USBホストのネットワークレイヤへの前記USBデータの転送を制御するための手段と
を備え、
前記USBデータの前記タイプに基づいて前記USBデータの前記優先度を決定するための手段は、前記USBデータの前記タイプの未解決の転送要求に対するしきい値を決定するための手段を含み、前記未解決の転送要求は、前記ネットワークレイヤにリリースされ、かつ送信されるのを待機しており、前記決定された優先度に基づいて前記USBデータの転送を制御するための手段は、
前記USBデータの前記タイプの未解決の転送要求の数が前記しきい値以下の場合、前記PALに関連付けられるバッファに前記USBデータを記憶するための手段と、前記記憶することに続いて、前記PALから前記ネットワークレイヤへの前記USBデータの前記転送を制御するための手段と、
前記USBデータの前記タイプの未解決の転送要求の数が前記しきい値よりも多い場合、前記USBデータの前記タイプの未解決の転送要求の数が前記しきい値以下になるまで、前記PALの転送キューに前記USBデータを保持するための手段と
を備える、装置。
【請求項２３】
前記優先度を決定するための手段は、バルクデータ、アイソクロナスデータ、およびインタラプトデータのうちの1つとして前記USBデータの前記タイプを識別するための手段を含む、請求項22に記載の装置。
【請求項２４】
前記優先度を決定するための手段は、前記アイソクロナスデータおよび前記インタラプトデータよりも低い優先度を前記バルクデータに割り当てるための手段を含む、請求項23に記載の装置。
【請求項２５】
命令を記憶した非一時的コンピュータ可読記録媒体であって、前記命令が、実行されると、1つまたは複数のプロセッサに、
送信のために提供されるユニバーサルシリアルバス(USB)データのタイプを決定させ、
前記USBデータの前記タイプに基づいて、前記USBデータの優先度を決定させ、
前記決定された優先度に基づいて、USBホストのプロトコルアダプテーションレイヤ(PAL)から前記USBホストのネットワークレイヤへの前記USBデータの転送を制御させ、
前記USBデータの前記タイプに基づいて前記USBデータの前記優先度を決定するために、前記命令は前記1つまたは複数のプロセッサに、前記USBデータの前記タイプの未解決の転送要求に対するしきい値を決定させ、前記未解決の転送要求は、前記ネットワークレイヤにリリースされ、かつ送信されるのを待機しており、前記決定された優先度に基づいて前記USBデータの転送を制御するために、前記命令は前記1つまたは複数のプロセッサに、
前記USBデータの前記タイプの未解決の転送要求の数が前記しきい値以下の場合、前記PALに関連付けられるバッファに前記USBデータを記憶させ、前記記憶することに続いて、前記PALから前記ネットワークレイヤへの前記USBデータの前記転送を制御させ、
前記USBデータの前記タイプの未解決の転送要求の数が前記しきい値よりも多い場合、前記USBデータの前記タイプの未解決の転送要求の数が前記しきい値以下になるまで、前記PALの転送キューに前記USBデータを保持させる、
非一時的コンピュータ可読記録媒体。
【請求項２６】
前記優先度を決定するために、前記命令は前記1つまたは複数のプロセッサに、バルクデータ、アイソクロナスデータ、およびインタラプトデータのうちの1つとして前記USBデータの前記タイプを識別させる、請求項25に記載の非一時的コンピュータ可読記録媒体。
【請求項２７】
前記優先度を決定するために、前記命令は前記1つまたは複数のプロセッサに、前記アイソクロナスデータおよび前記インタラプトデータよりも低い優先度を前記バルクデータに割り当てさせる、請求項26に記載の非一時的コンピュータ可読記録媒体。
【国際調査報告】
2018513451.tif 000008
2018513451.tif 000009