(57)【要約】【課題】外部機器との間のＵＳＢ通信において、データの転送効率を向上させることができる情報処理装置を提供する。【解決手段】情報処理装置１は、外部機器との間で通信を行う通信手段３０，３１と、通信手段により外部機器との間で通信を行う際に、外部機器に対して一定の周期でパケットを送信する送信手段８０７と、通信手段による外部機器との間の通信が前記周期内で完了するかを判定する判定手段８０６と、判定手段により通信手段による外部機器との間の通信が周期内で完了すると判定された場合に、通信手段により外部機器との間で通信を行う制御手段８０２と、判定手段により通信手段による外部機器との間の通信が周期内で完了するかを判定する際の判定基準８０４を、通信手段による外部機器との間の通信環境に応じて変更する変更手段とを備える。【選択図】図２
2010178294.tif 000002
【特許請求の範囲】
【請求項１】
外部機器との間で通信を行う通信手段と、
該通信手段により前記外部機器との間で通信を行う際に、該外部機器に対して一定の周期でパケットを送信する送信手段と、
前記通信手段による前記外部機器との間の通信が前記周期内で完了するかを判定する判定手段と、
該判定手段により前記通信手段による前記外部機器との間の通信が前記周期内で完了すると判定された場合に、前記通信手段により前記外部機器との間で通信を行う制御手段と、
前記判定手段により前記通信手段による前記外部機器との間の通信が前記周期内で完了するかを判定する際の判定基準を、前記通信手段による前記外部機器との間の通信環境に応じて変更する変更手段と、を備える
ことを特徴とする情報処理装置。
【請求項２】
前記変更手段は、前記判定基準を、前記外部機器が接続されるハブの段数によって変更する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記変更手段は、前記判定基準を、前記送信手段により前記外部機器に送信したパケットに対する該外部機器の応答遅延時間によって変更する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記判定基準を、複数の前記外部機器と対応付けて複数保持する保持手段を備える
ことを特徴とする請求項１〜３のいずれか一項に記載の情報処理装置。
【請求項５】
前記通信手段は、ＵＳＢ規格に準拠した通信を行う、
ことを特徴とする請求項１〜４のいずれか一項に記載の情報処理装置。
【請求項６】
外部機器との間で通信を行う通信ステップと、
該通信ステップで前記外部機器との間で通信を行う際に、該外部機器に対して一定の周期でパケットを送信する送信ステップと、
前記通信ステップでの前記外部機器との間の通信が前記周期内で完了するかを判定する判定ステップと、
該判定ステップにおいて、前記通信ステップでの前記外部機器との間の通信が前記周期内で完了すると判定された場合に、前記通信ステップによる前記外部機器との間の通信を行う制御ステップと、
前記判定ステップにおいて、前記通信ステップでの前記外部機器との間の通信が前記周期内で完了するかを判定する際の判定基準を、前記通信ステップでの前記外部機器との間の通信環境に応じて変更する変更ステップと、を備える
ことを特徴とする情報処理装置の制御方法。
【請求項７】
外部機器との間で通信を行う通信ステップと、
該通信ステップで前記外部機器との間で通信を行う際に、該外部機器に対して一定の周期でパケットを送信する送信ステップと、
前記通信ステップでの前記外部機器との間の通信が前記周期内で完了するかを判定する判定ステップと、
該判定ステップにおいて、前記通信ステップでの前記外部機器との間の通信が前記周期内で完了すると判定された場合に、前記通信ステップによる前記外部機器との間の通信を行う制御ステップと、
前記判定ステップにおいて、前記通信ステップでの前記外部機器との間の通信が前記周期内で完了するかを判定する際の判定基準を、前記通信ステップでの前記外部機器との間の通信環境に応じて変更する変更ステップと、を情報処理装置のコンピュータに実行させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部機器との間でデータ通信を行う情報処理装置、情報処理装置の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
ＵＳＢ規格では、パーソナルコンピュータ等の情報処理装置と外部機器との間でデータ通信を行う際の通信の種類として、コントロール転送、バルク転送、インタラプト転送、アイソクロナス転送、という４種類の転送タイプが定義されている。
【０００３】
ＵＳＢのデータ転送において、ホストとしての情報処理装置は、外部機器との間でＳＯＦ（Start Of Frame）パケットと呼ばれるデータを周期的にやり取りすることで通信の同期を取り、各転送タイプの通信を実現している。
【０００４】
ＵＳＢには、ロースピード（ＬＳ）、フルスピード（ＦＳ）、及びハイスピード（ＨＳ）の３つの動作モードがある。ＬＳモード及びＦＳモードでは、１ｍｓ毎に、ＨＳモードでは、１２５μｓ毎にＳＯＦパケットを情報処理装置が外部機器に転送し、フレームと呼ばれる周期的な期間を管理する。
【０００５】
しかし、ＳＯＦパケットを周期的に転送することを保証するために、ＵＳＢのデータ転送においてはフレーム終端に転送禁止期間が生じてバス帯域を狭めてしまい、転送効率が低下してしまう問題がある。図９に、ハイスピード（ＨＳ）モードで転送を行う際のフレーム終端の転送禁止期間を示す。
【０００６】
そこで、第１モードが設定された場合は、ＳＯＦパケットをフレーム周期で転送しながらデータを転送し、第２モードが設定され且つ非周期転送を行う場合は、ＳＯＦパケットの周期転送を無効にして、非周期データを転送する技術が提案されている（特許文献１）。この提案では、非周期転送時のデータの転送効率を向上できるとしている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第３７２６８９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、上記特許文献１では、ＵＳＢ規格で定められたＳＯＦパケットの周期転送を無効にしているので、情報処理装置と外部機器との間の通信において同期がとれず、正しく通信できないおそれがある。
【０００９】
そこで、本発明は、外部機器との間の通信において、データの転送効率を向上させることができる情報処理装置、情報処理装置の制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明の情報処理装置は、外部機器との間で通信を行う通信手段と、該通信手段により前記外部機器との間で通信を行う際に、該外部機器に対して一定の周期でパケットを送信する送信手段と、前記通信手段による前記外部機器との間の通信が前記周期内で完了するかを判定する判定手段と、該判定手段により前記通信手段による前記外部機器との間の通信が前記周期内で完了すると判定された場合に、前記通信手段により前記外部機器との間で通信を行う制御手段と、前記判定手段により前記通信手段による前記外部機器との間の通信が前記周期内で完了するかを判定する際の判定基準を、前記通信手段による前記外部機器との間の通信環境に応じて変更する変更手段と、を備えることを特徴とする。
【００１１】
本発明の情報処理装置の制御方法は、外部機器との間で通信を行う通信ステップと、該通信ステップで前記外部機器との間で通信を行う際に、該外部機器に対して一定の周期でパケットを送信する送信ステップと、前記通信ステップでの前記外部機器との間の通信が前記周期内で完了するかを判定する判定ステップと、該判定ステップにおいて、前記通信ステップでの前記外部機器との間の通信が前記周期内で完了すると判定された場合に、前記通信ステップによる前記外部機器との間の通信を行う制御ステップと、前記判定ステップにおいて、前記通信ステップでの前記外部機器との間の通信が前記周期内で完了するかを判定する際の判定基準を、前記通信ステップでの前記外部機器との間の通信環境に応じて変更する変更ステップと、を備えることを特徴とする。
【００１２】
本発明のプログラムは、外部機器との間で通信を行う通信ステップと、該通信ステップで前記外部機器との間で通信を行う際に、該外部機器に対して一定の周期でパケットを送信する送信ステップと、前記通信ステップでの前記外部機器との間の通信が前記周期内で完了するかを判定する判定ステップと、該判定ステップにおいて、前記通信ステップでの前記外部機器との間の通信が前記周期内で完了すると判定された場合に、前記通信ステップによる前記外部機器との間の通信を行う制御ステップと、前記判定ステップにおいて、前記通信ステップでの前記外部機器との間の通信が前記周期内で完了するかを判定する際の判定基準を、前記通信ステップでの前記外部機器との間の通信環境に応じて変更する変更ステップと、を情報処理装置のコンピュータに実行させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、外部機器との間の通信において、データの転送効率を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の情報処理装置の第１の実施形態であるデジタルカメラの構成例を説明するためのブロック図である。
【図２】図２は、ホストコントローラ２６の構成例を示すブロック図である。
【図３】ホストコントローラ及びシステム制御回路において、転送判定レジスタのレジスタ値をデバイスが接続されているハブの段数を考慮して更新する処理例を説明するためのフローチャート図である。
【図４】（ａ）はハブを５台経由してホストとデバイスがＵＳＢケーブルを介して接続されている状態を示す図、（ｂ）はハブを１台経由してホストとデバイスとがＵＳＢケーブルを介して接続されている状態を示す図である。
【図５】ホストとデバイス間に接続されたハブの数による応答時間のオーバーヘッドの値の例を示す図である。
【図６】各フレーム中のホストコントローラのスケジュール管理動作を説明するためのフローチャート図である。
【図７】転送判定部の処理の一例を説明するための回路ブロック図である。
【図８】本発明の情報処理装置の第２の実施形態であるデジタルカメラのホストコントローラ及びシステム制御回路において、転送判定レジスタのレジスタ値を通信する機器の性能によって更新する処理例を説明するためのフローチャート図である。
【図９】ハイスピード（ＨＳ）モードで転送を行う際のフレーム終端の転送禁止期間を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態を図面を参照して説明する。
【００１６】
（第１の実施形態）
図１は、本発明の情報処理装置の第１の実施形態であるデジタルカメラの構成例を説明するためのブロック図である。
【００１７】
図１に示すように、本実施形態のデジタルカメラ１は、撮影レンズ２、及び絞り機能を備えるシャッター３を通過した光学像が撮像素子４により電気信号に変換され、撮像素子４から出力されたアナログ信号はＡ／Ｄ変換器５によりデジタル信号に変換される。タイミング発生回路６は、メモリ制御回路８及びシステム制御回路９により制御され、Ａ／Ｄ変換器５及びＤ／Ａ変換器７にクロック信号や制御信号を供給する。画像処理回路１０は、Ａ／Ｄ変換器５からのデータ或いはメモリ制御回路８からのデータに対して所定の画素補間処理や色変換処理を行う。
【００１８】
メモリ制御回路８は、Ａ／Ｄ変換器５、タイミング発生回路６、画像処理回路１０、画像表示メモリ１１、Ｄ／Ａ変換器７、及びメモリ１２を制御する。Ａ／Ｄ変換器５でデジタル変換されたデータは、画像処理回路１０及びメモリ制御回路８を介して、或いは直接メモリ制御回路８を介して画像表示メモリ１１或いはメモリ１２に書き込まれる。
【００１９】
画像表示部１３は、ＴＦＴやＬＣＤ等からなり、画像表示メモリ１１に書き込まれた表示用の画像データは、Ｄ／Ａ変換器７を介して画像表示部１３に表示される。画像表示部１３を用いて撮像した画像データを逐次表示すれば、電子ファインダー機能を実現することが可能である。
【００２０】
メモリ１２は、撮影した静止画像や動画像を格納するためのメモリであり、所定枚数の静止画像や所定時間の動画像を格納するのに十分な記憶量を備えている。露光制御ユニット１４は、絞り機能を備えるシャッター３を制御するユニットであり、フラッシュ１７と連携することによりフラッシュ調光機能も有する。
【００２１】
測距制御ユニット１５は、撮影レンズ２のフォーカシングを制御し、ズーム制御ユニット１６は、撮影レンズ２のズーミングを制御する。フラッシュ１７は、ＡＦ補助光の投光機能、及びフラッシュ調光機能を有する。
【００２２】
システム制御回路９は、デジタルカメラ１全体を制御する。メモリ２０は、システム制御回路９の動作用の定数、変数、プログラム等を記憶する。
【００２３】
電源制御ユニット１８は、電池検出回路、ＤＣ−ＤＣコンバータ、通電するブロックを切り替えるスイッチ回路等により構成される。電源制御ユニット１８は、電池の装着の有無、電池の種類、電池残量の検出を行い、検出結果及びシステム制御回路９の指示に基づいてＤＣ−ＤＣコンバータを制御し、必要な電圧を必要な期間、記録媒体を含む各部へ供給する。電源ユニット１９は、アルカリ電池やリチウム電池等の一次電池、ＮｉＣｄ電池やＮｉＭＨ電池、Ｌｉイオン電池等の二次電池、或いはＡＣアダプター等からなる。
【００２４】
表示装置２１は、システム制御回路９でのプログラムの実行に応じて、文字、画像、音声等を用いて動作状態やメッセージ等を表示する。表示装置２１は、デジタルカメラ１の操作部近辺の視認し易い位置に単数或いは複数個所設置され、例えばＬＣＤやＬＥＤ、発音素子等の組み合わせにより構成される。
【００２５】
不揮発性メモリ２２は、電気的に消去・記録可能なメモリである。メモリカードＩ／Ｆ２３は、メモリカードを接続する為のインタフェースである。操作部２４は、システム制御回路９の各種の動作指示を入力するためのものであり、スイッチやダイアル、タッチパネル、視線検知によるポインティング、音声認識装置等の単数或いは複数の組み合わせで構成される。
【００２６】
シャッタースイッチ２５は、撮像素子４から読み出した信号をＡ／Ｄ変換器５、メモリ制御回路８を介してメモリ１２に画像データを書き込む露光処理、画像処理回路１０やメモリ制御回路８での演算を用いた現像処理という一連の処理の動作開始を指示する。
【００２７】
また、通信のためのコントローラとして、デバイスコントローラ２７とホストコントローラ２６とが接続されている。デバイスコントローラ２７とホストコントローラ２６とは、ＵＳＢのようにホスト機能とスレーブ機能とが分かれている通信コントローラである。即ち、デバイスコントローラ２７は、外部機器から受信した信号により各構成部分をコントロールする、いわゆるスレーブ機能を有し、ホストコントローラ２６は、これとは逆に外部機器をコントロールする、いわゆるホスト機能を有する。ここで、ホストコントローラ２６がＵＳＢホストとして動作する場合、外部機器との通信の同期を取るためのＳＯＦパケットの送信機能を有する。
【００２８】
通信コネクタ２９，３１は、例えばＵＳＢコネクタであり、通信コネクタ２９，３１には、ＵＳＢケーブルを介して外部ストレージデバイスなどの外部機器が接続される。
【００２９】
ここで、通信コネクタ３１は、ＵＳＢ規格におけるシリーズＢもしくはシリーズＭｉｎｉ−Ｂの形状をしており、ホストの役割を果たす外部機器とＵＳＢケーブルで接続され、デジタルカメラ１はデバイスとして動作する。
【００３０】
また、通信コネクタ２９は、ＵＳＢ規格におけるシリーズＡもしくはシリーズＭｉｎｉ−Ａの形状をしており、デバイスの役割を果たす外部機器とＵＳＢケーブルで接続され、デジタルカメラ１はホストとして動作する。
【００３１】
外部機器との間で送受信されるデータに関して、トランシーバ部２８，３０を介してホストコントローラ２６と外部機器の間、もしくはデバイスコントローラ２７と外部機器の間でデータ転送を行う。
【００３２】
次に、図２を参照して、デジタルカメラ１のホストコントローラ２６が持つＵＳＢホストの機能について説明する。図２は、ホストコントローラ２６の構成例を示すブロック図である。
【００３３】
図２に示すように、ホストコントローラ２６は、転送コントローラ８０２、レジスタ部８０３、パケットバッファ８０５、転送判定部８０６、及びパケット送受信部８０７を備える。
【００３４】
ＵＳＢ規格（ＵＳＢ１．１、ＵＳＢ２．０、ＯＴＧ等）では、４種類の転送タイプ（アイソクロナス、バルク、コントロール、インタラプト）が定義されている。
【００３５】
ＵＳＢホストは、これらの各転送タイプのパケットの転送順序を制御、管理し、各転送タイプのパケットの転送を指示する。このために、転送コントローラ８０２がフレーム管理を行い、フレーム期間（ＦＳ、ＬＳの場合は１ｍｓ、ＨＳの場合は１２５μｓ）毎に、ＳＯＦパケットをデバイスに発行する。
【００３６】
周期（同期）転送であるアイソクロナス転送、インタラプト転送では、フレームタイミングやフレーム番号などの情報が重要な意味を持つ。従って、これらの情報を伝達するためにＳＯＦパケットが必要になる。
【００３７】
一方、非周期転送であるバルク転送、コントロール転送では、これらの情報は特に必要ではないと考えられるが、ＵＳＢでは、このような非周期転送の場合にも、ＵＳＢホストがＳＯＦパケットを転送することを要求している。
【００３８】
ホストコントローラ２６は、転送コントローラ８０２が制御するパケット送受信部８０７により、トランシーバ部２８および通信コネクタ２９を介してデバイスとの間でデータ転送を行う。
【００３９】
ＵＳＢでのホストとデバイスの通信において、デバイスはエンドポイントと呼ばれるバッファを持ち、それぞれのエンドポイントにエンドポイント番号とデータ方向とを設定してホストとの間でデータ転送を行う。ＩＮエンドポイントでは、デバイスからホストに送るデータを提供し、ＯＵＴエンドポイントでは、ホストから受け取ったデータを保存する。
【００４０】
ホストコントローラ２６のデータ転送については、パケットバッファ８０５を用いて行う。パケットバッファ８０５には、デバイスの各エンドポイントとの間で転送されるパケットが記憶され、ホストコントローラ２６は、パケットバッファにデータの書込み及び読み出しを行いながら、データ転送を行う。
【００４１】
ＵＳＢの各データ転送は、１つ以上のトランザクションから構成されている。また、各トランザクションは、３つの種類のパケット（トークンパケット、データパケット、ハンドシェイクパケット）から構成されている。トランザクションのタイプは、データ転送の方向（ホスト〜デバイス、デバイス〜ホスト）と目的とで定義されている。
【００４２】
ＩＮトランザクションでは、データやステータス情報をデバイスからホストへ送る。この場合、トークンパケットのＰＩＤ（ＰａｃｋｅｔＩＤ）が「ＩＮ」を示し、デバイスからホストへデータが転送されることを示している。
【００４３】
ＯＵＴトランザクションでは、データやステータス情報をホストからデバイスへ送る。この場合、トークンパケットのＰＩＤが「ＯＵＴ」を示し、ホストからデバイスへデータが転送されることを示している。
【００４４】
セットアップトランザクションでは、コントロール転送のリクエストをホストからデバイスへ送る。この場合、トークンパケットのＰＩＤは「ＳＥＴＵＰ」を示し、コントロール転送が行われることを示している。
【００４５】
パケット送受信部８０７は、トークンパケット生成、データパケット生成、ハンドシェイクパケット生成を行い、ホストとデバイス間のトランザクション転送を実行する。
【００４６】
なお、ＳＯＦは、フレームの先頭を示すためのトークンパケットであり、この場合、ＰＩＤは「ＳＯＦ」を示し、このＳＯＦはホスト側が送信する。トークンパケット生成では、このＳＯＦパケットの生成も含まれる。
【００４７】
生成されたトークンパケット、データパケット、ハンドシェイクパケットは、パケット送受信部８０７によってトランシーバ部２８、ＵＳＢコネクタ２９を介して送信される。      
【００４８】
デバイスから返信された応答パケットは、ＵＳＢコネクタ２９、トランシーバ部２８を介してパケット送受信部８０７で受信される。受信されたパケットは、転送コントローラ８０２によって解析される。転送コントローラ８０２では、転送が完了したことを示すためシステム制御回路９に割り込み処理を発生させる。
【００４９】
転送コントローラ８０２は、１つのトランザクションが複数のフレームにまたがらないようにスケジューリング管理を行う。
【００５０】
ここで、フレーム（一定の周期）とは、ＳＯＦと次のＳＯＦとの間のインターバルのことを指す。このスケジューリング管理のために、転送コントローラ８０２は、フレーム中でのトランザクションの開始前に、そのトランザクションがフレーム（周期内）内で完了するかどうかの判定を転送判定部８０６で行う。
【００５１】
レジスタ部８０３の転送判定レジスタ８０４には、初期値として、トランザクションのオーバーヘッドをワーストケースで考慮したビット時間に置き換えた定数が記述されている。
【００５２】
ここで、ワーストケースで考慮されるのは、データペイロード以外の情報を送信するのに要する時間と、ホストが連続してパケットを送信する際の待機時間、ホストが送信したパケットに対してデバイスが応答したパケットを受信する応答時間などである。
【００５３】
データペイロード以外の情報を送信するのに要する時間には、トークンパケット送信に要する時間、ハンドシェイクパケット送信に要する時間、データパケットのデータペイロード以外の情報を送信するのに要する時間が例示される。
【００５４】
転送判定部８０６は、転送しようとするデータのサイズと転送判定レジスタ８０４の値とからトランザクションの予想実行時間を計算し、フレームの残りビット時間と比較して、トランザクションがフレーム内で完了するかどうかの判定を行う。
【００５５】
トランザクションの予想実行時間よりフレームの残りビット時間が少ない場合は、トランザクションを実行せず、次のフレームでそのトランザクションを実行する。トランザクションの予想実行時間よりフレームの残りビット時間が多い場合は、そのフレーム内でトランザクションを実行する。
【００５６】
従来においては、転送判定レジスタ８０４のオーバーヘッドの値として、ＵＳＢ仕様上でのトランザクションのオーバーヘッドのワーストケース値を想定している。
【００５７】
そのため、計算したトランザクションの予想実行時間が実際の転送で必要なトランザクションの実行時間より大幅に大きくなり、トランザクションが実行できるような場合でもトランザクションが実行されないことがあるので、その分転送効率が低下してしまう。
【００５８】
そこで、本実施形態では、この判定を行う際の判定基準をＵＳＢ規格に準拠した通信による外部機器（デバイス）との間の通信環境、具体的には、デバイスが接続されているハブの段数を考慮して動的に変更し、バスの転送効率を向上させる。
【００５９】
図３は、ホストコントローラ２６及びシステム制御回路９において、転送判定レジスタ８０４のレジスタ値をデバイスが接続されているハブの段数を考慮して更新する処理例を説明するためのフローチャート図である。
【００６０】
まず、ステップＳ３０１では、ホストコントローラ２６の転送コントローラ８０２は、通信コネクタ２９にＵＳＢケーブルを介して接続されたデバイスが信号ラインの電圧を変化させた際の信号ラインの変化を監視する。そして、転送コントローラ８０２は、デバイスが接続されたことを検出すると、ステップＳ３０２に進む。
【００６１】
ステップＳ３０２では、転送コントローラ８０２は、エニュメレーション動作を行ってどのようなデバイスが接続されているのかを解析し、ステップＳ３０３に進む。
【００６２】
エニュメレーション動作では、通信の準備として、転送コントローラ８０２が、接続されたデバイスに対してデスクリプタの取得を要求し、デバイスの能力を調べる。また、転送コントローラ８０２は、デバイスに対してアドレスを割り当て、さらに、デバイスに対して、デバイスの構成情報、使用方法を基に構成値を割り当て、通信の準備を行う。
【００６３】
ステップＳ３０３では、転送コントローラ８０２は、取得したデスクリプタのデバイスクラスの情報から、接続されたデバイスがハブクラスであるか否かを判断する。
【００６４】
そして、転送コントローラ８０２は、接続されたデバイスがハブクラスの場合は、ステップＳ３０４に進み、接続されたデバイスがハブクラスでない場合は、ステップＳ３０５に進む。
【００６５】
ステップＳ３０４では、転送コントローラ８０２は、さらにデスクリプタ情報からハブのポート数を取得し、各ポートについての状態を問い合わせて情報を取得する。
【００６６】
そして、転送コントローラ８０２は、情報を取得したハブの各ポートにデバイスが接続されると（ステップ３０１）、そのデバイスに対して、上記同様に、エニュメレーション動作を行う（ステップ３０２）。
【００６７】
ステップＳ３０５では、転送コントローラ８０２は、それまで取得したハブのデスクリプタ情報からそのデバイスが接続されているハブの段数を決定し、ステップＳ３０６に進む。
【００６８】
ステップＳ３０６では、転送コントローラ８０２は、ステップ３０２のエニュメレーション動作中に接続されたデバイスに対して割り当てたデバイスアドレスを取得し、ステップＳ３０７に進む。
【００６９】
ステップＳ３０７では、転送コントローラ８０２は、ステップ３０５で決定したハブの段数をシステム制御回路９へ通知し、システム制御回路９は、ハブの段数を考慮して、転送判定レジスタ８０４のレジスタ値を更新し、処理を終了する。
【００７０】
転送判定レジスタ８０４のレジスタ値には、トランザクションのオーバーヘッドとして、ホストが送信したパケットに対してデバイスが応答したパケットを受信する応答時間が含まれている。
【００７１】
ＵＳＢの規格では、ホストとデバイス間に最大５台のハブを設置することができる。レジスタの初期値に記述されている値では、ホストが送信したパケットに対するデバイスの応答遅延時間について、ワーストケースを考慮し、ホストとデバイス間に５台のハブを設置してデータ転送を行った場合の値が設定されている。
【００７２】
ここで、転送コントローラ８０２は、ステップ３０５で決定したハブの段数をシステム制御回路９へ通知する。そして、システム制御回路９は、ハブの段数を基にホストが送信したパケットに対するデバイスの応答遅延時間についてオーバーヘッドを再計算して、レジスタ値を更新する。
【００７３】
図４（ａ）は、ハブ６０２を５台経由してホスト６０１とデバイス６０４がＵＳＢケーブル６０３を介して接続されている状態を示す図である。
【００７４】
ここで、ハブ６０２が５台ある構成でハイスピードでのＵＳＢ転送を行う場合を考える。この場合、ホスト６０１から送信されたパケットに対してデバイス６０４が応答し、その応答をホスト６０１が受けるまでに、往復でＵＳＢケーブル６０３を１２回通過し、ハブ６０２を１０回通過する。
【００７５】
ＵＳＢ仕様より、ハイスピード転送時に１ケーブル上の遅延の最大値は２６ｎｓであるので、ハブ６０２が５台ある構成でのＵＳＢケーブル６０３上の遅延は、２６ｎｓ×１２回＝３１２ｎｓとなる。
【００７６】
また、ハイスピード転送時に１ハブ上の遅延の最大値は３６ｂｉｔｔｉｍｅｓ＋４ｎｓであるので、（３６ｂｉｔｔｉｍｅｓ＋４ｎｓ）×１０回＝４０ｎｓ＋３６０ｂｉｔｔｉｍｅｓとなる。これらを全てハイスピードのビット時間に換算すると、ケーブル（６本）上の遅延：１５０ｂｉｔｔｉｍｅｓ、ハブ（５台）上の遅延：３７９ｂｉｔｔｉｍｅｓとしてオーバーヘッドが計算される。
【００７７】
図４（ｂ）は、ハブ６０２を１台経由してホスト６０１とデバイス６０４とがＵＳＢケーブル６０３を介して接続されている状態を示す図である。ここで、デバイス６０４がハブ６０２を１台介して接続されている場合は、ハブの段数は「１」となる。
【００７８】
ハブ６０２が１台ある構成でハイスピードでのＵＳＢ転送を行う場合、ホスト６０１から送信されたパケットに対してデバイス６０４が応答し、その応答をホスト６０１が受けるまでに、往復でＵＳＢケーブル６０３上を４回通過し、ハブ６０２を２回通過する。
【００７９】
ハブが１台ある構成で、上記と同様に計算し、これらを全てハイスピードのビット時間に換算すると、ケーブル（２本）上の遅延：５０ｂｉｔｔｉｍｅｓ、ハブ（１台）上の遅延：７６ｂｉｔｔｉｍｅｓとなる。
【００８０】
従って、図３のステップ３０７で、システム制御回路９は、転送判定レジスタ８０４のレジスタ値を更新する際に、ホストが送信したパケットに対してデバイスが応答したパケットを受信する応答時間について余分なハブ４台分のオーバーヘッドを減らして計算する。このため、ステップＳ３０７で更新された値は、初期値より（（１５０＋３７９）−（５０＋７６））＝４０３ｂｉｔｔｉｍｅｓ小さくなる。図５に、ホストとデバイス間に接続されたハブの数による応答時間のオーバーヘッドの値の例を示す。
【００８１】
なお、転送判定レジスタ８０４について、ホストに接続されるデバイスが複数であることも考えられるので、接続相手先の数に応じて転送判定レジスタ８０４を複数保持してもよい。この場合、接続相手先を判別するために、図３のステップ３０６で取得したデバイスアドレスと転送判定レジスタ８０４を対応付けて記録する。
【００８２】
次に、更新された転送判定レジスタ８０４のレジスタ値を用いてホストコントローラ２６がデータを転送する動作例について示す。
【００８３】
ホストコントローラ２６は、ホストコントローラ２６を制御するドライバにより、レジスタ部８０３で設定された値などを基に各転送タイプの転送動作を行い、その転送順序をスケジュールとして管理する。
【００８４】
図６は、各フレーム中のホストコントローラ２６（転送コントローラ８０２）のスケジュール管理動作を説明するためのフローチャート図である。
【００８５】
ステップＳ４０１では、転送コントローラ８０２は、各フレームの開始にあわせて、接続されているデバイスに対してＳＯＦパケットを送信し、ステップＳ４０２に進む。
【００８６】
ステップＳ４０２では、転送コントローラ８０２は、フレーム中で行うべき周期転送や非同期転送のスケジュールがある（ドライバから転送が指示されている）か否かを確認する。
【００８７】
そして、転送コントローラ８０２は、フレーム中で行うべき周期転送や非同期転送のスケジュールがある場合は、ステップＳ４０３に進み、フレーム中で行うべき周期転送や非同期転送のスケジュールがない場合は、処理を終了する。
【００８８】
ステップＳ４０３では、転送コントローラ８０２は、指示されたスケジュールに従って転送するデータのパケットを作成し、ステップＳ４０４に進む。
【００８９】
ステップＳ４０４では、転送コントローラ８０２は、転送スケジュールの対象となるデバイスのデバイスアドレスを取得し、ステップＳ４０５に進む。
【００９０】
ステップＳ４０５では、転送コントローラ８０２は、デバイスアドレスに対応する転送判定レジスタ８０４からレジスタ値を取得し、ステップＳ４０６に進む。
【００９１】
ここで、転送コントローラ８０２は、ハブの段数によってレジスタ値が更新されている場合は、その値を取得し、レジスタ値が更新されていない場合は、トランザクションのオーバーヘッドについてワーストケースを考慮した初期値を取得する。
【００９２】
ステップＳ４０６では、転送コントローラ８０２は、転送判定部８０６を介して作成したパケットによるトランザクションがフレーム（周期内）内で完了するかどうかを判定する。
【００９３】
図７は、本実施形態における転送判定部８０６の処理の一例を説明するための回路ブロック図である。
【００９４】
図７において、転送コントローラ８０２は、ステップ４０４で取得した転送判定レジスタ８０４のレジスタ値と、送信しようとするパケットのサイズ９０１をそれぞれ加算器９０３に入力し、加算器９０３はトランザクション完了予想時間を算出する。
【００９５】
そして、転送コントローラ８０２は、フレームの残りビット時間と加算器９０３により算出されたトランザクション完了予想時間を比較器９０４に入力する。比較器９０４は、フレームの残りビット時間と加算器９０３により算出されたトランザクション完了予想時間とを比較し、その結果によって転送制御信号９０５を出力する。
【００９６】
トランザクション完了予想時間に比べてフレームの残りビット時間が少ない場合（ステップ４０７のＮｏ）は、比較器９０４は転送制御信号９０５で転送が不可であることを転送コントローラ８０２に通知する。転送コントローラ８０２は、トランザクションを実行せずに処理を終了し、次のフレームでそのトランザクションを実行する。
【００９７】
一方、トランザクション完了予想時間に比べてフレームの残りビット時間が多い場合（ステップ４０７のＹｅｓ）は、転送制御信号９０５で転送が可能であることを転送コントローラ８０２に通知する。この場合、転送コントローラ８０２は、ステップ４０８へ進み、トランザクションの実行を開始する。
【００９８】
ここで、ハブの段数によってレジスタ値が更新されている場合は、レジスタ値が小さくなったことで、フレーム内でトランザクションが実行される可能性が高くなる。
【００９９】
例えば、フレームの終端で、残りビット時間が７０００ｂｉｔｔｉｍｅｓだった場合、転送判定レジスタ８０４の初期値を使用して計算したトランザクションの完了予想時間が７１００ｂｉｔｔｉｍｅｓだったとする。この場合、トランザクション完了予想時間に比べて、フレームの残りビット時間が少ないのでトランザクションは実行されない。
【０１００】
しかし、ハブが１台しか接続されていない場合に、ステップ３０７で更新したレジスタ値を使用すると、レジスタ初期値から余分なハブ４台分のオーバーヘッドを減らしているので、トランザクションの完了予想時間は、７１００−４０３ｂｉｔｔｉｍｅｓとなる。この場合、トランザクション完了時間に比べてフレームの残りビット時間が多いので、トランザクションがフレーム内で実行される。
【０１０１】
ステップＳ４０９では、転送コントローラ８０２は、転送しようとするパケットがまだ残っている場合は、ステップ４０３に戻り、トランザクションの実行を続ける。また、転送コントローラ８０２は、パケットの転送が完了した場合は、ステップ４０２へ戻り、フレーム中で行う別の周期転送や非同期転送のスケジュールがあるか確認する。
【０１０２】
以上説明したように、本実施形態では、デバイスが接続しているハブの段数に応じてトランザクションを実行可能か判定する際の判定基準を動的に変更するので、フレーム内のデータ転送効率を向上させることができる。
【０１０３】
（第２の実施形態）
次に、図８を参照して、本発明の情報処理装置の第２の実施形態であるデジタルカメラについて説明する。なお、上記第１の実施形態に対して重複又は相当する部分については、符号等を流用して説明する。
【０１０４】
本実施形態では、トランザクションを実行可能か判断する際の判断基準について、通信相手先の機器の性能やＵＳＢケーブルの長さによって動的に変更する点が上記第１の実施形態と異なる。
【０１０５】
図８は、ホストコントローラ２６及びシステム制御回路９において、転送判定レジスタ８０４のレジスタ値を通信する機器の性能によって更新する処理例を説明するためのフローチャート図である。なお、図８のステップ５０１〜ステップ５０８、及びステップＳ５１１の処理は、それぞれ上記第１の実施形態（図６）のステップ４０１〜ステップ４０８、及びステップＳ４０９の処理と同様であるため、その説明を省略する。
【０１０６】
ホストコントローラ２６は、ＳＯＦパケットを送信してフレームを管理し、フレーム内で転送のスケジュールがある場合は、指示されたスケジュールに従って転送するデータのパケットを作成し、フレーム残り時間が足りていればトランザクションを開始する。
【０１０７】
ステップＳ５０９では、ホストコントローラ２６の転送コントローラ８０２は、は、トランザクションが開始されると、転送のオーバーヘッドを測定し、ステップＳ５１０に進む。
【０１０８】
転送判定レジスタ８０４のレジスタ値には、初期値としてトランザクションのオーバーヘッドをワーストケースで考慮してビット時間に置き換えた定数が記述されている。ここで、オーバーヘッドとして考慮されるのは、データペイロード以外の情報を送信するのに要する時間と、ホストが連続してパケットを送信する際の待機時間、ホストが送信したパケットに対してデバイスが応答したパケットを受信する応答時間などである。データペイロード以外の情報を送信するのに要する時間には、トークンパケット送信に要する時間、ハンドシェイクパケット送信に要する時間、データパケットのデータペイロード以外の情報を送信するのに要する時間がある。
【０１０９】
転送コントローラ８０２は、実行したトランザクションから、ホストが送信したパケットに対するデバイスの応答時間を測定し、システム制御回路９へ通知する。
【０１１０】
ステップＳ５１０では、システム制御回路９は、トランザクションのオーバーヘッドを再計算して、転送判定レジスタ８０４にレジスタ値を更新し、ステップＳ５１１に進む。
【０１１１】
例えば、デバイスがＵＳＢ規格での許容最大時間よりも短い時間でホストへ応答できる能力を持つ場合や、ＵＳＢケーブルがＵＳＢ規格での許容最大長の５ｍよりも短い場合などは、ホストが送信したパケットに対するデバイスの応答時間が短くなる。この応答時間によってオーバーヘッドを再計算すると、デバイスからの応答時間についてワーストケースを考慮したレジスタ初期値に比べて再計算された値は小さくなる。
【０１１２】
従って、ステップ５０７で転送コントローラ８０２がトランザクションがフレーム内で完了するかどうかの判定を行う際に、レジスタ値が小さくなったことで、フレーム内でトランザクションが実行される可能性が高くなる。
【０１１３】
また、オーバーヘッドとして考慮されている、ホストが送信したパケットに対するデバイスの応答時間については、送信するデータがハブを経由する際の遅延時間も含まれている。この遅延時間について、レジスタの初期値ではＵＳＢ規格で許容される範囲でのワーストケースが考慮されているが、ハブがデータを転送する時間がこれより短ければ、その時間をもとにレジスタ値を再計算してもよい。例えば、ハブが接続された時に取得するハブのデスクリプタに、ハブのデータ転送時の遅延量が記述されるようにしておき、この値を基にレジスタ値を再計算してもよい。
【０１１４】
また、オーバーヘッドとして考慮されている、ホストが送信したパケットに対するデバイスの応答時間については、ケーブル上のデータ転送時間も含まれている。例えば、ケーブルと一体になったデバイスについて、デバイスのデスクリプタに、ケーブル長の情報が記述されるようにしておき、この値を基にケーブル上のデータ転送時間のオーバーヘッドを求めてレジスタ値を再計算してもよい。
【０１１５】
以上説明したように、本実施形態では、通信相手先の機器の性能やＵＳＢケーブルの長さによって、トランザクションを実行可能か判定する際の判定基準を動的に変更するので、フレーム内のデータ転送効率を向上させることができる。
【０１１６】
なお、本発明は、上記各実施形態に例示したものに限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【０１１７】
また、本発明の目的は、以下の処理を実行することによっても達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出す処理である。
【０１１８】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１１９】
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【０１２０】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１２１】
更に、前述した実施形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行う場合である。
【符号の説明】
【０１２２】
１      デジタルカメラ
９      システム制御回路
２６    ホストコントローラ
２７    デバイスコントローラ
３０    トランシーバ部
３１    通信コネクタ
８０２  転送コントローラ
８０３  レジスタ部
８０４  転送判定レジスタ
８０６  転送判定部
８０７  パケット送受信部
【図１】
2010178294.tif 000003
【図２】
2010178294.tif 000004
【図３】
2010178294.tif 000005
【図４】
2010178294.tif 000006
【図５】
2010178294.tif 000007
【図６】
2010178294.tif 000008
【図７】
2010178294.tif 000009
【図８】
2010178294.tif 000010
【図９】
2010178294.tif 000011