(57)【特許請求の範囲】
【請求項１】
複数のユニバーサルシリアルバス（ＵＳＢ）データ転送を管理するためのシステムであって、
複数のエンドポイントをソートするための第１のスケジューリングキューを含む、メモリデバイスと、
データ転送のための複数のエンドポイントを前記メモリデバイスに格納し、
第１の順序で前記複数のエンドポイントをソートし、
複数の元のデータパケットを含む第１の送信データユニットを生成し、
前記第１の送信データユニットを転送する、ホストコントローラと、を備え、エンドポイントはＵＳＢデバイスの一部に対応するエンドポイントであり、前記複数の元のデータパケットは、少なくとも一部において前記第１の順序に基づいた複数のエンドポイントに割り当てられ、
前記メモリデバイスが、第２のスケジューリングキューを含み、
前記第２のスケジューリングキューが、前記複数のエンドポイントを格納し、
前記ホストコントローラが、更に、
新たなエンドポイント帯域幅に関連付けられる新たなエンドポイントを受信し、
前記新たなエンドポイントを前記第２のスケジューリングキューに格納し、
複数の元のエンドポイント帯域幅に関連付けられる、前記新たなエンドポイント及び前記複数のエンドポイントを第２の順序でソートし、
前記新たなエンドポイント及び前記複数のエンドポイントの新たな送信データユニットを生成するアクティブキューとして、前記第１のスケジューリングキューから前記第２のスケジューリングキューに切り替える、システム。
【請求項２】
複数のユニバーサルシリアルバス（ＵＳＢ）データ転送を管理するためのシステムであって、
複数のエンドポイントをソートするための第１のスケジューリングキューを含む、メモリデバイスと、
データ転送のための複数のエンドポイントを前記メモリデバイスに格納し、
第１の順序で前記複数のエンドポイントをソートし、
複数の元のデータパケットを含む第１の送信データユニットを生成し、
前記第１の送信データユニットを転送する、ホストコントローラと、を備え、エンドポイントはＵＳＢデバイスの一部に対応するエンドポイントであり、前記複数の元のデータパケットは、少なくとも一部において前記第１の順序に基づいた複数のエンドポイントに割り当てられ、
前記複数のエンドポイントが、複数のデータパケットの第１の数に対応する第１のペイロードに関連付けられる第１のエンドポイント、及び複数のデータパケットの第２の数に対応する第２のペイロードに関連付けられる第２のエンドポイントを含み、前記第１のエンドポイントが、前記第１の順序に従った前記第２のエンドポイントより高い優先度を有し、
前記ホストコントローラが、更に
前記第１の送信データユニットにおける複数のデータパケットの前記第１の数を前記第１のエンドポイントに割り当て、
複数のデータパケットの前記第２の数を複数のデータパケットの第３の数及び複数のデータパケットの第４の数に分割し、
前記第１の送信データユニットにおける複数のデータパケットの前記第３の数を前記第２のエンドポイントに割り当て、
前記第１の送信データユニットの後に送信される、第２の送信データユニットにおける複数のデータパケットの前記第４の数を前記第２のエンドポイントに割り当てる、システム。
【請求項３】
複数のユニバーサルシリアルバス（ＵＳＢ）データ転送を管理するためのシステムであって、
複数のエンドポイントをソートするための第１のスケジューリングキューを含む、メモリデバイスと、
データ転送のための複数のエンドポイントを前記メモリデバイスに格納し、
第１の順序で前記複数のエンドポイントをソートし、
複数の元のデータパケットを含む第１の送信データユニットを生成し、
前記第１の送信データユニットを転送する、ホストコントローラと、を備え、エンドポイントはＵＳＢデバイスの一部に対応するエンドポイントであり、前記複数の元のデータパケットは、少なくとも一部において前記第１の順序に基づいた複数のエンドポイントに割り当てられ、
前記複数のエンドポイントが、複数のデータパケットの第１の数に対応する第１のペイロードに関連付けられる第１のエンドポイント、複数のデータパケットの第２の数に対応する第２のペイロードに関連付けられる第２のエンドポイント、及び、複数のデータパケットの第３の数に対応する第３のペイロードに関連付けられる第３のエンドポイントを含み、前記第１のエンドポイントが、前記第２のエンドポイントより高い優先度を有し、前記第２のエンドポイントが、前記第１の順序に従った前記第３のエンドポイントより高い優先度を有し、
前記ホストコントローラが、更に、
前記第１の送信データユニットにおける複数のデータパケットの前記第１の数を前記第１のエンドポイントに割り当て、
複数のデータパケットの前記第２の数を、複数のデータパケットの第４の数、及び複数のデータパケットの第５の数に分割し、
前記第１の送信データユニットにおける複数のデータパケットの前記第４の数を前記第２のエンドポイントに割り当て、
前記第１の送信データユニットの後に送信される、第２の送信データユニットにおける複数のデータパケットの前記第５の数を前記第２のエンドポイントに割り当て、
複数のデータパケットの前記第３の数を、複数のデータパケットの第６の数、及び複数のデータパケットの第７の数に分割し、
前記第２の送信データユニットにおける複数のデータパケットの前記第６の数を前記第３のエンドポイントに割り当て、
前記第２の送信データユニットの後に送信される、第３の送信データユニットにおける複数のデータパケットの前記第７の数を、前記第３のエンドポイントに割り当てる、システム。
【請求項４】
複数のユニバーサルシリアルバス（ＵＳＢ）データ転送を管理するためのシステムであって、
複数のエンドポイントをソートするための第１のスケジューリングキューを含む、メモリデバイスと、
データ転送のための複数のエンドポイントを前記メモリデバイスに格納し、
第１の順序で前記複数のエンドポイントをソートし、
複数の元のデータパケットを含む第１の送信データユニットを生成し、
前記第１の送信データユニットを転送する、ホストコントローラと、を備え、エンドポイントはＵＳＢデバイスの一部に対応するエンドポイントであり、前記複数の元のデータパケットは、少なくとも一部において前記第１の順序に基づいた複数のエンドポイントに割り当てられ、
前記複数のエンドポイントは、１または複数の第１のエンドポイント及び第２のエンドポイントを含み、前記複数の第１のエンドポイントが、前記第２のエンドポイントより高い優先度を有し、前記第２のエンドポイントが、複数のデータパケットの第２の数に対応する第２のペイロードに関連付けられ、
前記ホストコントローラが、更に、
前記第１の送信データユニットにおける複数のデータパケットの第１の数を前記１または複数の第１のエンドポイントに割り当て、
複数のデータパケットの前記第２の数を、複数のデータパケットの第４の数及び複数のデータパケットの第５の数に分割し、
複数のデータパケットの第３の数が、複数のデータパケットの前記第４の数より少ないことに応答して、前記第１の送信データユニットにおける複数のデータパケットの前記第３の数、及び複数のデータパケットの前記第５の数を前記第２のエンドポイントにオーバーフローのために割り当て、
残りの前記第１の送信データユニットが、複数のデータパケットの前記第３の数に対応し、複数のデータパケットの前記第４の数が、複数のデータパケットの前記第３の数及び複数のデータパケットの前記第５の数の合計と等しい、システム。
【請求項５】
前記複数のエンドポイントが複数の周波数に関連付けられ、
前記ホストコントローラが、更に、少なくとも部分的に前記複数の周波数に基づいて降順に前記複数のエンドポイントをソートし、前記複数の元のデータパケットをソートされた前記複数のエンドポイントに割り当てる、請求項１から４のいずれか一項に記載のシステム。
【請求項６】
前記第１のスケジューリングキューが、前記降順に前記複数のエンドポイントを格納し、前記複数のエンドポイントの中で、最も高い周波数に関連付けられる第１のエンドポイントが、前記第１のスケジューリングキューの最上部に格納される、請求項５に記載のシステム。
【請求項７】
前記複数のエンドポイントが、複数のエンドポイント帯域幅に関連付けられ、
前記ホストコントローラが、更に、少なくとも部分的に前記複数のエンドポイント帯域幅に基づいて降順に前記複数のエンドポイントをソートし、前記複数の元のデータパケットをソートされた前記複数のエンドポイントに割り当てる、請求項１から６のいずれか１項に記載のシステム。
【請求項８】
前記第１のスケジューリングキューが、前記降順の前記複数のエンドポイントを格納し、前記複数のエンドポイントの中で、最も高いエンドポイント帯域幅に関連付けられる第１のエンドポイントが、前記第１のスケジューリングキューの最上部に格納される、請求項７に記載のシステム。
【請求項９】
前記ホストコントローラが、更に、総帯域幅が利用可能帯域幅より大きいこと、前記総帯域幅が前記複数のエンドポイントに関連付けられる複数の初期のエンドポイント帯域幅の合計と等しいことに応答してエラー信号を生成する、請求項１から８のいずれか１項に記載のシステム。
【請求項１０】
複数のユニバーサルシリアルバス（ＵＳＢ）データ転送を管理するための方法であって、
複数のデータ転送のための複数のエンドポイントを受信する段階と、
前記複数のエンドポイントを第１の順序でソートする段階と、
少なくとも部分的に前記第１の順序に基づいて複数のエンドポイントに割り当てられ、複数の元のデータパケットを含む第１の送信データユニットを生成する段階と、
前記第１の送信データユニットを転送する段階と、を備え、
エンドポイントはＵＳＢデバイスの部分に対応する、方法であって、
新たなエンドポイント帯域幅に関連付けられる新たなエンドポイントを受信する段階と、
複数の元のエンドポイント帯域幅に関連付けられる、前記新たなエンドポイント及び前記複数のエンドポイントを第２の順序でソートする段階と、
新たな送信データユニットを前記新たなエンドポイント及び前記複数のエンドポイントのために生成する段階と、を更に備える、方法。
【請求項１１】
複数のユニバーサルシリアルバス（ＵＳＢ）データ転送を管理するための方法であって、
複数のデータ転送のための複数のエンドポイントを受信する段階と、
前記複数のエンドポイントを第１の順序でソートする段階と、
少なくとも部分的に前記第１の順序に基づいて複数のエンドポイントに割り当てられ、複数の元のデータパケットを含む第１の送信データユニットを生成する段階と、
前記第１の送信データユニットを転送する段階と、を備え、
エンドポイントはＵＳＢデバイスの部分に対応する、方法であって、
前記複数のエンドポイントが、複数のデータパケットの第１の数に対応する第１のペイロードに関連付けられる第１のエンドポイント、及び、複数のデータパケットの第２の数に対応する第２のペイロードに関連付けられる第２のエンドポイントを含み、前記第１のエンドポイントは前記第１の順序に従った前記第２のエンドポイントより高い優先度を有し、
前記方法が、
前記第１の送信データユニットにおける複数のデータパケットの前記第１の数を前記第１のエンドポイントに割り当てる段階と、
複数のデータパケットの前記第２の数を複数のデータパケットの第３の数及び複数のデータパケットの第４の数に分割する段階と、
前記第１の送信データユニットにおける複数のデータパケットの前記第３の数を前記第２のエンドポイントに割り当てる段階と、
第２の送信データユニットにおける複数のデータパケットの前記第４の数を前記第２のエンドポイントに割り当てる段階と、
を更に備え、
前記第２の送信データユニットが、前記第１の送信データユニットの後に送信される、方法。
【請求項１２】
複数のユニバーサルシリアルバス（ＵＳＢ）データ転送を管理するための方法であって、
複数のデータ転送のための複数のエンドポイントを受信する段階と、
前記複数のエンドポイントを第１の順序でソートする段階と、
少なくとも部分的に前記第１の順序に基づいて複数のエンドポイントに割り当てられ、複数の元のデータパケットを含む第１の送信データユニットを生成する段階と、
前記第１の送信データユニットを転送する段階と、を備え、
エンドポイントはＵＳＢデバイスの部分に対応する、方法であって、
複数のエンドポイントが、複数のデータパケットの第１の数に対応する第１のペイロードに関連付けられる第１のエンドポイント、複数のデータパケットの第２の数に対応する第２のペイロードに関連付けられる第２のエンドポイント、及び複数のデータパケットの第３の数に対応する第３のペイロードに関連付けられる第３のエンドポイントを含み、前記第１のエンドポイントが前記第２のエンドポイントより高い優先度を有し、前記第２のエンドポイントが前記第１の順序に従った前記第３のエンドポイントより高い優先度を有し、
前記方法が、
前記第１の送信データユニットにおける複数のデータパケットの前記第１の数を前記第１のエンドポイントに割り当てる段階と、
複数のデータパケットの前記第２の数を複数のデータパケットの第４の数及び複数のデータパケットの第５の数に分割する段階と、
前記第１の送信データユニットにおける複数のデータパケットの前記第４の数を前記第２のエンドポイントに割り当てる段階と、
第２の送信データユニットにおける複数のデータパケットの前記第５の数を前記第２のエンドポイントに割り当てる段階と、
複数のデータパケットの前記第３の数を複数のデータパケットの第６の数及び複数のデータパケットの第７の数に分割する段階と、
前記第２の送信データユニットにおける複数のデータパケットの前記第６の数を前記第３のエンドポイントに割り当てる段階と、
第３の送信データユニットにおける複数のデータパケットの前記第７の数を前記第３のエンドポイントに割り当てる段階と、を更に備え、
前記第２の送信データユニットが前記第１の送信データユニットの後に送信され、前記第３の送信データユニットが前記第２の送信データユニットの後に送信される、方法。
【請求項１３】
複数のユニバーサルシリアルバス（ＵＳＢ）データ転送を管理するための方法であって、
複数のデータ転送のための複数のエンドポイントを受信する段階と、
前記複数のエンドポイントを第１の順序でソートする段階と、
少なくとも部分的に前記第１の順序に基づいて複数のエンドポイントに割り当てられ、複数の元のデータパケットを含む第１の送信データユニットを生成する段階と、
前記第１の送信データユニットを転送する段階と、を備え、
エンドポイントはＵＳＢデバイスの部分に対応する、方法であって、
前記複数のエンドポイントが、１または複数の第１のエンドポイント及び第２のエンドポイントを含み、前記１または複数の第１のエンドポイントは、前記第２のエンドポイントより高い優先度を有し、前記第２のエンドポイントは、複数のデータパケットの第２の数に対応する第２のペイロードに関連付けられ、
前記方法が、
前記第１の送信データユニットにおける複数のデータパケットの第１の数を、前記１または複数の第１のエンドポイントに割り当てる段階と、
複数のデータパケットの前記第２の数を複数のデータパケットの第４の数及びデータパケットの第５の数に分割する段階と、
複数のデータパケットの第３の数が複数のデータパケットの前記第４の数より少ないことに応答して、前記第１の送信データユニットにおける複数のデータパケットの前記第３の数及び複数のデータパケットの前記第５の数を前記第２のエンドポイントにオーバーフローのために割り当てる段階と、を更に備え、
残りの前記第１の送信データユニットが複数のデータパケットの前記第３の数に対応し、複数のデータパケットの前記第４の数が、複数のデータパケットの前記第３の数及び複数のデータパケットの前記第５の数の合計と等しい、方法。
【請求項１４】
前記複数のエンドポイントが複数の周波数に関連付けられ、
前記複数のエンドポイントが、少なくとも部分的に前記複数の周波数に基づいた降順でソートされ、
前記複数の元のデータパケットが、ソートされた前記複数のエンドポイントに割り当てられる、請求項１０から１３のいずれか一項に記載の方法。
【請求項１５】
前記複数のエンドポイントが、複数のエンドポイント帯域幅に関連付けられ、
前記複数のエンドポイントが、少なくとも部分的に前記複数のエンドポイント帯域幅に基づいた降順でソートされ、
前記複数の元のデータパケットが、前記ソートされた複数のエンドポイントに割り当てられる、請求項１０から１４のいずれか一項に記載の方法。
【請求項１６】
前記複数のエンドポイントのために、アイソクロナスデータ転送、又は割り込みデータ転送を実行する段階を、更に備える請求項１０から１５のいずれか１項に記載の方法。
【請求項１７】
総帯域幅が利用可能帯域幅より大きいことに応答してエラー信号を生成する段階を、更に備え、
前記総帯域幅が、前記複数のエンドポイントに関連付けられる複数の初期のエンドポイント帯域幅の合計と等しい、請求項１０から１６のいずれか１項に記載の方法。
【請求項１８】
コンピュータに、
複数のデータ転送のための複数のエンドポイントを受信する手順と、
前記複数のエンドポイントを第１のスケジューリングキューに格納する手順と、
第１の順序で前記複数のエンドポイントをソートする手順と、
少なくとも部分的に前記第１の順序に基づいた前記複数のエンドポイントに割り当てられている、複数の元のデータパケットを含む第１の送信データユニットを生成する手順と、
前記第１の送信データユニットを転送する手順と、
新たなエンドポイント帯域幅に関連付けられる新たなエンドポイントを受信する手順と、
前記新たなエンドポイントを第２のスケジューリングキューに格納する手順と、
複数の元のエンドポイント帯域幅に関連付けられる、前記新たなエンドポイント及び前記複数のエンドポイントを第２の順序でソートする手順と、
前記新たなエンドポイント及び前記複数のエンドポイントの新たな送信データユニットを生成するアクティブキューとして、前記第１のスケジューリングキューから前記第２のスケジューリングキューに切り替える手順とを行わせ、
エンドポイントがＵＳＢデバイスの一部に対応する、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本開示は、２０１３年７月１６日に出願された米国仮特許出願第６１／８４６，７９３号に対する優先権、及び、利益を主張し、その全体を参照によって本明細書に組み込んだものとする。
【０００２】
本特許文献において説明される技術は、一般的に、データ転送、及び、より具体的にはデータ転送管理に関連する。
【背景技術】
【０００３】
ユニバーサルシリアルバス（ＵＳＢ）は、プラグアンドプレイ又はホットスワップ接続を可能とし、ホストと複数の周辺機器との間のレガシの複数のシリアル及びパラレルポートを置き換えることを目的として開発された規格である。ＵＳＢは、１または複数の取り付けられた周辺機器（つまり、ＵＳＢデバイス）がホストスケジュールプロトコルを通じてバス帯域幅を共有する、ポーリングされるバスに対応する。ＵＳＢデバイスは、ホスト及び他のＵＳＢデバイスが動作する間に、取り付け、構成、及び、使用されることが許される。
【０００４】
通常、ＵＳＢデータ転送は、ホスト及びＵＳＢデバイスの間で行われる。最初に、ＵＳＢデバイスがホストに接続されたとき、列挙プロセスが始まる。ＵＳＢデバイスのデータ比率を判断することを目的として、リセット信号がＵＳＢデバイスに送信される。その後、ＵＳＢデバイスと関連付けられた情報がホストによって読み込まれ、ＵＳＢデバイスが固有のアドレスに割り当てられる。ホストコントローラは、ＵＳＢデバイスから／へのトラフィックフローを指示する。例えば、ホストコントローラは、複数のＵＳＢの処理を実行し、ホストメモリと複数のデバイスエンドポイントとの間でデータを移動することを目的とする、当該各デバイスエンドポイントは、ホストとＵＳＢデバイスとの間の通信フローにおけるデータのソース又はシンクである、ＵＳＢデバイスのアドレス指定可能部分に一意に対応する。
【０００５】
４つの基本的なタイプのデータ転送の、コントロールデータ転送、バルクデータ転送、割り込みデータ転送、及びアイソクロナスデータ転送が、複数のＵＳＢの仕様によってサポートされている。コントロールデータ転送は、非周期的なホストのソフトウェア開始要求／応答の通信のために（例えば、コマンド／ステータスのオペレーションのために）、しばしば使用される。通常、バルクデータ転送は非周期的な大きなパケット通信のために使用され、当該非周期的な大きなパケット通信は、任意の利用可能帯域幅を使用することができ、帯域幅が利用可能になるまで遅延させられることができる。例えば、ある大きなパケット中でプリンタによって受信されたデータは、バルクデータ転送を使用して転送され得る。加えて、割り込みデータ転送はしばしば低周波数のレイテンシが制限された通信において使用される。例えば、非常に小さいデータを送信するマウス又はキーボードは、割り込みデータ転送を使用し得る。ストリーミングリアルタイム転送としても知られる、アイソクロナスデータ転送は、通常、ホスト及びＵＳＢデバイスの間の周期的で連続的な通信（例えば、時間に依存した情報に関わる通信）のために使用される。例えば、ストリーミングデバイス（例えば、オーディオスピーカー）はアイソクロナスデータ転送を使用し得る。
【０００６】
複数のＵＳＢデータ転送は、ホストコントローラによってスケジュールされる。例えば、アイソクロナスデータ転送及び割り込みデータ転送のような複数の周期的なデータ転送は、しばしば複数の厳格なタイミングの要求をし、したがって、タイミング良くバス全体で移動する必要がある。バルクデータ転送及びコントロールデータ転送のような複数の非周期的なデータ転送は、それほど頻繁に複数の厳格なタイミングの要求をしない。ホスト及び複数のＵＳＢデバイスの間の同期を確実なものとすることを目的として、バス時間は、しばしば複数の固定された長さの区分に分割される。低い速度又は完全な速度のバスでは、バス時間は１ミリ秒の複数のユニットで、つまり、複数のフレームに、分割される。高い速度のバスでは、バス時間は１２５マイクロ秒の複数のユニットで、つまり、複数のマイクロフレームに、分割される。マイクロフレームは複数のデータパケットを含み、データパケットは１キロバイトを含む。
【発明の概要】
【０００７】
本明細書で説明された複数の教示に従うと、複数のユニバーサルシリアルバス（ＵＳＢ）データ転送を管理するシステムおよび複数の方法が、提供される。例示的なシステムは、複数のエンドポイント及びホストコントローラをソートするための第１のスケジューリングキューを含む非一時的コンピュータ可読記憶媒体を含む。ホストコントローラは、記憶媒体に複数のデータ転送のための複数のエンドポイントを格納し、第１の順序で複数のエンドポイントをソートし、複数の元のデータパケットを含む第１の送信データユニットを生成し、第１の送信データユニットを転送するように構成され、エンドポイントはＵＳＢデバイスの一部に対応し、複数の元のデータパケットは、少なくとも部分的に第１の順序に基づいて複数のエンドポイントに割り当てられる。
【０００８】
一実施形態において、複数のユニバーサルシリアルバス（ＵＳＢ）データ転送を管理する方法が提供される。複数のエンドポイントがデータ転送のために受信される。エンドポイントがＵＳＢデバイスの一部に対応する。複数のエンドポイントがある順序にソートされる。複数のデータパケットを含む送信データユニットが生成される。データパケットは少なくとも部分的に当該順序に基づいて複数のエンドポイントに割り当てられる。送信データユニットが転送される。
【０００９】
他の実施形態において、非一時的機械可読記憶媒体は複数のユニバーサルシリアルバス（ＵＳＢ）データ転送を管理するためのプログラミング命令を含む。複数のプログラミング命令が、１又は複数のデータプロセッサに複数の特定の処理を実行させるように構成される。複数のエンドポイントが、複数のデータ転送のために受信される。エンドポイントがＵＳＢデバイスの部分に対応する。複数のエンドポイントがある順序にソートされる。複数のデータパケットを含む送信データユニットが生成される。データパケットは少なくとも部分的に当該順序に基づいて複数のエンドポイントに割り当てられる。送信データユニットが転送される。
【図面の簡単な説明】
【００１０】
【図１】複数のＵＳＢデータ転送を管理するためのシステムを示した例示的な図を示す。
【００１１】
【図２】複数のＵＳＢデータ転送を管理するためのシステムを示した他の例示的な図を示す。
【００１２】
【図３】メモリデバイスに含まれる２つのスケジューリングキューを示した例示的な図を示す。
【００１３】
【図４】３つのエンドポイントに対する複数のデータ転送を示した例示的な図を示す。
【００１４】
【図５】３つのエンドポイントに対する複数のデータ転送を示した他の例示的な図を示す。
【００１５】
【図６】データ転送のスケジューリングのための複数の異なる事例を示した例示的な図を示す。
【００１６】
【図７】複数のＵＳＢデータ転送を管理するための例示的なフロー図を示す。
【発明を実施するための形態】
【００１７】
通常、複数のユニバーサルシリアルバス（ＵＳＢ）データ転送は、複数の周期的なデータ転送及び複数の非周期的なデータ転送を管理する（例えば、スケジュールする）ホストによって開始される。大体において、ＵＳＢシステムの性能はデータ転送管理の効率に依存している。しばしば、ＵＳＢバスの帯域幅の８０％から９０％が複数の周期的なデータ転送に割り当てられる。したがって、複数の周期的なデータ転送の管理は、ＵＳＢシステムの性能を向上させるための重大な役割を演じる。
【００１８】
図１は複数のＵＳＢデータ転送を管理するためのシステムを示した例示的な図を示す。図１に示されるように、ホストコントローラ１０２は、スケジューリングキュー１０４に特定の順序で格納された複数のエンドポイント（例えば、ＥＰ１、ＥＰ２、…、ＥＰｎ）をソートし、複数のデータ転送（例えば、複数の周期的なデータ転送）のために特定の順序に従ってソートされたエンドポイントにリソースを割り当てる。
【００１９】
具体的には、システム１００は、ホスト１０８に取り付けられた複数のＵＳＢデバイス１０６１，  １０６２，  …，  １０６ｍを含む。複数のエンドポイント（例えば、ＥＰ１、ＥＰ２、…、ＥＰｎ）のそれぞれは、ＵＳＢデバイスの一意にアドレス指定可能な部分に対応する。いくつかの実施形態においては、各エンドポイントは周波数に関連付けられて、ホストコントローラ１０２がそれぞれの周波数に基づいて複数のエンドポイントをソートする。例えば、ホストコントローラ１０２は降順で複数のエンドポイントをソートし得て、最も高い周波数のエンドポイントはスケジューリングキュー１０４の最上部に格納され、データ転送のためのリソースを最初に受信する。
【００２０】
特定の複数の実施形態においては、各エンドポイントはデータ転送のためのエンドポイント帯域幅に関連付けられ、ホストコントローラ１０２はそれぞれの複数のエンドポイント帯域幅に基づいて複数のエンドポイントをソートする。例えば、ホストコントローラ１０２は降順で複数のエンドポイントをソートし得て、最も高いエンドポイント帯域幅を有するエンドポイントはスケジューリングキュー１０４の最上部に格納され、データ転送のために複数のリソースを最初に受信する。いくつかの実施形態においては、スケジューリングキュー１０４はホストコントローラ１０２にアクセス可能なメモリデバイスに含まれる。
【００２１】
ホストコントローラ１０２は、複数のデータパケット（例えば、１６のデータパケット）を含む送信データユニット（例えば、マイクロフレーム）を生成する。送信データユニットにおけるデータパケットは、（例えば、トップダウンから）スケジューリングキュー１０４に格納されるエンドポイントに割り当てられる。割り当てられたデータパケットを有する送信データユニットが送信された後、ホストコントローラ１０２は、ソートされた複数のエンドポイントのために複数のデータ転送（例えば、アイソクロナスデータ転送、割り込みデータ転送等）を実行することを目的としてより多くの送信データユニットを生成する。
【００２２】
図２はＵＳＢデータ転送を管理するためのシステムを示した他の例示的な図を示す。図２に示されるように、ホストコントローラ１０２は、複数のデータ転送のための２つのスケジューリングキュー１０４および２０６を管理し、スケジューリングキュー１０４は現在のアクティブキューとして使用され、スケジューリングキュー２０６はバックアップキューとして使用される。新たなエンドポイントをスケジューリングキュー２０６に格納した後、ホストコントローラ１０２は、スケジューリングキュー２０６をソートし、複数のデータ転送（例えば、複数の周期的なデータ転送）のためにスケジューリングキュー１０４からスケジューリングキュー２０６に切り替える。
【００２３】
具体的には、システム１００の現在の処理が中断されないように、新たなエンドポイントＥＰｎ＋１が受信されたときには、ホストコントローラ１０２は新たなエンドポイントＥＰｎ＋１をスケジューリングキュー２０６に格納し、スケジューリングキュー２０６は、現在のアクティブキュー１０４の代わりに、複数のエンドポイント（例えば、ＥＰ１、ＥＰ２、…、ＥＰｎ）も含む。スケジューリングキュー１０４がバックアップキューとしての役目を果たす一方、スケジューリングキュー２０６がアクティブキューとなるように、ホストコントローラ１０２は、スケジューリングキュー２０６に格納された複数のエンドポイント（例えば、ＥＰ１、ＥＰ２、…、ＥＰｎ、ＥＰｎ＋１）をソートし、スケジューリングキュー１０４からスケジューリングキュー２０６に切り替える。その後、他の新たなエンドポイントが受信された場合、そのエンドポイントはスケジューリングキュー１０４に格納される。
【００２４】
いくつかの実施形態においては、図３に示されるように、スケジューリングキュー１０４及びスケジューリングキュー２０６はホストコントローラ１０２にアクセス可能な同じメモリデバイスに含まれる。例えば、スケジューリングキュー１０４はトップダウンから処理されて、スケジューリングキュー２０６はボトムアップから処理される。特定の複数の実施形態においては、スケジューリングキュー１０４及びスケジューリングキュー２０６はホストコントローラ１０２にアクセス可能な異なる複数のメモリデバイスに含まれる。いくつかの実施形態においては、８０％以下の送信データユニットが複数の周期的なデータ転送のために割り当てられ、残りの送信データユニットが複数の非周期的なデータ転送（例えば、コントロールデータ転送、バルクデータ転送等）のために割り当てられる。特定の複数の実施形態においては送信データユニットのデータパケットは、複数の周期的なデータ転送のために最大３つのエンドポイントに割り当てられる。
【００２５】
一例においては、システム１００のための利用可能帯域幅はマイクロフレーム毎に１６のパケットである。ホストコントローラ１０２は、３つのアイソクロナスエンドポイント（例えば、ＥＰ  Ａ、ＥＰ  Ｂ、ＥＰ  Ｃ）のための複数のデータ転送を管理する。具体的には、例えば、構成されたエンドポイントコマンドの処理によって、コマンドプロセッサを通じて、ホストコントローラ１０２は３つのエンドポイントに必要な総帯域幅を計算する。必要な総帯域幅が利用可能帯域幅以下の場合、ホストコントローラ１０２が関連付けられた構成を受け入れる。そうでなければ、ホストコントローラ１０２がエラー信号を生成する。
【００２６】
表１は３つのアイソクロナスエンドポイントに関連付けられた複数のエンドポイント帯域幅を示す。表１に示されるように、３つのアイソクロナスエンドポイント、ＥＰ  Ａ、ＥＰ  Ｂ、及びＥＰ  Ｃに対応する最大エンドポイントサービスインターバル時間のペイロードは、それぞれ、８のパケット、１０のパケット、１２のパケットである。送信時間の複数のインターバルそれぞれに従って、これらの３つのエンドポイントは、それぞれ、マイクロフレーム毎に８のパケット、マイクロフレーム毎に４のパケット、及び、マイクロフレーム毎に４のパケットのエンドポイント帯域幅を有する。本構成のために必要とされる総帯域幅は、マイクロフレーム毎に１６のパケットであり、当該総帯域幅は、利用可能帯域幅と同じである。したがって、構成が受け入れられる。マイクロフレームにおける複数のデータパケット（例えば、１６のデータパケット）が、複数のエンドポイント帯域幅に従って、エンドポイント、ＥＰ  Ａ、ＥＰ  Ｂ、及びＥＰ  Ｃに割り当てられ得る。
【表１】
0006418417.tif 000002
【００２７】
図４は、３つのエンドポイントのための複数のデータ転送を示した例示的な図を示す。３つのエンドポイント（例えば、ＥＰ  Ａ、ＥＰ  Ｂ、及びＥＰ  Ｃ）からのデータが、複数のマイクロフレームを使用して周期的に転送される。図４に示されるように、４つのマイクロフレームは連続的に送信され、３つのエンドポイントの複数のペイロードは、４つのマイクロフレームの間で、送信されることを目的として、分割される。
【００２８】
最初に、第１のマイクロフレーム４０２における８のデータパケットが、エンドポイントＥＰ  Ａに割り当てられる。エンドポイントＥＰ  Ａのペイロード全体が第１のマイクロフレーム４０２により送信される。次に、第１のマイクロフレーム４０２における8のデータパケットが、エンドポイントＥＰ  Ｂに割り当てられる。第１のマイクロフレーム４０２において、優先度の低いエンドポイントＥＰ  Ｃに割り当てられるデータパケットはこれ以上にはない。
【００２９】
第２のマイクロフレーム４０４が、第１のマイクロフレーム４０２に続く。図４に示されるように、最初に、第２のマイクロフレーム４０４における８のデータパケットが、エンドポイントＥＰ  Ａのペイロード全体を送信すべく、エンドポイントＥＰ  Ａに割り当てられる。その後、第１のマイクロフレーム４０２により送信されていない残りのペイロードについて、第２のマイクロフレーム４０４における２つのデータパケットが、エンドポイントＥＰ  Ｂに割り当てられる。第２のマイクロフレーム４０４における残りの６のデータパケットが、エンドポイントＥＰ  Ｃに割り当てられる。
【００３０】
同様に、第２のマイクロフレーム４０４に続く第３のマイクロフレーム４０６が、第１のマイクロフレーム４０２に割り当てられる。第４のマイクロフレーム４０８が、第３のマイクロフレーム４０６により送信されていないエンドポイントＥＰ  Ｂの残りのペイロード（例えば、２のデータパケット）、及び、第２のマイクロフレーム４０４により送信されていないエンドポイントＥＰ  Ｃの残りのペイロード（例えば、６のデータパケット）に使用される。
【００３１】
図５は、３つのエンドポイントのためのデータ転送を示した他の例示的な図を示す。図５に示されるように、３つのエンドポイント（例えば、ＥＰ  Ａ、ＥＰ  Ｂ、及びＥＰ  Ｃ）からのデータは、複数のマイクロフレームを使用して周期的に転送される。具体的には、複数の周期的なデータ転送のために使用される１６のデータパケットに加えて、特定の複数の状況下において、複数の周期的なデータ転送のために、マイクロフレームにおけるより多くの複数のデータパケットが予約され得る。
【００３２】
図５に示されるように、最初に、第１のマイクロフレーム５０２における８のデータパケットがエンドポイントＥＰ  Ａに割り当てられる。エンドポイントＥＰ  Ａのペイロード全体が第１のマイクロフレーム５０２により送信される。その後、第１のマイクロフレーム５０２における８のデータパケットがエンドポイントＥＰ  Ｂに割り当てられる。第１のマイクロフレーム５０２において、優先度の低いエンドポイントＥＰ  Ｃに割り当てられるデータパケットはこれ以上にはない。
【００３３】
第２のマイクロフレーム５０４が、第１のマイクロフレーム５０２に続く。図５に示されるように、最初に、第２のマイクロフレーム５０４における８のデータパケットは、エンドポイントＥＰ  Ａのペイロード全体を送信することを目的として、エンドポイントＥＰ  Ａに割り当てられる。次に、第１のマイクロフレーム５０２により送信されていない残りのペイロードについて、第２のマイクロフレーム５０４における２つのデータパケットが、エンドポイントＥＰ  Ｂに割り当てられる。第２のマイクロフレーム４０４における残りの６のデータパケットに加えて、更に２つの複数のデータパケットがエンドポイントＥＰ  Ｃに割り当てられ、その結果、エンドポイントＥＰ  Ｃのペイロードの８のデータパケットが第２のマイクロフレーム５０４により送信されることができる。
【００３４】
同様に、第２のマイクロフレーム５０４に続く第３のマイクロフレーム５０６が第１のマイクロフレーム５０２に割り当てられる。第４のマイクロフレーム５０８が、第３のマイクロフレーム５０６により送信されていないエンドポイントＥＰ  Ｂの残りのペイロード（例えば、２のデータパケット）、及び、第２のマイクロフレーム５０４により送信されないエンドポイントＥＰ  Ｃの残りのペイロード（例えば、４のデータパケット）に使用される。エンドポイントＥＰ  Ｃのペイロード、つまり１２のデータパケットを８のパケット部分と４のパケット部分とに分割することは、ＵＳＢ３仕様の複数の要求に準拠している。例えば、エンドポイントの部分的なペイロードにおける複数のデータパケットが、（例えば、１、２、４、８、等）２の累乗に対応する。
【００３５】
いくつかの実施形態においては、１５マイクロ秒に対応する７のデータパケットが、オーバーフローバス時間として予約される。例えば、複数の周期的なデータ転送についての利用可能帯域幅が最大約１１０マイクロ秒（あるいは、５０のデータパケット）となる。特定の複数の状況下において、利用可能帯域幅に加えて、オーバーフローバス時間として予約済みの７のデータパケットが、複数の周期的なデータ転送に使用され得る。同様に、予約済みの複数のデータパケットが、複数の非周期的なデータ転送（例えば、バルクデータ転送、コントロールデータ転送）のためにも使用されることができる。
【００３６】
図６はデータ転送のスケジューリングのための複数の異なる事例を示した例示的な図を示す。図６に示されるように、（例えば、５０のデータパケットに対応する）帯域幅Ｔ１が、各マイクロフレームの複数の周期的な転送のためのバジェットにセットされる。複数のデータパケット（例えば、７のデータパケット）が、特定の複数の状況下において、複数の周期的な転送に使用されることができるオーバーフローバス時間として予約される。
【００３７】
具体的には、事例ａでは、複数のデータパケットが複数のエンドポイントに割り当てられる。バジェットＴ１の下で、残りの複数のデータパケットは、追加的なエンドポイントのペイロード６０２の送信には十分ではない。しかし、ペイロード６０２の送信を目的として、残りの複数のデータパケットとともに、予約済みの複数のデータパケットが使用されることができる。たとえ、予約済みの複数のデータパケットの残りが他のエンドポイントのペイロード６０４の送信に十分であり得るとしても、既にバジェットＴ１は超過されているため、そのような送信はスケジュールされない。
【００３８】
事例ｂでは、予約済みの複数のデータパケットがエンドポイントのペイロード６０６の送信のために使用される。確保済みの複数のデータパケットの残りは、複数の周期的なデータ転送に使用されず、複数の非周期的なデータ転送に使用されることがあり得る。事例ｃでは、複数のデータパケットが複数のエンドポイントに割り当てられた後、予約済みの複数のデータパケットと組み合わせたバジェットＴ１の下で、残りの複数のデータパケットは、追加的なエンドポイントのペイロードの送信には十分ではない。追加的なエンドポイントのペイロードは、２つの部分に分割され得て、第１の部分６０８（例えば、８のデータパケット）は現在のマイクロフレームにより送信され、第２の部分６１０は次のマイクロフレームによる送信のためにスケジュールされる。
【００３９】
図７は複数のＵＳＢデータ転送を管理するための例示的なフロー図を示す。７０２において、複数のエンドポイントが複数のデータ転送のために受信される。エンドポイントはＵＳＢデバイスの一部に対応し、エンドポイント帯域幅に関連付けられる。７０４において、複数のエンドポイントが少なくとも部分的に複数のエンドポイント帯域幅に基づいた順序でソートされる。７０６において、複数のデータパケットを含む送信データユニットが生成される。複数のデータパケットは、少なくとも部分的に当該順序に基づいて複数のエンドポイントに割り当てられる。  ７０８において、第１の送信データユニットが送信される。
【００４０】
記載された本説明は発明を開示し、発明を実施するための最良の形態を含み、当業者に発明を行い、使用をすることを可能とする例を使用している。特許可能な発明の範囲は、当業者が想到する他の複数の実施例を含み得る。しかし、本明細書で説明された複数の方法及び複数のシステムの実施をするように構成されたファームウェア、又は適切に設計されたハードウェアのような、他の複数の実装も用いられ得る。例えば、本明細書で説明された複数のシステムおよび複数の方法は、コプロセッサ、又はハードウェアアクセラレータとして、独立した処理エンジンで実装され得る。さらに他の例として、本明細書で説明された複数のシステム及び複数の方法は、本明細書で説明された方法に係る処理、及び本明細書で説明されたシステムの実装のために用いる、１または複数のプロセッサによって実行される命令（例えば、ソフトウェア）を含む、コンピュータのストレージ機構を有する多くの異なるタイプのコンピュータに可読な媒体（例えば、ＣＤ−ＲＯＭ、ディスク、ＲＡＭ、フラッシュメモリ、コンピュータのハードドライブ等）上で提供され得る。
【図１】
0006418417.tif 000003
【図２】
0006418417.tif 000004
【図３】
0006418417.tif 000005
【図４】
0006418417.tif 000006
【図５】
0006418417.tif 000007
【図６】
0006418417.tif 000008
【図７】
0006418417.tif 000009