(57)【要約】【課題】有線ＵＳＢと無線ＵＳＢとの間の多くの相違点を考慮して、無線ＵＳＢにおける比較的重大なエラー率を補償するメカニズムを提供すること。【解決手段】ＵＷＢを介する無線ＵＳＢデータ転送において、ソフトウェアは、不良な接続よりも良好な接続に帯域幅を使用する形でデータ転送を制御するようにハードウェア閾値を構成する。失敗が発生すると、ハードウェアは、スケジュール内で休止されるまでに所与のエンドポイントが許容できるエラー数を指定するソフトウェア構成可能閾値を有するメカニズムを含む。再度失敗する可能性が高い転送試行を休止することによって、エラーを経験するエンドポイントよりも転送が成功するエンドポイントの方が選択される。保留中のアクティブな転送の数が、閾値を超えるとソフトウェアは閾値を再構成し、バッファ内にデータを転送させるために他の転送を非アクティブ化することができる。【選択図】図２
2006216015.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境において、
転送される１つまたは複数のパケットに対応してデータ構造内のエラー閾値を構成することができるプログラムを備える、ソフトウェアコントローラコンポーネントと、
ハードウェア内のスケジューリングプロセスであって、前記スケジューリングプロセスは、前記１つまたは複数のパケットを実行のためにアクティブ化し、各パケットが成功裏に受信されたか否かを評価するメカニズムを含み、前記スケジューリングプロセスは、送信されたが受信されない１つまたは複数のパケットのエラーカウントが前記エラー閾値に達した場合、もはや前記データ構造をスケジューリングしない、スケジューリングプロセスと
を備えたことを特徴とするシステム。
【請求項２】
前記データ構造は、割り込みエンドポイントのキューヘッドに対応することを特徴とする請求項１に記載のシステム。
【請求項３】
前記データ構造は、等時性エンドポイントのキューヘッドに対応することを特徴とする請求項１に記載のシステム。
【請求項４】
前記データ構造は、コントロールエンドポイントのキューヘッドに対応することを特徴とする請求項１に記載のシステム。
【請求項５】
前記データ構造は、バルクエンドポイントのキューヘッドに対応することを特徴とする請求項１に記載のシステム。
【請求項６】
前記エラー閾値は休止カウントに対応し、前記データ構造は前記閾値に達した場合に休止状態に設定され、前記スケジューリングプロセスは前記データ構造を後で再度アクティブ化することができることを特徴とする請求項１に記載のシステム。
【請求項７】
前記データ構造は前記休止状態に設定され、前記スケジューリングプロセスは前記データ構造を後続の周期的時間スロットで実行するために再度アクティブ化することを特徴とする請求項６に記載のシステム。
【請求項８】
前記データ構造は前記休止状態に設定され、前記スケジューリングプロセスは前記データ構造を前記周期的時間スロット内で実行するために再度アクティブ化することを特徴とする請求項６に記載のシステム。
【請求項９】
前記データ構造は、少なくとも１つの他のエラー閾値を含むことを特徴とする請求項１に記載のシステム。
【請求項１０】
前記エラー閾値は連続エラーカウントに対応し、前記データ構造は前記閾値に達した場合に中止状態に設定されることを特徴とする請求項１に記載のシステム。
【請求項１１】
前記ソフトウェアコンポーネントおよびハードウェアは、１つまたは複数のＵＳＢ周辺装置に伝送するホストコンピュータシステムに組み込まれることを特徴とする請求項１に記載のシステム。
【請求項１２】
前記ホストコンピュータシステムは、周辺装置から前記ホストへのデータの転送を開始することを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記１つまたは複数のパケットは、超広帯域無線を介して伝送されることを特徴とする請求項１に記載のシステム。
【請求項１４】
前記ハードウェアは、エンドポイントに転送するデータの量がソフトウェア構成可能通知閾値に達した場合に、前記ソフトウェアコンポーネントに通知する通知メカニズムを含むことを特徴とする請求項１に記載のシステム。
【請求項１５】
前記ソフトウェアコンポーネントは、前記通知に応答して前記データ構成内で少なくとも１つの値を構成することを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記通知メカニズムは、前記ソフトウェアコンポーネントに通知するために割り込みを発行することを特徴とする請求項１４に記載のシステム。
【請求項１７】
コンピューティング環境において、
時間スロット内で無線ＵＳＢ伝送のためのデータ転送をスケジューリングするステップと、
前記データ転送の伝送を試行するステップと、
前記データ転送が少なくとも１つの試行の閾値回数内に成功裏に受信されたか否かを判別するステップと、成功裏に受信されなかった場合、前記データ転送を、前記データ転送の伝送が他の状態に変更されるまで再試行されない状態に設定するステップと、
を備えたことを特徴とする方法。
【請求項１８】
前記データ転送は、エンドポイントに対応するキューヘッドに関連付けられた少なくとも１つのデータパケット群を有し、前記データ転送を前記データ転送の伝送が再試行されない状態に設定するステップは、その中の状態値を修正することによって前記キューヘッドを休止させるステップを含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
他の時間スロットの開始時に前記状態値をアクティブ状態に修正することによって、前記データ転送を再試行するステップをさらに備えたことを特徴とする請求項１７に記載の方法。
【請求項２０】
他のパケットの伝送が試行された後に、前記時間スロット内に時間が残っている場合、前記状態値をアクティブ状態に修正することによって、前記データ転送を再試行するステップをさらに備えたことを特徴とする請求項１７に記載の方法。
【請求項２１】
前記データ転送は、エンドポイントに対応するキューヘッドに関連付けられた少なくとも１つのデータパケット群を有し、前記データ転送を前記データ転送の伝送が再試行されない状態に設定するステップは、その中の状態値を修正することによって前記キューヘッドを中止させるステップを含むことを特徴とする請求項１７に記載の方法。
【請求項２２】
前記データ転送は、エンドポイントに対応するキューヘッドに関連付けられた少なくとも１つのデータパケットのセットを備え、前記キューヘッドに対するアクティブなデータ転送の数が閾値に達したか否かを判別するステップと、達した場合には通知を送信するステップとをさらに備えることを特徴とする請求項１７に記載の方法。
【請求項２３】
実行された場合は請求項１７に記載の方法を実行する、コンピュータ実行可能命令を有することを特徴とする少なくとも１つのコンピュータ読み取り可能媒体。
【請求項２４】
実行された場合、
（ａ）時間スロット内で、周期的データ転送およびアクティブな非同期式データ転送をアクティブとしてスケジューリングするステップであって、各データ転送は無線ＵＳＢ伝送のキューヘッドに関連付けられる、スケジューリングするステップと、
前記時間スロット内に時間が残っている間に、
（ｂ）前記アクティブな周期的データ転送を実行するステップと、
（ｃ）各周期的データ転送について、前記転送が成功したか否かを評価するステップと、
（ｉ）成功しなかった場合、休止カウンタを調整するステップと、前記休止カウンタが対応する閾値に達したか否かを評価し、達した場合、そのデータ転送に関連付けられた前記キューヘッドを休止するステップと、
（ｉｉ）成功し、割り込みエンドポイントである場合、前記キューヘッドを非アクティブ化し、および前記データ転送が完了した場合は完了とマーク付けするステップと、
（ｉｉｉ）成功し、等時性エンドポイントである場合、前記データ転送を完了としてマーク付けし、前記キューヘッドに関連付けられた各データ転送が完了としてマーク付けされた場合に前記キューヘッドを非アクティブ化するステップと、
（ｄ）任意の非アクティブな周期的キューヘッドおよび休止された周期的キューヘッドに基づいて、実行する予定の任意のアクティブな周期的データ転送が残っているか否かを判別し、残っている場合はステップ（ｂ）に戻り、および残っていない場合はステップ（ｅ）に進むステップと、
（ｅ）前記アクティブな非同期式データ転送を実行するステップと、
（ｆ）各非同期式データ転送について、前記転送が成功したか否かを評価するステップと、
（ｉ）成功しなかった場合、休止カウンタを調整し、および閾値に達したか否かを評価し、達した場合、そのデータ転送に関連付けられた前記キューヘッドを休止するステップと、
（ｉｉ）成功した場合、前記データ転送が完了した場合は完了とマーク付けするステップと、
（ｇ）任意の非アクティブな非同期式キューヘッドおよび休止された非同期式キューヘッドに基づいて、実行する予定の任意のアクティブな非同期式データ転送が残っているか否かを判別し、残っている場合はステップ（ｅ）に戻り、および残っていない場合は、任意の休止された周期的データ転送および休止された非同期式データ転送をアクティブ化してステップ（ｂ）に戻るステップと、
を実行する、コンピュータ実行可能命令を有することを特徴とする少なくとも１つのコンピュータ読み取り可能媒体。
【請求項２５】
各周期的データ転送について、前記周期的データ転送が成功しなかった場合、連続エラーカウンタを調整するステップと、連続エラーカウンタが対応する連続エラー閾値に達したか否かを評価するステップと、達した場合、その周期的データ転送に関連付けられた前記キューヘッドを中止するステップとを実行する、コンピュータ実行可能命令さらに有することを特徴とする請求項２４に記載のコンピュータ読み取り可能媒体。
【請求項２６】
各非同期式データ転送について、前記非同期式データ転送が成功しなかった場合、連続エラーカウンタを調整するステップと、連続エラーカウンタが対応する連続エラー閾値に達したか否かを評価するステップと、達した場合、その非同期式データ転送に関連付けられた前記キューヘッドを中止するステップとを実行する、コンピュータ実行可能命令をさらに有することを特徴とする請求項２４に記載のコンピュータ読み取り可能媒体。
【請求項２７】
各キューヘッドについて、アクティブな等時性転送記述子の数を通知閾値に照らして評価するステップと、前記閾値に達している場合、そのキューヘッドに関して通知を送信するステップとを実行する、コンピュータ実行可能命令をさらに有することを特徴とする請求項２４に記載のコンピュータ読み取り可能媒体。
【請求項２８】
前記通知の受信側は、前記対応するキューヘッドの少なくとも１つの閾値を修正することを特徴とする請求項２７に記載のコンピュータ読み取り可能媒体。
【請求項２９】
成功した各非同期式データ転送について、そのキューヘッドに対して保留されているデータ転送が残っていない場合、前記キューヘッドを非アクティブに設定するステップを実行する、コンピュータ実行可能命令をさらに有することを特徴とする請求項２４に記載のコンピュータ読み取り可能媒体。
【請求項３０】
受信側装置に転送される予定の無線ＵＳＢデータに関連付けられたキューヘッド内に、
前記キューヘッドが休止されるまでに前記キューヘッドに関連付けられたパケットの転送を試行する回数に対応する閾値を含む、エラー休止閾値フィールドと、
前記キューヘッドに関連付けられた転送されたパケットが成功裏に受信されなかった場合、パケットエラーに関して追跡するように調整されるカウントを含む、現在のエラーカウントフィールドと、
前記キューヘッド内の少なくとも１つのパケットが転送に対してアクティブであることを示す第１の状態と、前記キューヘッドが休止され、前記第１の状態に変更されるまでデータ転送が再試行されないことを示す第２の状態とを含む、前記キューヘッドに関連付けられたパケットの転送が試行されるか否かを示す状態を有する状態フィールドと、
を備え、
前記現在のエラーカウントフィールド内のカウントが、前記エラー休止閾値フィールド内の前記エラー休止閾値に達したことを示すカウントに調整された場合、前記状態フィールドは、前記アクティブ状態から前記休止状態へと変更されることを特徴とするデータ構造を格納している少なくとも１つのコンピュータ読み取り可能媒体。
【請求項３１】
前記現在のエラーカウント値は、前記エラー休止閾値フィールド内の前記閾値で初期設定され、転送されたパケットが成功裏に受信されなかった場合、前記カウントを減分することによって調整されるものであり、前記状態フィールドは、前記現在のエラーカウントフィールド内のカウントがゼロに遷移した場合に、前記アクティブ状態から前記休止状態に変更されることを特徴とする請求項３０に記載のコンピュータ読み取り可能媒体。
【請求項３２】
前記キューヘッドが中止されるまでに前記キューヘッドに関連付けられたパケットの転送を試行した結果生じた連続エラー数に対応する閾値を含む、エラー中止閾値フィールドと、
パケットエラーに関して、前記キューヘッドに対する連続パケットエラー数を追跡するように調整されるカウントを含む、連続エラーカウントフィールドと、
をさらに備え、
前記連続エラーカウントフィールド内のカウントが、前記エラー中止閾値フィールド内の前記エラー中止閾値に達したことを示すカウントに調整された場合、前記状態フィールドは、前記アクティブ状態から前記中止状態へと変更されることを特徴とする請求項３０に記載のコンピュータ読み取り可能媒体。
【請求項３３】
前記キューヘッドに関するアクティブなデータ転送の現在の数を示す、現在のアクティブな転送記述子カウントと、
その後に通知が発行されることになる、前記キューヘッドに関するアクティブな転送記述子の数を示す値を含む、等時性通知閾値フィールドと、
をさらに備え、
前記現在のアクティブな転送記述子カウントは、前記等時性通知閾値に達しているか否かに基づいて通知を発行するか否かを決定するために、前記等時性通知閾値フィールド内の前記値に照らして評価されることを特徴とする請求項３０に記載のコンピュータ読み取り可能媒体。
【請求項３４】
前記キューヘッドに関連付けられた任意の転送が実行されるか否かを示す値を有するイネーブルフィールドを、さらに備えることを特徴とする請求項３０に記載のコンピュータ読み取り可能媒体。
【請求項３５】
コンピューティング環境において、
（ａ）時間スロットセットの中の現時間スロット内で、キューヘッドに関連付けられた各データ転送が、前記データ転送に対応する１つまたは複数のデータパケットを転送するための情報を含む場合、無線ＵＳＢエンドポイントに転送するために周期的データ転送をアクティブ化するステップと、
（ｂ）アクティブなキューヘッドに関連付けられた周期的パケットの転送を試行するステップと、
（ｃ）エンドポイントへの後続のデータ転送が失敗する確率が高いか否かを、そのエンドポイントに対して試行された少なくとも１つの以前のデータ転送が成功したか否かに基づいて評価し、ならびに失敗する確率が高い場合、前記後続のデータ転送を休止し、および失敗する確率が高くない場合、前記後続のデータ転送を試行するステップと、
（ｄ）いずれかの周期的データ転送が転送される予定でアクティブな状態で残っているか否かを判別し、および残っている場合、前記現時間スロット内に時間が残っていればステップ（ｂ）に戻るステップと、
を有することを特徴とする方法。
【請求項３６】
エンドポイントへの後続のデータ転送が失敗する確率が高いか否かを評価するステップは、失敗カウンタを更新するステップと、前記失敗カウンタを閾値に基づいて評価するステップとを含むことを特徴とする請求項３５に記載の方法。
【請求項３７】
ステップ（ｄ）で、周期的データ転送が転送される予定でアクティブな状態で残っておらず、現時間スロット内に時間が残っており、
（ｅ）アクティブな非同期式キューヘッドに関連付けられたパケットの転送を試行するステップと、
（ｆ）非同期式エンドポイントへの後続のデータ転送が失敗する確率が高いか否かを、そのエンドポイントに対して試行された少なくとも１つの以前のデータ転送が成功したか否かに基づいて評価し、ならびに失敗する確率が高い場合、前記後続のデータ転送を休止し、および失敗する確率が高くない場合、前記後続のデータ転送を試行するステップと、
（ｇ）いずれかの非同期式キューヘッドが、転送される予定でアクティブな状態で残っているデータ転送を含むか否かを判別し、ならびに残っている場合、前記現時間スロット内に時間が残っていればステップ（ｅ）に戻し、および残っていない場合、いずれかの休止されたキューヘッドをアクティブ化し、現時間スロット内に時間が残っていればステップ（ｂ）に戻るステップと、
をさらに有することを特徴とする請求項３５に記載の方法。
【請求項３８】
非同期式エンドポイントへの後続のデータ転送が失敗する確率が高いか否かを評価するステップは、失敗カウンタを更新するステップと、前記失敗カウンタを閾値に基づいて評価するステップとを含むことを特徴とする請求項３７に記載の方法。
【請求項３９】
各キューヘッドについて、アクティブな等時性転送記述子の数を通知閾値に照らして評価し、および前記閾値に達している場合、そのキューヘッドに関して通知を送信するステップをさらに有することを特徴とする請求項３５に記載の方法。
【請求項４０】
実行された場合は請求項３５に記載の方法を実行する、コンピュータ実行可能命令を有することを特徴とする少なくとも１つのコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、無線通信を介したコンピュータシステムと周辺装置との間でのデータ通信に関する。
【背景技術】
【０００２】
現代のほぼすべてのコンピュータシステムは、コンピュータシステムとマウス、プリンタ、デジタルカメラなどの外部周辺装置との間のシリアル通信用の外部周辺インターフェース規格である、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を使用するように構成される。ＵＳＢを使用する場合、各周辺装置は、コンピュータシステム上の標準化されたＵＳＢポートにプラグインされたケーブルを介して接続される。
【０００３】
ＵＳＢケーブルをコンピュータシステムおよび外部周辺装置に接続する必要をなくす目的で、超広帯域（ＵＷＢ）技術に基づく無線ＵＳＢ（またはＷＵＳＢ）が標準化されつつある。無線ＵＳＢは、たとえば１０ｍまでの距離にわたる４８０ＭｂｐｓなどのＵＳＢ２．０標準に匹敵する通信速度を有する方向に向かっている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、伝送エラーが極端に少ない有線ＵＳＢとは異なり、重大なパケットエラー率（たとえば、約１０パーセント）が存在し、ＵＷＢ伝送には、何らかの方法で補償しなければユーザにとって無線ＵＳＢが有線ＵＳＢに比べて著しく劣るものになる。一般に失敗したパケットの再試行に基づく、パケットエラー率が高いことによって生じる問題は、それぞれが異なる伝送関連要件を備えた、非同期式（コントロールおよびバルクデータ）通信および周期的（割り込みおよび等時性（ｉｓｏｃｈｒｏｎｏｕｓ））通信を含む、異なる種類のＵＳＢ通信が存在するため複雑になる。無線ＵＳＢでは、装置がＵＷＢを介して通信することにより、いかなる時にも、１つの装置への接続はパケットエラーが非常に少ない一方で、他の装置への接続はパケットエラーが多い可能性がある。
【０００５】
有線ＵＳＢと無線ＵＳＢとの間の多くの相違点に鑑みて、無線ＵＳＢにおける比較的重大なエラー率を補償するメカニズムが求められている。こうしたメカニズムは、ソフトウェアが所与の環境で必要に応じてこのメカニズムを制御できるように、十分にフレキシブルでなければならない。
【課題を解決するための手段】
【０００６】
簡潔に言えば本発明は、失敗した転送が再試行されるように制御するものであって、コンピュータシステム上でハードウェアおよびソフトウェアが協働してＵＳＢ無線データ転送をスケジューリングする際に使用する、システムおよび方法を対象とする。無線ＵＳＢ転送が受信側でバッファリングされるため、再試行が成功すると、バッファの適切な位置に挿入すべき欠落データが供給される。失敗した転送を再試行するよう制御することにより、通常の動作では、帯域幅は、失敗する確率が最も高い接続上での再試行に無駄に使われることはなく、代わりに成功する確率が最も高い接続において用いられる。しかしながら、受信側装置の低バッファ状態などの危機的状況では、制御ソフトウェアが設定可能なスケジューリングパラメータを変更して、対応する接続によってデータを転送させるようにすることができる。
【０００７】
本発明の無線ＵＳＢデータ転送メカニズムによって、割り込み転送、等時性転送、コントロール転送、およびバルク転送を含む４つの異なる種類の（エンドポイントに対応する）データ転送がサポートされる。割り込み転送および等時性転送は、断続的な進行を介して現時間スロットとなる時間スロットでの転送としてスケジューリングされるという点で、周期的な転送である。コントロール転送およびバルク転送は非同期式であり、現時間スロットでいずれかの周期的転送後に時間が残っている場合に試行される。無線ＵＳＢを用いたコンピューティング体験を許容されうるものとするためには、データ転送におけるエラー率が高いことから、送達が保証されない等時性転送の場合であっても再試行が実行されることを必要とする。
【０００８】
様々なデータ転送をスケジューリングするために、本発明はハードウェアにおける無線ＵＳＢコンポーネントと、ソフトウェアにおける無線ＵＳＢコントローラドライバとを備える。無線ＵＳＢハードウェアは、関連するパケットが成功裏に受信されたか否かに基づき、エンドポイントに対応するキューヘッド（ｑｕｅｕｅ  ｈｅａｄ）データ構造内の情報を操作するスケジューリングプロセスを含む。ハードウェアスケジューリングプロセスは、エラーの数を指定するソフトウェア構成可能閾値を有するメカニズムを含む。指定されるエラーの数は、（エンドポイントに対応する）所与のキューヘッドが、他のキューヘッドに関連付けられたパケットが転送可能なようなスケジュールにおいて、その所与のキューヘッドが休止されるまでの時間枠中に許容可能な数である。スケジューリングプロセスは、一時的なエラー状態によって失敗する確率が高いデータ転送において帯域幅が無駄に使用されるのを避けるようにソフトウェア制御することによって、失敗した転送の再試行を処理する。ソフトウェアコントローラドライバは、データ構造内で他の情報（たとえば閾値）も構成する。
【０００９】
周期的スケジュールデータ構造は、各エントリが周期的時間スロットに対応し、ゼロまたはそれ以上の周期的スケジュールエントリ（ＰＳＥ）のリストを指すポインタを含む、エントリの循環バッファ（ｃｉｒｃｕｌａｒ  ｂｕｆｆｅｒ）を備える。周期的スケジュールエントリは、その時間スロット枠中にアクティブにならなければならない（したがって可能であれば転送されなければならない）データ転送を表す。このため、周期的スケジュールエントリは、キューヘッドまたはキューヘッドに関連付けられた転送記述子を指し、このキューヘッドは、転送が実行されている装置上のエンドポイントに対応する。各キューヘッドは、それら各々に対応するエンドポイントに対する任意の保留転送を含む、転送の状態に関する情報を含む。各転送記述子は、転送に関与する実際のデータ、転送バッファの長さ、実際に転送されるバイト数などを、格納し、または取り出すためのアドレスなどの、特定の転送に関する詳細を提供する。各転送記述子は、「アクティブ」または「非アクティブ」の状態値、ならびに転送がオンであるかオフであるかを指定するソフトウェア書き込み可能値も含む。
【００１０】
スケジューリングプロセスで等時性周期的スケジュールエントリに遭遇すると、対応する転送記述子がその「アクティブ」状態に移り、データが可能な限り早急に転送される準備が整っている旨を通知する。スケジュール内で割り込み周期的スケジュールエントリに遭遇すると、対応するキューヘッドが「アクティブ」状態に移り、スケジュールがパケット転送を実行すべきである旨を通知する。コントロール転送およびバルク転送は、非同期式であり、所与の時間スロット内に残った時間を使用して周期的転送後に実行される。
【００１１】
ソフトウェアは、キューヘッドを休止するタイミングを決定するエラーカウント閾値を含む様々な閾値のパラメータへの書き込みによって、ハードウェア動作を制御する。より具体的に言えば、この閾値で初期設定され、かつエラーごとに減分されるキューヘッド内のエラーカウンタが１からゼロに遷移すると、時間スロットの残りに対してその特定のキューヘッドは休止される（もはや再試行されない）。休止することにより、閾値エラーレベルに合致し、かつ再度失敗する可能性のある接続を介して転送を再試行するのではなく、時間スロット内で他のキューヘッドのパケットを転送することができる。休止されたキューヘッドは、次の時間スロットが開始するとき、あるいは、成功、休止、または中止によって現時間スロット内に他のエンドポイント（キューヘッドのパケット）がなくなった後、普通であれば未使用となる（使用可能な帯域幅に対応する）時間が時間スロット内に依然として残っているときのいずれかに、その休止状態から出る。失敗した転送に応答してキューヘッドを休止することにより、成功裏にパケットを転送することのできないエンドポイントよりも、成功裏にパケットを転送することのできるエンドポイントをスケジュールに選ばせることができる。
【００１２】
他の閾値のパラメータは、キューヘッドを中止すべきとされる前の連続エラーの数を指定する。次の時間スロットで、または現時間スロット内に未使用の帯域幅が残っている場合、リセットされる休止状態とは異なり、中止されたキューヘッドは中止状態から出るためにソフトウェアの介入を必要とする。
【００１３】
Ｉｓｏｃｈ通知閾値パラメータは、成功裏に転送されないせいでキューヘッドに関連付けられたアクティブな転送記述子が多すぎる場合、これは本来、対応する受信側装置での低バッファ状態に対応するものだが、通知をソフトウェアに送信させるために無線ＵＳＢソフトウェアコントローラによって設定される。この数が閾値に達すると、ハードウェアは、割り込みによって無線ＵＳＢソフトウェアコントローラドライバに通知する。その後ソフトウェアは、危機的に低いバッファに対し強制的にデータを入れるように閾値を調整することができる。またキューヘッドをオフまたはオンにするために、ソフトウェアによって「使用可能」パラメータ値を設定することも可能であり、オフ状態の場合、そのキューヘッドに対しては転送が実行されず、それによってデータを必要としている１つまたは複数のエンドポイントにデータ転送を集中させることができる。
【００１４】
スケジューリングプロセスは、現時間スロットが、前のスケジューリング期間に続く次の時間スロットに進んだ場合に再開される。スケジュールサイクルの第１段階には、スケジュール状態のリセット、ならびに、適切な非アクティブキューヘッドおよび転送記述子のアクティブ化を含む、その時間スロットに対する周期的転送の必要性の決定が含まれる。この段階では、期間ごとの初期化も発生し、任意のキューヘッドに関するＩｓｏｃｈ通知閾値に達した場合、通知が送信される。
【００１５】
スケジュールサイクルの第２段階は、周期的（等時性および割り込み）転送の実行、および結果の分析を対象とする。一般にハードウェアは、現在アクティブな周期的キューヘッドを探索し、そのキューヘッドの対応する転送記述子に対するパケット転送の実行を開始する。成功した転送は、アクティブな転送記述子がなくなるまで完了するとマーク付けされ、その時点でキューヘッドは非アクティブ化される。失敗すると、結果としてエラーカウントは減分され、それによってそれぞれの値が１からゼロに遷移するとその後の転送試行は中止または休止される。試行されたそれぞれの周期的転送が分析され、試行される転送が残っていない場合、すなわち周期的転送が完了、休止、または中止した場合、プロセスは戻る。
【００１６】
転送するアクティブな周期的キューヘッドがないと、スケジュールは、非同期式（コントロールおよびバルク）キューヘッドの転送を対象とする第３段階を実行する。同様に非同期式転送は、非同期式キューヘッド内のエラーカウンタに基づいて完了、休止、または中止されるまで試行される。現時間スロットに時間が残っている場合、第２および第３の段階が繰り返される。
【００１７】
以上から分かるように、周期的転送が第１に試行されるが、再度失敗する確率の高い転送の試行を繰り返すことによって使用可能帯域幅を無駄に使用することがないように、閾値の回数だけ失敗したキューヘッドは休止（または中止）される。その代わりに、残りの時間は非同期式転送の試行に使用され、これも失敗した場合には同様に休止（または中止）される。このように本発明は、ある時間スロットの中で周期的転送の試行と非同期式障害試行とを必要に応じて、ただし制御された形で交互に繰り返すことができる。
【００１８】
他の利点は、図面と共に以下の詳細な説明を読めば明らかとなろう。
【発明を実施するための最良の形態】
【００１９】
（例示的オペレーティング環境）
図１は、本発明が実施可能な好適なコンピューティングシステム環境１００の一例を示す。コンピューティングシステム環境１００は好適なコンピューティング環境の一例に過ぎず、本発明の用途または機能性の範囲に関していかなる制限をも示唆することを意図するものではない。さらにコンピューティング環境１００は、例示的なオペレーティング環境１００に示されたコンポーネントのいずれか１つまたはそれらの組み合わせに関して、いかなる依存関係または要件をも有するものと解釈されるべきでない。
【００２０】
本発明は、多数の他の汎用または特定用途向けのコンピューティングシステム環境または構成で動作可能である。本発明と共に使用するのに好適な可能性のある良く知られたコンピューティングシステム、環境、および／または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、タブレット装置、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラム可能大衆消費電子製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記システムまたは装置のいずれかを含む分散型コンピューティング環境、などが含まれるが、これらに限定されるものではない。
【００２１】
本発明について、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明することができる。一般にプログラムモジュールは、特定のタスクを実行するかまたは特定の抽象データ型をインプリメントする、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、などを含む。本発明は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散型コンピューティング環境で実施することもできる。分散型コンピューティング環境では、プログラムモジュールは、メモリストレージ装置を含むローカルおよび／またはリモートのコンピュータストレージ媒体内に配置することができる。
【００２２】
図１を参照すると、本発明をインプリメントするための例示的システムには、コンピュータ１１０の形の汎用コンピューティング装置が含まれる。コンピュータ１１０のコンポーネントは、処理装置１２０、システムメモリ１３０、および、システムメモリを含む様々なシステムコンポーネントを処理装置１２０に結合するシステムバス１２１を含むことができるが、これらに限定されるものではない。システムバス１２１は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのうちのいずれかを使用するローカルバスを含む、いくつかの種類のバス構造のうちのいずれかとすることができる。例を挙げると、こうしたアーキテクチャはＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（拡張ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニンバスとも呼ばれるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを含むが、これらに限定されるものではない。
【００２３】
コンピュータ１１０は、通常、様々なコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ１１０によってアクセス可能であり、揮発性および不揮発性媒体ならびに取り外し可能および固定の媒体の両方を含む、任意の使用可能媒体とすることができる。例を挙げると、コンピュータ読み取り可能媒体はコンピュータストレージ媒体および通信媒体を含むことができるが、これらに限定されるものではない。コンピュータストレージ媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術でインプリメントされた、揮発性および不揮発性、取り外し可能および固定の媒体を含む。コンピュータストレージ媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージ装置、あるいは所望の情報を格納するために使用可能でありコンピュータ１１０によってアクセス可能な任意の他の媒体を含むが、これらに限定されるものではない。通信媒体は、通常、搬送波などの変調データ信号または他の移送メカニズムにおいて、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、または他のデータを具体化し、任意の情報送達媒体を含む。「変調データ信号」という用語は、その特徴のうちの１つまたは複数を、信号内の情報を符号化するような様式で設定または変更した信号を意味する。例を挙げると、通信媒体は、有線ネットワークまたはダイレクトワイヤード接続などの有線媒体と、音波、ＲＦ、赤外線、および他の無線媒体などの無線媒体とを含むが、これらに限定されるものではない。上記のもののいずれかの組み合わせも、コンピュータ読み取り可能媒体の範囲内に含まれるべきである。
【００２４】
システムメモリ１３０は、読み取り専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などの、揮発性および／または不揮発性メモリの形のコンピュータストレージ媒体を含む。起動時などにコンピュータ１１０内の要素間での情報転送を助ける基本ルーチンを含む、基本入力／出力システム１３３（ＢＩＯＳ）は、通常、ＲＯＭ１３１内に格納される。ＲＡＭ１３２は通常、処理装置１２０が即時にアクセス可能である、および／または処理装置１２０によって現在動作中である、データおよび／またはプログラムモジュールを含む。例を挙げると、図１にはオペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７が示されるが、これらに限定されるものではない。
【００２５】
コンピュータ１１０は、他の取り外し可能／固定の、揮発性／不揮発性コンピュータストレージ媒体を含むこともできる。単なる例を挙げると、図１には、固定の、不揮発性磁気媒体からの読み取りまたはこれへの書き込みを行うハードディスクドライブ１４１と、取り外し可能、不揮発性の磁気ディスク１５２からの読み取りまたはこれへの書き込みを行う磁気ディスクドライブ１５１と、ＣＤ−ＲＯＭまたは他の光媒体などの取り外し可能、不揮発性の光ディスク１５６からの読み取りまたはこれへの書き込みを行う光ディスクドライブ１５５と、が示されている。例示的なオペレーティング環境で使用可能な他の取り外し可能／固定の、揮発性／不揮発性コンピュータストレージ媒体には、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ、などが含まれるが、これらに限定されるものではない。ハードディスクドライブ１４１は、通常、インターフェース１４０などの固定のメモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０などの取り外し可能メモリインターフェースによってシステムバス１２１に接続される。
【００２６】
上記で説明し図１に示したドライブおよびそれらの関連するコンピュータストレージ媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、およびコンピュータ１１０に関する他のデータのストレージを提供する。たとえば図１では、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納しているものとして示される。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであるか、またはこれらと異なるかの、いずれであってもよいことに留意されたい。本明細書では、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７が少なくとも異なるコピーであることを示すために、異なる番号が与えられている。ユーザは、タブレットまたは電子デジタイザ１６４、マイクロフォン１６３、キーボード１６２、および、一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１などの、入力装置を介して、コンピュータ１１０にコマンドおよび情報を入力することができる。図１に示されていない他の入力装置には、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナ、などが含まれる。これらおよび他の入力装置は、多くの場合、システムバスに結合されたユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、またはＵＳＢ（ユニバーサルシリアルバス）などの、他のインターフェースおよびバス構造によって接続することも可能である。モニタ１９１または他の種類のディスプレイ装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタ１９１は、タッチスクリーンパネルなどと一体型とすることもできる。タブレットタイプのパーソナルコンピュータなどでは、モニタおよび／またはタッチスクリーンパネルを、コンピューティング装置１１０が組み込まれたハウジングに物理的に結合できることに留意されたい。さらに、コンピューティング装置１１０などのコンピュータは、出力周辺インターフェース１９４などを介して接続可能な、スピーカ１９５およびプリンタ１９６などの他の周辺出力装置も含むことができる。
【００２７】
コンピュータ１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク化環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の共通ネットワークノードとすることが可能であり、通常は、コンピュータ１１０に関して上記で説明した要素のうちの多くまたはすべてを含むが、図１にはメモリストレージ装置１８１のみが図示されている。図１に示された論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットで広く普及している。
【００２８】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ１１０はネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１１０は通常、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２または他の手段を含む。モデム１７２は内蔵型または外付けとすることが可能であり、ユーザ入力インターフェース１６０または他の適切なメカニズムを介してシステムバス１２１に接続することができる。ネットワーク化環境では、コンピュータ１１０に関して示したプログラムモジュールまたはその一部を、リモートメモリストレージ装置に格納することができる。例を挙げると、図１にはリモートアプリケーションプログラム１８５がメモリ装置１８１上に常駐しているように示されるが、これに限定されるものではない。図示されたネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段が使用可能であることを理解されよう。
【００２９】
（無線ＵＳＢハードウェアスケジューリング）
本発明は、一般に、成功裏に転送されない無線ＵＳＢデータ構造が、最も失敗する確率が高い接続での再試行に帯域幅が無駄に使用されるのではなく、成功する確率が高い接続に使用されるように制御されて転送を再試行されるシステムおよび方法を対象とする。このため、ハードウェアが、ソフトウェア構成可能パラメータを使用して、通常は転送エラーを発生させる条件、すなわち一時的なエラー条件の種類を考慮の上、転送のスケジューリングを知的に管理する。さらに以上のことから理解されるように、本発明を実施するための多数の方法が実現可能であり、本明細書に記載されているのは代替の実施形態のうちの一部のみである。たとえば主として本発明について、性能を最適化するためにスケジューリングハードウェアの動作を制御するソフトウェアによって提供される閾値および初期設定値に基づくデータ構造のマーク付け、ならびにそれらの内部カウンタの維持および評価によって動作する、ハードウェア実行スケジュールを参照しながら、以下で説明する。次いで、他のハードウェアは、アクティブとしてマーク付けされたデータ構造を取り、超広帯域無線を使用して対応するデータを伝送する。にもかかわらず、他の種類の伝送メカニズムが実現可能であり、実際、本発明は、転送レートが大幅に上がることによりエラーカウントが高くなる可能性のある将来のバージョンのＵＳＢなどの有線技術においても使用可能である。したがって本発明は、本明細書で示すいかなる特定の例にも限定されるものではなく、むしろ、一般のコンピューティングにおいて便益および利点を提供する様々な形で使用可能である。
【００３０】
さらに、主として本発明について、無線ＵＳＢデータの伝送先である１つまたは複数の周辺装置を有するホストコンピュータシステムを参照しながら説明するが、他の種類の装置がホストを備える場合があることを理解されよう。たとえば、オーディオおよび／またはビデオＵＳＢプレーヤなどは、受信側ホストのテレビジョンセットまたはオーディオプレーヤなどにパケットを送信することができる。
【００３１】
図２は、ホストコンピュータ上で動作するソフトウェア２０２が、ドライバ／インターフェース２０４を介してハードウェア／ファームウェア（以下、簡単にするために略してハードウェアと言う）２０６と通信する、アーキテクチャ２００の例を示す。たとえばソフトウェア２０２は、図１のコンピュータシステム１２０上で動作するオペレーティングシステムコンポーネントなどとすることが可能であり、ハードウェア２０６は、メインコンピュータシステム１２０にプラグインされるＰＣＩベースカード上などに構築することが可能である。容易に理解されるように、コンピュータシステムに無線ＵＳＢを構築するなどの他の代替実施形態も等価である。
【００３２】
一般にハードウェア２０６は、たとえばそれぞれ周辺装置２１４および２１５のトランシーバ２１２および２１３などの、１つまたは複数の相手方無線トランシーバと通信するように配置構成された無線トランシーバ２１０などを含む。図２では２つの周辺装置２１４および２１５のみが示されているが、コンピュータシステムの無線２１０と通信する任意の実用的な数の無線周辺装置が存在可能であることを理解されよう。ホストは、有線ＵＳＢ接続（図示せず）を有することもできる。
【００３３】
簡潔にするために本明細書では詳細に説明しないが、図２に、ホストコンピュータ上の異なるＰｒｏｔｏｃｏｌ  Ａｄａｐｔａｔｉｏｎ  Ｌａｙｅｒｓ（ＰＡＬ、たとえばＷＵＳＢ、アドホックネットワーキングなど）間で共有される無線リソースを管理するために使用されるハードウェア／ソフトウェアインターフェースを備える、ＵＷＢ無線管理コンポーネント２２０を示す。ＵＷＢ  ＭＡＣ（媒体アクセス制御）およびＰＨＹ（物理）レイヤ２２１は、データ転送プロセス、すなわちデータを送信し、どのデータが成功裏に受信されたかに関するステータス情報の取得、ならびに周辺装置からデータが成功裏に受信された場合にステータス情報の戻しの責務を負っているものとみなすことができることを理解されよう。これらのレイヤ２２１は、データパケットの通信を管理し、一般に超広帯域技術で知られる並列オペレーションで、周辺装置２１４および２１５と交換したステータスなどを戻す。本発明は一般に、戻されたステータス情報に基づき、成功裏に転送されなかったデータ構造の制御された再試行を実行することを含む、転送用のデータのスケジューリングを対象とすることを理解されよう。
【００３４】
データ転送をスケジューリングするために、本発明は、ハードウェア内の無線ＵＳＢコンポーネント２２２と、ソフトウェア内の無線ＵＳＢコントローラドライバ２２４とを備える。以下で説明するように、無線ＵＳＢコンポーネント２２２は、周辺装置２１４および２１５によって戻された対応するステータス情報２３０（または戻されたはずのステータス情報がないこと）に基づいて、様々な型のデータ構造２２８内の情報を操作するスケジューリングプロセス２２６を含む。さらに以下で説明するように、ソフトウェア無線ＵＳＢコントローラ２２４は、スケジューリングプロセスが、失敗する確率が高いデータ転送で帯域幅を無駄に使用することを避けるようにソフトウェア制御を行って失敗した転送の再試行を処理するように、データ構造内の情報の一部を構成する。
【００３５】
より具体的に言えば、前述のようにＵＷＢの性質上、ＵＷＢには、他との相違点の中でも何らかの方法で補償する必要のある、非常に高いパケットエラー率が存在するため、無線ＵＳＢ転送のスケジューリングを有線ＵＳＢと同一にすることはできず、本発明の一実施形態では、これがハードウェアおよびソフトウェアの設計によって実行される。このハードウェアおよびソフトウェアの設計は、一般に、通常見られるＵＷＢ通信での動作、すなわち、２つのノード間でパケット転送が失敗した場合、同じノード間での次のパケット転送も失敗する確率が高いことに基づく。反対にパケット転送が成功した場合、同じノード間での次のパケット転送も成功する確率が高い。したがって経時的に見ると、所与の接続上でのパケットの失敗は、時間の経過と共に平均的に分散されるのではなく、一般に一群のスパイクで（ｉｎ  ｂｕｎｃｈｅｄ−ｕｐ  ｓｐｉｋｅｓ）発生する。したがって、こうしたエラー状況の状態は一時的であり、通常は時間の経過と共に解決する。
【００３６】
これらの観察に基づき、本発明は、最も失敗する確率の高い再試行で帯域幅を無駄に使うのを防ぐソフトウェアによって構成可能な再試行メカニズムを提供する。本発明は通常、全体のスループットを最大にするため、転送を成功させようとするが、必要に応じて危機的な要求を満たすために通常のオペレーティング動作を変更するように、ソフトウェアの再構成を可能にするメカニズムを提供する。
【００３７】
ＵＳＢ技術で一般に知られるように、エンドポイントに対応する様々な型のデータ転送オペレーションが存在する。現在の有線ＵＳＢ標準は、コントロール転送、バルク転送、割り込み転送、および等時性転送という、４つの転送／エンドポイント型を定義している。コントロール転送は、通常、コマンドおよびステータスオペレーションに使用され、非同期式であり送達が保証される。バルク転送も非同期式であり、通常は急激に増えた大量のデータに対して使用され、送達も保証されるが、待ち時間または帯域幅に関してはいかなる保証もない。こうした非同期式転送は、転送時間スロット内で、その時間スロットに関する他の（周期的）トランザクション後に発生するため、時間に依存した転送には使用されない。
【００３８】
割り込み転送は、装置開始転送とすることが可能であり、限界のある待ち時間を必要とする。割り込み転送は、周期的に繰り返す時間スロット中に発生するポーリングを使用して、ポーリングされるまで装置によってキューに入れられる。ホスト開始割り込み通信も、周期的時間スロットに基づいて送られる。割り込み転送は、送達が保証される。
【００３９】
等時性転送は周期的であり（時間スロットごとにスケジュールされる）、通常は、ビデオおよびオーディオストリーミングなどの時間に依存した情報を転送するために使用される。等時性転送は、保証された帯域幅および限界のある待ち時間を提供するが、送達の保証はない。
【００４０】
無線ＵＳＢは、これらのエンドポイントをサポートするが、前述のようにデータ転送におけるエラー率が高いため、たとえ送達が保証されない等時性転送であっても再試行の実行が必要である。有線転送とは異なり、無線等時性転送はバッファリングされ、再試行によって受信側でバッファ内の適切な位置に挿入するために欠落データが供給できることに留意されたい。
【００４１】
本発明の一態様によれば、エンドポイントに対応するデータ構造は、スケジューリングプロセス２２６によって、失敗する確率の高いデータ転送よりも成功する確率の高いデータ転送を評価する傾向に制御された形でスケジューリングされる。これによりいかなる場合でも、帯域幅は、現在不良な接続に対してではなく、現在良好な接続に対して使用される。このためスケジューリングプロセスは、以下で説明するように転送スケジュールを設定し、一般に連続して失敗した転送は、データ転送用の次の時間スロットまで休止されるため、このような転送が失敗する確率の高い再試行によって追加の帯域幅が消費されることがない。
【００４２】
図３は、スケジューリングプロセス２２６によって管理される様々なデータ構造およびそれら相互の関係を表す図である。図３に表されるように、データ構造は周期的スケジュール３０２、周期的スケジュールエントリ（たとえばＰＳＥ１〜ＰＳＥ３）、キューヘッド（ＱＨ１〜ＱＨ７）、および転送記述子（ＴＤ）を含む。周期的スケジュール３０２は、各エントリが周期的時間スロットに対応するエントリの循環バッファを備える。各エントリは、以下で説明するように、他のデータ構造を指すポインタを有するゼロまたはそれ以上の周期的スケジュールエントリ（ＰＳＥ）のリストを指すポインタを含む。時間スロットは単一の時間ユニットを表し、時間ユニットは（最大でも）エンドポイントが指定できる最も小さな期間である。「現時間スロット」ポインタは、時間枠の終わりに次のエントリに進む。
【００４３】
周期的スケジュールエントリは、その時間スロット枠中にアクティブになる（ＵＷＢコンポーネントによって転送される）はずのデータ転送を表す。各周期的スケジュールエントリは、実行される準備が整った転送を表す。
【００４４】
転送の宛先を指定するために、転送の実行先である各装置上の各エンドポイントに対応するキューヘッド（ＱＨ）がある。以下で説明するように、各キューヘッドは、その対応するエンドポイントに対する任意の保留転送を含む、転送の状態に関する情報を含む。
【００４５】
各転送記述子（ＴＤ）は、関連するキューヘッドを有し、転送に関与する実際のデータ、転送バッファの長さ、実際に転送されるバイト数などを格納し、または取り出すためのアドレスなどの、特定の転送に関する詳細を提供する。各転送記述子は、「アクティブ」または「非アクティブ」の状態値、ならびに転送がオンであるかオフであるかを指定するソフトウェア書き込み可能値も含む。
【００４６】
周期的スケジュールエントリには、等時性エンドポイント用の型と、割り込みエンドポイント用の型との２つの型がある。以下で説明するように、等時性ＰＳＥが等時性転送記述子を指す一方で、割り込みＰＳＥは割り込みエンドポイントキューヘッドを指し、次にこれが対応する転送記述子を指す。たとえば図３の例では、ＰＳＥ１が（キューヘッドＱＨ１に関連付けられた）等時性転送記述子を指し、ＰＳＥ２は割り込みエンドポイントに対応するキューヘッド（ＱＨ２）を指す。異なる時間スロットに含まれる周期的スケジュールエントリＰＳＥ３は、（キューヘッドＱＨ１に関連付けられた）他の等時性転送記述子を指す。
【００４７】
以下で説明するように、スケジューリングプロセスで等時性ＰＳＥに遭遇すると、対応する転送記述子がその「アクティブ」状態に移り、データが可能な限り早急に転送される準備が整っている旨を信号通知する。スケジュール内で割り込みＰＳＥに遭遇すると、対応するキューヘッドが「アクティブ」状態に移り、スケジュールがパケット転送を実行すべきである旨を信号通知する。図３でＰＳＥを持たないキューヘッド、たとえばＱＨ４〜ＱＨ７は、所与の時間スロット内に残ったいくらかの時間を使用する周期的転送後に生じる非同期式転送を表す。
【００４８】
本発明の一態様によれば、様々なオペレーティング環境に適応するための柔軟性を提供するために、オペレーティングシステムコンポーネントまたはアプリケーションプログラムを備える可能性のあるＷＵＳＢコントローラドライバ２２４は、スケジュール実行の様々な態様を制御することができる。ソフトウェアがスケジュール実行を操作するための主な方法は、キューヘッドを介するものである。より具体的に言えば、以下で説明する図４〜６の流れ図を通じて理解されるように、ソフトウェアが修正可能な様々なパラメータ（カウンタおよび閾値）の値がキューヘッド内に保持され、それによってスケジュール実行の動作を修正する。以下の表は、どの値がハードウェアおよびソフトウェアの読み取り書き込み可能または読み取り専用であるかを含む、各キューヘッド内に含まれる値の一部に関する情報を提供するものである。
【００４９】
【表１】
2006216015.tif 000003
【００５０】
表に示されるように、ソフトウェアは、その特定のキューヘッドが休止されるまで（もはや再試行されない）にスケジュールが許可する失敗パケット数を決定するために、キューヘッド内のエラー休止閾値パラメータに値を書き込むことが可能であり、これは時間スロットの残り部分についてとすることができる。これは、前述のように知られた転送失敗の特徴（たとえば一時エラースパイク）を考慮してソフトウェアがスケジュールを最適化する主な方法である。エラー休止閾値の値は、転送の実行を継続するためには接続がどの程度良いまたは悪い必要があるかを示すために、ソフトウェアによって設定される。この値が１に設定された場合、キューヘッド内に保留中のアクティブ転送があり、この時間スロット内に失敗したパケット転送がない限り、スケジュールはそのキューヘッドの転送を実行し続けることになる。
【００５１】
しかしながら、パケット転送が失敗すると「現在のエラーカウント」値は減分され、１からゼロに遷移するとキューヘッドは休止される。これにより、所与の時間スロット中に、他のキューヘッドが完全に（それらも休止されることのない程度に）処理されるまでそれ以上の転送が実行されるのを防ぐ。容易に理解されるように、値が２に設定されると、キューヘッドが休止されるまでに２つの失敗パケット転送が試行される、ということになる。開始値が０であれば、（以下で説明するように、こうした状況では１からゼロへの遷移はないため）キューヘッドは決して休止されないことを示す。
【００５２】
一般に、休止されたキューヘッドは、次の時間スロットが開始する時点、あるいは、現時間スロット内に他のエンドポイントがなくなった後、普通であれば未使用となる帯域幅が残っている場合のいずれかに、その休止状態から出る。失敗した転送を休止することにより、スケジュールに、成功裏にパケットを転送することのできないエンドポイントよりも、成功裏にパケットを転送することのできるエンドポイントを選ばせることができる。伝送エラーは一時的である傾向があるため、転送エラーを有するエンドポイントが次の時間スロット中には成功する可能性がある。特定のエンドポイントでパケットが至急必要な点に状態が達した場合、無線ＵＳＢソフトウェアコントローラドライバ２２４は通知を受け、そのエンドポイントに関するキューヘッド内の様々な構成可能な値を調整することが可能であり、本来は、他の転送に使用することができた帯域幅を犠牲にして、パケットを成功裏に転送する確率を上げるために、他のエンドポイントよりもデータを必要とするエンドポイントを評価する。
【００５３】
エラー中止閾値パラメータは、エラー休止閾値パラメータとある程度同じであるが、この値はキューヘッドを中止すべきとなるまでの連続エラー数を指定する。次の時間スロット時または現時間スロット内に未使用の帯域幅が残っている場合にリセットする休止状態とは異なり、中止されたキューヘッドが中止状態を出るためにはソフトウェアの介入が必要である。
【００５４】
Ｉｓｏｃｈ通知閾値パラメータは、ソフトウェアに通知を送信させるために無線ＵＳＢソフトウェアコントローラドライバ２２４によって設定可能な値であり、無線ＵＳＢソフトウェアコントローラドライバ２２４が特に悪い失敗状態に関して通知を受けるように使用される。より具体的に言えば、無線ＵＳＢ内の等時性ストリームは、受信側と送信側の両方で一定量のバッファリングを必要とし、送信側がオーバフローしない限りストリームは保持される。バッファがオーバフローしないことを保証するために、ホストはバッファの状態に応答して何らかの設定値の調整を必要とする場合がある。Ｉｓｏｃｈ通知閾値は、ハードウェアがバッファの状態に基づいて無線ＵＳＢソフトウェアコントローラドライバ２２４へ通知すべきである場合を定義する。Ｉｓｏｃｈ通知閾値の値は、キューヘッドに関連付けられたアクティブなＩｓｏｃｈ転送記述子（ＴＤ）の数として定義される。この数がＩｓｏｃｈ通知閾値に達すると、ハードウェアは割り込みによって無線ＵＳＢソフトウェアコントローラドライバ２２４に通知する。
【００５５】
イネーブルド値は、ソフトウェアによって設定することができ、キューヘッドをオフまたはオンにする。オフ状態にある場合、転送は実行されない。
【００５６】
本発明の説明に戻ると、図４〜６は各時間スロットで発生するオペレーションおよびイベントに関するスケジューリングプロセス２２６の論理例を示し、時間スロットの開始を表す図４のステップ４００から始まる。本来、スケジュールサイクルには異なる段階があり、時間スロットの開始時に新しいサイクルが始まる。その新しいサイクルが完了し、次の時間スロットが開始するまでに時間が残っている場合、新しいサイクルを実行するか、または転送用にスケジュールされたが完了しなかったものがあれば再試行することができる。
【００５７】
スケジュールサイクルの第１段階には、スケジュール状態をリセットすること、およびその時間スロットに必要な周期的転送を決定することが含まれる。この段階で、現時間スロットポインタが新しい現時間スロットを示すように増分され、これはステップ４００によって表される。その後、その時間スロットがいずれかのＰＳＥを指す場合、ＰＳＥのリストが探索される。リスト内のあらゆる割り込みＰＳＥについて、対応する割り込みエンドポイントキューヘッドが（エンドポイントが中止状態にない限り）起動される。リスト内のあらゆる等時性ＰＳＥについて、対応する等時性エンドポイント転送記述子がキューヘッドと共にアクティブ化される。これは図４のステップ４０２で表され、新しい時間スロットのスケジュール状態をリセットすることには、「休止」状態にある各キューヘッドを「アクティブ」状態に遷移することが含まれる。
【００５８】
他のステップにはステップ４０４および４０６が含まれ、ステップ４０４は、単一のキューヘッドに対するアクティブなＩｓｏｃｈ転送記述子の数に基づいて、通知閾値が達成された場合に必ずソフトウェアに通知するための割り込みの発動（ｆｉｒｉｎｇ）を表す。ステップ４０６は、この時間スロットの値を再度初期設定する。
【００５９】
スケジュールサイクルの第２段階は、周期的転送の実行を対象とする。一般にハードウェアは、現在アクティブな周期的キューヘッドを検索し（ステップ４０８）、図５のステップ５００で表されるように、そのキューヘッドの対応する転送記述子に対してパケット転送の実行を開始する。ＷＵＳＢの場合、複数の転送を並行して実行することができる。所与の時間にどの転送を実行するかを決定するためのスキームは、一般にこのスキームが、転送のターンアラウンド（無線を伝送状態から受信状態に変更する）を最小限にすること、ならびにプロトコルのオーバヘッドを低く保つことに基づくべきであるということを除き、本発明に関連しない。ＷＵＳＢハードウェアは、他の複数のパケット転送と同時に何らかの非同期式転送を実行するように選択できることに留意されたい。
【００６０】
各周期的パケット転送（ステップ５０２）について、その転送の状況はステップ５０４を介して分析される。パケット転送が成功すると、ステップ５０４はステップ５０６に分岐し、対応する連続エラーカウントがエラー中止閾値の値にリセットされる。ステップ５０８でエンドポイントが割り込みエンドポイントである場合、対応するキューヘッドはステップ５１０を介して非アクティブ状態に入り、そのパケット転送も転送記述子を完了した場合、転送記述子は完了としてマーク付けされる。
【００６１】
ステップ５０４でパケット転送が成功し、ステップ５０８でエンドポイントが等時性エンドポイントである場合、ステップ５０８はステップ５１２に分岐し、転送記述子は完了としてマーク付けされる。また、等時性転送記述子リストにそれ以上アクティブな転送記述子がない場合、キューヘッドは非アクティブ状態に移る。
【００６２】
ステップ５０４に戻り、パケット転送が失敗した場合、ステップ５０４はステップ５２０に分岐し、連続エラーカウントが減分される（ゼロよりも大きい場合）。ステップ５２２による評価で、この値が値１から値ゼロに遷移している場合、キューヘッドはステップ５２４を介して中止される。そうでない場合はステップ５２６が実行され、キューヘッド内の現在のエラーカウントがゼロよりも大きい場合に減分される。ステップ５２８での評価としてこのカウントが値１から値ゼロに遷移すると、ステップ５３０でキューヘッドは休止状態に移る。エラーカウントがすでにゼロであった場合、キューヘッドの状態はそのまま残り、これによってソフトウェアは初期にキューヘッドのエラーカウントをゼロに設定することが可能であり、これによってその状態は休止されないことに留意されたい。連続エラーカウントで同様の「ゼロに初期設定」オペレーションを使用して、中止を防ぐことができる。
【００６３】
プロセスがステップ５０２に戻ることによってわかるように、図５の分析は試行された各転送が分析されるまで続行する。
【００６４】
このプロセスが完了すると、ハードウェアスケジューリングプロセス２２６は図４のステップ４０８に戻り、さらに他のアクティブな周期的キューヘッドが存在するか否かを再度判別して、それら（これらには、すでに試行された転送を伴うキューヘッドが含まれる可能性がある）を実行する。これは、アクティブな周期的キューヘッドがなくなるまで繰り返され、すなわち、休止または中止されたものだけが保留状態で残すことができる。アクティブな周期的キューヘッドがなくなると、スケジュールは非同期式キューヘッドの転送を対象とする第３段階を実行する。この第３段階では、任意のアクティブな非同期式（バルクおよびコントロール）転送が、ステップ４１０および４１２を介して実行される。ステップ６００で始まる図６に分岐するステップ４１４に示すように、各パケット転送についてその転送の状況が分析される。
【００６５】
ステップ６００はパケット転送が成功したか否かを評価し、成功した場合はステップ６０２に分岐して、そのパケットが転送記述子を完了したか否かの評価が行われ、完了した場合は、ステップ６０４で転送記述子が完了したとしてマーク付けされる。また、キューヘッド内に保留されている転送記述子がない場合、キューヘッドはステップ６０６および６０８を介して非アクティブ状態に移る。プロセスは図４のステップ４１０に戻る。
【００６６】
ステップ６００に戻り、パケットが失敗した場合、ステップ６００はステップ６１０に分岐してキューヘッドの連続エラーカウントが（ゼロよりも大きい場合）減分される。ステップ６１２でこの値が値１から値ゼロに遷移した場合、ステップ６１４を介してキューヘッドは中止される。
【００６７】
そうでない場合、ステップ６１６でキューヘッドの現在のエラーカウント値が（その値がゼロよりも大きい場合）減分される。ステップ６１８でこの値を値１から値ゼロに遷移させるように決定された場合、ステップ６２０でキューヘッドは休止される。
【００６８】
プロセスは図４のステップ４１０に戻り、アクティブな非同期式キューヘッドがなくなるまで、または時間スロットが終了するまで、この第３段階が繰り返される。時間スロット内に時間が残っていない状態で第３（非同期式処理）段階が終了した場合、ステップ４１０がステップ４０６に分岐することによって、休止されたＱＨがあればステップ４０６でアクティブ状態に移り、第２（図５）および第３（図６）段階が繰り返される。
【００６９】
このようにして、転送が成功、休止、または中止されるまで、時間スロット内にあるアクティブな周期的キューヘッドをスケジューリングおよび転送するように試行されることがわかる。その後、転送が成功、休止、または中止されるまで、時間スロット内にある非同期式キューヘッドを転送するように試行される。このプロセスは時間スロット内の時間がなくなるまで繰り返されるが、プロセスは、時間スロットに対してスケジュールされたすべてが成功裏に転送された場合に停止し、次の適切な時点で新しくスケジュールされたキューヘッドを再開することもできる。
【００７０】
ソフトウェアがデータ構造内の様々なカウンタおよび他の情報を制御するため、本発明によってとても高い柔軟性が提供される。たとえば通常のオペレーションでは、時間スロット開始時にエラーカウントを１に初期設定することが可能であり、これによって単一のエラーが、その時間スロットの残りの部分に対して（時間スロット内に時間が残っているために再度アクティブ化されない限り）失敗したキューヘッドを休止させることになる。結果として、失敗したキューヘッドの転送について何らかの再試行が実行される前に、その時間スロット内で他のキューヘッドの転送試行が実行されることになる。しかしながら、等時性通知閾値に達した旨の通知を受け取ると、ソフトウェアは、伝送の失敗によって過度のアクティブな転送記述子をバックアップしなければならないことから、受信側のバッファが少なくなっていることを認識する。その後ソフトウェアは、たとえば、バックアップされた転送記述子に対応して特定のキューヘッドに対するエラーカウント値を上げること、何らかの他のキューヘッドを使用禁止にすることなどによって、データをそのバッファに入れるように様々なカウントを調整することができる。その後ソフトウェアは、十分なデータがバッファに入れられると、通常のオペレーション用にカウンタおよび閾値をリセットすることができる。
【００７１】
前述の詳細な説明から明らかなように、失敗する確率の高いキューヘッドよりも成功する確率の高いキューヘッドに対応するパケットに帯域幅を使用することによって、無線ＵＳＢ内のエラーを処理する方法およびシステムが提供される。ソフトウェアは、所与の環境において、必要に応じてこのメカニズムを動的に制御することができる。
【００７２】
本発明は様々な修正および代替構造が可能であるが、図面にはその中のある種の例示された実施形態が示され、上記で詳細に説明してきた。しかしながら、本発明を開示された特定の形に限定する意図はなく、反対に、本発明の趣旨および範囲に入るすべての修正、代替構造、および等価物をカバーすることを意図するものであることを理解されたい。
【図面の簡単な説明】
【００７３】
【図１】本発明を組み込むことが可能なコンピューティング環境を全体として表すブロック図である。
【図２】本発明の様々な態様に従った、ハードウェアスケジューリングを使用してＵＷＢを介した周辺装置への無線ＵＳＢデータ転送を制御するための、コンピュータシステム内のソフトウェアおよびハードウェアを含むブロック図である。
【図３】本発明の様々な態様に従った、データ転送のハードウェアスケジューリングで使用されるデータ構造の表現を含むブロック図である。
【図４】本発明の様々な態様に従い、制御されたデータ転送を実行するためにデータ構造を操作するための論理を全体として表す流れ図である。
【図５】本発明の様々な態様に従い、制御されたデータ転送を実行するためにデータ構造を操作するための論理を全体として表す流れ図である。
【図６】本発明の様々な態様に従い、制御されたデータ転送を実行するためにデータ構造を操作するための論理を全体として表す流れ図である。
【図１】
2006216015.tif 000004
【図２】
2006216015.tif 000005
【図３】
2006216015.tif 000006
【図４】
2006216015.tif 000007
【図５】
2006216015.tif 000008
【図６】
2006216015.tif 000009
【外国語明細書】
2006216015000001.pdf