(57)【要約】【課題】ストレージ機器間のデータ転送時間を短縮することが可能なＵＳＢホストコントローラを提供することである。【解決手段】本発明にかかるＵＳＢホストコントローラ１１は、第１のバッファメモリ領域４１と第２のバッファメモリ領域４２とを有するＵＳＢパイプ用バッファメモリ２と、第１の機器１８と第２の機器１９とＵＳＢパイプ用バッファメモリ２の間のデータ転送を制御するバッファメモリ制御部１を備える。バッファメモリ制御部１は、第１の機器１８からのデータを第１のバッファメモリ領域４１に格納し、第１のバッファメモリ領域４１に対応するアドレス情報と第２のバッファメモリ領域４２に対応するアドレス情報を入れ替え、当該入れ替えた後の第１のバッファメモリ領域４１に対応するアドレス情報に基づき第１のバッファメモリ領域４１に格納されているデータを第２の機器１９に転送する。【選択図】図１
2010198171.tif 000002
【特許請求の範囲】
【請求項１】
第１のバッファメモリ領域と第２のバッファメモリ領域とを有するバッファメモリと、
第１の機器と前記バッファメモリ間のデータ転送と、第２の機器と前記バッファメモリ間のデータ転送を制御するバッファメモリ制御部と、を備え、
前記バッファメモリ制御部は、
前記第１のバッファメモリ領域に対応するアドレス情報と前記第２のバッファメモリ領域に対応するアドレス情報を保持すると共に、前記第１の機器からのデータを前記第１のバッファメモリ領域に格納し、前記第１のバッファメモリ領域に対応するアドレス情報と前記第２のバッファメモリ領域に対応するアドレス情報を入れ替え、当該入れ替えた後の第１のバッファメモリ領域に対応するアドレス情報に基づき前記第１のバッファメモリ領域に格納されている前記データを第２の機器に転送する、ＵＳＢホストコントローラ。
【請求項２】
前記バッファメモリ制御部は、前記アドレス情報を格納すると共に、当該アドレス情報に基づき前記データを転送する複数のＵＳＢパイプ制御ブロックを有する、請求項１に記載のＵＳＢホストコントローラ。
【請求項３】
前記バッファメモリ制御部は、第１のＵＳＢパイプ制御ブロックと、第２のＵＳＢパイプ制御ブロックと、当該第１のＵＳＢパイプ制御ブロックと当該第２のＵＳＢパイプ制御ブロックのアドレス情報を入れ替えるメモリスワップ制御ブロックと、を有し、
前記第１のＵＳＢパイプ制御ブロックは前記第１のバッファメモリ領域に対応するアドレス情報を保持すると共に、前記第１の機器からのデータを前記第１のバッファメモリ領域に格納し、
前記第２のＵＳＢパイプ制御ブロックは前記第２のバッファメモリ領域に対応するアドレス情報を保持し、
前記メモリスワップ制御ブロックは、前記第１のＵＳＢパイプ制御ブロックが前記第１の機器からのデータを前記第１のバッファメモリ領域に格納した後に、前記第１のＵＳＢパイプ制御ブロックが保持する前記第１のバッファメモリ領域に対応するアドレス情報と前記第２のＵＳＢパイプ制御ブロックが保持する前記第２のバッファメモリ領域に対応するアドレス情報を入れ替えることで、前記第２のＵＳＢパイプ制御ブロックに前記第１のバッファメモリ領域のアドレス情報を保持させ、
前記第２のＵＳＢパイプ制御ブロックは前記第１のバッファメモリ領域に格納されている前記データを前記第２の機器に転送する、請求項１または２に記載のＵＳＢホストコントローラ。
【請求項４】
前記アドレス情報は前記第１及び第２のバッファメモリ領域のそれぞれのアドレス情報と前記第１及び第２のバッファメモリ領域のそれぞれに格納されているデータのサイズである、請求項１乃至３のいずれか一項に記載のＵＳＢホストコントローラ。
【請求項５】
前記アドレス情報は前記第１及び第２のバッファメモリ領域のそれぞれの始点アドレスと前記第１及び第２のバッファメモリ領域のそれぞれに格納されているデータのサイズである、請求項１乃至３のいずれか一項に記載のＵＳＢホストコントローラ。
【請求項６】
前記アドレス情報は前記第１及び第２のバッファメモリ領域のそれぞれの始点アドレス及び終点アドレスである、請求項１乃至３のいずれか一項に記載のＵＳＢホストコントローラ。
【請求項７】
前記バッファメモリ制御部は、前記第２のバッファメモリ領域が空となった後に、前記第１のバッファメモリ領域に対応するアドレス情報と前記第２のバッファメモリ領域に対応するアドレス情報を入れ替える、請求項１乃至６のいずれか一項に記載のＵＳＢホストコントローラ。
【請求項８】
第１のバッファメモリ領域と第２のバッファメモリ領域とを有するバッファメモリと、
第１の機器と前記バッファメモリ間のデータ転送と、第２の機器と前記バッファメモリ間のデータ転送を制御するバッファメモリ制御部と、を有するＵＳＢホストコントローラの制御方法であって、
前記第１の機器からのデータを前記第１のバッファメモリ領域に格納し、
前記バッファメモリ制御部が保持する前記第１のバッファメモリ領域に対応するアドレス情報と前記第２のバッファメモリ領域に対応するアドレス情報を入れ替え、
当該入れ替えた後の第１のバッファメモリ領域に対応するアドレス情報に基づき前記第１のバッファメモリ領域に格納されている前記データを第２の機器に転送する、
ＵＳＢホストコントローラの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＵＳＢホストコントローラ、及びＵＳＢホストコントローラの制御方法に関する。
【背景技術】
【０００２】
近年、ＵＳＢ（Universal Serial Bus）インタフェースは、コンピュータとその周辺機器を接続するインタフェースとして用いられている。また、組み込み機器システムにおいてもＵＳＢインタフェースが用いられている。図５はデータ入出力装置とその装置に接続されるＵＳＢ周辺機器の構成例を示す図である。図５に示すデータ入力装置は、例えばデジタルビデオカメラなどで動画像、静止画像データを保存する場合に使用するストレージ機器、及びその機器との入出力制御部を抜粋したものである。
【０００３】
図５に示すデータ入出力装置１２２は、ＣＰＵ１２０、メモリ１２１、ＵＳＢホストコントローラ１１１、コネクタ１１６、１１７、ＳＡＴＡ（Serial ATA）コントローラ１１４、ハードディスク１１５、バス１１３を有する。ＣＰＵ１２０、メモリ１２１、ＵＳＢホストコントローラ１１１はバス１１３を介してそれぞれ接続されている。また、ハードディスク１１５はＳＡＴＡコントローラ１１４を介してバス１１３と接続されている。そして、ＵＳＢメモリ１１８はコネクタ１（１１６）を介してＵＳＢホストコントローラ１１１と接続されており、また、外付けハードディスク１１９はコネクタ２（１１７）を介してＵＳＢホストコントローラ１１１と接続されている。
【０００４】
また、データ通信手段としてＵＳＢを使用する場合、装置内部にＵＳＢホストコントローラを内蔵することが一般的になってきている。図６は、図５に示すＵＳＢホストコントローラ１１１を示す図である。図６に示すＵＳＢホストコントローラ１１１はＣＰＵインタフェース制御ブロック１０８と、ＵＳＢパイプ用バッファメモリ１０２と、第１のＵＳＢパイプ制御ブロック１０４と、第２のＵＳＢパイプ制御ブロック１０５と、第ｎのＵＳＢパイプ制御ブロック１０６と、ＵＳＢインタフェース制御ブロック１０７と、ポート１０９、１１０、バス１１２を有する。ＣＰＵインタフェース制御ブロック１０８と、ＵＳＢパイプ用バッファメモリ１０２と、第１のＵＳＢパイプ制御ブロック１０４と、第２のＵＳＢパイプ制御ブロック１０５と、第ｎのＵＳＢパイプ制御ブロック１０６は、それぞれバス１１２を介して接続されている。
【０００５】
次に、図５に示すＵＳＢメモリ１１８から外付けハードディスク１１９へデータを移動するための処理シーケンスについて図７を用いて説明する。また、この時のデータの流れについて図８を用いて説明する。尚、この例ではＵＳＢメモリ１１８からのデータの読み出し（ＢｕｌｋＩＮ）には第１のＵＳＢパイプ制御ブロック１０４を、外付けハードディスク１１９へのデータの書き込み（ＢｕｌｋＯＵＴ）には第２のＵＳＢパイプ制御ブロック１０５を用いるものとする。
【０００６】
まず、図５の外付けハードディスク１１９へコピーするデータをＵＳＢメモリ１１８から読み出すために、ＣＰＵ１２０はＵＳＢホストコントローラ１１１に対してＢｕｌｋＩＮ転送を発生させるための処理を行う（Ｓ１０１）。次に、ＵＳＢホストコントローラ１１１はＵＳＢメモリ１１８に対してＢｕｌｋＩＮ転送を発行しデータを要求する（Ｓ１０２）。
【０００７】
ＵＳＢメモリ１１８はＢｕｌｋＩＮ要求に応答してＵＳＢホストコントローラ１１１に対してデータを送信する（Ｓ１０３）。ＵＳＢホストコントローラ１１１は、ＵＳＢメモリからの受信データをＵＳＢパイプ用バッファメモリ１０２の第１のバッファメモリ領域（図８の１４１）に格納する（Ｓ１０４）。
【０００８】
そして、ＵＳＢホストコントローラ１１１はＵＳＢメモリからの全データをＵＳＢパイプ用バッファメモリ１０２へ格納後、ＣＰＵ１２０に対して割り込み通知をする（Ｓ１０５）。当該割り込みを検出したＣＰＵ１２０は、ＵＳＢパイプ用バッファメモリ１０２の第１のバッファメモリ領域に格納されているデータを、図５のデータ入出力装置１２２のメモリ１２１へデータ転送し格納する（Ｓ１０６）。
【０００９】
次に、外付けハードディスク１１９へデータを転送するために、メモリ１２１に格納したデータをＵＳＢホストコントローラ１１１へデータ転送する（Ｓ１０７）。ＵＳＢホストコントローラ１１１は受信したデータを内部のＵＳＢパイプ用バッファメモリ１０２の第２のバッファメモリ領域（図８の１４２）に格納する（Ｓ１０８）。ＣＰＵ１２０は、全データ（１パケット分）を転送し終えると、外付けハードディスク１１９に対するＢｕｌｋＯＵＴ転送開始処理を行う（Ｓ１０９）。
【００１０】
ＵＳＢホストコントローラ１１１は、外付けハードディスク１１９に対してＢｕｌｋＯＵＴ転送を発行し、第２のバッファメモリ領域に格納されているデータを外付けハードディスク１１９へ転送する（Ｓ１１０）。外付けハードディスク１１９は、ＢｕｌｋＯＵＴ転送で受信したデータをハードディスクへ格納する（Ｓ１１１）。
【００１１】
図８はＵＳＢメモリ１１８から外付けハードディスク１１９へデータを移動する際のデータの流れを説明するための図である。図８に示すように、データはＵＳＢメモリ１１８から第１のＵＳＢパイプ制御ブロック１０４を経由し、ＵＳＢパイプ用バッファメモリ１０２の第１のバッファメモリ領域１４１に格納される（Ｓ１０１〜Ｓ１０４）。その後、データはＵＳＢパイプ用バッファメモリ１０２の第１のバッファメモリ領域１４１からメモリ１２１へ転送される（Ｓ１０６）。
【００１２】
そして、外付けハードディスク１１９へデータを転送するために、メモリ１２１に格納したデータをＵＳＢパイプ用バッファメモリ１０２の第２のバッファメモリ領域１４２に格納する（Ｓ１０８）。その後、データはＵＳＢパイプ用バッファメモリ１０２の第２のバッファメモリ領域１４２から第２のＵＳＢパイプ制御ブロック１０５を経由し、外付けハードディスク１１９へ転送され、格納される（Ｓ１０９〜Ｓ１１１）。
【００１３】
また、特許文献１にはＣＰＵの負荷を抑制しつつ、転送効率を向上させることができるＵＳＢホスト制御回路に関する技術が開示されている。特許文献１にかかるＵＳＢホスト制御回路は、パイプ制御バッファ、パイプ情報バッファ、転送情報バッファ、パイプ選択回路、プロトコルエンジンを有する。そして、パイプ選択回路はパイプ制御バッファおよびパイプ情報バッファに記憶されている情報に従って、ＣＰＵとＵＳＢデバイスとの間でデータ転送を行うパイプを選択している。更に、プロトコルエンジンからデータ転送に対する応答結果を取得し、当該応答結果に応じて転送情報バッファの内容を書き換えつつ、データ転送を行うパイプを切り替えている。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００４−４６３９２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしながら、図５に示すＵＳＢホストコントローラ１１１を用いてＵＳＢメモリ１１８から外付けハードディスク１１９へデータ転送をする場合、メモリ１２１へデータを一時的に格納する必要がある。
【００１６】
図８を用いて説明すると、上記例ではＵＳＢメモリ１１８からのデータの読み出し（ＢｕｌｋＩＮ）には第１のＵＳＢパイプ制御ブロック１０４を、外付けハードディスク１１９へのデータの書き込み（ＢｕｌｋＯＵＴ）には第２のＵＳＢパイプ制御ブロック１０５を用いている。このため、図５に示すＵＳＢホストコントローラ１１１を用いてデータ転送をする場合、ＵＳＢパイプ用バッファメモリの第１のバッファメモリ領域１４１に格納されているデータを第２のバッファメモリ領域１４２へ転送する必要がある。よって、図５に示すＵＳＢホストコントローラ１１１を用いてデータ転送をする場合、メモリ１２１を用いて第１のバッファメモリ領域１４１に格納されたデータを第２のバッファメモリ領域１４２へ転送している。
【００１７】
このように、ＵＳＢホストコントローラ１１１の外部にあるメモリ１２１を用いて第１のバッファメモリ領域１４１から第２のバッファメモリ領域１４２へデータを転送すると、当該データ転送に時間を要する。また、ＵＳＢホストコントローラ１１１と外部メモリ１２１間におけるデータ転送中にバスが占有されるため、他の処理の速度を低下させる。
【課題を解決するための手段】
【００１８】
本発明にかかるＵＳＢホストコントローラは、第１のバッファメモリ領域と第２のバッファメモリ領域とを有するバッファメモリと、第１の機器と前記バッファメモリ間のデータ転送と、第２の機器と前記バッファメモリ間のデータ転送を制御するバッファメモリ制御部と、を備える。前記バッファメモリ制御部は、前記第１のバッファメモリ領域に対応するアドレス情報と前記第２のバッファメモリ領域に対応するアドレス情報を保持すると共に、前記第１の機器からのデータを前記第１のバッファメモリ領域に格納し、前記第１のバッファメモリ領域に対応するアドレス情報と前記第２のバッファメモリ領域に対応するアドレス情報を入れ替え、当該入れ替えた後の第１のバッファメモリ領域に対応するアドレス情報に基づき前記第１のバッファメモリ領域に格納されている前記データを第２の機器に転送する。
【００１９】
本発明にかかるＵＳＢホストコントローラでは、バッファメモリ制御部が第１のバッファメモリ領域に対応するアドレス情報と第２のバッファメモリ領域に対応するアドレス情報を入れ替えている。これにより、ＵＳＢホストコントローラの外部にあるメモリを用いてデータ転送をする必要がないためストレージ機器間のデータ転送時間を短縮することができる。
【００２０】
本発明にかかる、第１のバッファメモリ領域と第２のバッファメモリ領域とを有するバッファメモリと、第１の機器と前記バッファメモリ間のデータ転送と第２の機器と前記バッファメモリ間のデータ転送を制御するバッファメモリ制御部と、を有するＵＳＢホストコントローラの制御方法は次の工程を有する。前記第１の機器からのデータを前記第１のバッファメモリ領域に格納する工程。前記バッファメモリ制御部が保持する前記第１のバッファメモリ領域に対応するアドレス情報と前記第２のバッファメモリ領域に対応するアドレス情報を入れ替える工程。当該入れ替えた後の第１のバッファメモリ領域に対応するアドレス情報に基づき前記第１のバッファメモリ領域に格納されている前記データを第２の機器に転送する工程。
【００２１】
本発明にかかるＵＳＢホストコントローラの制御方法では、第１のバッファメモリ領域に対応するアドレス情報と第２のバッファメモリ領域に対応するアドレス情報を入れ替えている。これにより、ＵＳＢホストコントローラの外部にあるメモリを用いてデータ転送をする必要がないためストレージ機器間のデータ転送時間を短縮することができる。
【発明の効果】
【００２２】
本発明により、ストレージ機器間のデータ転送時間を短縮することが可能なＵＳＢホストコントローラ及びＵＳＢホストコントローラの制御方法を提供することができる。
【図面の簡単な説明】
【００２３】
【図１】実施の形態にかかるＵＳＢホストコントローラを示す図である。
【図２】実施の形態にかかるＵＳＢホストコントローラのメモリスワップ制御ブロックを示す図である。
【図３】実施の形態にかかるＵＳＢホストコントローラを用いてデータ転送した場合のシーケンスを説明するための図である。
【図４】実施の形態にかかるＵＳＢホストコントローラを用いてデータ転送した場合を説明するための図である。（ａ）はスワップ前の状態、（ｂ）はスワップ後の状態である。
【図５】背景技術にかかるデータ入出力装置を示す図である。
【図６】背景技術にかかるＵＳＢホストコントローラを示す図である。
【図７】背景技術にかかるＵＳＢホストコントローラを用いてデータ転送した場合のシーケンスを説明するための図である。
【図８】背景技術にかかるＵＳＢホストコントローラを用いてデータ転送した場合を説明するための図である。
【発明を実施するための形態】
【００２４】
以下、図面を参照して本発明の実施の形態について説明する。
本実施の形態にかかるＵＳＢホストコントローラを図１に示す。本実施の形態にかかるＵＳＢホストコントローラ１１は、第１のバッファメモリ領域４１（図４参照）と第２のバッファメモリ領域４２（図４参照）とを有するＵＳＢパイプ用バッファメモリ（バッファメモリ）２と、第１の機器１８とＵＳＢパイプ用バッファメモリ２間のデータ転送と、第２の機器１９とＵＳＢパイプ用バッファメモリ２間のデータ転送を制御するバッファメモリ制御部１と、を備える。
【００２５】
バッファメモリ制御部１は、第１のバッファメモリ領域４１に対応するアドレス情報と第２のバッファメモリ領域４２に対応するアドレス情報を保持する。また、バッファメモリ制御部１は、第１の機器１８からのデータを第１のバッファメモリ領域４１に格納し、その後に、第１のバッファメモリ領域４１に対応するアドレス情報と第２のバッファメモリ領域４２に対応するアドレス情報を入れ替え、当該入れ替えた後の第１のバッファメモリ領域に対応するアドレス情報に基づき前記第１のバッファメモリ領域４１に格納されているデータを第２の機器１９に転送する。
【００２６】
図１に示すＵＳＢホストコントローラ１１のバッファメモリ制御部１はメモリスワップ制御ブロック３と複数のＵＳＢパイプ制御ブロック４、５、６を有する。更に、ＵＳＢホストコントローラ１１はＵＳＢパイプ用バッファメモリ２とＣＰＵインタフェース制御ブロック８を有する。そして、メモリスワップ制御ブロック３、複数のＵＳＢパイプ制御ブロック４、５、６、ＵＳＢパイプ用バッファメモリ２、ＣＰＵインタフェース制御ブロック８はバス１２を介してそれぞれ接続されている。ＣＰＵインタフェース制御ブロック８はＣＰＵからの命令、ＣＰＵへの割り込み信号を制御する機能を有する。
【００２７】
また、各ＵＳＢパイプ制御ブロック４、５、６はＵＳＢインタフェース制御ブロック７と接続されている。そして、第１の機器１８と第２の機器１９はそれぞれポート１（９）とポート２（１０）を介してＵＳＢインタフェース制御ブロック７と接続されている。ここで、第１の機器１８と第２の機器１９は情報をストレージする機能を有する機器であればどのような機器でもよい。本実施の形態では、例えば第１の機器１８をＵＳＢメモリとし、第２の機器１９を外付けハードディスクとして説明する。
【００２８】
次に、バッファメモリ制御部１とＵＳＢパイプ用バッファメモリ２の動作について説明する。バッファメモリ制御部１はＵＳＢメモリ１８からのデータをＵＳＢパイプ用バッファメモリ２へ転送すると共に、ＵＳＢパイプ用バッファメモリ２に格納されているデータを外付けハードディスク１９へ転送する。
【００２９】
図４（ａ）に示すように、ＵＳＢパイプ用バッファメモリ２は複数のバッファメモリ領域を有する。そして、それぞれのバッファメモリ領域に対応するように、各ＵＳＢパイプ制御ブロックが割り当てられている。
【００３０】
例えば、図４（ａ）では、第１のバッファメモリ領域４１には第１のＵＳＢパイプ制御ブロック４が割り当てられている。そして、第１のＵＳＢパイプ制御ブロック４はＵＳＢメモリ１８からのデータを第１のバッファメモリ領域４１へ転送する機能を有している。この時、第１のＵＳＢパイプ制御ブロック４は、メモリスワップ制御ブロック３により書き込まれたベースアドレス情報とデータサイズに基づいて、第１のバッファメモリ領域４１へデータを転送している。ここで、例えばベースアドレス情報は第１のバッファメモリ領域４１における始点アドレスである。そして、当該始点アドレスとデータサイズ情報を用いることで、第１のバッファメモリ領域４１を特定することができる。
【００３１】
同様に、第２のバッファメモリ領域４２には第２のＵＳＢパイプ制御ブロック５が割り当てられている。そして、第２のＵＳＢパイプ制御ブロック５は第２のバッファメモリ領域４２に格納されているデータを外付けハードディスク１９へ転送する機能を有している。この時、第２のＵＳＢパイプ制御ブロック５は、メモリスワップ制御ブロック３により書き込まれたベースアドレス情報とデータサイズに基づいて、第２のバッファメモリ領域４２に格納されているデータを外付けハードディスク１９へ転送している。
【００３２】
図４（ａ）ではＵＳＢメモリ１８からのデータは第１のＵＳＢパイプ制御ブロック４を経由して第１のバッファメモリ領域４１へ転送されている。しかし、外付けハードディスク１９へデータを転送するためには第２のＵＳＢパイプ制御ブロック５を経由する必要がある。そのため、第１のバッファメモリ領域４１に格納されたデータを外付けハードディスク１９へ転送するためには、第１のバッファメモリ領域４１に格納されたデータを第２のバッファメモリ領域４２へ移動する必要がある。そこで、背景技術では外部メモリを設けることで、第１のバッファメモリ領域４１に格納されたデータを第２のバッファメモリ領域４２へ移動していた。しかし、外部メモリを用いると、第１のバッファメモリ領域４１から外部メモリへのデータの転送、外部メモリから第２のバッファメモリ領域４２へのデータの転送が必要となるため、データの移動に時間を要する。また、ＵＳＢホストコントローラ１１と外部メモリ間におけるデータ転送中にバスが占有されるため、他の処理能力を低下させるという問題が生じる。また、ＵＳＢホストコントローラ１１の外部にメモリを別途設けなければならない。
【００３３】
本実施の形態では、第１のＵＳＢパイプ制御ブロック４と第２のＵＳＢパイプ制御ブロック５が保持するアドレス情報（ベースアドレス情報、データサイズ情報）を、メモリスワップ制御ブロック３を用いて書き替えることで、上記問題を解決している。以下で、メモリスワップ制御ブロック３がＵＳＢパイプ制御ブロックのアドレス情報を書き替える場合について説明する。
【００３４】
図２はメモリスワップ制御ブロック３を示す図である。メモリスワップ制御ブロック３はＣＰＵバスインタフェース制御ブロック２１とスワップ元パイプ番号レジスタ２２とスワップ先パイプ番号レジスタ２３とスワップ開始イネーブルレジスタ２４とを有し、これらはバス３２を介して接続されている。ＣＰＵバスインタフェース制御ブロック２１はＣＰＵからの命令を制御する機能を有する。
【００３５】
スワップ元パイプ番号レジスタ２２にはスワップ元のＵＳＢパイプ制御ブロックのパイプ番号が格納されている。マルチプレクサ２５は、スワップ元パイプ番号レジスタ２２からスワップ元のパイプ番号を取得し、当該パイプ番号に従いＵＳＢパイプ制御ブロックのベースアドレス情報を選択し、スワップ先のＵＳＢパイプ制御ブロックのメモリベースアドレス保持回路へベースアドレス情報を送信する。
【００３６】
同様に、マルチプレクサ２６は、スワップ元パイプ番号レジスタ２２からスワップ元のパイプ番号を取得し、当該パイプ番号に従いＵＳＢパイプ制御ブロックのデータサイズ情報を選択し、スワップ先のＵＳＢパイプ制御ブロックのデータサイズ保持回路へデータサイズ情報を送信する。
【００３７】
また、スワップ先パイプ番号レジスタ２３にはスワップ先のＵＳＢパイプ制御ブロックのパイプ番号が格納されている。マルチプレクサ２７は、スワップ先パイプ番号レジスタ２３からスワップ先のパイプ番号を取得し、当該パイプ番号に従いＵＳＢパイプ制御ブロックのベースアドレス情報を選択し、スワップ元のＵＳＢパイプ制御ブロックのメモリベースアドレス保持回路へベースアドレス情報を送信する。
【００３８】
同様に、マルチプレクサ２８は、スワップ先パイプ番号レジスタ２３からスワップ先のパイプ番号を取得し、当該パイプ番号に従いＵＳＢパイプ制御ブロックのデータサイズ情報を選択し、スワップ元のＵＳＢパイプ制御ブロックのデータサイズ保持回路へデータサイズ情報を送信する。
【００３９】
上記スワップ元パイプ番号レジスタ２２、スワップ先パイプ番号レジスタ２３に書き込まれるパイプ番号は、ＣＰＵからの命令に基づき書き込まれる。
【００４０】
スワップ元パイプ番号レジスタ２２、スワップ先パイプ番号レジスタ２３にパイプ番号が書き込まれると、スワップ開始イネーブルレジスタ２４がセットされ、スワップ開始イネーブルレジスタ２４がセットされたことを示す信号がスワップタイミング信号生成回路３０へ送信される。マルチプレクサ２９は、スワップ先パイプ番号レジスタ２３に格納されたパイプ番号に基づき、スワップ先のバッファステータス情報を選択し、当該情報をスワップタイミング信号生成回路３０へ送信する。ここで、スワップ先のバッファステータス情報とはスワップ先のバッファメモリ領域が空であるか否かを示す情報である。そして、スワップ先のバッファメモリ領域が空でない場合、スワップ動作の開始を保留し、スワップ先のバッファメモリ領域が空になるまで待つ。スワップ先のバッファメモリ領域が空である場合、スワップタイミング信号生成回路３０はスワップ開始信号生成回路３１に対して、スワップタイミング信号を送信する。
【００４１】
スワップ開始信号生成回路３１は、スワップ元パイプ番号レジスタ２２からスワップ元のパイプ番号を取得し、スワップ先パイプ番号レジスタ２３からスワップ先のパイプ番号を取得し、スワップタイミング信号生成回路３０からスワップタイミング信号を受け取ると、スワップ元のＵＳＢパイプ制御ブロックとスワップ先のＵＳＢパイプ制御ブロックに対してスワップ開始信号を送信する。スワップ開始信号を受信したスワップ元のＵＳＢパイプ制御ブロックとスワップ先のＵＳＢパイプ制御ブロックは、それぞれが保持するベースアドレス情報及びデータサイズ情報を、各マルチプレクサ２５、２６、２７、２８で選択されたベースアドレス情報及びデータサイズ情報に書き替える。
【００４２】
次に、図３を用いて本実施の形態にかかるＵＳＢホストコントローラを用いてＵＳＢメモリ１８から外付けハードディスク１９へデータ転送した場合について説明する。ここで、ＵＳＢメモリ１８からのデータの読み出し（ＢｕｌｋＩＮ）には第１のＵＳＢパイプ制御ブロック４を使用し、外付けハードディスク１９へのデータの書き込み（ＢｕｌｋＯＵＴ）には第２のＵＳＢパイプ制御ブロック５を使用するものとする。また、ＵＳＢホストコントローラ１１は例えば図５に示すようなデータ入出力装置１２２に組み込まれているものとする。また、スワップ前の第１のＵＳＢパイプ制御ブロック４と第２のＵＳＢパイプ制御ブロック５の状態を図４（ａ）に示し、スワップ後の第１のＵＳＢパイプ制御ブロック４と第２のＵＳＢパイプ制御ブロック５の状態を図４（ｂ）に示す。以下では適宜、図１、図２、図４も用いて説明をする。
【００４３】
まず、図１の外付けハードディスク１９へコピーするデータをＵＳＢメモリ１８から読み出すために、ＣＰＵはＵＳＢホストコントローラ１１に対してＢｕｌｋＩＮ転送を発生させるための処理を行う（Ｓ１）。次に、ＵＳＢホストコントローラ１１はＵＳＢメモリ１８に対してＢｕｌｋＩＮ転送を発行しデータを要求する（Ｓ２）。
【００４４】
ＵＳＢメモリ１８はＢｕｌｋＩＮ要求に応答してＵＳＢホストコントローラ１１に対してデータを送信する（Ｓ３）。ＵＳＢホストコントローラ１１は、ＵＳＢメモリからの受信データをＵＳＢパイプ用バッファメモリ２の第１のバッファメモリ領域４１（図４参照）に格納する（Ｓ４）。
【００４５】
そして、ＵＳＢホストコントローラ１１はＵＳＢメモリからの全データをＵＳＢパイプ用バッファメモリ２へ格納後、ＣＰＵに対して割り込み通知をする（Ｓ５）。当該割り込みを検出したＣＰＵは、メモリスワップするために、図２に示すメモリスワップ制御ブロックのスワップ元パイプ番号レジスタ２２にＵＳＢメモリからのデータを受信したパイプ番号（本実施の形態の例では、１ｈ）を設定する。また、ＣＰＵは、スワップ先パイプ番号レジスタ２３に外付けハードディスク１９へデータを送信するパイプ番号（本実施の形態の例では、２ｈ）を設定する。
【００４６】
図２に示すマルチプレクサ２５は、スワップ元パイプ番号レジスタ２２からスワップ元のパイプ番号（１ｈ）を取得し、当該パイプ番号に従い第１のＵＳＢパイプ制御ブロック４のベースアドレス情報（０１０ｈ）を選択し、スワップ先の第２のＵＳＢパイプ制御ブロック５のベースアドレス保持回路へベースアドレス情報を送信する。
【００４７】
同様に、マルチプレクサ２６は、スワップ元パイプ番号レジスタ２２からスワップ元のパイプ番号（１ｈ）を取得し、当該パイプ番号に従い第１のＵＳＢパイプ制御ブロック４のデータサイズ情報（２００ｈ）を選択し、スワップ先の第２のＵＳＢパイプ制御ブロック５のデータサイズ保持回路へデータサイズ情報を送信する。
【００４８】
マルチプレクサ２７は、スワップ先パイプ番号レジスタ２３からスワップ先のパイプ番号（２ｈ）を取得し、当該パイプ番号に従い第２のＵＳＢパイプ制御ブロック５のベースアドレス情報（４１０ｈ）を選択し、スワップ元の第１のＵＳＢパイプ制御ブロック４のベースアドレス保持回路へベースアドレス情報を送信する。
【００４９】
同様に、マルチプレクサ２８は、スワップ先パイプ番号レジスタ２３からスワップ先のパイプ番号（２ｈ）を取得し、当該パイプ番号に従い第２のＵＳＢパイプ制御ブロック５のデータサイズ情報（０００ｈ）を選択し、スワップ元の第１のＵＳＢパイプ制御ブロック４のデータサイズ保持回路へデータサイズ情報を送信する。
【００５０】
図２に示すスワップ元パイプ番号レジスタ２２、スワップ先パイプ番号レジスタ２３にパイプ番号が書き込まれると、スワップ開始イネーブルレジスタ２４がセットされ、スワップ開始イネーブルレジスタ２４がセットされたことを示す信号がスワップタイミング信号生成回路３０へ送信される。マルチプレクサ２９は、スワップ先パイプ番号レジスタ２３に格納されたパイプ番号（２ｈ）に基づき、スワップ先のバッファステータス情報を選択し、当該情報をスワップタイミング信号生成回路３０へ送信する。
【００５１】
スワップ先のバッファメモリ領域である第２のバッファメモリ領域４２が空でない場合、スワップタイミング信号生成回路３０は、スワップ動作の開始を保留し、第２のバッファメモリ領域４２が空になるまで待つ。第２のバッファメモリ領域４２が空である場合、スワップタイミング信号生成回路３０はスワップ開始信号生成回路３１へスワップタイミング信号を送信する。
【００５２】
スワップ開始信号生成回路３１は、スワップ元のパイプ番号（１ｈ）、スワップ先のパイプ番号（２ｈ）を取得し、スワップタイミング信号生成回路３０からスワップタイミング信号を受け取ると、スワップ元の第１のＵＳＢパイプ制御ブロック４とスワップ先の第２のＵＳＢパイプ制御ブロック５に対してスワップ開始信号を送信する（Ｓ６）。
【００５３】
スワップ開始信号を受信したスワップ元の第１のＵＳＢパイプ制御ブロック４とスワップ先の第２のＵＳＢパイプ制御ブロック５は、それぞれが保持するベースアドレス情報及びデータサイズ情報と、各マルチプレクサ２５、２６、２７、２８で選択されたベースアドレス情報及びデータサイズ情報を入れ替えるというメモリスワップ処理を行う（Ｓ７）。
【００５４】
Ｓ７の動作について図４を用いて説明する。スワップ前の第１のＵＳＢパイプ制御ブロック４のベースアドレス情報は０１０ｈ、データサイズ情報は２００ｈであり、第２のＵＳＢパイプ制御ブロック５のベースアドレスは４１０ｈ、データサイズは０００ｈである。そして、スワップ処理を実行すると、スワップ後の第１のＵＳＢパイプ制御ブロック４のベースアドレス情報は４１０ｈ、データサイズ情報は０００ｈとなる。また、第２のＵＳＢパイプ制御ブロック５のベースアドレスは０１０ｈ、データサイズは２００ｈとなる。
【００５５】
すなわち、上記スワップ処理により第２のＵＳＢパイプ制御ブロック５のベースアドレス情報とデータサイズ情報が第１のバッファメモリ領域４１に対応する情報となったため、第２のＵＳＢパイプ制御ブロック５は第１のバッファメモリ領域４１に格納されているデータを読み出すことができる。
【００５６】
尚、図４ではＵＳＢパイプ制御ブロックのアドレス情報として、ベースアドレス情報とデータサイズ情報を用いているが、バッファメモリ領域を特定できる情報であればどのようなものでもよい。例えば、アドレス情報として、バッファメモリ領域の始点アドレスと終点アドレスを用いてもよい。
【００５７】
そして、上記スワップ処理後、ＵＳＢホストコントローラ１１はＣＰＵに対してスワップ完了を通知するために、ＣＰＵに対して割り込みを発行する（Ｓ８）。ＣＰＵは、ＵＳＢホストコントローラ１１からスワップ完了通知を受け取ると、外付けハードディスク１９に対するＢｕｌｋＯＵＴ転送開始処理を行う（Ｓ９）。
【００５８】
ＵＳＢホストコントローラ１１は、外付けハードディスク１９に対してＢｕｌｋＯＵＴ転送を発行し、第１のバッファメモリ領域に格納されているデータを外付けハードディスク１９へ転送する（Ｓ１０）。外付けハードディスク１９は、ＢｕｌｋＯＵＴ転送で受信したデータをハードディスクへ格納する（Ｓ１１）。
【００５９】
本実施の形態にかかるＵＳＢホストコントローラでは、メモリスワップ制御ブロック３が第１のＵＳＢパイプ制御ブロック４に格納されている第１のバッファメモリ領域４１に対応するアドレス情報と、第２のＵＳＢパイプ制御ブロック５に格納されている第２のバッファメモリ領域４２に対応するアドレス情報を入れ替えている。これにより、ＵＳＢホストコントローラの外部にあるメモリを用いてデータ転送をする必要がないためストレージ機器間のデータ転送時間を短縮することができる。また、ＵＳＢホストコントローラ１１の外部にメモリを別途設ける必要がなくなる。
【００６０】
また、本実施の形態にかかる、第１のバッファメモリ領域と第２のバッファメモリ領域とを有するバッファメモリ（ＵＳＢパイプ用バッファメモリ）と、第１の機器と前記バッファメモリ間のデータ転送と、第２の機器と前記バッファメモリ間のデータ転送を制御するバッファメモリ制御部と、を有するＵＳＢホストコントローラの制御方法は次の工程を有する。
第１の機器からのデータを前記第１のバッファメモリ領域に格納する工程。
バッファメモリ制御部が保持する第１のバッファメモリ領域に対応するアドレス情報と第２のバッファメモリ領域に対応するアドレス情報を入れ替える工程。
入れ替えた後の第１のバッファメモリ領域に対応するアドレス情報に基づき第１のバッファメモリ領域に格納されているデータを第２の機器に転送する工程。
【００６１】
本発明にかかるＵＳＢホストコントローラの制御方法においても、第１のバッファメモリ領域に対応するアドレス情報と第２のバッファメモリ領域に対応するアドレス情報を入れ替えている。これにより、ＵＳＢホストコントローラの外部にあるメモリを用いてデータ転送をする必要がないためストレージ機器間のデータ転送時間を短縮することができる。
【００６２】
よって、本実施の形態にかかる発明により、ストレージ機器間のデータ転送時間を短縮することが可能なＵＳＢホストコントローラ及びＵＳＢホストコントローラの制御方法を提供することができる。
【００６３】
以上、本発明を上記実施の形態に即して説明したが、本発明は上記実施の形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得るであろう各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【００６４】
１  バッファメモリ制御部
２  ＵＳＢパイプ用バッファメモリ（バッファメモリ）
３  メモリスワップ制御ブロック
４  第１のＵＳＢパイプ制御ブロック
５  第２のＵＳＢパイプ制御ブロック
６  第ｎのＵＳＢパイプ制御ブロック
７  ＵＳＢインタフェース制御ブロック
８  ＣＰＵインタフェース制御ブロック
９  ポート１
１０  ポート２
１１  ＵＳＢホストコントローラ
１２  バス
１８  第１の機器（ＵＳＢメモリ）
１９  第２の機器（外付けハードディスク）
２１  ＣＰＵバスインタフェース制御ブロック
２２  スワップ元パイプ番号レジスタ
２３  スワップ先パイプ番号レジスタ
２４  スワップ開始イネーブルレジスタ
２５、２６、２７、２８、２９  マルチプレクサ
３０  スワップタイミング信号生成回路
３１  スワップ開始信号生成回路
４１  第１のバッファメモリ領域
４２  第２のバッファメモリ領域
【図１】
2010198171.tif 000003
【図２】
2010198171.tif 000004
【図３】
2010198171.tif 000005
【図４】
2010198171.tif 000006
【図５】
2010198171.tif 000007
【図６】
2010198171.tif 000008
【図７】
2010198171.tif 000009
【図８】
2010198171.tif 000010