(57)【特許請求の範囲】
【請求項１】
外部装置と接続するためのインタフェースであって、各々が、第１のバスコントローラにより制御される第１バスの端子と、第２のバスコントローラにより制御され前記第１バスとは独立した第２バスの端子と、を含む複数のインタフェースを有する接続手段と、
前記複数のインタフェースの１つに外部装置が接続された場合、該外部装置が要求する通信条件を取得する取得手段と、
前記第１バスおよび前記第２バスのうち何れか一方を介して前記外部装置との通信を確立するよう、前記第１のバスコントローラおよび前記第２のバスコントローラを制御する制御手段と、
を有し、
前記第１バスを介する通信は、前記第２バスを介する通信よりも通信速度が速く、
前記取得手段により取得した通信条件がリアルタイム転送を要求するための情報を含む場合、前記制御手段は、前記外部装置との通信が前記第１バスを占有するよう前記第１のバスコントローラを制御する
ことを特徴とする通信制御装置。
【請求項２】
前記取得手段により取得した通信条件がリアルタイム転送を要求するための情報を含むか否かを判断する判断手段を更に有し、
前記判断手段は、前記取得手段により取得した通信条件がアイソクロナス転送に関する情報を含む場合、前記取得手段により取得した通信条件がリアルタイム転送を要求するための情報を含むと判断する
ことを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記取得手段は、前記第１バスを介して接続された前記外部装置から、該外部装置が要求する通信条件を取得する
ことを特徴とする請求項１又は２に記載の通信制御装置。
【請求項４】
前記取得手段により取得した通信条件がリアルタイム転送を要求するための情報を含む外部装置との通信が前記第１バスを介して確立されている状態で、他の外部装置が前記複数のインタフェースの何れかに接続された場合、前記制御手段は、前記他の外部装置との通信を前記第２バスを介して確立するよう制御する
ことを特徴とする請求項１乃至３の何れか１項に記載の通信制御装置。
【請求項５】
前記制御手段は、前記取得手段により取得した通信条件がリアルタイム転送を要求するための情報を含む外部装置との通信を前記第１バスを介して確立している間、前記複数のインタフェースの何れかに接続された他の外部装置からの接続要求に応答しないよう前記第１のバスコントローラを制御する
ことを特徴とする請求項１乃至４の何れか１項に記載の通信制御装置。
【請求項６】
前記通信条件がリアルタイム転送を要求するための情報を含まない第１の外部装置との通信が前記第１バスを介して確立している状態で、前記通信条件がリアルタイム転送を要求するための情報を含む第２の外部装置が前記複数のインタフェースの何れかに接続された場合、前記制御手段は、前記第１の外部装置との通信を切断し、前記第２の外部装置との通信を前記第１バスを介して確立するよう制御する
ことを特徴とする請求項１乃至５の何れか１項に記載の通信制御装置。
【請求項７】
前記通信条件がリアルタイム転送を要求するための情報を含まない第１の外部装置との通信が前記第１バスを介して確立している状態で、前記通信条件がリアルタイム転送を要求するための情報を含む第２の外部装置が前記複数のインタフェースの何れかに接続された場合、前記制御手段は、前記第１の外部装置との通信を前記第２バスを介して確立しなおし、前記第２の外部装置との通信を前記第１バスを介して確立するよう制御する
ことを特徴とする請求項１乃至５の何れか１項に記載の通信制御装置。
【請求項８】
前記通信条件がリアルタイム転送を要求するための情報を含む場合、前記通信条件に含まれるデータ転送パラメータに基づいて前記外部装置の通信速度を算出する算出手段を更に有し、
前記算出手段により算出された通信速度が所定の閾値を超えない第１の外部装置との通信が前記第１バスを介して確立している状態で、該第１の外部装置とは異なる第２の外部装置が前記複数のインタフェースの何れかに接続され該第２の外部装置との通信が前記第１バスを介して確立され、かつ、該第２の外部装置に対して前記算出手段により算出された通信速度が前記所定の閾値を超える場合、前記制御手段は、前記第１の外部装置との通信が前記第１バスを占有しないよう、前記第１の外部装置との通信を前記第２バスを介して確立しなおすよう制御する
ことを特徴とする請求項１乃至５の何れか１項に記載の通信制御装置。
【請求項９】
前記所定の閾値は、前記第２バスの最大通信速度以下の値であることを特徴とする請求項８に記載の通信制御装置。
【請求項１０】
前記インタフェースは、ユニバーサル・シリアル・バス（ＵＳＢ）３．０仕様準拠の接続コネクタであり、
前記第１のバスコントローラは、スーパースピード（ＳＳ）コントローラであり、
前記第２のバスコントローラは、非スーパースピード（ＮＳＳ）コントローラである
ことを特徴とする請求項１乃至９の何れか１項に記載の通信制御装置。
【請求項１１】
外部装置と接続するためのインタフェースであって、各々が、第１のバスコントローラにより制御される第１バスの端子と、第２のバスコントローラにより制御され前記第１バスとは独立した第２バスの端子と、を含む複数のインタフェースを有する接続手段を有する通信制御装置の制御方法であって、
前記複数のインタフェースの１つに外部装置が接続された場合、該外部装置が要求する通信条件を取得する取得工程と、
前記第１バスおよび前記第２バスのうち何れか一方を介して前記外部装置との通信を確立するよう、前記第１のバスコントローラおよび前記第２のバスコントローラを制御する制御工程と、
を有し、
前記第１バスを介する通信は、前記第２バスを介する通信よりも通信速度が速く、
前記取得工程で取得された通信条件がリアルタイム転送を要求するための情報を含む場合、前記制御工程では、前記外部装置との通信が前記第１バスを占有するよう前記第１のバスコントローラを制御する
ことを特徴とする通信制御装置の制御方法。
【請求項１２】
コンピュータを、請求項１乃至１０の何れか１項に記載の通信制御装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御に関し、特に、独立した複数のデータバスを有するコネクタを介して周辺デバイスを接続する場合の通信制御技術に関するものである。
【背景技術】
【０００２】
近年、次世代高速インタフェースとして最高５Ｇｂｐｓのデータ転送を実現するユニバーサル・シリアル・バス（ＵＳＢ）３．０が開発されている。ＵＳＢ３．０は、非圧縮のリアルタイムデータを転送するＨＤＭＩ（High Definition Multimedia Interface）に変わるインタフェースとしても注目されている。
【０００３】
一般的にＵＳＢのホスト装置のバスアーキテクチャは、１つのホストコントローラから複数のコネクタに分岐する構成をとっている。そして、複数のデバイスが接続されている場合は、ホストコントローラが５Ｇｂｐｓの帯域を接続された複数のデバイスに割り振り帯域を共有することで、当該複数のデバイスそれぞれへのデータ転送を実現している。そのため、複数のデバイスが同時にデータ転送をしている場合、各デバイスに割り振られるデータ転送帯域は少なくなる。そのため、リアルタイム性のあるデータ転送が要求されるデバイス（モニタ等）がデータ転送を行っている際に、別のデバイス（ストレージ等）がデータ転送を開始するとデータ転送に問題が発生し得る。具体的には、モニタ側のデータ転送の帯域が不足し、データの欠落によるモニタ表示の乱れが発生することがある。
【０００４】
そこで、例えば特許文献１では、リアルタイム転送が要求されるデータは即時に送信し、リアルタイム転送が要求されないデータは後で確実に送信することで、リアルタイム転送が要求されるデータ転送の欠落を防ぐ技術が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１９７４１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来技術によればインタフェースのデータ転送路の帯域がリアルタイム転送の要求されるデータ転送の帯域に対して余裕がある場合は適用可能であるが、帯域幅に余裕がない場合、リアルタイム転送が要求されないデータ転送が困難になる。例えば、インタフェースのデータ転送路の全帯域が５Ｇｂｐｓに対し、モニタ等のデバイスが５Ｇｂｐｓのデータ転送帯域を必要とする場合、別のデバイス（ストレージ等）がデータ転送を行うことが出来ないことになる。
【０００７】
本発明は上述の問題点に鑑みなされたものであり、独立した複数のデータバスを有するコネクタを介して周辺デバイスを接続する場合のデータ転送をより好適に実行可能とする通信制御技術に関するものである。
【課題を解決するための手段】
【０００８】
上述の１以上の問題点を解決するため、本発明の通信制御装置は以下の構成を備える。すなわち、通信制御装置において、外部装置と接続するためのインタフェースであって、各々が、第１のバスコントローラにより制御される第１バスの端子と、第２のバスコントローラにより制御され前記第１バスとは独立した第２バスの端子と、を含む複数のインタフェースを有する接続手段と、前記複数のインタフェースの１つに外部装置が接続された場合、該外部装置が要求する通信条件を取得する取得手段と、前記第１バスおよび前記第２バスのうち何れか一方を介して前記外部装置との通信を確立するよう、前記第１のバスコントローラおよび前記第２のバスコントローラを制御する制御手段と、を有し、前記第１バスを介する通信は、前記第２バスを介する通信よりも通信速度が速く、前記取得手段により取得した通信条件がリアルタイム転送を要求するための情報を含む場合、前記制御手段は、前記外部装置との通信が前記第１バスを占有するよう前記第１のバスコントローラを制御する。
【発明の効果】
【０００９】
本発明によれば、独立した複数のデータバスを有するコネクタを介して周辺デバイスを接続する場合のデータ転送をより好適に実行可能とする通信制御技術を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】ＵＳＢ３．０のバスアーキテクチャを説明する図である。
【図２】ＵＳＢ３．０のケーブルにおける信号線を示す図である。
【図３】ＵＳＢ３．０におけるペリフェラルデバイスの状態遷移図である。
【図４】第１実施形態に係るネゴシエーションを示す図である。
【図５】第１実施形態に係る通信制御装置のブロック図である。
【図６】接続シーケンスを示す図である（ＳＳモード接続）。
【図７】第１実施形態に係る通信制御装置の動作フローチャートである。
【図８】接続シーケンスを示す図である（ＮＳＳモード接続）。
【図９】変形例に係る通信制御装置の動作フローチャートである。
【図１０】アイソクロナス転送における転送パラメータを説明する図である。
【発明を実施するための形態】
【００１１】
以下に、図面を参照して、この発明の好適な実施の形態を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
【００１２】
（第１実施形態）
本発明に係る通信制御装置の第１実施形態として、ユニバーサル・シリアル・バス（ＵＳＢ）３．０仕様準拠のホストコントローラを有する通信制御装置５００を例に挙げて以下に説明する。なお、以下の説明では主に本発明に特有の部分について説明する。なお、ＵＳＢ３．０仕様に関する一般的な詳細動作については、ＵＳＢ３．０仕様書（非特許文献１）を参照することにより理解されるであろう。
【００１３】
＜ＵＳＢ３．０のアーキテクチャ＞
ＵＳＢ３．０のバスアーキテクチャについて説明する。図１はＵＳＢ３．０のバスアーキテクチャを説明する図である。
【００１４】
ホスト装置１００は、スーパースピード（ＳＳ：SuperSpeed）モード接続で使用されるホスト・コントローラ１０２（以下、ＳＳ１０２と呼ぶ）（第１のバスコントローラ）を備えている。また、非スーパースピード（ＮＳＳ：Non-SuperSpeed）モード接続で使用されるホスト・コントローラ１０４（以下、ＮＳＳ１０４と呼ぶ）（第２のバスコントローラ）を備えている。ＮＳＳ１０４は、ＵＳＢ２．０仕様で規定されるＨｉｇｈ−Ｓｐｅｅｄ（ＨＳ）、Ｆｕｌｌ−Ｓｐｅｅｄ（ＦＳ）、Ｌｏｗ−Ｓｐｅｅｄ（ＬＳ）の各モードでのデータ転送を制御する。そして、ＳＳ１０２は、ＵＳＢ３．０仕様で新たに規定されたＳｕｐｅｒ−Ｓｐｅｅｄ（ＳＳ）モードでのデータ転送を制御する。なお、ＳＳ１０２およびＮＳＳ１０４の各コントローラ内には後述するリンク制御部が内蔵されている。また、バス１０６はＳＳ専用バスであり、バス１０８はＮＳＳ専用バスである。なお、
【００１５】
デバイス装置１２０は、ＵＳＢ３．０ペリフェラルデバイスであり、ＳＳ（SuperSpeed）モード接続で使用されるデバイス・ファンクション・コントローラ１２２（以下、ＳＳＦ１０２と呼ぶ）を備えている。また、ＮＳＳ（Non-SuperSpeed）モード接続で使用されるデバイス・ファンクション・コントローラ１２４（以下、ＮＳＳＦ１２４と呼ぶ）を備えている。上述の各ホスト・コントローラと同様に、ＮＳＳＦ１２４は、ＵＳＢ２．０仕様で規定される各モードでのデータ転送を制御し、ＳＳＦ１２２は、Ｓｕｐｅｒ−Ｓｐｅｅｄ（ＳＳ）モードでのデータ転送を制御する。なお、ＳＳＦ１２２およびＮＳＳＦ１２４の各コントローラ内には後述するリンク制御部が内蔵されている。なお、ホスト・コントローラおよびデバイス・ファンクション・コントローラを総称してバスコントローラと呼ぶことにする。
【００１６】
ケーブル１２６はＵＳＢ３．０のケーブルであり、ケーブル１２６内には、ＳＳモード用のデータ信号線とＮＳＳモード用のデータ信号線が独立して存在している。上述したように、ホスト装置１００はＳＳ用のバス１０６（第１バス）とＮＳＳ用のバス１０８（第２バス）を独立して持っている。そのため、例えば、ホスト装置１００は、コネクタ＃３に接続された周辺デバイスとバス１０６でデータ転送中に、接続コネクタの１つであるコネクタ＃１に接続された他の周辺デバイスとバス１０８でデータ転送することが可能である。
【００１７】
また、ＳＳ１０２、ＮＳＳ１０４の各コントローラはそれぞれ複数のコネクタに接続しており、各コントローラに対し複数の周辺デバイスを接続しデータ転送を行うことも可能である。ただし、その場合、接続されたホスト・コントローラがもつ最大データ転送帯域（ＳＳ：５Ｇｂｐｓ、ＮＳＳ：４８０Ｍｂｐｓ）を当該ホスト・コントローラに接続した複数の周辺デバイスで共有することになる。
【００１８】
図２はＵＳＢ３．０のケーブルにおける信号線を示す図である。２００はＵＳＢ３．０ホスト側コネクタを示し、ホスト装置１００のコネクタ＃１〜＃３のいずれかを示す。２０２はＵＳＢ３．０ペリフェラルデバイス側コネクタを示し、デバイス装置１２０のコネクタを示す。
【００１９】
信号線ペア２０６（Ｄ＋、Ｄ−）はＮＳＳ（ＵＳＢ２．０）モード接続で使用する信号線ペアである。つまり、ＮＳＳモードでは、信号線ペア２０６を使い半二重通信が行われる。一方、信号線ペア２０８（ＳＳＴＸ＋、ＳＳＴＸ−）はＳＳモード接続においてホスト装置からデバイス装置の転送に使用する信号線ペアである。また、信号線ペア２１０（ＳＳＲＸ＋、ＳＳＲＸ−）はＳＳモード接続においてデバイス装置からホスト装置の転送に使用する信号線ペアである。つまり、ＳＳモードでは、信号線ペア２０８および信号線ペア２１０を使い全二重通信が行われる。また、信号線２０４（ＶＢＵＳ）、信号線２１２（ＧＮＤ）はＮＳＳモード接続、ＳＳモード接続の双方で使用される信号線である。
【００２０】
図３はＵＳＢ３．０におけるペリフェラルデバイスの状態遷移図である。つまり、デバイス装置１２０が有する状態（ステート）および各状態間の遷移を示している。
【００２１】
状態３００は、信号線２０４（ＶＢＵＳ）の信号が無い状態、すなわちデバイス装置１２０がホスト装置１００と物理的に接続されていない状態を示している。
【００２２】
状態３０２は、デバイス装置１２０のＳＳ信号線がＲｘ．ＤｅｔｅｃｔまたはＰｏｌｌｉｎｇの状態であることを示す。ここで、Ｒｘ．Ｄｅｔｅｃｔとは、ＵＳＢ３．０ホスト側のＳＳリンクと物理的（電気的）に接続されているかを検出する状態である。Ｐｏｌｌｉｎｇとはリンクトレーニングを行っている状態を示す。具体的には、ホスト装置１００とデバイス装置１２０のリンク間でハンドシェイクを行い、通信可能か否かを検出する状態である。
【００２３】
状態３０４は、ホスト装置１００とデバイス装置１２０との間でＳＳ接続が確立された状態を示す。状態３０６は、ホスト装置１００とデバイス装置１２０との間でＮＳＳ（ＵＳＢ２．０）モード接続が確立され、ＳＳリンクがＲｘ．ＤｅｔｅｃｔまたはＰｏｌｌｉｎｇの状態であることを示す。状態３０８は、ホスト装置１００とデバイス装置１２０との間でＮＳＳ（ＵＳＢ２．０）モード接続が確立され、ＳＳリンクが無効になっている状態を示す。
【００２４】
次に状態遷移の条件について説明する。遷移３１０は、ＶＢＵＳが有効になった場合、すなわち、ＵＳＢケーブルによりホスト装置１００とデバイス装置１２０とが接続された場合の遷移を示す。遷移３１２は、ＳＳのリンクがＰｏｌｌｉｎｇからＵ０へ遷移した場合、すなわち、ＳＳリンクでハンドシェイクをし、リンクがアクティブになった場合の遷移を示す。
【００２５】
遷移３１４、遷移３１６、遷移３１８はそれぞれ、Ｒｘ．Ｄｅｔｅｃｔまたはリンクトレーニングがタイムアウトになった場合の遷移を示す。遷移３２０は、ＮＳＳ（ＵＳＢ２．０）リセット信号を受信した場合の遷移を示す。遷移３２２はＳＳリンクがＰｏｌｌｉｎｇからＵ０へ変化した場合、すなわち、ＳＳリンクでハンドシェイクをし、リンクがアクティブになった場合の遷移を示す。
【００２６】
図３から理解されるように、一般的には、ＵＳＢ３．０に対応したホスト装置のコネクタに、ＵＳＢ３．０に対応したデバイス装置を接続した場合、ＳＳバス１０６を介した接続（ＳＳモード接続）が行われる。そして、ＵＳＢ３．０ホスト装置のコネクタに、ＵＳＢ２．０（あるいはＵＳＢ１．１）デバイス装置が接続された場合、ＮＳＳバス１０８を介した接続（ＮＳＳモード接続）が行われる。
【００２７】
図４は、ＵＳＢのネゴシエーションを説明する図である。ペリフェラルデバイスをホストのＵＳＢコネクタに挿入すると、ステップＳ４０２のＳＳ接続シーケンスにおいて、ホストとペリフェラルデバイスは図３で説明したステートマシーンに従ってリンク間でハンドシェイクを行う。そして、接続可能状態（状態３０４もしくは状態３０８）に遷移する。なお、ステップＳ４０２の詳細シーケンスについては図６で後述する。
【００２８】
ステップＳ４０４において、ホストは、ペリフェラルデバイスの属性を取得するため、Get_Descriptor要求を送信する。ステップＳ４０６において、ペリフェラルデバイスは、ＵＳＢ３．０仕様書で定められた属性情報（Get_Descriptor情報）をホストに通知する。当該属性情報にはペリフェラルデバイスの機能を示す様々な情報が含まれる。ステップＳ４０８において、ホストは、ＵＳＢクラスの情報やエンドポイント等の属性情報を取得し、ＲＡＭ５１４に保持する。
【００２９】
＜装置構成＞
図５は、第１実施形態に係る通信制御装置５００のブロック図である。通信制御装置５００は、ＳＳモード接続で使用されるホスト・コントローラ５０２（以下、ＳＳ５０２と呼ぶ）、ＮＳＳモード接続で使用されるホスト・コントローラ５０４（以下、ＮＳＳ５０４と呼ぶ）を備えている。また、コネクタ５２２〜コネクタ５２６を備える。コントローラはそれぞれＳＳモード専用データバス５１０、ＮＳＳ（ＵＳＢ２．０）モード専用データバス５０８に接続されている。
【００３０】
転送方式判定部５１８は前記属性情報からデバイス側とのデータ転送方式を判定する。接続制御部５２０はＳＳモード、ＮＳＳモードの各モードでの接続を制御する。転送速度算出部５３６は、コネクタ５２２〜コネクタ５２６に接続されたデバイスとのデータ転送において、前述した属性情報から転送速度を後述する算出方法で算出する。
【００３１】
記録装置インタフェース５２８は、例えばＡＴＡインタフェース等の外部記録装置と接続するためのインタフェースである。例えば、コネクタ５２２を介してデバイス５３４から読み出したデータをハードディスクドライブ（ＨＤＤ）などの記録媒体５３０へ記録するためのものである。
【００３２】
ＲＯＭ５１６は、ＣＰＵ５１２が実行する各種の制御プログラム及び各種パラメータを記憶する。ＲＡＭ５１４は、ＣＰＵ５１２のプログラム領域及びワーク領域として使用される。接続されたデバイス（周辺装置）の属性情報が取得された場合、ＲＡＭ５１４に保持される。ＣＰＵ５１２は、制御プログラムを実行することにより、ＣＰＵバス５０６を介して以上の各部を制御し後述の処理を実行する。なお、ホスト５００の制御は１つのハードウェアが行ってもよいし、複数のハードウェアが処理を分担することで、装置全体の制御を行ってもよい。
【００３３】
以下の説明においては、コネクタ５２６には、ＵＳＢ３．０に対応し、リアルタイム性のあるデータ転送を要求するデバイス（モニタ等）であるデバイス５３２が接続されるものとする。一方、コネクタ５２２には、ＵＳＢ３．０に対応し、リアルタイム性のあるデータ転送を要求しないデバイス（ハードディスク等）であるデバイス５３４が接続されるものとする。
【００３４】
＜ＳＳ帯域の占有方法について＞
以下では、２台のＳＳモード対応のデバイスを接続する際に、最初に接続したデバイスがリアルタイム転送を必要とするデバイスか否かの２つのユースケースに分けて説明する。なお、最初に接続するデバイスについては、ＵＳＢ３．０規格に従った接続処理を行う。つまり、ＳＳモード接続に対応したデバイスについてはＳＳモードで接続する。
【００３５】
＜ケース１：まず、リアルタイム転送を必要とするデバイスをＳＳモードで接続し、その後、ＳＳモード対応の他のデバイスを追加で接続する場合。＞
図６は、ＳＳモードで接続する際のシーケンスを説明する図であり、図４のステップＳ４０２に相当する部分を詳細に記載したものである。
【００３６】
ステップＳ６００では、ホスト５００は、デバイス５３２がコネクタを介して接続されると、ＶＢＵＳをＯＮにする。ステップＳ６０２では、デバイス５３２はＶＢＵＳ ＯＮを検出し、ステップＳ６０４では、デバイス５３２は自身のＳＳリンクがＲｅａｄｙになるまで待つ。
【００３７】
ステップＳ６０６では、デバイス５３２は、自身のＳＳのリンクがＲｅａｄｙになると、その旨をホスト５００に通知する。ステップＳ６０８では、ホスト５００は、デバイス５３２からの通知を受けて、接続コネクタ内の端子を介してデバイス５３２とＳＳのリンクが電気的に接続したことを検出する。ステップＳ６１０では、ホスト５００とデバイス５３２の双方で、ＳＳリンク間でリンクの初期化処理を行い、ステップＳ６１２では、ＳＳモード接続が確立する。
【００３８】
図７は、ケース１におけるＳＳ帯域の占有方法を説明するフローチャートである。
【００３９】
ステップＳ７００において、ホスト５００とデバイス５３２は、図４および図６を参照して説明したネゴシエーションを行う。ＳＳモードで接続した後、ホスト５００は図４で説明したようにGet_Descriptor要求でデバイス５３２の属性情報を取得し、ＲＡＭ５１４に保持する。この属性情報は、どのような方式で通信するか、具体的にはＳＳモードで通信するかＮＳＳモードで通信するかを決定するための通信条件の一例である。
【００４０】
ステップＳ７０２において、ホスト５００は、Ｓ７００で接続されたデバイス５３２がリアルタイム転送を必要とするデバイスか否かを、保持したデバイス属性情報から判定する。リアルタイム転送を必要とするデバイスである場合（ＹＥＳ）の場合はステップＳ７０４に進み、リアルタイム転送を必要としないデバイスである場合（ＮＯ）はステップＳ７１２に進む。なお、ステップＳ７１２では、図９の処理が実行される。図９の処理については、ケース２の場合として後述する。
【００４１】
具体的には、例えば、Get_Descriptor要求により取得されたEndpoint Descriptorを利用することが出来る。その場合、Endpoint情報（bmAttributes）がアイソクロナス（0x05）である場合に、リアルタイム転送を必要とするデバイスとして判定する。
【００４２】
ケース１では、ステップＳ７００においてリアルタイム転送を要するデバイス５３２が接続されているので、ステップＳ７０２の判定処理ではＹＥＳとなり、ステップＳ７０４に進む。
【００４３】
ステップ７０４では、ホスト５００は転送速度算出部５３６の算出結果が所定の閾値を越えているか否かを判定する。閾値を超えている場合はステップＳ７０６に進み、超えていない場合はステップＳ７１２に進む。なお、ここでは当該所定の閾値をＵＳＢ２．０の最大転送速度（４８０Ｍｂｐｓ）とする。なお、実効速度など最大転送速度以下の値を所定の閾値として使用してもよい。
【００４４】
なお、例えば、データ転送速度の算出はGet_Descriptorで取得した以下の情報（データ転送パラメータ）を使用する。
【００４５】
SuperSpeed Endpoint Companion情報の
・bMaxBurst：最大バースト数
・bmAttributes（bit 1:0[Mult]）：エンドポイントがサポートする１サービス内の最大バースト数（Mult+1）
Standerd Endpoint Descriptor情報の
・bMaxPacketSize：最大パケットサイズ
・bInterval：データ転送のためにエンドポイントが処理される時間（125μｓ単位。2(bInterval-1)）
【００４６】
ここでは、デバイス５３２から取得した各情報が
・bMaxBurst：16
・bmAttributes(Mult)：2
・bMaxPacketSize：1024
・bInterval：1
である場合、転送速度算出パラメータは以下のとおりになる。
１パケットの最大サイズ（ＭＰＳ）：bMaxPacketSize＝１０２４バイト
１バースト内の最大パケット数（ＢＭＰＮ）：bMaxBurst＝１６パケット
１サービス内の最大バースト数（ＭＢＮ）：bmAttributes(Mult+1)＝３バースト
インターバル期間（ＩＰ）：１
１サービスインターバル（ＳＩ）：１２５μｓ
【００４７】
図１０は、各パラメータ間の関係を説明する図である。なお、ＳＩあたりの転送速度（ＴＳＳＩ）は以下の式１で求められる。
【００４８】
ＴＳＳＩ＝ＭＰＳ×ＢＭＰＮ×ＭＢＮ    （式１）
上記パラメータより、ＴＳＳＩは、４９１５２バイト／１２５μｓになる。よって、１秒あたりの転送速度（ＴＳ）は以下の式２で求められる。
【００４９】
ＴＳ＝ＭＰＬ／（１／ＳＩＩＰ）    （式２）
上記パラメータより、ここでは、ＴＳは３Ｇｂｐｓになる。よって、デバイス５３２の転送速度は閾値を超えているので、ステップＳ７０６に進む。
【００５０】
ステップＳ７０６において、ホスト５００は、他のデバイスが接続されたか判定する。他のデバイスが接続された（ＹＥＳ）場合は、ステップＳ７０８に進み、接続されていない（ＮＯ）の場合、ステップＳ７１０に進む。ステップＳ７１０では、現在接続されている全てのデバイスとのケーブル接続が切断されたかを判定する。ＹＥＳの場合は接続処理を終了する。ＮＯの場合はＳ７０６に戻り、前述した処理を繰り返す。
【００５１】
図８は、ステップＳ７０８の詳細シーケンスを示す図である。ここでは、デバイス５３４（リアルタイム性のあるデータ転送を要求しないデバイス）がコネクタ５２２に接続されたものとする。
【００５２】
ステップＳ８００では、ホスト５００は、デバイス５３４がコネクタを介して接続されると、ＶＢＵＳをＯＮにする。ステップＳ８０２では、デバイス５３４はＶＢＵＳ ＯＮを検出し、ステップＳ８０４では、デバイス５３４は自身のＳＳリンクがＲｅａｄｙになるまで待つ。
【００５３】
ステップＳ８０６では、デバイス５３４は、自身のＳＳのリンクがＲｅａｄｙになると、その旨をホスト５００に通知する。ステップＳ８０８では、ホスト５００は、接続制御部５２０を制御して、デバイス５３４との接続をＮＳＳ（ＵＳＢ２．０）モード接続にするために、デバイス５３４のＳＳリンクとのハンドシェイク（接続要求）に応答しないようにＳＳ５０２を制御する。これにより、当該ハンドシェイクはタイムアウトすることになる。そのため、ステップＳ８１０では、デバイス５３４は、ホスト５００がＳＳに未対応であると判定し、ＮＳＳ（ＵＳＢ２．０）モードで接続するために、Ｄ＋をプルアップする。ステップＳ８１２では、ホスト５００は、Ｄ＋プルアップにより、ＮＳＳ（ＵＳＢ２．０）が電気的に接続したことを検出する。ステップＳ８１４では、ホスト５００とデバイス５３４の双方で、ＮＳＳリンク間でリンクの初期化処理を行い、ステップＳ８１６では、ＮＳＳモード接続が確立する。
【００５４】
以上のように、リアルタイム転送を要求し所定の転送速度を要求するデバイスとの間で既にＳＳモード接続が確立している間は、新たに接続されたデバイスは強制的にＮＳＳ（ＵＳＢ２．０）モードで接続する。これにより、既に接続されているリアルタイム転送を要求するデバイスはＳＳモード接続の帯域を占有することが出来る。
【００５５】
＜ケース２：まず、リアルタイム転送を必要としないデバイスをＳＳモードで接続し、その後、ＳＳモード対応の他のデバイスを追加で接続する場合。＞
図９は、ケース２におけるＳＳ帯域の占有方法を説明するフローチャートである。ここでは、デバイス５３４（リアルタイム性のあるデータ転送を要求しないデバイス）がコネクタ５２２に接続され、ホスト５００とＳＳモードで既に接続されているものとする。
【００５６】
ステップＳ９００では、ホスト５００は、現在接続されている全てのデバイスとのケーブル接続が切断されたかを判定する。ＹＥＳの場合は接続処理を終了する。ステップＳ９０２では、ホスト５００は、他のデバイスが新たに接続されたか判定する。ＮＯの場合、ステップＳ９００に戻り、ＹＥＳの場合は、ステップＳ９０４に進む。ここでは新たにデバイス５３２（リアルタイム性のあるデータ転送を要求するデバイス）が接続されたものとする。
【００５７】
ステップＳ９０４では、ホスト５００とデバイス５３２は、図４を参照して説明したネゴシエーションを行う。ＳＳモードで接続した後、ホスト５００は図４で説明したようにGet_Descriptor要求でデバイス５３２の属性情報を取得し、ＲＡＭ５１４に保持する。
【００５８】
ステップＳ９０６では、ホスト５００は、ステップＳ９０４で接続されたデバイス５３２がリアルタイム転送を必要とするデバイスか否かを、保持したデバイス属性情報から判定する。リアルタイム転送を必要とするデバイスである場合（ＹＥＳ）の場合はステップＳ９０８に進み、リアルタイム転送を必要としないデバイスである場合（ＮＯ）はステップＳ９００に戻る。
【００５９】
具体的には、例えば、Get_Descriptor要求により取得されたEndpoint Descriptorを利用することが出来る。その場合、Endpoint情報（bmAttributes）がアイソクロナス（0x05）である場合に、リアルタイム転送を必要とするデバイスとして判定する。
【００６０】
ケース２では、デバイス５３２はリアルタイム転送を要するデバイスであるので、ステップＳ９０６の判定処理ではＹＥＳとなり、ステップＳ９０８に進む。
【００６１】
ステップ９０８では、ホスト５００は、転送速度算出部５３６の算出結果が所定の閾値を越えているか否かを判定する。閾値を超えている場合はステップＳ９１０に進み、超えていない場合はステップＳ９００に戻る。なお、転送速度算出方法は前述したステップＳ７０４と同様の方法で実現可能である。ここでは、デバイス５３２の転送速度は閾値を超えているので、ステップＳ９１０に進む。
【００６２】
ステップ９１０では、ホスト５００は、ステップＳ９０４より前に接続されていたデバイス、即ちデバイス５３４に対するＶＢＵＳをＯＦＦにし、ケーブルをつなげたままＳＳモード接続を切断する。
【００６３】
ステップ９１２では、ホスト５００は、デバイス５３４とＮＳＳ（ＵＳＢ２．０）モードで再接続を行う。具体的な処理は、図８で説明したＳ８００〜Ｓ８１６と同様である。
【００６４】
ステップＳ９１４では、ホスト５００は、更なる別デバイスが接続されたか判定する。ＹＥＳの場合は、ステップＳ９１６に進み、ＮＯの場合はステップＳ９１８に進む。
【００６５】
ステップＳ９１８では現在接続されている全てのデバイスとのケーブル接続が切断されたかを判定する。ＹＥＳの場合は接続処理を終了する。ＮＯの場合はステップＳ９１４に戻る。ステップＳ９１６では、新規に接続された更なる別デバイスをＮＳＳ（ＵＳＢ２．０）モードで接続する。ステップＳ９１６の処理は図７で説明したＳ７０８と同様である。
【００６６】
以上のように、リアルタイム転送を要求しないデバイスが既にＳＳモードで接続されている状況において、リアルタイム転送を要求するデバイスを新たに接続する場合、既に接続しているデバイスをＮＳＳモードで接続しなおすよう制御する。これにより、新たに接続したデバイスはＳＳモード接続の帯域を占有することが出来る。
【００６７】
以上ケース１および２について説明したように、第１実施形態によれば、リアルタイム転送を要求するデバイスにＳＳモード接続の帯域を占有させることが出来、また、ＮＳＳモード接続の帯域を有効利用することが可能になる。
【００６８】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005743484.tif 000002
【図２】
0005743484.tif 000003
【図３】
0005743484.tif 000004
【図４】
0005743484.tif 000005
【図５】
0005743484.tif 000006
【図６】
0005743484.tif 000007
【図７】
0005743484.tif 000008
【図８】
0005743484.tif 000009
【図９】
0005743484.tif 000010
【図１０】
0005743484.tif 000011