(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0020】
(実施の形態の概要)
実施の形態の説明に先立って、実施の形態の主要な課題と構成について説明する。
【0021】
例えば、スキャナ装置(イメージスキャナ)などのように、あるイベントを起点に対象データを蓄積するUSBデバイスでは、リアルタイム性が必要(その後、定期的にデータ更新される)で且つその対象データを保証する必要がある。
【0022】
この対象データをパソコンで収集する場合、一般に、対象データは「バルクイン転送」により転送される。上記のように、「バルク転送」は、主に大量データの転送を保証するために規定されている。
【0023】
しかしながら、パソコンが高負荷状態や同時に複数のUSBデバイスから対象データを収集する場合、一定時間以上掛かってしまうと対象データが保証されない(次のデータに更新される)可能性がある。これは、USB規格において「バルク転送」のデータ処理の優先順位が低いため、他のデータ処理が優先的に実行されることにも起因する。
【0024】
図20は、実施の形態適用前の参考例の動作を示し、パソコン1が低処理負荷、もしく低通信負荷時の場合における、パソコン1とUSBデバイス3間のバルク転送フローの時系列シーケンスである。
【0025】
USBデバイス3は、生成したデータファイルを保存するための内部メモリ(デバイスメモリ)を備えている。まず、USBデバイス3は、データファイルを生成すると、生成したデータファイルを内部メモリに保存し、データファイル保存期間経過後、新たに次のデータファイルを生成し、この新たなデータファイルで内部メモリを更新する。すなわち、USBデバイス3では、データファイル保存期間経過後は、新たなデータファイルにより内部メモリが更新されるため、以前のデータファイルは消去される。
【0026】
したがって、通常、パソコン(ホスト)1は、USBデバイス3のデータファイル保存期間経過前にバルクイン転送を行うように動作する。すなわち、
図20の例のように、パソコン1が低負荷の場合には、USBデバイス3がデータファイル保存期間の間隔で定期的にデータファイルを更新した後、パソコン1は、速やかにバルクイン転送を行い、各データファイルを確実に収集する。
【0027】
すなわち、パソコン1は、データファイルD1保存期間経過前に、バルクイン転送IN1を実行して、データファイルD1を取得し、データファイルD2保存期間経過前に、バルクイン転送IN2を実行して、データファイルD2を取得し、データファイルD3保存期間経過前に、バルクイン転送IN3を実行して、データファイルD3を取得する。
【0028】
なお、バルクイン転送を行う場合、パソコン1からUSBデバイス3へバルクイン転送コマンド(指示)を送信した後、USBデバイス3からパソコン1へデータが送信されるが、
図20では、バルクイン転送コマンドは省略されている(
図21も同様)。
【0029】
図21は、
図20と同じ参考例の動作を示し、パソコン1が高処理負荷、もしくは高通信負荷時の場合における、パソコン1とUSBデバイス3間のバルク転送フローの時系列シーケンスである。
【0030】
図21では、パソコン1における処理が高負荷の状態のため、帯域使用の優先度が低いバルク転送については、パソコン1からUSBデバイス3へのバルクイン転送の実行間隔が長くなる。このバルクイン転送の実行間隔がUSBデバイス3におけるデータファイル保存時間を超えてしまうと、USBデバイス3で保持していたデータが消失するため、パソコン1へこの消失したデータを転送することができない。
【0031】
すなわち、パソコン1は、データファイルD1保存期間経過前に、バルクイン転送IN1を実行して、データファイルD1を取得しているが、データファイルD2保存期間経過後に、バルクイン転送IN2を実行しているため、データファイルD2は既に消去されており、データファイルD2の代わりにデータファイルD3が取得されている。
【0032】
このように、実施の形態適用前の参考例では、装置の負荷状況などによっては、バルクイン転送を確実に行うことが困難な場合がある。そこで、実施の形態では、上記のようなデータを保証する為、パソコンの負荷状況に左右されない様に、USBデバイスに蓄積されたデータを確実に収集することを可能とする。
【0033】
図1は、実施の形態に係るUSB中継装置の主要な構成を示している。
図1に示すように、実施の形態に係るUSB中継装置100は、転送モード判定部101、パケット代理収集部102、パケット転送部103を備えている。
【0034】
転送モード判定部101は、転送元USB装置110と転送先USB装置120間の転送モードを判定する。パケット代理収集部102は、判定した転送モードに応じて、転送先USB装置120の代理で、転送元USB装置110から転送パケットを収集する。パケット転送部103は、収集した転送パケットを転送先USB装置120へ順次転送する。
【0035】
このように、実施の形態では、転送先USB装置(例えばパソコン)と転送元USB装置(例えばUSBデバイス)間のUSB中継装置において、転送モードに応じて転送パケットを転送先USB装置の代理で収集し、収集した転送パケットを転送する。これにより、バルクイン転送などの転送モードであっても、転送先USB装置の負荷状況に関わらず、確実にデータを転送することができる。
【0036】
(実施の形態1)
以下、図面を参照して実施の形態1について説明する。
図2は、本実施の形態に係るUSB中継システム(USBシステム)の全体の構成を示している。
【0037】
図2に示すように、本実施の形態に係るUSB中継システムは、パソコン1、USBデータ中継装置2、USBデバイス3を備えている。USBデータ中継装置(USB中継装置)2は、パソコン1とUSBデバイス3との通信路間に接続されている。パソコン1とUSBデータ中継装置2とは、USBケーブル4aを介して接続されており、USBデータ中継装置2とUSBデバイス3とは、USBケーブル4bを介して接続されている。すなわち、パソコン1とUSBデータ中継装置2は、USBケーブル4aを接続するUSBポート(USB端子)を備えており、USBデータ中継装置2とUSBデバイス3は、USBケーブル4bを接続するUSBポート(USB端子)を備えている。
【0038】
パソコン1は、USBホストの一例であり、USBデータ中継装置2を介して、USBデバイス3と各転送モードによる通信を行う。USBデバイス3は、イメージスキャナやデジタルカメラ等の周辺装置であり、USBデータ中継装置2を介して、パソコン1と各転送モードによる通信を行う。例えば、パソコン1がUSBデータ中継装置2を介してUSBデバイス3を制御することにより、USBデバイス3がイメージを取り込み、取り込んだ画像データを、USBデータ中継装置2を介してパソコン1へ出力する。
【0039】
図3は、本実施の形態に係るUSBデータ中継装置2のブロック構成を示している。
図3に示すように、本実施の形態に係るUSBデータ中継装置2は、コマンド分析部21及びセレクタ26を含む調停部24、設定格納バッファ22、データバッファ(FIFO)23、セレクタ25を備えている。
【0040】
USBデータ中継装置2は、パソコン1とUSBデバイス3の間に挿入(接続)され、パソコン1とUSBデバイス3の間のデータの流れを監視(コマンド分析部21/設定格納バッファ22)し、転送データの種別によりデータの管理(データバッファ(FIFO)23)と制御(調停部24/セレクタ25)を行なう。
【0041】
すなわち、コマンド分析部21は、パソコン1とUSBデバイス3の間で送受信されるコマンド(データ)を分析(解析)し、分析に応じた処理を実行する。例えば、コマンド分析部21は、パソコン1とUSBデバイス3の間の転送モードを判定する転送モード判定部を含んでいる。設定格納バッファ22は、コマンド分析部21にて読み取ったUSB記述子やデータのPID(パケットID)・ADDR(アドレス)・ENDP(エンドポイント)等の転送の情報を格納する。
【0042】
データバッファ(FIFO)23は、FIFO(First In / First Out;先入れ/先出し)方式のバッファであり、USBデバイス3(またはパソコン1)から受信したデータ(パケット)を一時的に保持する。
【0043】
セレクタ25及びセレクタ26は、パソコン1とUSBデバイス3の間の通信経路を切り替える。セレクタ25及びセレクタ26は、パソコン1−調停部24−USBデバイス3の経路を、パソコン1−データバッファ23−調停部24−USBデバイス3のように、データバッファ(FIFO)23を経由する経路に切り替える。セレクタ25は、パソコン1(パソコン1側のUSB端子)と、調停部24(セレクタ26)またはデータバッファ23の出力端子との接続を切り替える。セレクタ26は、USBデバイス3(USBデバイス3側のUSB端子)と、セレクタ25(パソコン1)またはデータバッファ23の入力端子との接続を切り替える。
【0044】
調停部24は、転送モードに応じて(例えばバルクイン転送の場合)、パソコン1の代理で、USBデバイス3から転送パケットをデータバッファ(FIFO)23に収集(バッファリング)するパケット代理収集部を含んでおり、例えば、セレクタ26がパケット代理収集部を含んでいてもよい。調停部24は、パケットを代理で収集することにより、パソコン1(またはUSBデバイス3)から見て透過的となるように動作する。調停部24は、転送モードに応じて(例えばバルクイン転送以外の場合)、パソコン1とUSBデバイス3の間のパケットを転送するパケット転送部も含んでいる。また、セレクタ25は、データバッファ(FIFO)23に収集された転送パケットをパソコン1へ順次転送するパケット転送部を含んでいる。
【0045】
次に、本実施の形態に係るUSBデータ中継装置2の動作について、データ転送の方向別に説明する。
【0046】
ここでは、データ転送方向をそれぞれ下記の様に定義する。なお、ダウンストリームでは、パソコン1が転送元USB装置であり、USBデバイス3が転送先USB装置である。アップストリームでは、パソコン1が転送先USB装置であり、USBデバイス3が転送元USB装置である。
・パソコン1からUSBデバイス3へのデータ転送方向(下り方向)・・・「ダウンストリーム」
・USBデバイス3からパソコン1へのデータ転送方向(上り方向)・・・「アップストリーム」
【0047】
図4は、本実施の形態に係るUSBデータ中継装置2における、ダウンストリームのデータの流れであり、転送モードがコントロール転送、インターラプト転送、バルク転送、アイソクロナス転送の場合のデータの流れを示している。
【0048】
この場合、
図4に示すように、セレクタ25は、パソコン1(パソコン1側のUSB端子)と調停部24(セレクタ26)を接続し、セレクタ26は、USBデバイス3(USBデバイス3側のUSB端子)とセレクタ25(パソコン1)を接続しているため、パソコン1−調停部24−USBデバイス3の経路となる。
【0049】
すなわち、ダウンストリームでは、全てのデータ転送形式のデータがパソコン1からセレクタ25へ入力される。セレクタ25は、入力されたデータを調停部24へ転送し、調停部24は転送されたデータをそのままUSBデバイス3へ出力する。そして、出力された全てのデータ転送形式のデータがUSBデバイス3に到達する。
【0050】
図5は、本実施の形態に係るUSBデータ中継装置2における、アップストリームのデータの流れであり、転送モードがコントロール転送、インターラプト転送、アイソクロナス転送の場合のデータの流れを示している。この場合、
図4と同様に、セレクタ25、セレクタ26の接続により、パソコン1−調停部24−USBデバイス3の経路となる。
【0051】
すなわち、アップストリームでは、コントロール転送、インターラプト転送、アイソクロナス転送のデータがUSBデバイス3から調停部24へ入力される。調停部24は、入力されたデータをセレクタ25へ転送し、セレクタ25は転送されたデータをパソコン1へ出力する。そして、出力されたコントロール転送、インターラプト転送、アイソクロナス転送のデータがパソコン1に到達する。
【0052】
ここで、
図6を用いて、コントロール転送における設定(SETUP)パケット(コマンド)の転送時の動作を説明する。例えば、設定パケットにより、USBデータ中継装置2は、USBデバイス3のコンフィグレーション設定のデータ内容を保持する処理を実行する。この場合、
図4及び
図5と同様に、セレクタ25、セレクタ26の接続により、パソコン1−調停部24−USBデバイス3の経路となる。
【0053】
すなわち、ダウンストリームのデータ(設定パケット)は、パソコン1からセレクタ25を介して調停部24へ入力される。この時、調停部24は、入力されたデータ(設定パケット)をそのままUSBデバイス3へ出力し、出力されたデータがUSBデバイス3に到達する。
【0054】
これと同時に、調停部24では、コマンド分析部21が入力された設定パケットを解析する。設定パケットがコンフィグレーション設定のパケットであった場合、コマンド分析部21は、設定格納バッファ22に設定パケットの設定値を保存する。
【0055】
同様に、アップストリームのデータ(設定パケット)も、USBデバイス3から調停部24に入力され、調停部24は、入力されたデータを、セレクタ25を経由してパソコン1へ出力し、出力されたデータがパソコン1に到達する。これと同時に、コマンド分析部21は、入力された設定パケットを解析し、設定パケットがコンフィグレーション設定のパケットであった場合、設定格納バッファ22に設定パケットの設定値を保存する。
【0056】
図7は、ダウンストリームのコントロール転送による設定パケットの転送シーケンスであり、
図6のパケット毎(設定パケット毎)のデータの流れを時系列に示している。例えば、USBデータ中継装置2は、
図7のセットアップコンフィギュレーション(設定、コントロールIN、コントロールOUT、DATA含む)を監視し、送受信されるパラメータを管理/保持する。通常、USBによりデータ通信を行う場合には、まず、コントロール転送によるセットアップコンフィギュレーションにより設定が行われた後、バルク転送などによりデータ通信が行われる。
【0057】
まず、トランザクションT101では、パソコン1が設定パケットを送信すると、USBデータ中継装置2(調停部24)はパソコン1から受信した設定パケットを転送し(S101a)、USBデバイス3はUSBデータ中継装置2から設定パケットを受信する。同時に(S101a)、USBデータ中継装置2の内部(コマンド分析部21)では、この設定パケットの内容を分析し、必要な情報(例えば、データのPID・ADDR・ENDP、最大データ長)を設定格納バッファ22に保持する。
【0058】
続いて、USBデータ中継装置2(調停部24)は、パソコン1から送信されたデータパケット(DATA0)をUSBデバイス3へ転送し(S101b)、さらに、USBデバイス3から送信されたACKパケットをパソコン1へ転送する(S101c)。例えば、S101b及びS101cにおいても、S101aと同様に、USBデータ中継装置2の内部(コマンド分析部21)で、データパケット(DATA0)、ACKパケットの内容を分析し、必要な情報を設定格納バッファ22に保持してよい。
【0059】
トランザクションT101に続いてトランザクションT102では、パソコン1がコントロールINパケットを送信すると、USBデータ中継装置2(調停部24)はパソコン1から受信したコントロールINパケットを転送し(S102a)、USBデバイス3はUSBデータ中継装置2からコントロールINパケットを受信する。続いて、USBデータ中継装置2(調停部24)はUSBデバイス3から送信されたデータパケット(DATA0)をパソコン1へ転送し(S102b)、さらに、パソコン1から送信されたACKパケットをUSBデバイス3へ転送する(S102c)。例えば、S102a〜S102cにおいても、S101aと同様に、USBデータ中継装置2の内部(コマンド分析部21)で、コントロールINパケット、データパケット(DATA0)、ACKパケットの内容を分析し、必要な情報を設定格納バッファ22に保持してよい。
【0060】
トランザクションT102に続いてトランザクションT103では、パソコン1がコントロールOUTパケットを送信すると、USBデータ中継装置2(調停部24)はパソコン1から受信したコントロールOUTパケットを転送し(S103a)、USBデバイス3はUSBデータ中継装置2からコントロールOUTパケットを受信する。続いて、USBデータ中継装置2(調停部24)はパソコン1から送信されたデータパケット(DATA0)をUSBデバイス3へ転送し(S103b)、さらに、USBデバイス3から送信されたACKパケットをパソコン1へ転送する(S103c)。例えば、S103a〜S103cにおいても、S101aと同様に、USBデータ中継装置2の内部(コマンド分析部21)で、コントロールOUTパケット、データパケット(DATA0)、ACKパケットの内容を分析し、必要な情報を設定格納バッファ22に保持してよい。
【0061】
図8は、アップストリームのコントロール転送による設定パケットの転送シーケンスであり、
図6のパケット毎(設定パケット毎)のデータの流れを時系列に示している。例えば、
図7と同様に、USBデータ中継装置2は、
図8のセットアップコンフィギュレーション(設定、コントロールIN、コントロールOUT、DATA含む)を監視し、送受信されるパラメータを管理/保持する。
【0062】
まず、トランザクションT111では、USBデバイス3が設定パケットを送信すると、USBデータ中継装置2(調停部24)はUSBデバイス3から受信した設定パケットを転送し(S111a)、パソコン1はUSBデータ中継装置2から設定パケットを受信する。同時に(S111a)、USBデータ中継装置2の内部(コマンド分析部21)では、この設定パケットの内容を分析し、必要な情報(例えば、データのPID・ADDR・ENDP、最大データ長)を設定格納バッファ22に保持する。
【0063】
続いて、USBデータ中継装置2(調停部24)は、USBデバイス3から送信されたデータパケット(DATA0)をパソコン1へ転送し(S111b)、さらに、パソコン1から送信されたACKパケットをUSBデバイス3へ転送する(S111c)。例えば、S111b及びS111cにおいても、S111aと同様に、USBデータ中継装置2の内部(コマンド分析部21)で、データパケット(DATA0)、ACKパケットの内容を分析し、必要な情報を保持してよい。
【0064】
トランザクションT111に続いてトランザクションT112では、USBデバイス3がコントロールINパケットを送信すると、USBデータ中継装置2(調停部24)はUSBデバイス3から受信したコントロールINパケットを転送し(S112a)、パソコン1はUSBデータ中継装置2からコントロールINパケットを受信する。続いて、USBデータ中継装置2(調停部24)はパソコン1から送信されたデータパケット(DATA0)をUSBデバイス3へ転送し(S112b)、さらに、USBデバイス3から送信されたACKパケットをパソコン1へ転送する(S112c)。例えば、S112a〜S112cにおいても、S111aと同様に、USBデータ中継装置2の内部(コマンド分析部21)で、コントロールINパケット、データパケット(DATA0)、ACKパケットの内容を分析し、必要な情報を保持してよい。
【0065】
トランザクションT112に続いてトランザクションT113では、USBデバイス3がコントロールOUTパケットを送信すると、USBデータ中継装置2(調停部24)はUSBデバイス3から受信したコントロールOUTパケットを転送し(S113a)、パソコン1はUSBデータ中継装置2からコントロールOUTパケットを受信する。続いて、USBデータ中継装置2(調停部24)はUSBデバイス3から送信されたデータパケット(DATA0)をパソコン1へ転送し(S113b)、さらに、パソコン1から送信されたACKパケットをUSBデバイス3へ転送する(S113c)。例えば、S113a〜S113cにおいても、S111aと同様に、USBデータ中継装置2の内部(コマンド分析部21)で、コントロールOUTパケット、データパケット(DATA0)、ACKパケットの内容を分析し、必要な情報を設定格納バッファ22に保持してよい。
【0066】
図9は、本実施の形態に係るUSBデータ中継装置2における、アップストリームのデータの流れであり、転送モードがバルク転送(バルクイン転送)の場合のデータの流れを示している。
【0067】
バルクイン転送の場合、セレクタ25及び26は接続を切り替える。セレクタ25は、データバッファの出力端子とパソコン1(パソコン1側のUSB端子)とを接続し、セレクタ26は、データバッファの入力端子とUSBデバイス3(USBデバイス3側のUSB端子)とを接続するため、パソコン1−データバッファ(FIFO)23−調停部24−USBデバイス3の経路となる。
【0068】
すなわち、バルクイン転送のデータは、USBデバイス3から調停部24に入力される。調停部24は、入力されたデータを、セレクタ26を介してデータバッファ23に転送し、データバッファ23は、転送されたデータを一旦蓄積する。その後、データバッファ23は、先入れ/先出し(FIFO)方式により、蓄積したデータをセレクタ25を介してパソコン1へ出力する。そして、出力されたバルクイン転送のデータがパソコン1に到達する。
【0069】
図10は、バルクイン転送フローにおける転送シーケンスであり、
図9のデータ毎の流れを時系列に示している。
【0070】
まず、トランザクションT101では、パソコン1がバルク転送INパケット(IN0)のコマンドを送信すると、USBデータ中継装置2(調停部24)はパソコン1から受信したバルク転送INパケット(IN0)をスルーしてUSBデバイス3へ転送し(S121a)、USBデバイス3はUSBデータ中継装置2からバルク転送INパケット(IN0)を受信する。
【0071】
続いて、USBデータ中継装置2(調停部24)は、バルク転送INパケット(IN0)に対してUSBデバイス3から送信されたデータパケット(DATA0)を受信し、受信したデータバケット(DATA0)をデータバッファ(FIFO)23に保持するとともに(S121b)、USBデータ中継装置2(調停部24)が自動的にUSBデバイス3へACKパケット(肯定応答)を送信する(S121c)。
【0072】
さらに、USBデータ中継装置2(例えばセレクタ25)は、データバッファ(FIFO)23に保持されていたデータパケット(DATA0)をパソコン1に送信し(S121d)、データパケット(DATA0)を受信したパソコン1がUSBデータ中継装置2にACKパケット(肯定応答)を送信し、USBデータ中継装置2(例えばセレクタ25)はパソコン1からACKパケットを受信する(S121e)。
【0073】
トランザクションT101に続いてトランザクションT122、T123では、同様に、USBデータ中継装置2は、パソコン1から受信したバルク転送INパケット(IN1、IN2)をUSBデバイス3へ転送し(S122a、S123a)、USBデバイス3から受信したデータパケット(DATA1、DATA2)をデータバッファ(FIFO)23に保持するとともに(S122b、S123b)、USBデバイス3へACKパケットを送信する(S122c、S123c)。さらに、USBデータ中継装置2は、保持されていたデータパケット(DATA1、DATA2)をパソコン1に送信し(S122d、S123d)、パソコン1からACKパケットを受信する(S122e、S123e)。
【0074】
図11は、バルクイン転送フローにおける転送シーケンスの高負荷時の例であり、バルク転送フローとデータバッファ23の変移(状態)を示している。
【0075】
パソコン1における処理が高負荷になり、パソコン1からUSBデバイス3へのバルク転送INのコマンドの送信間隔が長くなっても、本実施の形態では、USBデータ中継装置2が、パソコン1に代わって、自動的にUSBデバイス3に対しバルク転送を要求してデータを収集しデータバッファ23へ蓄積する。
【0076】
まず、トランザクションT131では、
図10と同様に、USBデータ中継装置2は、パソコン1から受信したバルク転送INパケット(IN0)をUSBデバイス3へ転送し(S131a)、USBデバイス3から受信したデータパケット(DATA0)をデータバッファ(FIFO)23に保持するとともに(S131b)、USBデバイス3へACKパケットを送信する(S131c)。さらに、USBデータ中継装置2は、データバッファ(FIFO)23に保持されていたデータパケット(DATA0)をパソコン1に送信し(S131d)、パソコン1からACKパケットを受信する(S131e)。このとき、データパケット(DATA0)が転送されたため、データバッファ(FIFO)23に、データパケットは保持されていない。
【0077】
トランザクションT131に続いてトランザクションT132では、USBデータ中継装置2(調停部24)は、自動的にバルク転送INパケット(IN1)をUSBデバイス3へ送信し(S132a)、USBデバイス3はUSBデータ中継装置2からバルク転送INパケット(IN1)を受信する。続いて、USBデータ中継装置2(調停部24)は、バルク転送INパケット(IN1)に対してUSBデバイス3から送信されたデータパケット(DATA1)を受信し、受信したデータバケット(DATA1)をデータバッファ(FIFO)23に保持するとともに(S132b)、USBデータ中継装置2(調停部24)がUSBデバイス3へACKパケット(肯定応答)を送信する(S132c)。このとき、データパケット(DATA1)が転送されていないため、データバッファ(FIFO)23に、データパケット(DATA1)が保持された状態となる。
【0078】
本実施の形態では、トランザクションT131のシーケンスを定期的に繰り返し実行する。例えば、USBデバイス3における、データ(パケット)の保存期間の間(保存期間内)にバルク転送INパケットを送信するようにする。
【0079】
すなわち、トランザクションT132に続いてトランザクションT133では、トランザクションT132と同様に、USBデータ中継装置2は、バルク転送INパケット(IN2)をUSBデバイス3へ送信し(S133a)、USBデバイス3から送信されたデータパケット(DATA2)を受信し、受信したデータバケット(DATA2)をデータバッファ(FIFO)23に保持するとともに(S133b)、USBデバイス3へACKパケット(肯定応答)を送信する(S133c)。このとき、データパケット(DATA1、DATA2)が転送されていないため、データバッファ(FIFO)23に、データパケット(DATA1、DATA2)が保持された状態となる。
【0080】
トランザクションT133に続いてトランザクションT134では、パソコン1がバルク転送INパケット(IN1)を送信し、USBデータ中継装置2(例えばセレクタ25)がバルク転送INパケット(IN1)を受信すると(S134a)、USBデータ中継装置2(例えばセレクタ25)は、データバッファ(FIFO)23に保持されていたデータパケット(DATA1)をパソコン1に送信する(S134b)。データパケット(DATA1)を受信したパソコン1がUSBデータ中継装置2にACKパケット(肯定応答)を送信し、USBデータ中継装置2(例えばセレクタ25)はパソコン1からACKパケットを受信する(S134c)。このとき、データパケット(DATA1)が転送されたため、データバッファ(FIFO)23に、データパケット(DATA2)が保持された状態となる。
【0081】
トランザクションT134に続いてトランザクションT135では、トランザクションT132と同様に、USBデータ中継装置2は、バルク転送INパケット(IN3)をUSBデバイス3へ送信し(S135a)、USBデバイス3から送信されたデータパケット(DATA3)を受信し、受信したデータバケット(DATA3)をデータバッファ(FIFO)23に保持するとともに(S135b)、USBデバイス3へACKパケット(肯定応答)を送信する(S135c)。このとき、データパケット(DATA2、DATA3)が転送されていないため、データバッファ(FIFO)23に、データパケット(DATA2、DATA3)が保持された状態となる。
【0082】
図12は、バルクイン転送フローにおける転送シーケンスの高負荷時の他の例であり、バルク転送フローとデータバッファ23の変移(状態)を示している。
【0083】
USBデータ中継装置2は自動的にUSBデバイス3からデータを収集するが、データ収集停止条件は、
図6のフローで収集された設定パケット(設定パケットデータ)の「転送データサイズ(最大データ長)」と比較し、この値未満のデータサイズとなった場合を終了と判断する。継続して要求されるパソコン1からのバルク転送要求に対してはデータバッファ23に蓄積されたデータを順次転送する。
【0084】
すなわち、
図11と同様に、まず、トランザクションT141では、USBデータ中継装置2は、パソコン1から受信したバルク転送INパケット(IN0)をUSBデバイス3へ転送し(S141a)、USBデバイス3から受信したデータパケット(DATA0)をデータバッファ(FIFO)23に保持するとともに(S141b)、USBデバイス3へACKパケットを送信する(S141c)。さらに、USBデータ中継装置2は、データバッファ(FIFO)23に保持されていたデータパケット(DATA0)をパソコン1に送信し(S141d)、パソコン1からACKパケットを受信する(S141e)。
【0085】
トランザクションT141に続いてトランザクションT142では、USBデータ中継装置2は、自動的にバルク転送INパケット(IN1)をUSBデバイス3へ送信し(S142a)、バルク転送INパケット(IN1)に対してUSBデバイス3から受信したデータバケット(DATA1)をデータバッファ(FIFO)23に保持するとともに(S142b)、USBデバイス3へACKパケットを送信する(S142c)。
【0086】
さらに、トランザクションT143では、USBデータ中継装置2は、自動的にバルク転送INパケット(IN2)をUSBデバイス3へ送信し(S143a)、バルク転送INパケット(IN2)に対してUSBデバイス3から受信したデータバケット(DATA2)をデータバッファ(FIFO)23に保持するとともに(S143b)、USBデバイス3へACKパケットを送信する(S143c)。
【0087】
例えば、S142b、S143bにおいて、USBデータ中継装置2(例えば調停部24)は、受信したデータパケット(DATA1、DATA2)のデータサイズが、最大データ長未満、もしくは0バイトの場合、データパケットの自動収集を終了する。また、データサイズが最大データ長の場合は、後続のデータがあると推定されるため、自動収集を続ける。
【0088】
トランザクションT143に続いて(もしくは並行して)トランザクションT144では、USBデータ中継装置2は、パソコン1からバルク転送INパケット(IN1)を受信すると(S144a)、データバッファ(FIFO)23に保持されていたデータパケット(DATA1)をパソコン1に送信し(S144b)、パソコン1からACKパケットを受信する(S144c)。このとき、データパケット(DATA1)が転送されたため、データバッファ(FIFO)23に、データパケット(DATA2)が保持された状態となる。
【0089】
トランザクションT144に続いてトランザクションT145では、USBデータ中継装置2は、パソコン1からバルク転送INパケット(IN2)を受信すると(S145a)、データバッファ(FIFO)23に保持されていたデータパケット(DATA2)をパソコン1に送信し(S145b)、パソコン1からACKパケットを受信する(S145c)。このとき、データパケット(DATA2)が転送されたため、データバッファ(FIFO)23に、データパケット(DATA2)は保持されていない。
【0090】
図13は、本実施の形態に係るUSBデータ中継装置の動作を示すフローチャートであり、バルク転送データの自動的収集処理(
図13(a))とバルク転送の終了判定処理(
図13(b))を示している。
【0091】
図13(a)に示すように、まず、USBデータ中継装置2はUSBデバイス3(またはパソコン1)からパケットを受信すると、調停部24のコマンド分析部21は、受信したパケットの転送モード(パケット転送モード)を判別し(S1)、転送モードがバルク転送か否か判定する(S2)。例えば、
図10〜
図12のようにバルク転送INパケットを受信した場合、バルク転送モードであると判定する。S2において転送モードがバルク転送以外の場合、調停部24は、受信したパケットをそのままスルーし、パソコン1(またはUSBデバイス3)へ転送する(S10)。
【0092】
また、S2において転送モードがバルク転送であった場合、コマンド分析部21は、受信したパケットのデータ方向を確認し(S3)、データ方向が入力(IN)か否か判定する(S4)。例えば、
図10〜
図12のようにバルク転送INパケットを受信した場合、入力(IN)であると判定する。S4においてデータ方向が入力(IN)ではない、すなわち、出力(OUT)であった場合、調停部24は、受信したパケットをそのままスルーし、パソコン1(またはUSBデバイス3)へ転送する(S10)。
【0093】
また、S4においてデータ方向が入力(IN)であった場合、調停部24は、データバッファ23を確認(S5)し、データバッファ23のデータの有無を判定する(S6)。S6においてデータバッファ23にデータが有る場合、データバッファ23は、保持しているデータをパソコン1に送信する(S9)。
【0094】
また、S6においてデータバッファ23にデータが無い場合、調停部24(またはコマンド分析部21)は、ターゲット(USBデバイス3)よりデータを取得し(S7)、データバッファ(FIFO)23に取得したデータのバッファリングを開始する(S8)。
【0095】
図13(b)に示すように、S8においてデータのバッファリングが開始されると、まず、調停部24(またはコマンド分析部21)は、ターゲット(USBデバイス3)よりデータを取得し(S11)、取得したデータをデータバッファ(FIFO)23にバッファリングする(S12)。
【0096】
その後、調停部24は、データバッファ23のデータ量(取得したデータのデータサイズ)を確認し(S13)、そのデータ量が最大データ長未満か否か判定する(S14)。S14においてデータ量が最大データ長未満の場合、データバッファ(FIFO)23へのバッファリングを終了し、データバッファ(FIFO)23上のデータを(例えばセレクタ25が)パソコン1に転送する(S9)。
【0097】
また、S14においてデータバッファ23上のデータ量が最大データ長未満ではない場合、すなわち、データ量が最大データ長以上の場合、再びターゲットより残りのデータを取得(S11)する時点にまで戻り、データ量が最大データ長未満(S14)になるまでS11〜S14の処理を定期的に繰り返す。データ量が最大データ量未満(S14)になったとき、データバッファ(FIFO)23上のデータをパソコン1に転送する(S9)。
【0098】
以上のように、本実施の形態では、パソコンとUSBデバイスの中間にUSBデータ中継装置を挿入するが、データやACKの送信をUSBデータ中継装置が自動的に行うことにより、パソコンとUSBデバイスが直接通信している様に扱うことができる(中間で本装置が介在しているが透過的に扱われる)。
【0099】
USBデバイス側で保持している大量のデータを確実に収集する為、「バルクイン転送」のデータをバッファリングする。このバッファリング機能は「バルクイン転送」を検出した場合、本装置が代理で自主的にUSBデバイスに保持されているデータを収集する機能が実装される(パソコンの負荷状態に依存しない)。パソコンからの「バルクイン転送」要求に応じて本装置が保持したデータを順次転送することにより実現する。
【0100】
本実施の形態によれば、パソコンにおける計算負荷の増加や通信帯域不足の発生によりUSBデバイスからパソコンへの一定期間内に確実な「バルクイン転送」が実施できない状況の場合でも、USBデバイスからパソコンへの「バルクイン転送」をUSBデータ中継装置により代理でUSBデバイスからデータ集積を行うことにより、USBデータ中継装置に蓄積されたデータをパソコンに順次送信することで、USBデバイスからのデータ収集を保証することが可能となる。
【0101】
すなわち、パソコンに接続されたUSBデバイスにおいて、USBデバイスから「バルクイン転送」で出力される大量のデータを確実に収集し、かつ効率良く行うことができる。USBデバイスが、あるイベントを起点に蓄積したデータ(例としてイメージスキャナやデジタルカメラ等)を、接続されたパソコンの負荷状態に係わらず確実に、かつ効率良くデータを取得することができる。
【0102】
(実施の形態2)
以下、図面を参照して実施の形態2について説明する。実施の形態1では、USBデータ中継装置2に1つのUSBデバイス3を接続する例について説明したが、
図14に示すように、複数のUSBデバイス3(31〜33)を接続してもよい。
【0103】
すなわち、USBデータ中継装置2にハブ機能(同一転送方式を持つ複数のUSBデバイス3を接続できる機能)を持たせてもよいし、更にデータ転送方式が各々異なる複数のUSBデバイス3を接続しても保障されたデータ転送を行えるようにしてもよい。
【0104】
図15は、パソコン1にUSBデバイス31、USBデバイス32、USBデバイス33の3つのUSBデバイス3を接続した参考例における、バルクイン転送フローの転送シーケンスである。
【0105】
複数のUSBデバイス3に対してバルクイン転送を実行すると、一つのUSBデバイス3とのバルクイン転送の実行間隔が長くなる。バルクイン転送の実行間隔がUSBデバイス3におけるデータファイル保存時間を超えてしまうと、USBデバイス3で保持していたデータが消失するため、パソコン1へこの消失したデータを転送することができない。
【0106】
すなわち、パソコン1は、データファイルD11保存期間経過前に、バルクイン転送IN11を実行して、USBデバイス31からデータファイルD11を取得し、データファイルD21保存期間経過前に、バルクイン転送IN21を実行して、USBデバイス32からデータファイルD21を取得している。
【0107】
しかし、データファイルD31保存期間経過後に、バルクイン転送IN31を実行しているため、データファイルD31は既に消去されており、USBデバイス33からデータファイルD31の代わりにデータファイルD32が取得されている。また、データファイルD12保存期間経過後に、バルクイン転送IN12を実行しているため、データファイルD12は既に消去されており、USBデバイス31からデータファイルD12の代わりにデータファイルD13が取得されている。さらに、データファイルD22保存期間経過後に、バルクイン転送IN22を実行しているため、データファイルD22は既に消去されており、USBデバイス32からデータファイルD22の代わりにデータファイルD23が取得されている。
【0108】
図16は、
図14の本実施の形態に係るUSB中継システムの構成における、バルクイン転送フローの転送シーケンスである。
【0109】
実施の形態1では、
図11〜
図13で説明したように、USBデータ中継装置2が自動的にUSBデバイス3からデータを収集した。
図16でも、実施の形態1と同様に、USBデータ中継装置2は、自動的にバルク転送INをUSBデバイス31〜33へ送信し、USBデバイス31〜33から送信されたデータパケット(データファイル)を受信し、受信したデータバケット(データファイル)をデータバッファ(FIFO)23に保持する。
【0110】
したがって、パソコン1とUSBデバイス31、USBデバイス32、USBデバイス33の通信路間にUSBデータ中継装置2を挿入することで、実施の形態1と同様に転送データの保障が可能となる。
【0111】
すなわち、USBデータ中継装置2は、データファイルD11、D21、D31保存期間経過前に、バルクイン転送INを実行して、USBデバイス31からデータファイルD11を取得し、USBデバイス32からデータファイルD21を取得し、USBデバイス33からデータファイルD31を取得し、データバッファ(FIFO)23に保持する。
【0112】
同様に、USBデータ中継装置2は、データファイルD12、D22、D32保存期間経過前に、USBデバイス31からデータファイルD12を取得し、USBデバイス32からデータファイルD22を取得し、USBデバイス33からデータファイルD32を取得し、また、データファイルD13、D23、D33保存期間経過前に、USBデバイス31からデータファイルD13を取得し、USBデバイス32からデータファイルD23を取得し、USBデバイス33からデータファイルD33を取得する。
【0113】
一方、パソコン1は、定期的に、バルクイン転送を実行し、USBデータ中継装置2から、データバッファ(FIFO)23に保持されているデータファイルを順次(D11、D21、D31、D12、D22)、正常に取得する。この場合、USBデータ中継装置2は、パソコン1から要求されるバルクイン転送のUSBデバイス3に対応したデータをデータバッファ(FIFO)23から検索し、データ転送元が一致するデータをパソコン1へ送信することが好ましい。
【0114】
図17は、パソコン1にUSBデバイス31、USBデバイス32、USBデバイス33の3つのUSBデバイス3を接続した参考例における、複数種類の転送処理フローが発生した場合の転送シーケンスである。
【0115】
複数の転送形式のデータ処理をパソコン1が実行すると、バルク転送のデータ処理の優先順位はその他の種別の転送形式に比べて低いため、バルクイン転送の実行間隔は長くなる。
バルクイン転送の実行間隔がUSBデバイス3におけるデータファイル保存時間を超えてしまうと、USBデバイス3で保持していたデータが消失するため、パソコン1へこの消失したデータを転送することができない。
【0116】
すなわち、パソコン1は、データファイルD11保存期間経過前に、バルクイン転送IN11を実行して、USBデバイス31からデータファイルD11を取得している。しかし、その後、USBデバイス32に対するインターラプト転送IT2、USBデバイス33に対するアイソクロナス転送IS3が優先的に実行されている。このため、データファイルD12保存期間経過後に、バルクイン転送IN12を実行し、データファイルD12は既に消去されており、USBデバイス31からデータファイルD12の代わりにデータファイルD13が取得されている。
【0117】
図18は、
図14の本実施の形態に係るUSB中継システムの構成における、複数種類の転送フローの転送シーケンスである。
【0118】
図18でも、実施の形態1と同様に、バルクイン転送フローのUSBデバイス3から自動的にデータを収集する。すなわち、実施の形態1と同様に、USBデータ中継装置2は、自動的にバルク転送INをUSBデバイス31へ送信し、USBデバイス31から送信されたデータパケット(データファイル)を受信し、受信したデータバケット(データファイル)をデータバッファ(FIFO)23に保持する。
【0119】
したがって、パソコン1とUSBデバイス31、USBデバイス32、USBデバイス33の通信路間にUSBデータ中継装置2を挿入することで、実施の形態1と同様に転送データの保障が可能となる。
【0120】
すなわち、USBデータ中継装置2は、データファイルD11保存期間経過前に、バルクイン転送INを実行して、USBデバイス31からデータファイルD11を取得し、データバッファ(FIFO)23に保持する。同様に、USBデータ中継装置2は、データファイルD12保存期間経過前に、USBデバイス31からデータファイルD12を取得し、また、データファイルD13保存期間経過前に、USBデバイス31からデータファイルD13を取得する。
【0121】
一方、パソコン1は、インターラプト転送、アイソクロナス転送の空いているタイミングで、バルクイン転送を実行し、USBデータ中継装置2から、データバッファ(FIFO)23に保持されているデータファイルを順次(D11、D12、D13)、正常に取得する。
【0122】
(実施の形態3)
以下、図面を参照して実施の形態3について説明する。実施の形態1では、アップストリームのバルク転送(バルクイン転送)のみバッファリング(自動収集)する例について説明を行ったが、その他の転送方式でも同様にバッファリングを行い、データの保障を行うようにしてもよい。例えば、バルク転送以外のコントロール転送、インターラプト転送、アイソクロナス転送についても同様にバッファリングしてもよい。
【0123】
また、アップストリームに限らず、ダウンストリームのデータ転送についてもバッファリングを行ってもよい。例えば、
図19に示すように、USBデータ中継装置2が、ダウンストリーム用のコマンド分析部21a、セレクタ26a、調停部24a、設定格納バッファ22a、アップストリーム用のコマンド分析部21b、セレクタ26b、調停部24b、設定格納バッファ22bを備えてもよい。これにより、アップストリームとダウンストリーム両方の全種類の転送をバッファリングすることができる。
【0124】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【0125】
上述の実施形態における各構成は、ハードウェア又はソフトウェア、もしくはその両方によって構成され、1つのハードウェア又はソフトウェアから構成してもよいし、複数のハードウェア又はソフトウェアから構成してもよい。USB中継装置の各機能(各処理)を、CPUやメモリ等を有するコンピュータにより実現してもよい。例えば、記憶装置に実施形態におけるUSB中継方法(USB中継処理)を行うためのUSB中継プログラムを格納し、各機能を、記憶装置に格納されたUSB中継プログラムをCPUで実行することにより実現してもよい。
【0126】
これらのプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。