(57)【要約】【課題】高いデータ転送速度を有するＵＳＢデバイス、ＵＳＢシステム、データ転送方法、及びプログラムを提供すること。【解決手段】本発明の実施の形態にかかるＵＳＢデバイス２０は、ＵＳＢホスト１０との間でパケットを送受信するＵＳＢインターフェース３０と、ＵＳＢインターフェース３０を介して送信又は受信するパケットのパケットデータを複数格納するバッファ２８と、バッファ２８に格納されたパケットデータが転送されるシステムバス４０と、バッファ２８の空き状況又は格納状況を示す値と閾値とを比較し、比較結果に応じてＵＳＢホスト１０に通信準備が完了したことを示す準備完了パケットを送信する通信制御部２９と、を備えたものである。【選択図】図９
2015011449.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢホストとの間でパケットを送受信するＵＳＢインターフェースと、
前記ＵＳＢインターフェースを介して送信又は受信するパケットのパケットデータを複数格納するバッファと、
前記バッファに格納された前記パケットデータ、又は前記バッファに格納する前記パケットデータが伝送されるシステムバスと、
前記バッファの空き状況又は格納状況を示す値と閾値とを比較し、比較結果に応じて前記ＵＳＢホストに通信準備が完了したことを示す準備完了パケットを送信する通信制御部と、を備えたＵＳＢデバイス。
【請求項２】
前記準備完了パケットを送信した後、受信した前記パケットの前記パケットデータを前記バッファから前記システムバスに送出することで前記バッファの空きを増やす、又は送信する前記パケットのパケットデータをシステムバスから前記バッファに送出することで前記バッファの格納数を増やす請求項１に記載のＵＳＢデバイス。
【請求項３】
前記バッファに空きがない場合、前記ＵＳＢホストにパケット転送を待機させる待機パケットを送信し、
前記バッファの空き状況を示す値が前記閾値を越えた場合、前記準備完了パケットを送信する請求項１、又は２に記載のＵＳＢデバイス。
【請求項４】
前記バッファに送信データがない場合、前記ＵＳＢホストにパケット転送を待機させる待機パケットを送信し、
前記バッファの格納状況を示す値が前記閾値を越えた場合、前記準備完了パケットを送信する請求項１、２、又は３に記載のＵＳＢデバイス。
【請求項５】
前記ＵＳＢホストとの通信状況に応じて、前記閾値が設定可能である請求項１〜４のいずれか１項に記載のＵＳＢデバイス。
【請求項６】
請求項１〜５のいずれか１項に記載のＵＳＢホストと、
前記ＵＳＢインターフェースを介して前記ＵＳＢホストにパケットを送受信するＵＳＢホストと、を備えたＵＳＢシステムであって、
前記ＵＳＢホストが、前記準備完了パケットに応答して、パケットを送信するＵＳＢシステム。
【請求項７】
ＵＳＢデバイスのバッファに、ＵＳＢホストから受信したパケット又は前記ＵＳＢホストに送信するパケットのパケットデータを格納し、
前記ＵＳＢデバイスのシステムバスに前記パケットデータを送出し、
前記バッファの空き状況又は格納状況を示す値と閾値とを比較して、前記ＵＳＢホストに通信準備が完了したことを示す準備完了パケットを送信し、
前記準備完了パケットに応答して、前記ＵＳＢホストがパケットを送信するデータ転送方法。
【請求項８】
前記準備完了パケットを送信した後、受信した前記パケットの前記パケットデータを前記バッファから前記システムバスに送出する、又は送信する前記パケットのパケットデータをシステムバスから前記バッファに送出する請求項７に記載のデータ転送方法。
【請求項９】
前記バッファに空きがない場合、前記ＵＳＢホストにパケット転送を待機させる待機パケットを送信し、
前記バッファの空き状況を示す値が前記閾値を越えた場合、前記準備完了パケットを送信する請求項７、又は８に記載のデータ転送方法。
【請求項１０】
前記バッファに送信データがない場合、前記ＵＳＢホストにパケット転送を待機させる待機パケットを送信し、
前記バッファの格納状況を示す値が前記閾値を越えた場合、前記準備完了パケットを送信する請求項７、８、又は９に記載のデータ転送方法。
【請求項１１】
前記ＵＳＢホストとの通信状況に応じて、前記閾値が設定可能である請求項７〜１０のいずれか１項に記載のデータ転送方法。
【請求項１２】
ＵＳＢホストとの間でパケットを送受信するＵＳＢデバイスに対して、
前記ＵＳＢホストから受信したパケット又は前記ＵＳＢホストに送信するパケットのパケットデータをバッファに格納するステップと、
システムバスに前記パケットデータを送出するステップと、
前記バッファの空き状況又は格納状況を示す値と閾値とを比較して、前記ＵＳＢホストに通信準備が完了したことを示す準備完了パケットを送信するステップと、
を実行させるプログラム。
【請求項１３】
前記準備完了パケットを送信した後、受信した前記パケットの前記パケットデータを前記バッファから前記システムバスに送出する、又は送信する前記パケットのパケットデータをシステムバスから前記バッファに送出するステップをさらに実行させる請求項１２に記載のプログラム。
【請求項１４】
前記バッファに空きがない場合、前記ＵＳＢホストにパケット転送を待機させる待機パケットを送信するステップと、
前記バッファの空き状況を示す値が前記閾値を越えた場合、前記準備完了パケットを送信するステップを、実行させる請求項１２、又は１３に記載のプログラム。
【請求項１５】
前記バッファに送信データがない場合、前記ＵＳＢホストにパケット転送を待機させる待機パケットを送信するステップと、
前記バッファの格納状況を示す値が前記閾値を越えた場合、前記準備完了パケットを送信するステップと、をさらに実行させる請求項１２、１３、又は１４に記載のプログラム。
【請求項１６】
前記ＵＳＢホストとの通信状況に応じて、前記閾値が設定可能である請求項１２〜１５のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢデバイス、ＵＳＢシステム、データ転送方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、パソコンの周辺機器の接続などに用いられるインターフェース規格として、ＵＳＢ（Universal Serial Bus）規格が広く利用されている。ＵＳＢシステムでは、ＵＳＢホストと複数のＵＳＢデバイスとの間でデータ通信が行われる。
【０００３】
特許文献１には、ＵＳＢ２．０の規格に応じたＵＳＢインターフェース用のブリッジ装置が開示されている。特許文献１のブリッジ装置は、ＵＳＢインターフェース部とバッファとを備えている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−３２３３９７号公報
【特許文献２】特開２０１３−８１１３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献２には、ＵＳＢ３．０規格の通信システムが開示されている。ＵＳＢ３．０  Ｓｕｐｅｒ  Ｓｐｅｅｄでは、５Ｇｂｐｓの転送速度での通信が可能になる。ＵＳＢホストとＵＳＢデバイスとの間のデータ転送をより高速化したいという要望がある。
【０００６】
本発明は、高いデータ転送速度を有するＵＳＢデバイス、ＵＳＢシステム、データ転送方法、及びプログラムを提供するものである。
【課題を解決するための手段】
【０００７】
本願発明の一態様にかかるＵＳＢデバイスは、ＵＳＢホストとの間でパケットを送受信するＵＳＢインターフェースと、前記ＵＳＢインターフェースを介して送信又は受信するパケットのパケットデータを複数格納するバッファと、前記バッファに格納された前記パケットデータ、又は前記バッファに格納する前記パケットデータが伝送されるシステムバスと、前記バッファの空き状況又は格納状況を示す値と閾値とを比較し、比較結果に応じて前記ＵＳＢホストに通信準備が完了したことを示す準備完了パケットを送信する通信制御部と、を備えたものである。
【０００８】
本願発明の一態様にかかるデータ転送方法は、ＵＳＢデバイスのバッファに、ＵＳＢホストから受信したパケット又は前記ＵＳＢホストに送信するパケットのパケットデータを格納し、前記ＵＳＢデバイスのシステムバスに前記パケットデータを送出し、前記バッファの空き状況又は格納状況を示す値と閾値とを比較して、前記ＵＳＢホストに通信準備が完了したことを示す準備完了パケットを送信し、前記準備完了パケットに応答して、前記ＵＳＢホストがパケットを送信するものである。
【０００９】
本願発明の一態様にかかるプログラムは、ＵＳＢホストとの間でパケットを送受信するＵＳＢデバイスに対して、前記ＵＳＢホストから受信したパケット又は前記ＵＳＢホストに送信するパケットのパケットデータをバッファに格納するステップと、システムバスに前記パケットデータを送出するステップと、前記バッファの空き状況又は格納状況を示す値と閾値とを比較して、前記ＵＳＢホストに通信準備が完了したことを示す準備完了パケットを送信するステップと、を実行させるものである。
【発明の効果】
【００１０】
本発明によれば、高いデータ転送速度を有するＵＳＢデバイス、ＵＳＢシステム、データ転送方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１にかかるＵＳＢシステムの構成を示す図である。
【図２】実施の形態１にかかるＵＳＢデバイスの構成を示す図である。
【図３】ＯＵＴ転送のシーケンスを示す図である。
【図４】ＯＵＴ転送でのデータ転送速度の低下を説明するためのシーケンス図である。
【図５】実施の形態１にかかるデータ転送を用いたＯＵＴ転送のシーケンスを示す図である。
【図６】ＩＮ転送のシーケンスを示す図である。
【図７】ＩＮ転送でのデータ転送速度の低下を説明するためのシーケンス図である。
【図８】実施の形態１にかかるデータ転送を用いたＩＮ転送のシーケンスを示す図である。
【図９】実施の形態２にかかるＵＳＢシステムの構成を示す図である。
【発明を実施するための形態】
【００１２】
添付の図面を参照して本発明の実施形態を説明する。以下に説明する実施形態は本発明の実施例であり、本発明は、以下の実施形態に制限されるものではない。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【００１３】
実施の形態１．
（システム構成）
本実施の形態にかかるＵＳＢシステムとそのデータ転送方法について、図を参照して説明する。図１は、ＵＳＢシステム１００の全体構成を示す図である。ＵＳＢシステム１００はＵＳＢホスト１０とＵＳＢデバイス２０とを備えている。ＵＳＢホスト１０は、例えば、パーソナルコンピュータ等のホスト機能を有するＵＢＳ機器である。ＵＳＢデバイス２０は、例えば、プリンタ、カメラ、メモリ等の周辺機器であり、ＵＳＢ通信のエンドポイントとなる。
【００１４】
ＵＳＢホスト１０とＵＳＢデバイス２０はＵＳＢインターフェース３０を介して接続されている。ＵＳＢインターフェース３０を介して、ＵＳＢホスト１０とＵＳＢデバイス２０とがパケット通信を行う。ＵＳＢホスト１０は、ＵＳＢインターフェース３０を介して、ＵＳＢデバイス２０にパケットを送信する。また、ＵＳＢデバイス２０は、ＵＳＢインターフェース３０を介して、ＵＳＢホスト１０にパケットを送信する。
【００１５】
ＵＳＢホスト１０は、ＵＳＢデバイス２０とのデータ通信を制御する。例えば、ＵＳＢホスト１０がＵＳＢデバイス２０に対してデータ転送要求やパケット要求を行うことで、ＵＳＢデバイス２０がデータを転送する。ＵＳＢホスト１０とＵＳＢデバイス２０がＵＳＢ規格に従ったプロトコルでデータを通信する。ここでは、ＵＳＢホスト１０とＵＳＢデバイス２０は、ＵＳＢ３．０ Super Speedの規格に従ってデータ通信を行う。なお、ＵＳＢ規格に準拠したデータ通信については、公知の方法と同様であるため詳細な説明を省略する。
【００１６】
ＵＳＢデバイス２０は、システムバス４０を備えている。ＵＳＢデバイス２０は、ＵＳＢホスト１０との間でパケット通信を行い、パケットに含まれるパケットデータをシステムバス４０に送出する。例えば、ＵＳＢデバイス２０は、ＵＳＢホスト１０からのパケットを受信する。ＵＳＢデバイス２０は受信したパケットを解析して、パケットに含まれるパケットデータをシステムバス４０に転送する。これにより、パケットデータがＵＳＢデバイス２０のメモリ等に記憶される。また、ＵＳＢデバイス２０は、ＵＳＢホスト１０への応答を行う。この場合、ＵＳＢデバイス２０は、をシステムバス４０から転送されたデータに基づいて、パケットを構築する。そして、ＵＳＢデバイス２０は、ＵＳＢインターフェース３０を介して、パケットをＵＳＢホスト１０に送信する。
【００１７】
さらに、ＵＳＢデバイス２０は、パケットデータを格納するバッファの空き数、又はバッファに格納されたデータ数を管理する。そして、ＵＳＢデバイス２０は、空き数又はデータ数を閾値と比較する。ＵＳＢデバイス２０は、閾値判定を行うことにより送受信パケット制御を効率化して、テータ転送速度の向上を図る。さらに、通信状況に応じて任意の閾値を設定可能にすることにより、接続するＵＳＢホスト１０に合わせて最適化することができる。これにより、システム構成に合わせて、転送速度向上を図ることができる。この制御については後述する。
【００１８】
なお、図１では、１つのＵＳＢホスト１０に１つのＵＳＢデバイス２０が接続されている構成が示されているが、１つのＵＳＢホスト１０に複数のＵＳＢデバイス２０が接続されていてもよい。以下の説明において、ＵＳＢホスト１０からＵＳＢデバイス２０にデータパケットを送信する場合を、ＯＵＴ転送とし、ＵＳＢデバイス２０からＵＳＢホスト１０にデータパケットを送信する場合をＩＮ転送とする。
【００１９】
（デバイス構成）
ＵＳＢデバイス２０について、図２を用いて説明する。図２は、ＵＳＢデバイス２０の構成を示すブロック図である。ＵＳＢデバイス２０は、ＵＳＢインターフェース３０、物理層ユニット２１、リンク層ユニット２２、プロトコル層ユニット２３、ＤＭＡ（Direct Memory Access）コントローラ２４、レジスタ制御部２５、及びシステムバス４０を備えている。プロトコル層２３は、ＯＵＴ転送バッファ２６とＩＮ転送バッファ２７とを備えている。物理層ユニット２１、リンク層ユニット２２、プロトコル層ユニット２３、ＤＭＡコントローラ２４、及びレジスタ制御部２５が、パケット通信を制御する通信制御部となる。
【００２０】
ＵＳＢインターフェース３０は、上記の通り、ＵＳＢホスト１０と接続しており、ＵＳＢホスト１０との間でＵＳＢ通信を行うためのインターフェースとなる。物理層ユニット２１は、物理（ＰＨＹ）層処理を行い、物理層を制御する回路である。例えば、物理層ユニット２１はＡ／Ｄ変換器やＤ／Ａ変換器を有している。そして、物理層ユニット２１は、ＯＵＴ転送時には、差動信号をＡ／Ｄ変換してデジタル信号を生成して、リンク層ユニット２２に送出する。物理層ユニット２１は、ＩＮ転送時にはＤ／Ａ変換によりアナログの差動信号を生成して、ＵＳＢインターフェース３０に送出する。
【００２１】
リンク層ユニット２２は、リンク層処理を行い、リンク層を制御する回路である。リンク層ユニット２２は、物理層ユニット２１とプロトコル層ユニット２３との間に配置されている。例えば、ＯＵＴ転送時に、リンク層ユニット２２は、パケットヘッダの解析を行い、パケットデータをプロトコル層ユニット２３に送出する。また、ＩＮ転送時に、リンク層ユニット２２は、プロトコル層ユニット２３から受け取った情報をパケットに構築し、物理層ユニット２１に送出する。
【００２２】
プロトコル層ユニット２３は、プロトコル層処理を行い、プロトコル層を制御する回路である。例えば、プロトコル層ユニット２３は、パケットデータを解析する。プロトコル層ユニット２３は、物理層ユニット２１、及びリンク層ユニット２２を介して、データを送受信する。
【００２３】
さらに、プロトコル層ユニット２３は、ＯＵＴ転送バッファ２６、ＩＮ転送バッファ２７を有している。ＯＵＴ転送バッファ２６は、ＯＵＴ転送時にパケットデータを格納する。例えば、ＯＵＴ転送バッファ２６は、リンク層ユニット２２からのパケットデータをバッファし、ＤＭＡコントローラ２４を介してシステムバス４０に送出する。ＩＮ転送バッファ２７は、ＩＮ転送時にパケットデータを格納する。例えば、ＩＮ転送バッファ２７は、ＤＭＡコントローラ２４からのパケットデータをバッファし、リンク層ユニット２２に送出する。
【００２４】
ＯＵＴ転送バッファ２６、及びＩＮ転送バッファ２７は、それぞれ、最大１６パケットまで設定可能なバッファ段数を持っている。すなわち、ＯＵＴ転送バッファ２６、及びＩＮ転送バッファ２７は、それぞれ１６段のバッファを有し、各段に１パケット分のパケットデータをバッファする。もちろん、ＯＵＴ転送バッファ２６、及びＩＮ転送バッファ２７の段数は１６に限定されるものではなく、２以上の段数であればよい。プロトコル層ユニット２３は、ＯＵＴ転送バッファ２６の空き数、及びＩＮ転送バッファ２７のデータ格納数をバッファの空き状況、又は格納状況を示す値として求める。そして、プロトコル層ユニット２３は、バッファの空き状況又は格納状況を示す値を管理して、通信を制御する。
【００２５】
ＤＭＡコントローラ２４は、システムバス４０と接続されている。システムバス４０は、図示しないメモリ等と接続されている。したがって、ＤＭＡコントローラ２４は、システムバス４０を介して、メモリ等と接続されている。そして、ＤＭＡコントローラ２４は、ダイレクトメモリアクセスによってメモリへのデータの書き込み、及びメモリからのデータの読み出しを制御する。ＯＵＴ転送時には、ＤＭＡコントローラ２４は、ＯＵＴ転送バッファ２６に格納されたパケットデータをメモリに書き込む。ＩＮ転送時には、ＤＭＡコントローラ２４は、メモリに記憶されたデータを読み出し、送信データとして、ＩＮ転送バッファ２７に格納する。
【００２６】
レジスタ制御部２５は、ＯＵＴ転送バッファ２６の空き数、又はＩＮ転送バッファ２７データ数を管理するための閾値を設定する。レジスタ制御部２５は、閾値を設定する設定レジスタを有している。したがって、レジスタ制御部２５が閾値を記憶する閾値記憶部となる。
【００２７】
ＯＵＴ転送処理について説明する。ＵＳＢインターフェース３０を介して、ＵＳＢデバイス２０がＵＳＢホスト１０からのパケットを受信する。すると、物理層ユニット２１は、パケットのハード的なチェックを行い、リンク層ユニット２２に送出する。リンク層ユニット２２は、パケットに含まれるヘッダ情報の解析等を行う。リンク層ユニット２２は、パケットに含まれるパケットデータをプロトコル層ユニット２３に送出する。なお、受信エラー等が起きた場合、リンク層ユニット２２がＵＳＢホスト１０に再送処理を要求する。
【００２８】
プロトコル層ユニット２３は、パケットデータを解析して、必要なパケットデータをＯＵＴ転送バッファ２６に格納する。ＯＵＴ転送バッファ２６は複数のパケットのパケットデータを格納するように、複数段設けられている。よって、プロトコル層ユニット２３は、１パケットのパケットデータをＯＵＴ転送バッファ２６に順番に格納していく。すなわち、プロトコル層ユニット２３は、ＯＵＴ転送バッファ２６の空いているバッファにパケットデータを格納する。ＤＭＡコントローラ２４は、ＯＵＴ転送バッファ２６に格納されているパケットデータを順番にシステムバス４０に送出する。
【００２９】
ＩＮ転送処理について説明する。システムバス４０からのデータがプロトコル層ユニット２３に送出される。プロトコル層ユニット２３は、システムバス４０からのデータをＩＮ転送バッファ２７に送信データとして格納する。これにより、データの転送準備が行われる。プロトコル層ユニット２３は、ＩＮ転送バッファ２７に格納した送信データをリンク層ユニット２２に送出する。リンク層ユニット２２はプロトコル層ユニット２３から受け取った送信データをパケットに構築する。そして、リンク層ユニット２２は、パケットを物理層ユニット２１に送出する。物理層ユニット２１は、パケットに物理層処理を行って、ＵＳＢインターフェース３０に送出する。ＵＳＢデバイス２０がパケット要求を受信すると、プロトコル層ユニット２３は、ＩＮ転送バッファ２７が格納している送信データを順番にリンク層ユニット２２に送出する。
【００３０】
（ＯＵＴ転送）
以下、ＵＳＢデバイス２０からＵＳＢホスト１０にデータパケットを送信するＯＵＴ転送の処理フローについて、図３を用いて説明する。図３は、ＯＵＴ転送バッファ２６に空きがある場合のＯＵＴ転送でのシーケンスを示す図である。
【００３１】
まず、ＵＳＢホスト１０がＤＡＴＡパケットをＵＳＢデバイス２０に送信して、データ転送要求を行う（図３のＡ）。すると、プロトコル層ユニット２３がＯＵＴ転送バッファ２６の空き状況を確認する。
【００３２】
ＯＵＴ転送バッファ２６の空きがあるので、ＵＳＢデバイス２０は、ＡＣＫパケットをＵＳＢホスト１０に送信して、ＵＳＢホスト１０への転送応答を実行する（図３のＢ）。ＵＳＢホスト１０はＡＣＫパケットを受信したら、同様に、ＤＡＴＡパケットをＵＳＢデバイス２０に送信する（図３のＣ）。ＵＳＢデバイス２０は、ＤＡＴＡパケットを受信したら、同様にＡＣＫパケットをＵＳＢホスト１０に送信する（図３のＤ）。この処理を繰り返して、パケット通信を行う。このように、ＯＵＴ転送バッファ２６に十分な空きがある場合、ＵＳＢホスト１０からのＤＡＴＡパケットの送信と、ＵＳＢデバイス２０からのＡＣＫパケットの送信が交互に行われる。
【００３３】
次に、ＯＵＴ転送バッファ２６の空きがない場合について、図４を用いて説明する。図４は、ＯＵＴ転送バッファ２６の空きがない場合のＯＵＴ転送でのシーケンスを示す図である。
【００３４】
まず、ＵＳＢホスト１０がＤＡＴＡパケットをＵＳＢデバイス２０に送信して、データ転送要求を行う（図４のＡ）。すると、プロトコル層ユニット２３がＯＵＴ転送バッファ２６の空き状況を確認する。ＯＵＴ転送バッファ２６の空きがないので、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＮＲＤＹ（Not Ready）パケットを送信して、送信できないことを伝えるパケット応答を行う(図４のＢ）。ＮＲＤＹパケットは、ＵＳＢホスト１０に通信を待機させる待機パケットである。
【００３５】
これにより、バッファ空待ち時間となって、ＵＳＢホスト１０は、ＯＵＴ転送バッファ２６が空くのを待つ。ＵＳＢデバイス２０は、ＮＲＤＹパケットを送信した後、ＯＵＴ転送バッファ２６のパケットデータを送出して、空きバッファを発生させる。すなわち、ＤＭＡコントローラ２４が、ＯＵＴ転送バッファ２６に格納されているデータパケットをシステムバス４０に送出する。
【００３６】
ＵＳＢデバイス２０は、ＯＵＴ転送バッファ２６に空きが発生したら、ＥＲＤＹ（Endpoint Ready）パケットをＵＳＢホスト１０に送信する（図４のＣ）。すなわち、ＵＳＢデバイス２０は、ＯＵＴ転送バッファ２６に空きができ次第、ＵＳＢホスト１０に準備完了を伝えるＥＲＤＹパケットを送信する。ＥＲＤＹパケットは、ＵＳＢホスト１０に通信準備が完了したことを示す準備完了パケットである。なお、ＥＲＤＹパケットには、空きバッファ数の情報が含まれているため、ＵＳＢホスト１０には受付可能数が通知される。
【００３７】
ＵＳＢホスト１０は、ＥＲＤＹパケットに応答して、再度、ＵＳＢデバイス２０にＤＡＴＡパケットを送信して、データ転送要求を行う（図４のＤ）。ＵＳＢデバイス２０がＤＡＴＡパケットを受信すると、プロトコル層ユニット２３がＯＵＴ転送バッファ２６の空き状況を確認する。ＯＵＴ転送バッファ２６に空きがある場合、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＡＣＫパケットを送信して、転送完了を通知する（図４のＥ）。なお、ＡＣＫパケットには、空きバッファ数の情報が含まれているため、ＵＳＢホスト１０には受付可能数が通知される。
【００３８】
ＵＳＢホスト１０はＡＣＫパケットに応答して、再度、ＵＳＢデバイス２０にＤＡＴＡパケットを送信して、データ転送要求を行う（図４のＦ）。すると、プロトコル層ユニット２３がＯＵＴ転送バッファ２６の空き状況を確認する。ＯＵＴ転送バッファ２６の空きがない場合、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＮＲＤＹパケットを送信して、送信できないことを伝えるパケット応答を行う(図４のＧ）。
【００３９】
ＵＳＢホスト１０は、図４のＢと同様に、ＮＲＤＹパケットを受信した後、ＯＵＴ転送バッファ２６に空きができるまで待機する。すなわち、バッファ空待ち時間となって、ＵＳＢホスト１０は、ＯＵＴ転送バッファ２６が空くのを待つ。ＵＳＢデバイス２０は、ＮＲＤＹパケットを送信した後、ＯＵＴ転送バッファ２６のパケットデータをシステムバス４０に送出する。すなわち、ＤＭＡコントローラ２４が、システムバス４０を介して、ＯＵＴ転送バッファ２６に格納されているデータパケットをメモリに書き込む。そして、ＯＵＴ転送バッファ２６に空きが生じたら、ＵＳＢデバイス２０がＵＳＢホスト１０にＥＲＤＹパケットを送信して、転送完了を通知する(図４のＨ)。
【００４０】
ＯＵＴ転送バッファ２６に空きがない場合、ＵＳＢデバイス２０は、以下に示す問題が生じる恐れがある。ＵＳＢホスト１０からのパケット転送に対してシステムバス４０側のデータ転送が遅い場合、ＯＵＴ転送バッファ２６にパケットデータが溜まっていく。すなわち、ＯＵＴ転送バッファ２６の空き数が徐々に減っていってしまう。そして、ＯＵＴ転送バッファ２６に空きがなくなり、データ受け付けられない状態となると、ＵＳＢデバイス２０からのデータパケットに対して、ＵＳＢホスト１０がＮＲＤＹ応答を行う。
【００４１】
ＯＵＴ転送バッファ２６に空きができ、ＵＳＢデバイス２０がパケットを受け付けられる状態となると、ＵＳＢデバイス２０がＥＲＤＹパケットを送信する。ＵＳＢホスト１０は、ＥＲＤＹパケットにより、空きがあることが通知されると、ＵＳＢデバイス２０に対してＤＡＴＡパケットの送信を開始する。このように、ＯＵＴ転送バッファ２６に空きができる度に、ＥＲＤＹ応答を行っていると、ＮＲＤＹパケットとＥＲＤＹパケットの転送回数が多くなる。すなわち、ＯＵＴ転送バッファ２６が空き無しから空有りになるタイミングで毎回、ＵＳＢデバイス２０がＥＲＤＹパケットを送信すると、全体から見た転送速度が遅くなってしまう場合がある。
【００４２】
そこで、本実施の形態では、以下に示す制御方法によって、データ通信速度の向上を図っている。以下、本実施の形態にかかるデータ転送方法について、図５を用いて説明する。
【００４３】
まず、ＵＳＢホスト１０がＤＡＴＡパケットをＵＳＢデバイス２０に送信して、データ転送要求を行う（図５のＡ）。すると、プロトコル層ユニット２３がＯＵＴ転送バッファ２６の空き状況を確認する。ＯＵＴ転送バッファ２６に空きがないため、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＮＲＤＹパケットを送信して、送信できないことを伝えるパケット応答を行う(図５のＢ）。ＮＲＤＹパケットは、ＵＳＢデバイス２０にパケット転送を待機させる待機パケットである。
【００４４】
バッファ空待ち時間となって、ＵＳＢホスト１０は、ＯＵＴ転送バッファ２６が空くのを待つ。ＵＳＢデバイス２０は、ＮＲＤＹパケットを送信した後、ＯＵＴ転送バッファ２６のパケットデータをシステムバス４０に送出することで、ＯＵＴ転送バッファ２６の空き数を増やす。すなわち、ＤＭＡコントローラ２４が、システムバス４０を介して、ＯＵＴ転送バッファ２６に格納されているパケットデータをメモリに送出する。このようにして、プロトコル層ユニット２３がＯＵＴ転送バッファ２６に空きを発生させる。
【００４５】
さらに、バッファ空待ち時間において、プロトコル層ユニット２３はバッファの空き数と閾値を比較する。バッファの空き数が閾値を越えたら、ＵＳＢデバイス２０がＥＲＤＹパケットをＵＳＢホスト１０に送信する（図５のＣ）。すなわち、ＵＳＢデバイス２０は、ＯＵＴ転送バッファ２６に空きができたタイミングでは、ＵＳＢホスト１０に準備完了を伝えるＥＲＤＹパケットを送信しない。そして、ＯＵＴ転送バッファ２６の空き数が閾値を越えたタイミングで、ＥＲＤＹパケットをＵＳＢホスト１０に送信する。閾値は、２以上の任意の数とすることができる。ここで、ＥＲＤＹパケットには、ＯＵＴ転送バッファ２６の空きバッファ数の情報が含まれているため、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＯＵＴ転送バッファ２６の空きバッファ数を通知する。ＥＲＤＹパケットは、ＵＳＢホスト１０に通信準備が完了したことを示す準備完了パケットである。
【００４６】
ＵＳＢホスト１０は、ＥＲＤＹパケットに応答して、再度、ＵＳＢデバイス２０にＤＡＴＡパケットを送信して、データ転送要求を行う（図５のＤ）。ＵＳＢデバイス２０がＤＡＴＡパケットを受信すると、プロトコル層ユニット２３がＯＵＴ転送バッファ２６の空き状況を確認する。ＯＵＴ転送バッファ２６の空きがある場合、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＡＣＫパケットを送信して、転送完了を通知する（図５のＥ）。なお、ＡＣＫパケットには、ＯＵＴ転送バッファ２６の空きバッファ数の情報が含まれているため、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＯＵＴ転送バッファ２６の空きバッファ数を通知する。また、ＯＵＴ転送バッファ２６に格納されているパケットデータを順番にシステムバス４０に送出する。
【００４７】
このように、ＵＳＢデバイス２０は、ＮＲＤＹパケットを送信した後、ＯＵＴ転送バッファ２６の空きバッファ数が閾値よりも大きくなったタイミングで、ＥＲＤＹパケットを送信する。すなわち、ＯＵＴ転送バッファ２６の空きが発生したタイミングではＵＳＢデバイス２０がＥＲＤＹパケットを送信しない。ＯＵＴ転送バッファ２６の空きバッファ数が閾値を越えるまで、ＵＳＢデバイス２０は、ＥＲＤＹパケットの送信を待機する。
【００４８】
このようにすることで、ＵＳＢホスト１０へのデータ受信準備完了通知を行うタイミングを変更することが可能になる。よって、ＮＲＤＹパケットとＥＲＤＹパケットの送信回数を減らすことができる。ＮＲＤＹパケット／ＥＲＤＹパケットの送信回数及び時間を調整することができるため、転送効率を上げることができる。バッファ空待ち時間が長くなったとしても、システム全体の転送速度を向上することができる。
【００４９】
さらに、レジスタ制御部２５が空きバッファ数の閾値を調整可能にしてもよい。これにより、ＵＳＢシステム１００の通信状況に応じて閾値を最適化することができる。例えば、システムバス４０等の仕様に応じて、閾値を調整することができる。ＵＳＢインターフェース３０でのデータ転送速度をモニタして、そのモニタ結果に応じて、閾値を設定するようにしてもよい。例えば、閾値を変化させていき、その時のデータ転送速度をＵＳＢインターフェース３０上で評価する。そして、最もデータ転送速度が高くなる時の閾値を、レジスタ制御部２５のレジスタに記憶させる。このようにすることで、システムバス４０に応じて最適な閾値を設定することができる。よって、データ転送速度をより高くすることができる。テストプログラムやハードウェアなどを用いて、レジスタ制御部２５が閾値を自動的に設定するようにしてもよい。
【００５０】
上記のデータ転送方法では、ＯＵＴ転送バッファ２６の空き状況を示す値として、ＯＵＴ転送バッファ２６の空きバッファ数を用いたが、これ以外の値を用いてもよい。例えば、ＯＵＴ転送バッファ２６の空き状況をバッファのデータ格納数で管理してもよい。そして、ＯＵＴ転送バッファ２６の空き状況を示す値を閾値と比較して、その比較結果に応じてＥＲＤＹパケットを送信すればよい。
【００５１】
（ＩＮ転送）
次に、ＵＳＢホスト１０からＵＳＢデバイス２０にデータパケットを送信するＩＮ転送の処理について、図６を用いて説明する。図６は、ＩＮ転送バッファ２７に転送するパケットデータがある場合のＩＮ転送でのシーケンスを示す図である。
【００５２】
まず、ＵＳＢホスト１０がＡＣＫパケットをＵＳＢデバイス２０に送信して、パケット要求を行う（図６のＡ）。すると、プロトコル層ユニット２３がＩＮ転送バッファ２７のデータ格納状況を確認する。
【００５３】
ＩＮ転送バッファ２７には、送信するパケットのパケットデータ（送信データ）があるので、ＵＳＢホスト１０は、ＤＡＴＡパケットに応答して、ＡＣＫパケットをＵＳＢデバイス２０に送信する（図６のＣ）。なお、図６のＡ、及びＣのＡＣＫパケットには、要求データ数の情報が含まれている。ＵＳＢデバイス２０は、ＡＣＫパケットを受信したら、同様にＤＡＴＡパケットをＵＳＢホスト１０に送信する（図６のＤ）。この処理を繰り返して、データ通信を行う。このように、ＩＮ転送バッファ２７に送信データが格納されている場合、ＵＳＢホスト１０からのＡＣＫパケットの送信と、ＵＳＢデバイス２０からのＤＡＴＡパケットの送信が交互に行われる。
【００５４】
次に、ＩＮ転送バッファ２７の送信データがない場合について、図７を用いて説明する。図７は、ＩＮ転送バッファ２７の送信データがない場合のＩＮ転送でのシーケンスを示す図である。
【００５５】
まず、ＵＳＢホスト１０がＡＣＫパケットをＵＳＢデバイス２０に送信して、パケット要求を行う（図７のＡ）。すると、プロトコル層ユニット２３がＩＮ転送バッファ２７のデータ格納状況を確認する。ＩＮ転送バッファ２７に送信データが格納されておらず、ＵＳＢデバイス２０は、データの転送準備ができていない。したがって、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＮＲＤＹパケットを送信して、送信できないことを伝えるパケット応答を行う(図７のＢ）。ＮＲＤＹパケットは、ＵＳＢデバイス２０にパケット転送を待機させる待機パケットである。
【００５６】
データ準備待ち時間となって、ＵＳＢホスト１０は、ＩＮ転送バッファ２７のデータ準備が完了するのを待つ。ＵＳＢデバイス２０は、ＮＲＤＹパケットを送信した後、システムバス４０からＩＮ転送バッファ２７に送信データを送出する。すなわち、ＤＭＡコントローラ２４が、システムバス４０を介して、メモリに記憶されている送信データをＩＮ転送バッファ２７に格納する。これにより、ＵＳＢデバイス２０は、データの転送準備を行う。
【００５７】
ＵＳＢデバイス２０は、ＩＮ転送バッファ２７の送信データの準備が完了したら、ＥＲＤＹパケットをＵＳＢホスト１０に送信する（図７のＣ）。すなわち、ＵＳＢデバイス２０は、ＩＮ転送バッファ２７に送信データが格納され次第、ＵＳＢホスト１０に準備完了を伝えるＥＲＤＹパケットを送信する。ＥＲＤＹパケットは、ＵＳＢホスト１０に通信準備が完了したことを示す準備完了パケットである。ここで、ＥＲＤＹパケットには、送信可能データ数の情報が含まれている。よって、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＩＮ転送バッファ２７のデータ数を通知する。
【００５８】
ＵＳＢホスト１０は、ＥＲＤＹパケットに応答して、再度、ＵＳＢデバイス２０にＡＣＫパケットを送信して、パケット要求を行う（図７のＤ）。ＵＳＢデバイス２０がＡＣＫパケットを受信すると、プロトコル層ユニット２３がＩＮ転送バッファ２７のデータ格納状況を確認する。ＩＮ転送バッファ２７に送信データがある場合、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＤＡＴＡパケットを送信する（図７のＥ）。
【００５９】
ＵＳＢホスト１０はＤＡＴＡパケットに応答して、再度、ＵＳＢデバイス２０にＡＣＫパケットを送信して、パケット要求を行う（図７のＦ）。プロトコル層ユニット２３がＩＮ転送バッファ２７のデータ格納状況を確認する。ＩＮ転送バッファ２７に送信データがない場合、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＮＲＤＹパケットを送信して、送信できないことを伝えるパケット応答を行う(図７のＧ）。
【００６０】
ＵＳＢホスト１０は、図７のＢと同様に、ＮＲＤＹパケットを受信した後、ＩＮ転送バッファ２７に送信データがバッファされるまで待機する。すなわち、データ準備待ち時間となって、ＵＳＢホスト１０は、ＩＮ転送バッファ２７に送信データが格納されるのを待つ。ＵＳＢデバイス２０は、ＮＲＤＹパケットを送信した後、ＩＮ転送バッファ２７のデータ転送の準備を行う。すなわち、ＤＭＡコントローラ２４が、メモリに格納されている送信データをシステムバス４０を介してＩＮ転送バッファ２７に送出する。これにより、ＩＮ転送バッファ２７に、送信データがバッファされる。よって、ＩＮ転送バッファ２７に格納されている送信データ数を増やすことができる。
【００６１】
ＵＳＢデバイス２０は、ＩＮ転送バッファ２７の送信データの準備が完了したら、図７のＣと同様に、ＥＲＤＹパケットをＵＳＢホスト１０に送信する（図７のＨ）。ＵＳＢホスト１０は、図７のＤと同様に、ＥＲＤＹパケットに応答して、再度、ＵＳＢデバイス２０にＡＣＫパケットを送信して、パケット要求を行う（図７のＩ）。ＵＳＢデバイス２０がＡＣＫパケットを受信すると、プロトコル層ユニット２３がＩＮ転送バッファ２７のデータ格納状況を確認する。ＩＮ転送バッファ２７に送信データが準備されている場合、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＤＡＴＡパケットを送信する（図７のＪ）。
【００６２】
なお、図７のＡ、Ｄ及びＦのＡＣＫパケットには、要求データ数の情報が含まれており、ＵＳＢデバイス２０には送信要求されたデータ数が通知される。したがって、ＵＳＢデバイス２０は、送信要求されたデータ数のパケットをＵＳＢホスト１０に送信することができる。
【００６３】
ＵＳＢホスト１０からのパケット要求に対して、システムバス４０側のデータ転送が遅いと、ＵＳＢデバイス２０がＩＮ転送バッファ２７に送信データを準備することができなくなってしまう。すなわち、ＩＮ転送バッファ２７に準備されている送信データが無くなってしまい、ＵＳＢデバイス２０がＮＲＤＹパケット応答を行う。システムバス４０からの送信データがＩＮ転送バッファ２７に格納され次第、ＵＳＢデバイス２０は、データ転送の準備ができたことをＥＲＤＹパケットによってＵＳＢホスト１０に通知する。ＵＳＢホスト１０はＵＳＢデバイス２０からの通知に応答して、ＡＣＫパケットによってＵＳＢデバイス２０へパケット要求を行う。これにより、ＵＳＢホスト１０がＤＡＴＡパケットを受信する。
【００６４】
ＩＮ転送バッファ２７に送信データがない場合、ＵＳＢデバイス２０には、以下に示す問題が生じる恐れがある。ＩＮ転送バッファ２７に送信データが準備できる都度、ＵＳＢデバイス２０がＥＲＤＹ応答を行っている。したがって、ＮＲＤＹパケットとＥＲＤＹパケットの転送回数が多くなってしまい、全体からみた転送速度が遅くなる場合がある。
【００６５】
そこで、本実施の形態では、以下に示す制御方法によって、データ通信速度の向上を図っている。以下、本実施の形態にかかるデータ転送方法について、図８を用いて説明する。
【００６６】
まず、ＵＳＢホスト１０がＡＣＫパケットをＵＳＢデバイス２０に送信して、パケット要求を行う（図８のＡ）。すると、プロトコル層ユニット２３がＩＮ転送バッファ２７のデータ格納状況を確認する。ＩＮ転送バッファ２７に送信データが格納されておらず、ＵＳＢデバイス２０は、データの転送準備ができていない。したがって、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＮＲＤＹパケットを送信して、送信できないことを伝えるパケット応答を行う(図８のＢ）。ＮＲＤＹパケットは、ＵＳＢデバイス２０に通信を待機させる待機パケットである。
【００６７】
データ準備待ち時間となって、ＵＳＢホスト１０は、ＩＮ転送バッファ２７のデータ準備が完了するのを待つ。ＵＳＢデバイス２０は、ＮＲＤＹパケットを送信した後、送信データをシステムバス４０からＩＮ転送バッファ２７に送出する。すなわち、ＤＭＡコントローラ２４が、システムバス４０を介して、メモリに記憶されている送信データをＩＮ転送バッファ２７に格納する。これにより、ＵＳＢデバイス２０がデータの転送準備を行う。
【００６８】
データ準備待ち時間において、プロトコル層ユニット２３は、ＩＮ転送バッファ２７に格納されている送信データのデータ数と、閾値を比較する。そして、データ数が閾値を越えたら、ＵＳＢデバイス２０がＥＲＤＹパケットをＵＳＢホスト１０に送信する（図８のＣ）。すなわち、ＵＳＢデバイス２０は、ＩＮ転送バッファ２７に送信データが準備できたタイミングでは、ＵＳＢホスト１０に準備完了を伝えるＥＲＤＹパケットを送信しない。そして、ＯＵＴ転送バッファ２６のデータ数が閾値を越えたタイミングで、ＥＲＤＹパケットをＵＳＢホスト１０に送信する。閾値は、２以上の任意の数とすることができる。ＥＲＤＹパケットには、ＯＵＴ転送バッファ２６の送信可能データ数の情報が含まれているため、ＵＳＢデバイス２０は、ＵＳＢホスト１０にＯＵＴ転送バッファ２６ＩＮ転送バッファ２７のデータ数を通知する。ＥＲＤＹパケットは、ＵＳＢホスト１０に通信準備が完了したことを示す準備完了パケットである。
【００６９】
ＵＳＢホスト１０は、ＥＲＤＹパケットを受信すると、ＥＲＤＹパケットに応答して、ＡＣＫパケットをＵＳＢデバイス２０に送信する（図８のＤ）。ＵＳＢデバイス２０は、ＡＣＫパケットを受信すると、ＡＣＫパケットに応答して、ＤＡＴＡパケットをＵＳＢホスト１０に送信する（図８のＥ）。
【００７０】
なお、図８のＡ、及びＤのＡＣＫパケットには、要求データ数の情報が含まれており、ＵＳＢデバイス２０には送信要求されたデータ数が通知される。したがって、ＵＳＢデバイス２０は、送信要求されたデータ数のパケットをＵＳＢホスト１０に送信することができる。ＵＳＢデバイス２０は、ＡＣＫパケットで通知された要求データ数のパケットを送信できるように、システムバス４０からＩＮ転送バッファ２７に送信データを送出して、データ転送の準備を行う。
【００７１】
このように、システムバス４０からのパケットデータが準備できたことを通知するＥＲＤＹパケットの送信を１パケット準備できる都度行うのではなく、複数パケット準備できた後に行っている。すなわち、複数のパケットデータをＩＮ転送バッファ２７に格納した後、ＵＳＢデバイス２０がＥＲＤＹパケットを送信する。このような制御によって、ＮＲＤＹパケットとＥＲＤＹパケットの送信回数を減らすことができる。ＮＲＤＹパケット／ＥＲＤＹパケットの送信回数及び時間を調整することができるため、システム全体としてデータ転送効率を上げることができる。
【００７２】
さらに、レジスタ制御部２５が格納数の閾値を調整可能にしている。これにより、ＵＳＢシステム１００に応じて閾値を最適化することができる。例えば、システムバス４０等の仕様に応じて、閾値を調整することができる。ＵＳＢインターフェース３０でのデータ転送速度をモニタして、そのモニタ結果に応じて、閾値を設定するようにしてもよい。例えば、閾値を変化させていき、その時のデータ転送速度をＵＳＢインターフェース３０上で評価する。そして、最もデータ転送速度が高くなる時の閾値を、レジスタ制御部２５のレジスタに記憶させる。このようにすることで、システムバス４０に応じて最適な閾値を設定することができる。よって、データ転送速度をより高くすることができる。テストプログラムやハードウェアなどを用いて、レジスタ制御部２５が閾値を自動的に設定するようにしてもよい。
【００７３】
上記のデータ転送方法では、ＩＮ転送バッファ２７のデータ格納状況を示す値として、ＩＮ転送バッファ２７に格納されているデータ数を用いたが、これ以外の値を用いてもよい。例えば、ＩＮ転送バッファ２７のデータ格納状況を空きバッファ数で管理してもよい。そして、ＩＮ転送バッファ２７の格納状況を示す値を閾値と比較して、その比較結果に応じてＥＲＤＹパケットを送信すればよい。もちろん、ＯＵＴ転送バッファ２６とＩＮ転送バッファ２７とで異なる閾値を用いてもよく、同じ閾値を用いてもよい。
【００７４】
なお、上記の説明では、ＩＮ転送、及びＯＵＴ転送の両方について、閾値によるバッファ管理を行ったが、ＩＮ転送、及びＯＵＴ転送の一方のみについて、閾値によるバッファ管理を行ってもよい。
【００７５】
実施の形態２．
本実施の形態にかかるＵＳＢデバイス２０、及びＵＳＢシステム１００について図９を参照して説明する。図９は、ＵＳＢシステム１００の構成を示す図である。ＵＳＢシステム２００は、ＵＳＢデバイス２０とＵＳＢホスト１０とＵＳＢインターフェース３０を備えている。ＵＳＢデバイス２０は、システムバス４０とバッファ２８と通信制御部２９とを備えている。
【００７６】
ＵＳＢインターフェース３０は、ＵＳＢホスト１０との間でパケットを送受信する。バッファ２８は、ＵＳＢインターフェース３０を介して送信又は受信するパケットのパケットデータを複数格納する。システムバス４０は、バッファ２８に格納されたパケットデータを転送する。通信制御部２９は、バッファ２８の空き状況又は格納状況を示す値と閾値とを比較し、比較結果に応じてＵＳＢホスト１０に通信準備が完了したことを示す準備完了パケットを送信する。このようにするとで、実施の形態１と同様の効果を得ることができ、データ転送速度を向上することができる。なお、実施の形態２と実施の形態１を適宜組み合わせてもよい。
【００７７】
実施の形態１、又は２にかかるＵＳＢデバイス２０におけるデータ転送処理のうちの一部又は全部は、コンピュータプログラムによって実行されても良い。上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、ＣＤ−ＲＯＭ(Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ(例えば、マスクＲＯＭ、ＰＲＯＭ(Programmable ROM）、ＥＰＲＯＭ(Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ(Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００７８】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００７９】
１０  ＵＳＢホスト
２０  ＵＳＢデバイス
３０  ＵＳＢインターフェース
２１  物理層ユニット
２２  リンク層ユニット
２３  プロトコル層ユニット
２４  ＤＭＡコントローラ
２５  レジスタ制御部
２６  ＯＵＴ転送バッファ
２７  ＩＮ転送バッファ
２８  バッファ
２９  通信制御部
４０  システムバス
１００  ＵＳＢシステム
【図１】
2015011449.tif 000003
【図２】
2015011449.tif 000004
【図３】
2015011449.tif 000005
【図４】
2015011449.tif 000006
【図５】
2015011449.tif 000007
【図６】
2015011449.tif 000008
【図７】
2015011449.tif 000009
【図８】
2015011449.tif 000010
【図９】
2015011449.tif 000011