(57)【特許請求の範囲】
【請求項１】
自装置を制御するプロセッサと、
伝送手段を介して接続される対向装置との間でＵＳＢ転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくとも前記データバッファに格納したデータパケットのサイズおよび割り込みに関する情報のいずれかを格納するステータスバッファとを含むバッファセットを有するＵＳＢコントローラとを備え、
前記ＵＳＢコントローラは、
前記対向装置に前記データパケットを送信する場合、前記プロセッサの指示に応じて、転送終了割り込み信号を供給するためのパケットを前記対向装置に送信し、
前記対向装置から前記データパケットを受信する場合、前記転送終了割り込み信号を供給するためのパケットを前記対向装置から受信すると、前記ステータスバッファに前記割り込みに関する情報を格納し、前記プロセッサに転送終了割り込み信号を供給する
ＵＳＢ転送装置。
【請求項２】
前記ＵＳＢコントローラは、
前記対向装置から前記データパケットを受信した場合、当該データパケットを前記バッファセットに含まれる前記データバッファに格納すると共に、当該データパケットのサイズを前記ステータスバッファに格納し、前記転送終了割り込み信号を供給するためのパケットを受信した場合、前記データバッファに前記データパケットを格納せず、前記ステータスバッファに前記割り込みに関する情報を格納する
請求項１記載のＵＳＢ転送装置。
【請求項３】
前記プロセッサが前記データを用いた処理に使用するメインメモリと、
前記データバッファから前記メインメモリへの前記データの転送を制御する転送コントローラとをさらに備え、
前記ＵＳＢコントローラは、
前記ステータスバッファに前記データパケットのサイズが格納される場合、前記データバッファに格納される前記データパケットを、前記メインメモリに転送することを、前記転送コントローラに指示し、
前記転送コントローラは、前記指示に応じて、前記データパケットを前記メインメモリに転送する
請求項１または請求項２記載のＵＳＢ転送装置。
【請求項４】
前記ＵＳＢコントローラは、
前記対向装置から送信される前記転送終了割り込み信号を供給するためのパケット、または所定のサイズより小さいサイズを有するショートパケットに応じて、前記プロセッサに前記転送終了割り込み信号を供給する
請求項１ないし請求項３のいずれか１項記載のＵＳＢ転送装置。
【請求項５】
前記ＵＳＢコントローラは、
前記対向装置に、前記転送終了割り込み信号を供給するためのパケットに応じて前記プロセッサに前記転送終了割り込み信号を供給する機能の有無を問い合わせ、有を示す応答を受けた場合に、前記割り込みに関する情報に応じて前記プロセッサに前記転送終了割り込み信号を供給し、有を示す応答を受けない場合に、前記ショートパケットに応じて、前記プロセッサに前記転送終了割り込み信号を供給する
請求項４記載のＵＳＢ転送装置。
【請求項６】
請求項１ないし請求項５のいずれか１項記載のＵＳＢ転送装置であるホスト装置と、
前記ホスト装置と伝送手段を介して接続され、請求項１ないし請求項５のいずれか１項記載のＵＳＢ転送装置であるデバイス装置と
を備えたＵＳＢ転送システム。
【請求項７】
伝送手段を介して接続される対向装置との間でＵＳＢ転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくとも前記データバッファに格納したデータパケットのサイズおよび割り込みに関する情報のいずれかを格納するステータスバッファとを含むバッファセットを有するＵＳＢコントローラは、
前記対向装置に前記データパケットを送信する場合、自装置を制御するプロセッサの指示に応じて、転送終了割り込み信号を供給するためのパケットを前記対向装置に送信し、
前記対向装置から前記データパケットを受信する場合、前記転送終了割り込み信号を供給するためのパケットを前記対向装置から受信すると、前記ステータスバッファに前記割り込みに関する情報を格納し、前記プロセッサに転送終了割り込み信号を供給する
ＵＳＢ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の装置間において、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）伝送手段を介して受信したデータをメモリに転送する技術に関する。
【背景技術】
【０００２】
ＵＳＢ規格は、ＵＳＢホストとなるパーソナルコンピュータ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ：ＰＣ）等と、ＵＳＢデバイスとなる複数のＰＣ周辺装置とを接続し、データ通信を行うために策定されたシリアルバスインタフェース規格である。
【０００３】
ＵＳＢホスト（以下、単に「ホスト」と称する）およびＵＳＢデバイス（以下、単に「デバイス」と称する）は、それぞれＵＳＢ規格によりデータの送受信を行うＵＳＢコントローラと、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）がデータ処理を行う際に使用するメインメモリとを備える。
【０００４】
ホストのＵＳＢコントローラが、デバイスのＵＳＢコントローラから受信したデータをメインメモリに転送する際、例えば、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）が用いられる。このＤＭＡの制御を司るコントローラ（以下、「ＤＭＡコントローラ」と称する）は、ＵＳＢコントローラとメインメモリとの間のデータ転送において、ＣＰＵとは独立に、即ちＣＰＵを介さずに直接データのやり取り（受け渡し）を行うことによってＣＰＵの負荷の軽減を図っている。
【０００５】
このＤＭＡによりデータ転送する場合、転送するデータ量が不明である場合がある。この場合、ＤＭＡコントローラが転送可能なデータ量が設定されて転送が開始されると共に、ＤＭＡ転送が終了したときに、その旨をＣＰＵに通知（転送終了割り込み）する必要がある。
【０００６】
この割り込みを受けると、ＣＰＵは、転送されたデータを用いて処理を行うと共に、必要に応じて再び転送を開始する指示を出す。
【０００７】
例えば、特許文献１には、ＣＰＵの負荷を増大させることなく、ＵＳＢ受信部がデータの受信を終了したときにＤＭＡ制御部の転送を自動的に終了するＤＭＡ転送装置が開示される。
【０００８】
図９は、例えば特許文献１に記載のようなＤＭＡ転送の動作を示すフローチャートである。ここでは、ホストのＵＳＢコントローラがデバイスのＵＳＢコントローラから受信したデータを、ＤＭＡコントローラがメインメモリにＤＭＡ転送する動作について説明する。まず、ホストのＣＰＵは、ＵＳＢコントローラに、デバイスからの転送を開始する指示を出す（Ｓ１）。ホストのＵＳＢコントローラは、デバイスからＵＳＢデータパケットを受信する（Ｓ２）。
【０００９】
ホストのＵＳＢコントローラは、受信したデータパケットがショートパケット（またはＮＵＬＬパケット）か否かを解析する（Ｓ３）。ここで、設定されたサイズ（ＵＳＢコントローラでは、一般にはマックスパケットサイズ）より小さいパケットを、「ショートパケット」と称する。ＵＳＢコントローラは、受信したデータパケットがショートパケット（またはＮＵＬＬパケット）でなければ、ＤＭＡコントローラを介してＤＭＡ転送を実施する（Ｓ４）。
【００１０】
一方、受信したデータパケットがショートパケット（またはＮＵＬＬパケット）である場合、ＵＳＢコントローラは、ＤＭＡコントローラを介してＤＭＡ転送を実施する（Ｓ５）と共に、ＤＭＡ転送が終了した旨をＣＰＵに通知するために、割り込みハンドラをコールする（Ｓ６）。ＣＰＵは、その割り込みに応じて、メモリにＤＭＡ転送されたデータを用いて所定の処理を実行する（Ｓ７）。
【００１１】
他の関連技術として、特許文献２には、プロセッサとネットワークインタフェイスデバイスとの間のパケット受信処理におけるボトルネックを解消し、高速パケット処理が可能なネットワーク装置が開示される。
【００１２】
また、特許文献３には、複数のプロセッサを備えた情報処理装置において、それぞれのプロセッサにタスクを割り当ることにより、複数のタスクを並列処理したりパイプライン処理したりする技術が開示される。
【００１３】
また、特許文献４には、破損したパケットに対する認識を正しくし、より一層エラー耐性を向上させることができる通信制御装置が開示される。
【００１４】
また、特許文献５には、複数のバッファメモリに対する転送を並行に行えるＵＳＢデバイスコントローラが開示される。
【００１５】
また、特許文献６には、十分なデータ転送速度を保証できるとともに、システムバスの占有時間の削減を可能としたダイレクトメモリアクセス装置が開示される。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００９−２５１７７１号公報
【特許文献２】特開２００８−１２９７６７号公報
【特許文献３】特開２００８−１２３１４０号公報
【特許文献４】特開２００７−０９６７３７号公報
【特許文献５】特開２００４−１９９４０２号公報
【特許文献６】特開２００４−１４５５９３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
上述のように、ＵＳＢコントローラは、対向装置から受信したデータパケットがショートパケット（またはＮＵＬＬパケット）か否かに基づいて、転送が終了したことを判断している。しかしながら、この場合、ホストと対向装置とのデータパケットの送受信に、ショートパケットが頻発するプロトコルを採用したシステムでは、ＣＰＵへの転送終了割り込みが頻発する。この結果、ＣＰＵが処理すべき割り込みハンドラが多くなるので、ＣＰＵ処理が増大し、それにより転送性能が低下するという課題がある。
【００１８】
特許文献２に開示されるネットワーク装置では、プロセッサとネットワークインタフェイスデバイスとの間のパケット受信処理におけるボトルネックを解消している。しかしながら、このボトルネックを解消するマルチコアプロセッサの実装のためのハードウエアのコストが大幅に増加すると共に、制御の複雑化に伴いソフトウエアのコストも大幅に増加するという課題がある。
【００１９】
上記特許文献３乃至６には、コストの増加を抑えながら、装置間におけるデータ転送の性能を向上させる技術は開示されていない。
【００２０】
本願発明は、上記課題を鑑みてなされたものであり、コストの増加を抑えながら、装置間におけるデータ転送の性能を向上させることが可能なＵＳＢ転送装置等を提供することを主要な目的とする。
【課題を解決するための手段】
【００２１】
本発明の第１のＵＳＢ転送装置は、自装置を制御するプロセッサと、伝送手段を介して接続される対向装置との間でＵＳＢ転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくとも前記データバッファに格納したデータパケットのサイズおよび前記データの転送終了を示す情報のいずれかを格納するステータスバッファとを含むバッファセットを有するＵＳＢコントローラとを備え、前記ＵＳＢコントローラは、前記ステータスバッファに前記転送終了を示す情報が格納される場合、前記プロセッサに転送終了割り込み信号を供給する。
【００２２】
本発明の第１のＵＳＢ転送システムは、自装置を制御するプロセッサと、伝送手段を介して接続されるデバイス装置との間でＵＳＢ転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくとも前記データバッファに格納したデータパケットのサイズおよび前記データの転送終了を示す情報のいずれかを格納するステータスバッファとを含むバッファセットを有するＵＳＢコントローラとを備え、前記ＵＳＢコントローラは、前記ステータスバッファに前記転送終了を示す情報が格納される場合、前記プロセッサに転送終了割り込み信号を供給するホスト装置と、自装置を制御するプロセッサと、伝送手段を介して接続されるホスト装置との間でＵＳＢ転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくとも前記データバッファに格納したデータパケットのサイズおよび前記データの転送終了を示す情報のいずれかを格納するステータスバッファとを含むバッファセットを有するＵＳＢコントローラとを備え、前記ＵＳＢコントローラは、前記ステータスバッファに前記転送終了を示す情報が格納される場合、前記プロセッサに転送終了割り込み信号を供給するデバイス装置とを備える。
【００２３】
本発明の第１のＵＳＢ転送方法は、伝送手段を介して接続される対向装置との間でＵＳＢ転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくとも前記データバッファに格納したデータパケットのサイズおよび前記データの転送終了を示す情報のいずれかを格納するステータスバッファとを含むバッファセットを有するＵＳＢコントローラが、前記ステータスバッファに前記転送終了を示す情報が格納される場合、自装置を制御するプロセッサに転送終了割り込み信号を供給する。
【発明の効果】
【００２４】
本願発明によれば、コストの増加を抑えながら、装置間におけるデータ転送の性能を向上させることができるという効果が得られる。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１の実施形態に係るＵＳＢ転送システムの構成を示すブロック図である。
【図２】本発明の第１の実施形態に係るＵＳＢ転送システムにおけるホスト装置がデバイス装置からデータを受信するＩＮ転送を実施する際の動作について説明するフローチャートである。
【図３】ショートパケットを受信したことを転送終了のトリガとする場合に転送終了割り込み信号が発生するタイミングを模式的に説明する図である。
【図４】本発明の第１の実施形態に係るＵＳＢ転送システムにおいて転送終了割り込み信号が発生するタイミングを模式的に説明する図である。
【図５】本発明の第２の実施形態に係るＵＳＢ転送システムにおいてショートパケットモードからＩＲＱモードに移行する動作を示す図である。
【図６】本発明の第２の実施形態に係るＵＳＢ転送システムにおいてショートパケットモードからＩＲＱモードに移行しない動作の一例を示す図である。
【図７】本発明の第２の実施形態に係るＵＳＢ転送システムにおいてショートパケットモードからＩＲＱモードに移行しない動作の他の例を示す図である。
【図８】本発明の第３の実施形態に係るＵＳＢ転送システムの構成を示すブロック図である。
【図９】関連技術の転送システムの動作について説明するフローチャートである。
【発明を実施するための形態】
【００２６】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００２７】
第１の実施形態
図１は、本発明の第１の実施形態に係るＵＳＢ転送システム１００の構成を示すブロック図である。ＵＳＢ転送システム１００は、ホスト装置２００とデバイス装置３００とを備える。ホスト装置２００とデバイス装置３００は、互いにＵＳＢ伝送部（ＵＳＢバス）２６０を介して接続され、データを送受信する。
【００２８】
ホスト装置２００は、ＵＳＢコントローラ２１０、ＤＭＡコントローラ（転送コントローラ）２２０、メインメモリ２３０、ＣＰＵ２４０、記憶媒体２５０を備える。ＵＳＢコントローラ２１０、ＤＭＡコントローラ２２０、メインメモリ２３０およびＣＰＵ２４０は、互いに内部バスによって接続される。
【００２９】
ＣＰＵ２４０は、記録媒体２５０に格納されるコンピュータプログラムを読み出してメインメモリ２３０に書き込むと共に、そのコンピュータプログラムを実行することにより、ホスト装置２００全体の動作を司る。記録媒体２５０は、ホスト装置２００の内部に含まれてもよいし、ホスト装置２００の外部に設けられてホスト装置２００と接続されてもよい。
【００３０】
ＤＭＡコントローラ２２０は、ＵＳＢコントローラ２１０がＵＳＢ伝送部を介して受信したデータを、ＣＰＵ２４０を介さずにメインメモリ２３０に転送（ＤＭＡ転送）する制御を行う。
【００３１】
ＵＳＢコントローラ２１０は、対向装置（ここではデバイス装置３００）のＵＳＢコントローラ３１０との間でデータを送受信する制御を行う。ＵＳＢコントローラ２１０は、所定サイズのパケット単位でデータを送受信する。以降、ＵＳＢコントローラ２１０と対向装置との間で送受信されるパケット単位のデータを「データパケット」と称する。
【００３２】
ＵＳＢコントローラ２１０は、データバッファとステータスバッファとを含むバッファセットを１または複数備える。図１には、ＵＳＢコントローラ２１０は、データバッファとステータスバッファを２セット（２組）（すなわち、データバッファ２１１ａとステータスバッファ２１１ｂ、データバッファ２１２ａとステータスバッファ２１２ｂ）備えることを示すが、これに限らない。
【００３３】
データバッファ２１１ａ、２１２ａは、対向装置から受信したデータを格納する。ステータスバッファ２１１ｂ、２１２ｂは、それぞれデータバッファ２１１ａ、２１２ａに格納されたデータのサイズ、または割り込みに関する情報を格納する。データバッファ２１１ａ、２１２ａは、例えば５１２バイトのサイズであってよく、それらの組となるステータスバッファ２１１ｂ、２１２ｂは、それぞれデータバッファ２１１ａ、２１２ａのサイズより小さくてもよい。
【００３４】
デバイス装置３００も、ホスト装置２００と同様の構成を有する。すなわち、デバイス装置３００は、ＵＳＢコントローラ３１０、ＤＭＡコントローラ３２０、メインメモリ３３０、ＣＰＵ３４０および記録媒体３５０を備える。ＵＳＢコントローラ３１０、ＤＭＡコントローラ３２０、メインメモリ３３０およびＣＰＵ３４０は、互いに内部バスによって接続される。
【００３５】
ＣＰＵ３４０は、記録媒体３５０に格納されるコンピュータプログラムを読み出してメインメモリ３３０に書き込むと共に、そのコンピュータプログラムを実行することにより、デバイス装置３００全体の動作を司る。記録媒体３５０は、デバイス装置３００の内部に含まれてもよいし、デバイス装置３００の外部に設けられてデバイス装置３００と接続されてもよい。
【００３６】
ＤＭＡコントローラ３２０は、ＵＳＢコントローラ３１０がＵＳＢ伝送部２６０を介して受信したデータを、ＣＰＵ３４０を介さずにメインメモリ３３０に転送（ＤＭＡ転送）する制御を行う。
【００３７】
ＵＳＢコントローラ３１０は、対向装置（ここではホスト装置２００）のＵＳＢコントローラ２１０との間でデータを送受信する制御を行う。
【００３８】
ＵＳＢコントローラ３１０は、データバッファとステータスバッファとを含むバッファセットを１または複数備える。図１には、ＵＳＢコントローラ３１０は、データバッファとステータスバッファを２セット（２組）（すなわち、データバッファ３１１ａとステータスバッファ３１１ｂ、データバッファ３１２ａとステータスバッファ３１２ｂ）備えることを示すが、これに限らない。
【００３９】
データバッファ３１１ａ、３１２ａは、対向装置から受信したデータパケットを格納する。ステータスバッファ３１１ｂ、３１２ｂは、それぞれデータバッファ３１１ａ、３１２ａに格納されたデータのサイズ等を格納する。データバッファ３１１ａ、３１２ａは、例えば５１２バイトのサイズであってよく、それらの組となるステータスバッファ３１１ｂ、３１２ｂは、それぞれデータバッファ３１１ａ、３１２ａのサイズより小さくてもよい。
【００４０】
ＵＳＢコントローラ２１０、３１０に含まれるバッファは、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）でデータを入出力する。以降の説明では、使用されるバッファセット（データバッファとステータスバッファ）は、ＵＳＢコントローラ２１０、３１０にそれぞれ含まれる複数組のうちいずれでもよいが、例えばデータバッファ２１１ａとステータスバッファ２１１ｂ、およびデータバッファ３１１ａとステータスバッファ３１１ｂについて説明する。
【００４１】
ここで、ステータスバッファ２１１ｂ、３１１ｂについて説明する。ステータスバッファ２１１ｂ、３１１ｂには、上述したように、それぞれの組となるデータバッファ２１１ａ、３１１ａに格納されるデータのサイズ、または割り込みに関する情報が格納される。
【００４２】
割り込みに関する情報とは、対向装置にＩＲＱ（Ｉｎｔｅｒｒｕｐｔ  ＲｅＱｕｅｓｔ）ハンドシェイクパケットを送信するとき、または対向装置からＩＲＱハンドシェイクパケットを受信したときにセットされるフラグである。ＩＲＱハンドシェイクパケットは、ホスト装置２００またはデバイス装置３００が、対向装置（すなわちデバイス装置３００またはホスト装置２００）に対して、転送終了割り込み信号を供給するために送信するパケットである。
【００４３】
ホスト装置２００またはデバイス装置３００は、このＩＲＱハンドシェイクパケットを受信すると、それぞれステータスバッファ２１１ｂまたは３１１ｂに、ＩＲＱハンドシェイクパケット送受信フラグ「オン」をセットする。ステータスバッファ２１１ｂ、３１１ｂにフラグ「オン」がセットされている場合、ＵＳＢコントローラ２１０およびＵＳＢコントローラ３１０は、自装置が備えるＣＰＵ２４０およびＣＰＵ３４０に対して転送終了割り込み信号を供給する。
【００４４】
次に、ホスト装置２００およびデバイス装置３００の動作について説明する。ホスト装置２００およびデバイス装置３００は、それぞれ以下のように、対向装置との間で送受信したデータパケットを処理する。まず、デバイス装置３００がホスト装置２００からデータパケットを受信する動作について説明する。
【００４５】
デバイス装置３００のＵＳＢコントローラ３１０は、ホスト装置２００からＵＳＢ伝送部２６０を介してデータパケットを受信した場合、そのデータパケットをデータバッファ３１１ａに格納すると共に、データパケットのサイズをステータスバッファ３１１ｂに格納する。
【００４６】
ＵＳＢコントローラ３１０は、ＩＲＱハンドシェイクパケットを受信した場合、ステータスバッファ３１１ｂに、ＩＲＱハンドシェイクパケット送受信フラグ「オン」を格納する。このとき、ＵＳＢコントローラ３１０は、ステータスバッファ３１１ｂと組となるデータバッファ３１１ａには何も格納しない。ＵＳＢコントローラ３１０は、このように、受信したデータパケットまたはＩＲＱハンドシェイクパケットに応じて、１または複数組備えるバッファセットのデータバッファおよびステータスバッファに、データパケットおよびデータサイズ（またはフラグ）を格納する。
【００４７】
ＵＳＢコントローラ３１０は、複数組備えるバッファセットをシーケンシャルに解析する。そして、ステータスバッファ３１１ｂに「０」より大きいサイズが格納される場合、そのステータスバッファ３１１ｂの組となるデータバッファ３１１ａに格納されるデータパケットを、メインメモリ３３０にＤＭＡ転送する指示を、ＤＭＡコントローラ３２０に供給する。ＤＭＡコントローラ３２０は、上記指示に応じて、データパケットをメインメモリ３３０にＤＭＡ転送する。
【００４８】
一方、ＵＳＢコントローラ３１０は、バッファセットをシーケンシャルに解析した結果、ステータスバッファ３１１ｂにＩＲＱハンドシェイクパケット送受信フラグ「オン」が格納される場合、ＣＰＵ３４０に対して転送終了割り込み信号を供給する。ＣＰＵ３４０は、転送終了割り込み信号を受けると、割り込みハンドラをコールすると共に、転送されたデータを用いてメインメモリ３３０にて処理を行う。
【００４９】
次に、デバイス装置３００がホスト装置２００にデータパケットを送信する動作について説明する。デバイス装置３００のＣＰＵ３４０は、実行中のコンピュータプログラムからのデータの転送設定開始を示すトリガに応じて、ＵＳＢコントローラ３１０にデータの転送設定を指示すると共に、ＤＭＡコントローラ３２０にＤＭＡ転送を指示する。ＤＭＡコントローラ３２０は、ＤＭＡ転送の指示に応じて、メインメモリ３３０に格納されるデータを、転送可能なサイズのパケット単位でデータバッファ３１１ａにＤＭＡ転送する。このとき、ＤＭＡコントローラ３２０は、データバッファ３１１ａに格納したデータのサイズを、データバッファ３１１ｂに格納する。また、ＣＰＵ３４０は、実行中のコンピュータプログラムから割り込みを発生させるトリガを読み出すと、ステータスバッファ３１１ｂにＩＲＱハンドシェイクパケット送受信フラグ「オン」を格納する。
【００５０】
ＵＳＢコントローラ３１０は、ホスト装置２００のＵＳＢコントローラ２１０からＩＮＡＣＫパケットを受信すると、複数組備えるバッファセットをシーケンシャルに解析する。ＩＮＡＣＫパケットは、データの転送要求を示す情報である。そして、ＵＳＢコントローラ３１０は、ステータスバッファ３１１ｂに「０」より大きいサイズが格納される場合は、そのステータスバッファ３１１ｂに対応するデータバッファ３１１ａに格納されるデータパケットをホスト装置２００に送信する。一方、ＵＳＢコントローラ３１０は、ステータスバッファ３１１ｂにＩＲＱハンドシェイクパケット送受信フラグ「オン」が格納される場合、ＩＲＱハンドシェイクパケットをホスト装置２００に送信する。
【００５１】
なお、ＵＳＢコントローラ３１０は、ホスト装置２００のＵＳＢコントローラ２１０からＩＮＡＣＫパケットを受信した際に、データの転送設定を完了していない場合、ＵＳＢの仕様に従ってＮＡＫパケットをホスト装置２００に送信する。ホスト装置２００は、ＮＡＫパケットを受信すると、再びＩＮＡＣＫパケットをデバイス装置３００に送信する。この手順を繰り返すことにより、ホスト装置２００は、デバイス装置３００における転送設定が完了するのを待機する。
【００５２】
次に、ホスト装置２００がデバイス装置３００からデータを受信する動作について説明する。ホスト装置２００は、まず、ＵＳＢコントローラ２１０からＩＮＡＣＫパケットを送信する。ＩＮＡＣＫパケットは、データの転送要求を示す情報である。ＩＮＡＣＫパケットに応じて、ＵＳＢコントローラ２１０は、デバイス装置３００からデータパケットを受信すると、受信したデータパケットをデータバッファ２１１ａに格納すると共に、そのデータパケットのサイズをステータスバッファ２１１ｂに格納する。
【００５３】
一方、ＵＳＢコントローラ２１０は、デバイス装置３００からＩＲＱハンドシェイクパケットを受信した場合、ステータスバッファ２１１ｂに、ＩＲＱハンドシェイクパケット送受信フラグ「オン」を格納する。このとき、ＵＳＢコントローラ２１０は、ステータスバッファ２１１ｂの組となるデータバッファ２１１ａには何も格納しない。ＵＳＢコントローラ２１０は、このように、受信したデータパケットまたはＩＲＱハンドシェイクパケットに応じて、データバッファおよびステータスバッファに、データおよびデータサイズ（またはフラグ）を格納する。
【００５４】
ＵＳＢコントローラ２１０は、複数組備えるバッファセットをシーケンシャルに解析する。そして、ステータスバッファ２１１ｂに「０」より大きいサイズが格納される場合は、そのステータスバッファ２１１ｂの組となるデータバッファ２１１ａに格納されるデータをメインメモリ２３０にＤＭＡ転送する指示を、ＤＭＡコントローラ２２０に送出する。ＤＭＡコントローラ２２０は、上記指示に応じて、データバッファ２１１ａに格納されるデータをメインメモリ２３０にＤＭＡ転送する。
【００５５】
一方、ＵＳＢコントローラ２１０は、バッファセットをシーケンシャルに解析した結果、ステータスバッファ２にＩＲＱハンドシェイクパケット送受信フラグ「オン」が格納される場合、ＣＰＵ２４０に対して転送終了割り込み信号を供給する。ＣＰＵ２４０は、転送終了割り込み信号を受けると、割り込みハンドラをコールすると共に、転送されたデータを用いてメインメモリ２３０にて処理を行う。
【００５６】
次に、ホスト装置２００がデバイス装置３００にデータを送信する動作について説明する。ＣＰＵ２４０は、実行中のコンピュータプログラムからデータの送信指示に応じて、ＵＳＢコントローラ２１０にデータ送信を指示すると共に、ＤＭＡコントローラ２２０にＤＭＡ転送を指示する。ＤＭＡコントローラ２２０は、ＤＭＡ転送指示に応じて、メインメモリ２３０に格納されるデータを、転送可能なサイズのパケット単位でデータバッファ２１１ａにＤＭＡ転送する。このとき、ＤＭＡコントローラ２２０は、データバッファ２１１ａに格納したデータのサイズを、組となるステータスバッファ２１１ｂに格納する。また、ＣＰＵ２４０は、実行中のコンピュータプログラムからの割り込みを発生させるトリガを読み出すと、ステータスバッファ２１１ｂにＩＲＱハンドシェイクパケット送受信フラグ「オン」を格納する。
【００５７】
ＵＳＢコントローラ２１０は、複数組備えるバッファセットをシーケンシャルに解析する。そして、ステータスバッファ２１１ｂに「０」より大きいサイズが格納される場合は、そのステータスバッファ２１１ｂの組となるデータバッファ２１１ａに格納されるデータをデバイス装置３００に送信する。一方、ＵＳＢコントローラ２１０は、ステータスバッファ２１１ａにＩＲＱハンドシェイクパケット送受信フラグ「オン」が格納される場合、ＩＲＱハンドシェイクパケットをデバイス装置３００に送信する。
【００５８】
以上のように、ホスト装置２００とデバイス装置３００は、それぞれ送受信したデータパケットまたはＩＲＱハンドシェイクパケットに応じた動作を行う。
【００５９】
次に、ホスト装置２００およびデバイス装置３００との間のデータ送受信の動作について、図２に示すフローチャートを参照して説明する。図２は、ホスト装置２００がデバイス装置３００からデータを受信するＩＮ転送を実施する際の動作について説明するフローチャートである。
【００６０】
図２に示すように、ホスト装置２００のＣＰＵ２４０は、実行中のコンピュータプログラムからのデータの転送開始を示すトリガに応じて、ＵＳＢコントローラ２１０に対して、デバイス装置３００に対する転送開始指示を送る（Ｓ４０１）。すなわち、ＵＳＢコントローラ２１０は、デバイス装置３００にＩＮＡＣＫパケットを送信することを指示する。ＵＳＢコントローラ２１０は、上記指示に応じて、ＩＮＡＣＫパケットをデバイス装置３００に送信する。
【００６１】
デバイス装置３００は、受信したＩＮＡＣＫパケットに応じて、ＵＳＢコントローラ３１０のデータバッファ３１１ａまたはステータスバッファ３１１ｂに格納されるデータパケットまたはＩＲＱハンドシェイクパケットをＵＳＢコントローラ２１０に送信する。
【００６２】
ＵＳＢコントローラ２１０は、デバイス装置３００から送信されたパケットを受信する（Ｓ４０２）。ＵＳＢコントローラ２１０は、上述したように、受信したデータパケットをデータバッファ２１１ａに格納すると共に、格納したデータパケットのサイズをステータスバッファ２１１ｂに格納する。ＵＳＢコントローラ２１０は、デバイス装置３００からＩＲＱハンドシェイクパケットを受信した場合、ステータスバッファ２１１ｂにＩＲＱハンドシェイクパケット送受信フラグ「オン」を格納する。
【００６３】
ＵＳＢコントローラ２１０は、複数組備えたバッファセットを解析する（Ｓ４０３）。ステータスバッファ２１１ｂに「０」より大きいサイズが格納される場合、ＵＳＢコントローラ２１０は、そのステータスバッファ２１１ｂの組となるデータバッファ２１１ａにデータパケットが格納されると判断する。ＤＭＡコントローラ２２０は、上記データバッファ２１１ａに格納されるデータパケットを、メインメモリ３３０にＤＭＡ転送する（Ｓ４０４）。
【００６４】
一方、ステータスバッファ２１１ｂにＩＲＱハンドシェイクパケット送受信フラグ「オン」が格納される場合、ＵＳＢコントローラ２１０は、ＣＰＵ２４０に対して転送終了割り込み信号を供給する。ＣＰＵ２４０は、転送終了割り込み信号を受けると、割り込みハンドラをコールする（Ｓ４０５）と共に、転送されたデータを用いてメインメモリ２３０にて処理を行う（Ｓ４０６）。続いて、ＣＰＵ２４０は、実行中のコンピュータプログラムからのデータの転送開始を示すトリガに応じて、再びデバイス装置３００に転送開始指示を送ってもよい。
【００６５】
以上のように、ホスト装置２００は、デバイス装置３００から転送されたデータをメインメモリ２３０に転送すると共に、転送終了に応じてＣＰＵ２４０に転送終了割り込み信号を供給する。
【００６６】
なお、図２は、ホスト装置２００がデバイス装置３００からデータを受信するＩＮ転送の動作を示したが、ホスト装置２００がデバイス装置３００にデータを送信するＯＵＴ転送の際も、同様である。すなわち、デバイス装置３００のＵＳＢコントローラ３１０は、ＩＲＱハンドシェイクパケットを受信すると、ＣＰＵ３４０に転送割り込み終了信号を供給する。
【００６７】
図３および図４は、転送終了割り込み信号が発生するタイミングを模式的に説明する図である。図３は、上記特許文献１に記載されるようなショートパケットを受信したことを転送終了のトリガとする場合の転送終了割り込みのタイミングを示す図である。図４は、本第１の実施形態に係るＵＳＢ転送システム１００における転送終了割り込みのタイミングを示す図である。
【００６８】
図４に示すように、本第１の実施形態に係るＵＳＢ転送システム１００では、ＩＲＱハンドシェイクパケットを受信したことに応じてＵＳＢコントローラ２１０がＣＰＵ２４０に転送終了割り込み信号を供給する。したがって、本第１の実施形態に係るＵＳＢ転送システム１００では、図３に示すようなショートパケットを受信したことを転送終了のトリガとする場合よりも、割り込みの発生回数が削減される。
【００６９】
以上のように、本第１の実施形態によれば、ホスト装置２００およびデバイス装置３００のＵＳＢコントローラ２１０、３１０は、１または複数組のバッファセットを備え、対向装置からＩＲＱハンドシェイクパケットを受信すると、ステータスバッファ２１１ｂ、３１１ｂにＩＲＱハンドシェイクパケット送受信フラグ「オン」を格納する。ＵＳＢコントローラ２１０、３１０は、このフラグ「オン」に応じて、ＣＰＵ２４０、３４０に転送終了割り込み信号を供給する。
【００７０】
上記構成を採用することにより、本第１の実施形態によれば、ＣＰＵ２４０、３４０に対する転送終了割り込みの発生回数を削減することができるので、ＣＰＵ処理を削減できると共に、装置間におけるデータ転送の性能を向上させることができるという効果が得られる。また、マルチコアプロセッサ等のハードウエアの実装は不要であるので、コストの増加を抑えながら、装置間におけるデータ転送の性能を向上させることができるという効果が得られる。
【００７１】
第２の実施形態
次に、上述した第１の実施形態を基礎とする第２の実施形態について説明する。以下の説明では、第１の実施形態と同様の構成については同じ参照番号を付与することにより、重複する説明は省略する。
【００７２】
第２の実施形態では、上記第１の実施形態において説明したホスト装置２００およびデバイス装置３００が備えるＵＳＢコントローラ２１０、３１０が、２つの割り込みモードを有する構成について説明する。すなわち、ＵＳＢコントローラ２１０、３１０は、ショートパケットの受信に応じてＣＰＵ２４０、３４０に転送終了割り込み信号を供給するショートパケットモードと、第１の実施形態において説明したＩＲＱハンドシェイクパケットの受信に応じてＣＰＵ２４０、３４０に転送終了割り込み信号を供給するＩＲＱモードとを有する。
【００７３】
ＵＳＢコントローラ２１０、３１０は、ＵＳＢ転送システム１００の起動の際にはショートパケットモードであり、互いに以下のようにネゴシエーションに成功すると、ＩＲＱモードに移行する。
【００７４】
図５は、ＵＳＢコントローラ２１０、３１０が、互いにネゴシエーションに成功すると共に、ショートパケットモードからＩＲＱモードに移行する動作について説明する図である。図５に示すように、ＵＳＢ転送システム１００が起動すると、ホスト装置２００のＵＳＢコントローラ２１０は、ＩＲＱ＿ＥＮＡＢＬＥハンドシェイクパケットをデバイス装置３００に送信する。ＩＲＱ＿ＥＮＡＢＬＥハンドシェイクパケットは、ＩＲＱハンドシェイクパケットに対応する機能の有無を問い合わせる情報である。ＩＲＱハンドシェイクパケットに対応する機能とは、対向装置に、転送終了割り込みを発生するためにＩＲＱハンドシェイクパケットを送信する機能、およびＩＲＱハンドシェイクパケットを受信するとＣＰＵに転送終了割り込み信号を供給する機能である。
【００７５】
デバイス装置３００のＵＳＢコントローラ３１０は、ＩＲＱ＿ＥＮＡＢＬＥハンドシェイクパケットを受信すると、それをステータスバッファ３１１ｂに格納する。ＵＳＢコントローラ３１０は、ステータスバッファ３１１ｂを解析し、ＩＲＱ＿ＥＮＡＢＬＥハンドシェイクパケットが格納される場合は、その応答としてＩＲＱ＿ＡＣＫハンドシェイクパケットをホスト装置２００に送信する。ホスト装置２００のＵＳＢコントローラ２１０は、初期化処理のためのＳｅｔＡｄｄｒｅｓｓリクエストをＵＳＢコントローラ３１０に送信する。
【００７６】
デバイス装置３００のＵＳＢコントローラ３１０は、ＩＲＱ＿ＥＮＡＢＬＥハンドシェイクパケットの受信に応じてＩＲＱモードに移行する。ホスト装置２００のＵＳＢコントローラ２１０は、ＩＲＱ＿ＡＣＫハンドシェイクパケットの受信に応じてＩＲＱモードに移行する。以上のように、ホスト装置２００とデバイス装置３００は、共にＩＲＱハンドシェイクパケットに対応する機能を有する場合、ショートパケットモードからＩＲＱモードに移行することができる。
【００７７】
図６は、ＵＳＢコントローラ２１０、３１０との間でネゴシエーションが成立せず、ＩＲＱモードに移行しない動作の例について説明する図である。図６に示す例では、ホスト装置２００のＵＳＢコントローラ２１０は、ＩＲＱハンドシェイクパケットに対応する機能を有するが、デバイス装置３００のＵＳＢコントローラ３１０は当該機能を有しない場合について説明する。
【００７８】
ホスト装置２００のＵＳＢコントローラ２１０は、ＩＲＱ＿ＥＮＡＢＬＥハンドシェイクパケットをデバイス装置３００のＵＳＢコントローラ３１０に送信する。ＵＳＢコントローラ３１０は、ＩＲＱハンドシェイクパケットに対応する機能を有していないので、ＩＲＱ＿ＥＮＡＢＬＥハンドシェイクパケットに応答しない。
【００７９】
ホスト装置２００のＵＳＢコントローラ２１０は、一定時間ＩＲＱ＿ＡＣＫハンドシェイクパケットを受信できない場合、ＵＳＢコントローラ３１０はＩＲＱハンドシェイクパケットに対応する機能を有しないと判断する。そして、ＵＳＢコントローラ２１０は、ショートパケットモードにて、初期化処理のためのＳｅｔＡｄｄｒｅｓｓリクエストをＵＳＢコントローラ３１０に送信する。
【００８０】
このように、ＵＳＢコントローラ３１０がＩＲＱハンドシェイクパケットに対応する機能を有しない場合でも、ＵＳＢ転送システム１００は、ショートパケットに応じてＣＰＵへの転送終了割り込み信号を供給することができる。
【００８１】
図７は、ＵＳＢコントローラ２１０、３１０との間でネゴシエーションが成立せず、ＩＲＱモードに移行しない動作の他の例について説明する図である。図７に示す例では、デバイス装置３００のＵＳＢコントローラ３１０は、ＩＲＱハンドシェイクパケットに対応する機能を有するが、ホスト装置２００のＵＳＢコントローラ２１０は当該機能を有しない場合について説明する。
【００８２】
ホスト装置２００のＵＳＢコントローラ２１０は、ＩＲＱハンドシェイクパケットに対応する機能を有しないので、ＩＲＱ＿ＥＮＡＢＬＥハンドシェイクパケットを送信せず、初期化処理のためのＳｅｔＡｄｄｒｅｓｓリクエストをＵＳＢコントローラ３１０に送信する。ＵＳＢコントローラ２１０とＵＳＢコントローラ３１０は、互いにショートパケットモードで動作する。
【００８３】
このように、ＵＳＢコントローラ２１０がＩＲＱハンドシェイクパケットに対応する機能を有しない場合でも、ＵＳＢ転送システム１００は、ショートパケットに応じてＣＰＵへの転送終了割り込み信号を供給することができる。
【００８４】
以上のように、本第２の実施形態によれば、ＵＳＢコントローラ２１０とＵＳＢコントローラ３１０は、ＣＰＵ２４０、３４０への転送終了割り込みに関し、ショートパケットモードとＩＲＱモードとを有する。ＵＳＢコントローラ２１０とＵＳＢコントローラ３１０は、互いにＩＲＱ＿ＥＮＡＢＬＥハンドシェイクパケットおよびＩＲＱ＿ＡＣＫハンドシェイクパケットを介してネゴシエーションが成立すると、ショートパケットモードからＩＲＱモードに移行する。また、上記ネゴシエーションが成立しない場合、ＵＳＢコントローラ２１０とＵＳＢコントローラ３１０は、ショートパケットの受信に応じてＣＰＵへの転送終了割り込み信号を供給する。
【００８５】
上記構成を採用することにより、本第２の実施形態によれば、ＵＳＢ転送システム１００において、ホスト装置２００およびデバイス装置３００のいずれかがＩＲＱハンドシェイクパケットに対応する機能を有さない場合でも、ショートパケットの受信に基づいて転送終了割り込みをすることで互いにＵＳＢ転送を実施できるので、高い汎用性を有するという効果が得られる。
【００８６】
第３の実施形態
上記実施形態を包含する本発明の第３の実施形態について説明する。図８は、本発明の第３の実施形態に係るＵＳＢ転送装置５００の構成を示すブロック図である。ＵＳＢ転送装置５００は、プロセッサ５１０とＵＳＢコントローラ５２０とを備える。
【００８７】
プロセッサ５１０は、自装置を制御する。ＵＳＢコントローラ５２０は、伝送手段を介して接続される対向装置との間でＵＳＢ転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくともデータバッファに格納したデータパケットのサイズおよびデータの転送終了を示す情報のいずれかを格納するステータスバッファとを含むバッファセットを有する。
【００８８】
ＵＳＢコントローラ５２０は、ステータスバッファに転送終了を示す情報が格納される場合、プロセッサに転送終了割り込み信号を供給する。
【００８９】
上記構成を採用することにより、本第３の実施形態によれば、転送終了を示す情報に基づいてプロセッサに転送終了割り込み信号を供給するので、コストの増加を抑えながら、装置間におけるデータ転送の性能を向上させることができるという効果が得られる。
【符号の説明】
【００９０】
１００  ＵＳＢ転送システム
２００  ホスト装置
２１０、３１０、５２０  ＵＳＢコントローラ
２１１ａ、２１２ａ、３１１ａ、３１２ａ  データバッファ
２１１ｂ、２１２ｂ、３１１ｂ、３１２ｂ  ステータスバッファ
２２０、３２０  ＤＭＡコントローラ
２３０、３３０  メインメモリ
２４０、３４０  ＣＰＵ
２５０、３５０  記録媒体
２６０  ＵＳＢ伝送部
３００  デバイス装置
５００  ＵＳＢ転送装置
５１０  プロセッサ
【図１】
0006542513.tif 000002
【図２】
0006542513.tif 000003
【図３】
0006542513.tif 000004
【図４】
0006542513.tif 000005
【図５】
0006542513.tif 000006
【図６】
0006542513.tif 000007
【図７】
0006542513.tif 000008
【図８】
0006542513.tif 000009
【図９】
0006542513.tif 000010