(57)【要約】【課題】ホスト機能とペリフェラル機能が同時に動作する時にホスト機能又はペリフェラル機能のいずれか一方の転送パフォーマンスを高く保つこと。【解決手段】本発明にかかるデータ転送制御装置は、デバイス装置との間のデータ転送を処理する第１の通信部と、ホスト装置との間のデータ転送を処理する第２の通信部と、を有し、第１の通信部又は第２の通信部の一方がデータ転送を優先すべき優先通信部であり、他方が非優先通信部であり、優先通信部は、当該優先通信部においてデータ転送中である場合に非優先通信部に対してデータ転送中であることを通知し、非優先通信部は、優先通信部からデータ転送中であることが通知されている場合に、当該非優先通信部におけるデータ転送を保留する。【選択図】図１
2011065630.tif 000002
【特許請求の範囲】
【請求項１】
デバイス装置との間のデータ転送を処理する第１の通信部と、
ホスト装置との間のデータ転送を処理する第２の通信部と、を有し、
前記第１の通信部又は前記第２の通信部の一方が前記データ転送を優先すべき優先通信部であり、他方が非優先通信部であり、
前記優先通信部は、当該優先通信部において前記データ転送中である場合に前記非優先通信部に対してデータ転送中であることを通知し、
前記非優先通信部は、前記優先通信部から前記データ転送中であることが通知されている場合に、当該非優先通信部における前記データ転送を保留する
データ転送制御装置。
【請求項２】
前記データ転送制御装置は、前記第１の通信部又は前記第２の通信部のいずれかが前記優先通信部として指定された通信部指定情報を格納したレジスタをさらに備え、
前記第１の通信部及び前記第２の通信部は、前記データ転送を開始した場合に、前記レジスタに格納された前記通信部指定情報に応じて、前記データ転送中であるか否かを通知することを特徴とする請求項１に記載のデータ転送制御装置。
【請求項３】
前記第１の通信部は、自己が前記優先通信部であり、かつ、自己と前記デバイス装置との間でデータ転送が開始された場合に、前記デバイス装置との間でデータ転送中であることを前記第２の通信部へ通知し、
前記第２の通信部は、前記第１の通信部が前記デバイス装置との間でデータ転送中であることが当該第１の通信部から通知されている場合に、前記ホスト装置からのデータ転送開始要求に対し、当該ホスト装置へデータ転送が行えないことを示す転送不可応答を送信することを特徴とする請求項１又は２に記載のデータ転送制御装置。
【請求項４】
前記第２の通信部は、前記ホスト装置との間のデータ転送中に、前記デバイス装置と前記第１の通信部との間のデータ転送が開始された場合、現在のデータ転送が完了した以後の当該ホスト装置からの前記データ転送開始要求に対し、前記転送不可応答を送信することを特徴とする請求項３に記載のデータ転送制御装置。
【請求項５】
前記第１の通信部は、前記第２の通信部に対し、当該第２の通信部と前記ホスト装置との間のデータ転送の許否を通知する転送許否信号を出力し、
前記第２の通信部は、前記転送許否信号に応じて、前記ホスト装置からのデータ転送開始要求に対して前記転送不可応答を送信するデータ転送不可モードになることを特徴とする請求項３又は４に記載のデータ転送制御装置。
【請求項６】
前記第２の通信部は、自己が前記優先通信部であり、かつ、自己と前記ホスト装置との間でデータ転送が開始された場合に、前記ホスト装置との間でデータ転送中であることを前記第１の通信部へ通知し、
前記第１の通信部は、前記第２の通信部が前記ホスト装置との間でデータ転送中であることが当該第２の通信部から通知されている場合に、前記デバイス装置に対するデータ転送開始要求の送信を保留し、前記第２の通信部が前記ホスト装置との間でデータ転送が完了したことが当該第２の通信部から通知されている場合に、前記デバイス装置に対して当該保留したデータ転送開始要求を送信することを特徴とする請求項１乃至５のいずれか１項に記載のデータ転送制御装置。
【請求項７】
前記第１の通信部は、前記デバイス装置との間のデータ転送中に、前記ホスト装置と前記第２の通信部との間のデータ転送が開始された場合、現在のデータ転送が完了した以後の当該デバイス装置に対する前記データ転送開始要求の送信を保留することを特徴とする請求項６に記載のデータ転送制御装置。
【請求項８】
前記第２の通信部は、前記第１の通信部に対し、当該第１の通信部と前記デバイス装置との間のデータ転送の保留の要求を通知する転送保留要求信号を出力し、
前記第１の通信部は、前記転送保留要求信号に応じて、前記デバイス装置に対するデータ転送開始要求を保留するデータ転送保留モードになることを特徴とする請求項６又は７に記載のデータ転送制御装置。
【請求項９】
前記第１の通信部は、
前記デバイス装置の複数のエンドポイントのそれぞれとデータ転送を実行する複数の転送実行部を備え、
前記複数の転送実行部のいずれかにおいて前記デバイス装置との間でデータ転送が開始されたときから、前記デバイス装置との間でデータ転送中である全ての転送実行部において当該データ転送が終了するまで、前記転送許否信号をアクティブにして前記第２の通信部に対して送信し、
前記第２の通信部は、
前記転送許否信号がアクティブであった場合に、前記データ転送不可モードとなることを特徴とする請求項５に記載のデータ転送制御装置。
【請求項１０】
前記複数の転送実行部のそれぞれは、前記デバイス装置との間でデータ転送中であることを前記第２の通信部へ通知するか否かを決定する通知決定部を有し、
前記第１の通信部は、
前記デバイス装置との間でデータ転送中である転送実行部の内、前記通知決定部により前記第２の通信部へ通知すると決定された転送実行部が存在する場合に、前記転送許否信号をアクティブにして前記第２の通信部に対して送信し、
前記第２の通信部は、
前記転送許否信号がアクティブであった場合に、前記データ転送不可モードとなることを特徴とする請求項９に記載のデータ転送制御装置。
【請求項１１】
前記第１の通信部は、前記転送許否信号をアクティブにした前記第２の通信部に対する送信が所定時間以上継続した場合に、当該転送許否信号をインアクティブにして前記第２の通信部に対して送信し、
前記第２の通信部は、
前記転送許否信号がインアクティブであった場合に、前記データ転送不可モード以外のモードとなることを特徴とする請求項９又は１０のいずれか１項に記載のデータ転送制御装置。
【請求項１２】
前記デバイス装置と前記第１の通信部との間のデータ転送及び前記ホスト装置と前記第２の通信部との間のデータ転送は、ＵＳＢ（Universal Serial Bus）規格に基づく転送であり、
前記第２の通信部は、バルク転送又はインタラプト転送において、前記ホスト装置からＩＮ、ＯＵＴ又はＰＩＮＧトークンを受信した場合に、ＮＡＫ（Negative AcKnowledgement）応答を返信することを特徴とする請求項３乃至５又は９乃至１１のいずれか１項に記載のデータ転送制御装置。
【請求項１３】
前記デバイス装置と前記第１の通信部との間データ転送の状態を保持する状態管理レジスタをさらに備え、
前記第２の通信部は、前記デバイス装置と前記第１の通信部との間のデータ転送が開始された場合に、前記状態管理レジスタにデータ転送中であることを示す情報を格納し、当該データ転送が完了した場合に前記状態管理レジスタに格納された情報をクリアすることを特徴とする請求項１乃至１２のいずれか１項に記載のデータ転送制御装置。
【請求項１４】
前記第２の通信部は、
前記ホスト装置の複数の転送実行部のそれぞれとデータ転送を実行する複数のエンドポイントを備え、
前記複数のエンドポイントのいずれかにおいて前記ホスト装置との間でデータ転送が開始されたときから、前記ホスト装置との間でデータ転送中である全てのエンドポイントにおいて当該データ転送が終了するまで、前記転送保留要求信号をアクティブにして前記第１の通信部に対して送信し、
前記第１の通信部は、
前記転送保留要求信号がアクティブであった場合に、前記データ転送保留モードとなることを特徴とする請求項８に記載のデータ転送制御装置。
【請求項１５】
前記複数のエンドポイントのそれぞれは、前記ホスト装置との間でデータ転送中であることを前記第１の通信部へ通知するか否かを決定する通知決定部を有し、
前記第２の通信部は、
前記ホスト装置との間でデータ転送中であるエンドポイントの内、前記通知決定部により前記第１の通信部へ通知すると決定されたエンドポイントが存在する場合に、前記転送保留要求信号をアクティブにして前記第１の通信部に対して送信し、
前記第１の通信部は、
前記転送保留要求信号がアクティブであった場合に、前記データ転送保留モードとなることを特徴とする請求項１４に記載のデータ転送制御装置。
【請求項１６】
デバイス装置との間のデータ転送を処理する第１の通信部と、
ホスト装置との間のデータ転送を処理する第２の通信部とを有するデータ転送制御装置を制御するデータ転送制御方法であって、
前記第１の通信部又は前記第２の通信部の一方が前記データ転送を優先すべき優先通信部であり、他方が非優先通信部であり、
前記優先通信部は、当該優先通信部において前記データ転送中である場合に前記非優先通信部に対してデータ転送中であることを通知し、
前記非優先通信部は、前記優先通信部から前記データ転送中であることが通知されている場合に、当該非優先通信部における前記データ転送を保留する
データ転送制御方法。
【請求項１７】
前記データ転送制御装置は、前記第１の通信部又は前記第２の通信部のいずれかが前記優先通信部として指定された通信部指定情報を格納するレジスタをさらに備え、
前記データ転送制御装置は、外部からデータ転送を優先すべき通信部として前記第１の通信部又は前記第２の通信部のいずれかが指定された通信部指定情報を受け付け、当該受け付けた通信部指定情報をレジスタに格納し、
前記第１の通信部は、当該第１の通信部と前記デバイス装置との間のデータ転送が開始された場合に、前記レジスタに格納された前記通信部指定情報に応じて、前記第２の通信部に対し、前記第１の通信部が前記デバイス装置との間でデータ転送中であるか否かを通知し、
前記第２の通信部は、当該第２の通信部と前記ホスト装置との間のデータ転送が開始された場合に、前記レジスタに格納された前記通信部指定情報に応じて、前記第１の通信部に対し、前記第２の通信部が前記ホスト装置との間でデータ転送中であることを通知することを特徴とする請求項１６に記載のデータ転送制御方法。
【請求項１８】
前記第１の通信部は、自己が前記優先通信部であり、かつ、自己と前記デバイス装置との間のデータ転送を開始した場合に、前記第２の通信部に対し、前記第１の通信部が前記デバイス装置との間でデータ転送中であることを通知し、
前記第２の通信部は、前記第１の通信部が前記デバイス装置との間でデータ転送中であることが当該第１の通信部から通知されている場合に、前記ホスト装置からのデータ転送開始要求に対し、当該ホスト装置へデータ転送が行えないことを示す転送不可応答を送信し、
前記第１の通信部は、自己が前記優先通信部であり、かつ、自己と前記デバイス装置との間のデータ転送が完了した場合に、前記第２の通信部に対し、前記第１の通信部が前記デバイス装置との間でデータ転送が完了したことを通知し、
前記第２の通信部は、前記第１の通信部が前記デバイス装置との間でデータ転送が完了したことが当該第１の通信部から通知されている場合に、前記ホスト装置からのデータ転送開始要求に対し、当該ホスト装置との間でデータ転送を開始するための応答を送信することを特徴とする請求項１６又は１７に記載のデータ転送制御方法。
【請求項１９】
前記第２の通信部は、自己が前記優先通信部であり、かつ、自己と前記ホスト装置との間のデータ転送が開始された場合に、前記第１の通信部に対し、前記第２の通信部が前記ホスト装置との間でデータ転送中であることを通知し、
前記第１の通信部は、前記第２の通信部が前記ホスト装置との間でデータ転送中であることが当該第２の通信部から通知されている場合に、前記デバイス装置に対するデータ転送開始要求の送信を保留し、
前記第２の通信部は、自己が前記優先通信部であり、かつ、自己と前記ホスト装置との間のデータ転送が完了した場合に、前記第１の通信部に対し、前記第２の通信部が前記ホスト装置との間でデータ転送が完了したことを通知し、
前記第１の通信部は、前記第２の通信部が前記ホスト装置との間でデータ転送が完了したことが当該第２の通信部から通知されている場合に、前記デバイス装置に対して当該保留したデータ転送開始要求を送信することを特徴とする請求項１６又は１７に記載のデータ転送制御方法。
【請求項２０】
前記第１の通信部は、前記通信部指定情報に応じて、前記第２の通信部に対し、当該第２の通信部と前記ホスト装置との間のデータ転送の許否を通知する転送許否信号を出力し、
前記第２の通信部は、前記転送許否信号に応じて、前記ホスト装置からのデータ転送開始要求に対して前記転送不可応答を送信するデータ転送不可モードになり、
前記第２の通信部は、前記通信部指定情報に応じて、前記第１の通信部に対し、当該第１の通信部と前記デバイス装置との間のデータ転送の保留の要求を通知する転送保留要求信号を出力し、
前記第１の通信部は、前記転送保留要求信号に応じて、前記デバイス装置に対するデータ転送開始要求を保留するデータ転送保留モードになることを特徴とする請求項１７に記載のデータ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送制御装置及びデータ転送制御方法に関し、特に、ホスト機能とペリフェラル機能とを同時に使用することが可能なデータ転送制御装置及びデータ転送制御方法に関する。
【背景技術】
【０００２】
近年、ＵＳＢ（Universal Serial Bus）インタフェースを搭載した装置（以下、ＵＳＢ機器）が広く利用されている。ＵＳＢ機器として、例えば、パーソナルコンピュータ（以下、ＰＣ）、プリンタ、デジタルカメラ、ＵＳＢメモリ等が利用されている。これらのＵＳＢ機器はＵＳＢインタフェースを介して他のＵＳＢ機器と接続され、ＵＳＢ規格に準拠したデータ転送が行われる。ＵＳＢによるデータ転送では、一方の機器がホスト機器（例えば、パーソナルコンピュータなど）となり、他方の機器がペリフェラル機器（ＵＳＢメモリ等の周辺機器）となる。各機器間で転送されるデータは、ＵＳＢコントローラに設けられたバッファメモリに一時的に格納される。
【０００３】
また、ＵＳＢ規格の中でも、ＯＴＧ（USB On-The-Go）と呼ばれるインタフェース規格に対応した機器に対するニーズが高まっている。特に、ＯＴＧには、ホスト機能（ホスト機器として動作する機能。但し、転送速度制限がある）とペリフェラル機能（ペリフェラル機器として動作する機能）との両方を持つことができるデュアルロールデバイス（Dual-Role Device）が定義されている。すなわち、デュアルロールデバイスは、ホスト機器又はペリフェラル機器のいずれとしても動作することができる。そして、デュアルロールデバイスに接続された相手が、従来のＵＳＢ規格におけるホスト機器やペリフェラル機器である場合には、デュアルロールデバイスの役割は一意に定まる。つまり、接続相手がホスト機器であれば、デュアルロールデバイスはペリフェラル機能を動作させ、接続相手がペリフェラル機器であれば、デュアルロールデバイスはホスト機能を動作させる。一方、通信機器同士がともにＯＴＧ規格に準拠したデュアルロールデバイスである場合には、規格に従ってどちらの機器がホスト機能として動作するかが決まる。
【０００４】
特許文献１には、ホスト機能におけるコントロール転送の処理負荷の軽減等を図るためのデータ転送制御装置に関する技術が開示されている。特許文献２には、内部バッファメモリに各パイプ領域を確保するためにパイプ領域の再構築処理を行うことにより効率化を図るデータ転送制御装置に関する技術が開示されている。特許文献３には、データ転送の帯域の有効活用と低消費電力化とを図るデータ転送制御装置に関する技術が開示されている。特許文献３にかかるデータ転送制御装置は、ＮＡＫ（Negative AcKnowledgement）応答を受信した際に、所定の期間待った後に再送トランザクションを発行する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−３１６７２８号公報
【特許文献２】特開２００４−３４９８３６号公報
【特許文献３】特開２００５−１２２３７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、上述したデュアルロールデバイスにペリフェラル機器とホスト機器がそれぞれ接続可能な場合、当該デュアルロールデバイスは、ホスト機能とペリフェラル機能とを同時に動作させることができる。この場合、接続されたホスト機器に対しては、ペリフェラル機能が動作して処理を行う間に、接続されたペリフェラル機器に対しては、ホスト機能が動作して処理を行うこととなる。
【０００７】
しかしながら、デュアルロールデバイスにおいて、ホスト機能とペリフェラル機能とが同時に動作する場合、一方の機能の動作の影響により、他方の機能の高い転送パフォーマンスを保つことが困難であるという問題がある。その理由は、ホスト機能とペリフェラル機能とが共に接続先とのデータ転送を行うことにより、デュアルロールデバイスのリソースを適切に割り当てられないということが懸念されるためである。例えば、当該デュアルロールデバイスの制御を行うＣＰＵ（Central Processing Unit）が、ペリフェラル機能の制御のために処理負荷が高まった場合に、ホスト機能の転送パフォーマンスが低下してしまうことが懸念される。逆に、当該ＣＰＵがホスト機能の制御のために処理負荷が高まった場合には、ペリフェラル機能の転送パフォーマンスが低下してしまうことが懸念される。
【０００８】
尚、特許文献１乃至３では、ホスト機能とペリフェラル機能とが同時に動作する場合を想定していないため、課題が異なる。特許文献１は、転送種別がコントロール転送に限定されており、メインのデータ転送を対象としていない。また、特許文献２は、メモリ領域の効率的な使用に関するものである。さらに、特許文献３は、接続先のホスト装置側の技術である。
【課題を解決するための手段】
【０００９】
本発明の第１の態様にかかるデータ転送制御装置は、デバイス装置との間のデータ転送を処理する第１の通信部と、ホスト装置との間のデータ転送を処理する第２の通信部と、を有し、前記第１の通信部又は前記第２の通信部の一方が前記データ転送を優先すべき優先通信部であり、他方が非優先通信部であり、前記優先通信部は、当該優先通信部において前記データ転送中である場合に前記非優先通信部に対してデータ転送中であることを通知し、前記非優先通信部は、前記優先通信部から前記データ転送中であることが通知されている場合に、当該非優先通信部における前記データ転送を保留する。
【００１０】
本発明の第２の態様にかかるデータ転送制御方法は、デバイス装置との間のデータ転送を処理する第１の通信部と、ホスト装置との間のデータ転送を処理する第２の通信部とを有するデータ転送制御装置を制御するデータ転送制御方法であって、前記第１の通信部又は前記第２の通信部の一方が前記データ転送を優先すべき優先通信部であり、他方が非優先通信部であり、前記優先通信部は、当該優先通信部において前記データ転送中である場合に前記非優先通信部に対してデータ転送中であることを通知し、前記非優先通信部は、前記優先通信部から前記データ転送中であることが通知されている場合に、当該非優先通信部における前記データ転送を保留する。
【００１１】
上述した本発明の第１及び第２の態様にかかるデータ転送制御装置及びデータ転送制御方法により、優先通信部により外部の装置とデータ転送を行っている間に、非優先通信部によるデータ転送を控えることができる。それにより、優先通信部の機能におけるデータ転送処理により多くのリソースを割り当てることができる。例えば、優先通信部が上述したデュアルロールデバイスのホスト機能である場合には、ホスト機能によるデバイス装置とのデータ転送における転送パフォーマンスを高く保つことができる。一方、優先通信部が上述したデュアルロールデバイスのペリフェラル機能である場合には、ペリフェラル機能によるホスト装置とのデータ転送における転送パフォーマンスを高く保つことができる。
【発明の効果】
【００１２】
本発明により、ホスト機能とペリフェラル機能が同時に動作する時のホスト機能又はペリフェラル機能のいずれか一方の転送パフォーマンスを高く保つデータ転送制御装置及びデータ転送制御方法を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１にかかるデータ転送制御装置を含む全体構成を示すブロック図である。
【図２】本発明の実施の形態１にかかるホストコントローラの処理の流れを示すフローチャートである。
【図３】本発明の実施の形態１にかかるペリフェラルコントローラの処理の流れを示すフローチャートである。
【図４】本発明の実施の形態１にかかる転送ステータス信号とペリフェラルコントローラの応答の例を説明する図である。
【図５】本発明の実施の形態１にかかる転送ステータス信号とペリフェラルコントローラの応答の例を説明する図である。
【図６】本発明の実施の形態１にかかるホストコントローラと転送ステータス信号の出力の関係を示す図である。
【図７】本発明の実施の形態１にかかるホストコントローラと転送ステータス信号の出力の関係を示す図である。
【図８】本発明の実施の形態２にかかるデータ転送制御装置を含む全体構成を示すブロック図である。
【図９】本発明の実施の形態２にかかるホストコントローラの処理の流れを示すフローチャートである。
【図１０】本発明の実施の形態３にかかるデータ転送制御装置を含む全体構成を示すブロック図である。
【図１１】本発明の実施の形態１にかかるホストコントローラ又はペリフェラルコントローラの処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１５】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかるデータ転送制御装置１００を含む全体構成を示すブロック図である。図１には、データ転送制御装置１００と、ＵＳＢデバイス２０１、２０２及び２０３と、ＵＳＢホスト３００とを含む。データ転送制御装置１００は、ＣＰＵ１０と、ＵＳＢ規格に準拠したデュアルロールデバイスであるＵＳＢデュアルロールデバイス２０とを備える装置である。ＵＳＢデバイス２０１、２０２及び２０３は、ＵＳＢ規格に準拠したペリフェラル機器として動作するデバイス装置である。尚、デバイス装置の数は、ＵＳＢデバイス２０１、２０２及び２０３の３つに限定されず、少なくとも１つ以上であれば構わない。ＵＳＢホスト３００は、ＵＳＢ規格に準拠したホスト機器として動作するホスト装置である。
【００１６】
尚、本発明の実施の形態１におけるデータ転送とは、データ転送制御装置１００と、ＵＳＢデバイス２０１、２０２若しくは２０３又はＵＳＢホスト３００のいずれかとの間で、ＵＳＢ規格に基づく転送を指し、少なくとも１以上のＵＳＢトランザクションが実施されているものとする。
【００１７】
データ転送制御装置１００は、ホスト機能とペリフェラル機能とが同時に動作可能である。尚、ここで言うところの同時とは、完全な同時に限るものではなく、１つのＵＳＢ機器において、１つ以上のＵＳＢポートがホスト機能に使用された状態で、他のＵＳＢポートがペリフェラル機能として使用されること、あるいはその逆を言う。例えば、プリンタなどは、ホスト機能とペリフェラル機能を同時に使用する併用機器となる。その場合、プリンタが、ＰＣに接続された状態でペリフェラルとして動作し、他のポートにデジタルカメラを接続した状態でホストとして動作する。すなわち、プリンタにＰＣとデジタルカメラが同時に接続された状態では、ホスト機能とペリフェラル機能とが同時に動作する。
【００１８】
図１の具体的な利用形態の一例として次のものが挙げられる。ここでは、ＵＳＢデバイス２０１がＵＳＢメモリ、ＵＳＢホスト３００がＰＣ及びデータ転送制御装置１００がプリンタである場合について例示する。その場合、データ転送制御装置１００は、ＵＳＢデバイス２０１に格納された画像データをプリンタ機能により印刷することができる。また、データ転送制御装置１００は、ＵＳＢホスト３００からの指示によりＵＳＢホスト３００から送信された画像データを印刷することができる。または、データ転送制御装置１００は、ＵＳＢデバイス２０１に格納された画像データの印刷処理と、ＵＳＢホスト３００から送信された画像データの印刷処理とを交互に行うことができる。尚、データ転送制御装置１００、ＵＳＢデバイス２０１及びＵＳＢホスト３００の具体例は、これに限定されない。
【００１９】
ＣＰＵ１０は、データ転送制御装置１００全体の動作を制御する。例えば、ＣＰＵ１０がシステムメモリ（不図示）に格納された制御プログラムや設定値を読み出して、ＵＳＢデュアルロールデバイス２０を制御する。また、ＵＳＢデュアルロールデバイス２０は、ＵＳＢ制御回路であり、ＵＳＢデバイス２０１，２０２若しくは２０３又はＵＳＢホスト３００に対するインタフェースを提供する。これにより、他のＵＳＢ機器との接続が可能になる。
【００２０】
次に、ＵＳＢデュアルロールデバイス２０について詳述する。ＵＳＢデュアルロールデバイス２０は、ペリフェラル機能に比べてホスト機能におけるデータ転送処理を優先させるデバイスである。ＵＳＢデュアルロールデバイス２０は、ホストコントローラ２１とペリフェラルコントローラ２２と、ダウンストリームポート２４１乃至２４３と、アップストリームポート２５と、バスインタフェース２７とを備える。ＵＳＢデュアルロールデバイス２０は、例えば、ＬＳＩ（Large Scale Integration）で実現される。
【００２１】
ダウンストリームポート２４１乃至２４３は、ホスト機能専用ポートである。ダウンストリームポート２４１乃至２４３に、ＵＳＢデバイス２０１乃至２０３のいずれかがＵＳＢケーブルを介して接続されることにより、ホストコントローラ２１は、ＵＳＢデバイス２０１乃至２０３のいずれかとデータ転送を行う。尚、ダウンストリームポート２４１乃至２４３は、３つに限らず、少なくとも１つ以上であればよい。
【００２２】
ホストコントローラ２１は、ＵＳＢデバイス２０１乃至２０３のいずれかとのデータ転送を制御する。言い換えると、ホストコントローラ２１は、ＵＳＢデバイス２０１乃至２０３のいずれかとの間のデータ転送を処理する第１の通信部である。また、ホストコントローラ２１は、バスインタフェース２７を介してＣＰＵ１０と接続されている。また、ホストコントローラ２１は、ＵＳＢデバイス２０１乃至２０３のいずれかとの間でのデータ転送処理中に、当該データ転送処理中であることをペリフェラルコントローラ２２へ通知する。図１では、ホストコントローラ２１は、ホストコントローラ２１とＵＳＢデバイス２０１乃至２０３のいずれかとの間のデータ転送状態を示す転送ステータス信号（TRANSFER STATUS SIGNAL）２６をペリフェラルコントローラ２２へ出力する場合を示す。以下の説明において、転送ステータス信号２６は、当該データ転送状態がデータ転送中である場合、信号レベルがアクティブであり、当該データ転送状態がデータ転送中でない場合、信号レベルがインアクティブであるものとする。尚、データ転送状態の信号レベルはこれに限定されない。例えば、アクティブレベルは、"Ｈｉｇｈ（１）"又は"Ｌｏｗ（０）"のいずれかであっても構わない。尚、以下の説明では、アクティブレベルを"１"、インアクティブレベルを"０"として説明する。尚、転送ステータス信号２６は、ペリフェラルコントローラ２２とＵＳＢホスト３００との間のデータ転送の許否を通知するための転送許否信号と呼ぶことができる。
【００２３】
ホストコントローラ２１は、ＵＳＢデバイス２０１乃至２０３のいずれかの複数のエンドポイントのそれぞれとデータ転送を実行する複数の転送実行部であるパイプＰ１、Ｐ２、・・・、Ｐｎと、送信部（TRANSMISSION UNIT）２３とを備える。尚、パイプＰ１、Ｐ２、・・・、Ｐｎは、図示した数に限定されず、所定の上限値の範囲内である。パイプＰ１、Ｐ２、・・・、Ｐｎは、データ転送の実行に必要な情報である転送情報を保持し、保持された転送情報に基づき、ダウンストリームポート２４１乃至２４３のいずれかを介してＵＳＢデバイス２０１乃至２０３のいずれかとのデータ転送を実行することができる。ここで、転送情報には、総データ転送サイズ、最大パケットサイズ、転送方向（ＩＮ又はＯＵＴ）、転送タイプ（Control、Bulk、Interrupt、Isochronous）等を含む。尚、転送情報は、これに限定されない。尚、ＵＳＢに基づくデータ転送の仕組みは公知のものであるため、ここでは詳細な説明を省略する。
【００２４】
パイプＰ１は、出力制御レジスタＣ１及びステータスレジスタＳ１を備え、パイプＰ２は、出力制御レジスタＣ２及びステータスレジスタＳ２を備える。尚、以降、パイプＰ３（不図示）、・・・、パイプＰｎまでの内部構成については、パイプＰ１及びＰ２と同等であるため、図示及び説明は、省略する。ステータスレジスタＳ１又はＳ２には、それぞれパイプＰ１又はＰ２がデータ転送を行っているか否かを示す転送ステータス信号が保持される。例えば、パイプＰ１が、転送情報に基づき前記複数のエンドポイントのいずれかとのデータ転送を開始した場合に、ステータスレジスタＳ１には、一例である"１"が格納される。出力制御レジスタＣ１又はＣ２は、それぞれパイプＰ１又はＰ２の転送ステータス信号を送信部２３に出力するかしないかを制御するためのフラグ情報を格納する。例えば、出力制御レジスタＣ１に格納されたフラグ情報が"１"の場合は、ステータスレジスタＳ１が保持している値をそのまま送信部２３へ出力する。また、出力制御レジスタＣ１に格納されたフラグ情報が"０"の場合は、ステータスレジスタＳ１の値に係わらず常にインアクティブレベルの一例である"０"を出力する。尚、出力制御レジスタＣ１又はＣ２に格納されるフラグ情報は、外部から任意のタイミングで変更可能である。
【００２５】
そして、パイプＰ１は、出力制御レジスタＣ１及びステータスレジスタＳ１に格納された値の論理積を取り、送信部２３へ出力する。同様に、パイプＰ２は、出力制御レジスタＣ２及びステータスレジスタＳ２に格納された値の論理積を取り、送信部２３へ出力する。
【００２６】
送信部２３は、パイプＰ１、Ｐ２、・・・、Ｐｎから出力された転送ステータス信号を１本にまとめて、アクティブレベル又はインアクティブレベルの転送ステータス信号２６としてペリフェラルコントローラ２２へ出力する。送信部２３は、パイプＰ１、Ｐ２、・・・、Ｐｎから出力された転送ステータス信号の論理和を取り、論理和の結果が"１"である場合に、転送ステータス信号２６を"１"としてペリフェラルコントローラ２２へ出力する。また、送信部２３は、パイプＰ１、Ｐ２、・・・、Ｐｎから出力された転送ステータス信号の論理和を取り、論理和の結果が"０"である場合に、転送ステータス信号２６を"０"としてペリフェラルコントローラ２２へ出力する。
【００２７】
また、ホストコントローラ２１は、パイプＰ１、Ｐ２、・・・、ＰｎのいずれかにおいてＵＳＢデバイス２０１乃至２０３のいずれかとの間でデータ転送が開始されたときから、ＵＳＢデバイス２０１乃至２０３のいずれかとの間でデータ転送中である全てのパイプＰ１、Ｐ２、・・・、Ｐｎにおいて当該データ転送が終了するまで、転送ステータス信号２６をアクティブにしてペリフェラルコントローラ２２に対して送信する。これにより、ペリフェラルコントローラ２２に対して、ホストコントローラ２１のデータ転送状態を効率的に伝えることができる。
【００２８】
尚、送信部２３は、必ずしもパイプＰ１、Ｐ２、・・・、Ｐｎから出力される転送ステータス信号を１本にまとめて、転送ステータス信号２６としてペリフェラルコントローラ２２へ出力する必要はない。例えば、送信部２３は、パイプＰ１、Ｐ２、・・・、Ｐｎから出力される転送ステータス信号を都度、ペリフェラルコントローラ２２へ出力し、ペリフェラルコントローラ２２は、転送ステータス信号のいずれかを受け付けた場合に、ホストコントローラ２１がＵＳＢデバイス２００とデータ転送中であると認識してもよい。
【００２９】
また、上述した出力制御レジスタＣ１及びＣ２は、ＵＳＢデバイス２０１乃至２０３のいずれかとの間でデータ転送中であることをペリフェラルコントローラ２２へ通知するか否かを決定する通知決定部により実現しても構わない。その場合、ホストコントローラ２１は、ＵＳＢデバイス２０１乃至２０３のいずれかとの間でデータ転送中であるパイプＰ１、Ｐ２、・・・、Ｐｎのいずれかの内、通知決定部によりペリフェラルコントローラ２２へ通知すると決定されたパイプが存在する場合に、転送ステータス信号２６をアクティブにしてペリフェラルコントローラ２２に対して送信する。これにより、複数のパイプをパイプの重要度や負荷状況に応じて部分的な制御を行うことができる。例えば、特定のパイプにおけるデータ転送について、ホスト機能とペリフェラル機能とが同時に動作することを許容できる場合に、不必要にペリフェラルコントローラ２２のデータ転送を遅らせることがなくなり、データ転送を効率的に行うことができる。
【００３０】
さらに、ホストコントローラ２１は、転送ステータス信号２６をアクティブにしたペリフェラルコントローラ２２に対する送信が所定時間以上継続した場合に、転送ステータス信号２６をインアクティブにしてペリフェラルコントローラ２２に対して送信するようにしてもよい。または、送信部２３において、転送ステータス信号２６の出力を制御しても構わない。
【００３１】
これにより、所定時間連続してホストコントローラ２１のデータ転送を優先することにより、ペリフェラルコントローラ２２の処理への影響、つまり、データ転送遅延が大きすぎる場合に、ホスト機能とペリフェラル機能とが同時に動作することを許容することができる。また、ペリフェラルコントローラ２２の処理抑止を緩和し、転送効率を上げることができる場合がある。そのため、不必要にペリフェラルコントローラ２２のデータ転送を遅らせることがなくなり、データ転送を効率的に行うことができる。
【００３２】
アップストリームポート２５は、ペリフェラル機能専用ポートである。アップストリームポート２５に、ＵＳＢホスト３００がＵＳＢケーブルを介して接続されることにより、ペリフェラルコントローラ２２は、ＵＳＢホスト３００とペリフェラルコントローラ２２とのデータ転送を行う。
【００３３】
ペリフェラルコントローラ２２は、ＵＳＢホスト３００とのデータ転送を行う。言い換えると、ペリフェラルコントローラ２２は、ＵＳＢホスト３００との間のデータ転送を処理する第２の通信部である。また、ペリフェラルコントローラ２２は、バスインタフェース２７を介してＣＰＵ１０と接続されている。
【００３４】
ペリフェラルコントローラ２２は、ホストコントローラ２１から当該ホストコントローラ２１がＵＳＢデバイス２０１乃至２０３のいずれかとの間でデータ転送中であることが通知されている場合に、ＵＳＢホスト３００からのデータ転送開始要求に対して、ＵＳＢホスト３００へデータ転送が行えないことを示す転送不可応答を送信する。これにより、ホスト機能とペリフェラル機能とが同時に動作する時に、ペリフェラルコントローラ２２側の処理を抑え、ホストコントローラ２１側の高い転送パフォーマンスを維持できる。
【００３５】
ペリフェラルコントローラ２２は、複数のエンドポイントＥ１、Ｅ２、・・・、Ｅｍを備える。尚、エンドポイントＥ１、Ｅ２、・・・、Ｅｍは、図示した数に限定されず、所定の上限値の範囲内である。エンドポイントＥ１、Ｅ２、・・・、Ｅｍのいずれかは、アップストリームポート２５を介してＵＳＢホスト３００とのデータ転送を実行することができる。また、本発明の実施の形態１におけるデータ転送は、ＵＳＢ規格に基づく転送であり、ペリフェラルコントローラ２２は、バルク転送又はインタラプト転送において、ＵＳＢホスト３００からＩＮ、ＯＵＴ又はＰＩＮＧトークンを受信した場合に、ＮＡＫ（Negative AcKnowledgement）応答を返信する。尚、ＮＡＫ応答は、上記転送不可応答の一例である。
【００３６】
また、ペリフェラルコントローラ２２は、ＵＳＢホスト３００とのデータ転送中に、例えば、ＵＳＢトランザクション中に、ＵＳＢデバイス２０１乃至２０３のいずれかとホストコントローラ２１との間のデータ転送が開始された場合、現在のデータ転送が完了した以後のＵＳＢホスト３００からのデータ転送開始要求に対して、転送不可応答を送信する。これにより、必要最小限のデータ転送を維持しつつ、不必要にデータ転送を中断することを防ぎ、データ転送処理の効率を上げることができる。
【００３７】
また、ペリフェラルコントローラ２２は、ホストコントローラ２１からの転送ステータス信号２６に応じて、ＵＳＢホスト３００からのデータ転送開始要求に対して転送不可応答を送信するデータ転送不可モードになると言える。
【００３８】
さらに、ペリフェラルコントローラ２２は、ホストコントローラ２１からの転送ステータス信号２６がアクティブであった場合に、前記データ転送不可モードとなる。また、ペリフェラルコントローラ２２は、ホストコントローラ２１からの転送ステータス信号２６がインアクティブであった場合に、前記データ転送不可モード以外のモードとなる。
【００３９】
また、上述したように本発明の実施の形態１にかかるデータ転送制御装置１００では、転送ステータス信号２６により、ペリフェラル機能とＣＰＵとのアクセス処理を抑えることができ、ＣＰＵの全体的な負荷を抑えることができる。
【００４０】
図２は、本発明の実施の形態１にかかるホストコントローラ２１の処理の流れを示すフローチャートである。尚、この例においては、出力制御レジスタＣ１及びＣ２には、予め"１"が格納済みとする。
【００４１】
まず、ホストコントローラ２１は、データ転送中か否かを判定する（Ｓ１１）。例えば、送信部２３は、パイプＰ１、Ｐ２、・・・、Ｐｎから出力された転送ステータス信号の論理和を取り、論理和の結果が"１"であるか否かを判定する。
【００４２】
ステップＳ１１において、論理和の結果が"１"となった場合、送信部２３は、アクティブレベルの転送ステータス信号をペリフェラルコントローラ２２へ出力する（Ｓ１２）。例えば、ホストコントローラ２１とＵＳＢデバイス２０１とのデータ転送を開始した場合、ステータスレジスタＳ１に"１"が格納されており、出力制御レジスタＣ１には予め"１"が格納されているため、パイプＰ１は、送信部２３へ"１"を出力する。この場合、パイプＰ２、・・・、Ｐｎからの出力結果に係わらず、論理和の結果は"１"となる。このとき、送信部２３は、転送ステータス信号を"１"としてペリフェラルコントローラ２２へ出力する。
【００４３】
また、ステップＳ１１において、論理和の結果が"０"となった場合、送信部２３は、インアクティブレベルの転送ステータス信号をペリフェラルコントローラ２２へ出力する（Ｓ１３）。例えば、ホストコントローラ２１とＵＳＢデバイス２０１乃至２０３の全てとのデータ転送が行われていない場合、パイプＰ２、・・・、Ｐｎから送信部２３への出力結果は、いずれも"０"となり、論理和の結果が"０"となる。このとき、送信部２３は、転送ステータス信号を"０"としてペリフェラルコントローラ２２へ出力する。
【００４４】
図３は、本発明の実施の形態１にかかるペリフェラルコントローラ２２の処理の流れを示すフローチャートである。まず、ペリフェラルコントローラ２２は、ＵＳＢホスト３００からデータ転送の開始要求を受信する（Ｓ２１）。例えば、ペリフェラルコントローラ２２のエンドポイントＥ１は、ＵＳＢホスト３００からのコントロール転送、バルク転送、インタラプト転送又はアイソクロナス転送における開始要求であるトークンを受信する。
【００４５】
次に、ペリフェラルコントローラ２２は、受信した開始要求が所定の転送タイプであるか否かを判定する（Ｓ２２）。ここでは、ペリフェラルコントローラ２２は、転送タイプがバルク転送又はインタラプト転送のいずれかであるかを判定する。転送タイプがバルク転送又はインタラプト転送のいずれかでない場合、すなわち、転送タイプがコントロール転送又はアイソクロナス転送である場合、ペリフェラルコントローラ２２は、転送ステータス信号２６の信号レベルにかかわらず、ＵＳＢホスト３００に対して、ＵＳＢ規格に則った応答を行う（Ｓ２５）。例えば、ペリフェラルコントローラ２２は、内部バッファの状態やソフトウェアの制御内容に応じて応答する。
【００４６】
ステップＳ２２において、転送タイプがバルク転送又はインタラプト転送のいずれかであると判定した場合、ペリフェラルコントローラ２２は、当該開始要求が所定のトークンであるか否かを判定する（Ｓ２３）。ここでは、ペリフェラルコントローラ２２は、開始要求がＩＮ、ＯＵＴ又はＰＩＮＧトークンのいずれかであるかを判定する。開始要求がＩＮ、ＯＵＴ又はＰＩＮＧトークン以外であると判定した場合、ステップＳ２５へ進む。
【００４７】
ステップＳ２３において、開始要求がＩＮ、ＯＵＴ又はＰＩＮＧトークンのいずれかであると判定した場合、ペリフェラルコントローラ２２は、転送ステータス信号２６がアクティブであるか否かを判定する（Ｓ２４）。ここでは、ペリフェラルコントローラ２２は、ホストコントローラ２１から受け付けた転送ステータス信号２６が"１"であるか否かを判定する。転送ステータス信号２６がアクティブでないと判定した場合、ステップＳ２５へ進む。
【００４８】
ステップＳ２４において、転送ステータス信号２６がアクティブであると判定した場合、ペリフェラルコントローラ２２は、ＵＳＢホスト３００へＮＡＫ応答する（Ｓ２６）。これにより、ＵＳＢホスト３００とペリフェラルコントローラ２２との間のデータ転送は、一時保留される。
【００４９】
図４は、本発明の実施の形態１にかかる転送ステータス信号とペリフェラルコントローラの応答の例を説明する図である。
【００５０】
図４では、まず、時刻Ｔ４１からＴ４２の間において、転送ステータス信号２６がアクティブとなる。すなわち、時刻Ｔ４１において、ホストコントローラ２１は、ペリフェラルコントローラ２２へアクティブレベルの転送ステータス信号２６を出力する。また、時刻Ｔ４１以前及び時刻Ｔ４２以降において、ホストコントローラ２１は、ペリフェラルコントローラ２２へインアクティブレベルの転送ステータス信号２６を出力する。
【００５１】
そして、時刻Ｔ４１からＴ４２の間において、ＵＳＢホスト３００は、ペリフェラルコントローラ２２へＰＩＮＧトークン４１を送信する。このとき、ペリフェラルコントローラ２２は、転送ステータス信号２６がアクティブであるため、ＵＳＢホスト３００へＮＡＫ応答４２を送信する。同様に、ＵＳＢホスト３００からのＰＩＮＧトークン４３に対して、ペリフェラルコントローラ２２は、ＮＡＫ応答４４を送信する。
【００５２】
一方、時刻Ｔ４２以降に、ＵＳＢホスト３００がペリフェラルコントローラ２２に対してＰＩＮＧトークン４５を送信した場合、ペリフェラルコントローラ２２は、転送ステータス信号２６がインアクティブであるため、ＡＣＫ応答４６を送信する。これにより、ペリフェラルコントローラ２２とＵＳＢホスト３００との間のＵＳＢトランザクションが開始される。以後、ＵＳＢホスト３００は、ペリフェラルコントローラ２２へＯＵＴトークン４７及びＤＡＴＡ４８を送信する。そして、ペリフェラルコントローラ２２は、ＵＳＢホスト３００へＡＣＫ応答４９を送信する。
【００５３】
尚、上述した例では、説明の都合上、ペリフェラルコントローラ２２は、ＰＩＮＧトークン４５及びＤＡＴＡ４８に対して、ＡＣＫ応答４６及びＡＣＫ応答４９を送信することとしたが、これに限定されない。つまり、ペリフェラルコントローラ２２は、少なくとも時刻Ｔ４２以降、転送の準備ができているものとする。
【００５４】
図５は、本発明の実施の形態１にかかる転送ステータス信号とペリフェラルコントローラの応答の例を説明する図である。
【００５５】
図５では、時刻０から時刻Ｔ５１の間において、転送ステータス信号２６がアクティブでなく、時刻Ｔ５１以降、転送ステータス信号２６がアクティブとなる。
【００５６】
まず、時刻０から時刻Ｔ５１の間において、ＵＳＢホスト３００がペリフェラルコントローラ２２に対してＰＩＮＧトークン５１を送信した場合、ペリフェラルコントローラ２２は、転送ステータス信号２６がアクティブでないため、ＡＣＫ応答５２を送信する。続いて、ＵＳＢホスト３００は、ペリフェラルコントローラ２２へＯＵＴトークン５３を送信する。このようにして、時刻Ｔ５１以前にＵＳＢトランザクションが開始される。次に、時刻Ｔ５１以後に、ＵＳＢホスト３００がペリフェラルコントローラ２２に対してＤＡＴＡ５４を送信した場合、ペリフェラルコントローラ２２は、転送ステータス信号２６がアクティブであるが、ＵＳＢトランザクションが実施中であるため、ＡＣＫ応答５５を送信する。
【００５７】
そして、時刻Ｔ５２において、ペリフェラルコントローラ２２とＵＳＢホスト３００との間のＵＳＢトランザクションが終了する。ここで、時刻Ｔ５２以後に、ＵＳＢホスト３００がペリフェラルコントローラ２２に対してＰＩＮＧトークン５６を送信した場合、ペリフェラルコントローラ２２は、転送ステータス信号２６がアクティブであるため、ＮＡＫ応答５７を送信する。同様に、ＵＳＢホスト３００がペリフェラルコントローラ２２に対してＰＩＮＧトークン５８を送信した場合、ペリフェラルコントローラ２２は、ＮＡＫ応答５９を送信する。
【００５８】
尚、上述した例では、説明の都合上、ペリフェラルコントローラ２２は、ＰＩＮＧトークン５１及びＤＡＴＡ５４に対して、ＡＣＫ応答５２及びＡＣＫ応答５５を送信することとしたが、これに限定されない。つまり、ペリフェラルコントローラ２２は、少なくとも時刻Ｔ５２以前、正常に転送が行える状況であるものとする。
【００５９】
図６は、本発明の実施の形態１にかかるホストコントローラと転送ステータス信号の出力の関係の例を示す図である。まず、図６では、時刻０において、パイプＰ１の出力制御レジスタＣ１及びパイプＰ２の出力制御レジスタＣ２には、"１"が格納済みである。そして、時刻Ｔ６１において、パイプＰ１がＵＳＢデバイス２０１乃至２０３のいずれかとの間のデータ転送を開始することにより、ステータスレジスタＳ１に"１"が格納される。これに伴い、時刻Ｔ６１において、ホストコントローラ２１は、ペリフェラルコントローラ２２へ転送ステータス信号２６を"１"として出力する。
【００６０】
次に、時刻Ｔ６２において、パイプＰ２がＵＳＢデバイス２０１乃至２０３のいずれかとの間のデータ転送を開始することにより、ステータスレジスタＳ２に"１"が格納される。これに伴い、時刻Ｔ６２において、ホストコントローラ２１は、ペリフェラルコントローラ２２へ転送ステータス信号２６を"１"として出力する。
【００６１】
次に、時刻Ｔ６３において、パイプＰ１がデータ転送を終了することにより、ステータスレジスタＳ１に"０"が格納される。しかし、時刻Ｔ６３において、出力制御レジスタＣ２及びステータスレジスタＳ２に格納された値が共に"１"であるため、ホストコントローラ２１は、ペリフェラルコントローラ２２へ転送ステータス信号２６である"１"の出力を維持する。
【００６２】
そして、時刻Ｔ６４において、パイプＰ２がデータ転送を終了することにより、ステータスレジスタＳ２に"０"が格納される。これに伴い、時刻Ｔ６４において、ホストコントローラ２１は、ペリフェラルコントローラ２２へ転送ステータス信号２６を"０"として出力する。
【００６３】
図７は、本発明の実施の形態１にかかるホストコントローラと転送ステータス信号の出力の関係の他の例を示す図である。まず、図７では、時刻０において、パイプＰ１の出力制御レジスタＣ１には、"０"が格納済みであり、パイプＰ２の出力制御レジスタＣ２には、"１"が格納済みである。そして、時刻Ｔ７１において、パイプＰ１がＵＳＢデバイス２０１乃至２０３のいずれかとの間のデータ転送を開始することにより、ステータスレジスタＳ１に"１"が格納される。しかし、時刻Ｔ７１において、出力制御レジスタＣ１に格納されたが"０"であるため、パイプＰ１から転送ステータス信号が"０"として出力され、ホストコントローラ２１は、ペリフェラルコントローラ２２へ転送ステータス信号２６を"０"として出力する。
【００６４】
次に、時刻Ｔ７２において、パイプＰ２がＵＳＢデバイス２０１乃至２０３のいずれかとの間のデータ転送を開始することにより、ステータスレジスタＳ２に"１"が格納される。これに伴い、時刻Ｔ７２において、ホストコントローラ２１は、ペリフェラルコントローラ２２へ転送ステータス信号２６を"１"として出力する。
【００６５】
続いて、時刻Ｔ７３において、パイプＰ１がデータ転送を終了することにより、ステータスレジスタＳ１に"０"が格納される。しかし、時刻Ｔ７３において、出力制御レジスタＣ１に格納されたが"０"であるが、出力制御レジスタＣ２及びステータスレジスタＳ２に格納された値が共に"１"であるため、ホストコントローラ２１は、ペリフェラルコントローラ２２へ転送ステータス信号２６である"１"の出力を維持する。
【００６６】
そして、時刻Ｔ７４において、パイプＰ２がデータ転送を終了することにより、ステータスレジスタＳ２に"０"が格納される。これに伴い、時刻Ｔ７４において、ホストコントローラ２１は、ペリフェラルコントローラ２２へ転送ステータス信号２６を"０"として出力する。
【００６７】
このように、本発明の実施の形態１により、例えば、上述したデュアルロールデバイスがホスト機能によりデバイス装置とデータ転送を行っている間に、ペリフェラル機能によるホスト装置とのデータ転送を控えることができる。それにより、ホスト機能におけるデータ転送処理により多くのリソースを割り当てることができる。そのため、ホスト機能とペリフェラル機能が同時に動作する時にホスト機能の転送パフォーマンスを高く保つデータ転送制御装置及びデータ転送制御方法を提供することができる。
【００６８】
＜発明の実施の形態２＞
上述した発明の実施の形態１では、ホスト機能の転送パフォーマンスの向上を目的としていたが、本発明の実施の形態２では、ペリフェラル機能の転送パフォーマンスがホスト機能よりも重視される場合を対象とする。図８は、本発明の実施の形態２にかかるデータ転送制御装置１００ａを含む全体構成を示すブロック図である。図８では、図１と同等の機能を有する構成については、同一の符号を付し、以下では、詳細な説明を省略する。また、以下では、本発明の実施の形態１との違いを中心に説明する。
【００６９】
データ転送制御装置１００ａは、データ転送制御装置１００との違いとして、ＵＳＢデュアルロールデバイス２０の代わりに、ＵＳＢ規格に準拠したデュアルロールデバイスであるＵＳＢデュアルロールデバイス２０ａを備える装置である。ＵＳＢデュアルロールデバイス２０ａは、ＵＳＢデュアルロールデバイス２０とは異なり、ホスト機能に比べてペリフェラル機能におけるデータ転送処理を優先させるデバイスである。ＵＳＢデュアルロールデバイス２０ａは、ＵＳＢデュアルロールデバイス２０との違いとして、ホストコントローラ２１及びペリフェラルコントローラ２２の代わりに、ホストコントローラ２１ａ及びペリフェラルコントローラ２２ａを備える。
【００７０】
ペリフェラルコントローラ２２ａは、ＵＳＢホスト３００との間のデータ転送処理中に、当該データ転送処理中であることをホストコントローラ２１ａへ通知する。図８では、ペリフェラルコントローラ２２ａは、ペリフェラルコントローラ２２ａとＵＳＢホスト３００との間のデータ転送状態を示す転送ステータス信号２６ａをホストコントローラ２１ａへ出力する場合を示す。尚、転送ステータス信号２６ａは、上述した転送ステータス信号２６と同等の信号であっても構わない。尚、転送ステータス信号２６ａは、ホストコントローラ２１ａとＵＳＢデバイス２０１乃至２０３のいずれかとの間のデータ転送の保留の要求を通知する転送保留要求信号と呼ぶことができる。
【００７１】
ペリフェラルコントローラ２２ａは、ＵＳＢホスト３００の複数のパイプのそれぞれとデータ転送を実行する複数のエンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａと、送信部２３ａとを備える。尚、エンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａは、図示した数に限定されず、所定の上限値の範囲内である。エンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａのいずれかは、アップストリームポート２５を介してＵＳＢホスト３００とのデータ転送を実行することができる。
【００７２】
エンドポイントＥ１ａは、出力制御レジスタＣ１ａ及びステータスレジスタＳ１ａを備え、エンドポイントＥ２ａは、出力制御レジスタＣ２ａ及びステータスレジスタＳ２ａを備える。尚、以降、エンドポイントＥ３ａ（不図示）、・・・、エンドポイントＥｍａまでの内部構成については、エンドポイントＥ１ａ及びＥ２ａと同等であるため、図示及び説明は、省略する。ステータスレジスタＳ１ａ又はＳ２ａには、それぞれエンドポイントＥ１ａ又はＥ２ａがデータ転送を行っているか否かを示す転送ステータス信号が保持される。例えば、エンドポイントＥ１ａが、ＵＳＢホスト３００からのデータ転送要求に応じて前記複数のパイプのいずれかとのデータ転送を開始した場合に、ステータスレジスタＳ１ａには、一例である"１"が格納される。出力制御レジスタＣ１ａ又はＣ２ａは、それぞれエンドポイントＥ１ａ又はＥ２ａの転送ステータス信号を送信部２３ａに出力するかしないかを制御するためのフラグ情報を格納する。例えば、出力制御レジスタＣ１ａに格納されたフラグ情報が"１"の場合は、ステータスレジスタＳ１ａが保持している値をそのまま送信部２３ａへ出力する。また、出力制御レジスタＣ１ａに格納されたフラグ情報が"０"の場合は、ステータスレジスタＳ１ａの値に係わらず常にインアクティブレベルの一例である"０"を出力する。尚、出力制御レジスタＣ１ａ又はＣ２ａに格納されるフラグ情報は、外部から任意のタイミングで変更可能である。
【００７３】
そして、エンドポイントＥ１ａは、出力制御レジスタＣ１ａ及びステータスレジスタＳ１ａに格納された値の論理積を取り、送信部２３ａへ出力する。同様に、エンドポイントＥ２ａは、出力制御レジスタＣ２ａ及びステータスレジスタＳ２ａに格納された値の論理積を取り、送信部２３ａへ出力する。
【００７４】
送信部２３ａは、エンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａから出力された転送ステータス信号を１本にまとめて、アクティブレベル又はインアクティブレベルの転送ステータス信号２６ａとしてホストコントローラ２１ａへ出力する。送信部２３ａは、エンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａから出力された転送ステータス信号の論理和を取り、論理和の結果が"１"である場合に、転送ステータス信号２６ａを"１"としてホストコントローラ２１ａへ出力する。また、送信部２３ａは、エンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａから出力された転送ステータス信号の論理和を取り、論理和の結果が"０"である場合に、転送ステータス信号２６ａを"０"としてホストコントローラ２１ａへ出力する。
【００７５】
尚、ステータスレジスタＳ１ａ又はＳ２ａに格納されたフラグは、ペリフェラルコントローラ２２ａがＵＳＢホスト３００にハンドシェイクパケットを送信するまで保持される。同様に、送信部２３ａは、ペリフェラルコントローラ２２ａがＵＳＢホスト３００にハンドシェイクパケットを送信するまで転送ステータス信号２６ａの出力を保持する。
【００７６】
また、ペリフェラルコントローラ２２ａは、エンドポイントＥ１ａ、Ｅ２ａ、・・・、ＥｍａのいずれかにおいてＵＳＢホスト３００との間でデータ転送が開始されたときから、ＵＳＢホスト３００との間でデータ転送中である全てのエンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａにおいて当該データ転送が終了するまで、転送ステータス信号２６ａをアクティブにしてホストコントローラ２１ａに対して送信する。これにより、ホストコントローラ２１ａに対して、ペリフェラルコントローラ２２ａのデータ転送状態を効率的に伝えることができる。
【００７７】
尚、送信部２３ａは、必ずしもエンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａから出力される転送ステータス信号を１本にまとめて、転送ステータス信号２６ａとしてホストコントローラ２１ａへ出力する必要はない。例えば、送信部２３ａは、エンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａから出力される転送ステータス信号を都度、ホストコントローラ２１ａへ出力し、ホストコントローラ２１ａは、転送ステータス信号のいずれかを受け付けた場合に、ペリフェラルコントローラ２２ａがＵＳＢホスト３００とデータ転送中であると認識してもよい。
【００７８】
また、上述した出力制御レジスタＣ１ａ及びＣ２ａは、ＵＳＢホスト３００との間でデータ転送中であることをホストコントローラ２１ａへ通知するか否かを決定する通知決定部により実現しても構わない。その場合、ペリフェラルコントローラ２２ａは、ＵＳＢホスト３００との間でデータ転送中であるエンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａのいずれかの内、通知決定部によりホストコントローラ２１ａへ通知すると決定されたエンドポイントが存在する場合に、転送ステータス信号２６ａをアクティブにしてホストコントローラ２１ａに対して送信する。これにより、複数のエンドポイントをエンドポイントの重要度や負荷状況に応じて部分的な制御を行うことができる。例えば、特定のエンドポイントにおけるデータ転送について、ホスト機能とペリフェラル機能とが同時に動作することを許容できる場合に、不必要にホストコントローラ２１ａのデータ転送を遅らせることがなくなり、データ転送を効率的に行うことができる。
【００７９】
さらに、ペリフェラルコントローラ２２ａは、転送ステータス信号２６ａをアクティブにしたホストコントローラ２１ａに対する送信が所定時間以上継続した場合に、転送ステータス信号２６ａをインアクティブにしてホストコントローラ２１ａに対して送信するようにしてもよい。または、送信部２３ａにおいて、転送ステータス信号２６ａの出力を制御しても構わない。
【００８０】
これにより、所定時間連続してペリフェラルコントローラ２２ａのデータ転送を優先することにより、ホストコントローラ２１ａの処理への影響、つまり、データ転送遅延が大きすぎる場合に、ホスト機能とペリフェラル機能とが同時に動作することを許容することができる。また、ホストコントローラ２１ａの処理抑止を緩和し、転送効率を上げることができる場合がある。そのため、不必要にペホストコントローラ２１ａのデータ転送を遅らせることがなくなり、データ転送を効率的に行うことができる。
【００８１】
ホストコントローラ２１ａは、ペリフェラルコントローラ２２ａがＵＳＢホスト３００との間でデータ転送中であることがペリフェラルコントローラ２２ａから通知されている場合に、ＵＳＢデバイス２０１乃至２０３に対するデータ転送開始要求の送信を保留する。そして、ホストコントローラ２１ａは、ペリフェラルコントローラ２２ａがＵＳＢホスト３００との間のデータ転送が完了した後に、ＵＳＢデバイス２０１乃至２０３のいずれかに対して当該保留したデータ転送開始要求を送信する。これにより、ホスト機能とペリフェラル機能とが同時に動作する時に、ホストコントローラ２１ａ側の処理を抑え、ペリフェラルコントローラ２２ａ側の高い転送パフォーマンスを維持できる。尚、ホストコントローラ２１ａは、ホストコントローラ２１とは異なり、転送ステータス信号２６をペリフェラルコントローラ２２ａへ出力しないものとする。
【００８２】
ホストコントローラ２１ａは、複数のパイプＰ１ａ、Ｐ２ａ、・・・、Ｐｎａを備える。尚、パイプＰ１ａ、Ｐ２ａ、・・・、Ｐｎａは、図示した数に限定されず、所定の上限値の範囲内である。パイプＰ１ａ、Ｐ２ａ、・・・、Ｐｎａは、データ転送の実行に必要な情報である転送情報を保持し、保持された転送情報に基づき、ダウンストリームポート２４１乃至２４３のいずれかを介してＵＳＢデバイス２０１乃至２０３のいずれかとのデータ転送を実行することができる。また、本発明の実施の形態２におけるデータ転送は、ＵＳＢ規格に基づく転送であり、ホストコントローラ２１ａは、バルク転送又はコントロール転送において、データ転送開始要求の送信を保留する。インタラプト及びアイソクロナス転送を行うパイプについては、周期性を維持するため、アクティブな転送ステータス信号２６ａがホストコントローラ２１ａに入力されても、ホストコントローラ２１ａは、現在のトランザクションに限らず、それ以降のトランザクションも実行する。
【００８３】
また、ホストコントローラ２１ａは、ＵＳＢデバイス２０１乃至２０３のいずれかとのデータ転送中に、例えば、ＵＳＢトランザクション中に、ＵＳＢホスト３００とペリフェラルコントローラ２２ａとの間のデータ転送が開始された場合、現在のデータ転送が完了した以後のＵＳＢデバイス２０１乃至２０３に対するデータ転送開始要求の送信を保留する。これにより、必要最小限のデータ転送を維持しつつ、不必要にデータ転送を中断することを防ぎ、データ転送処理の効率を上げることができる。
【００８４】
また、ホストコントローラ２１ａは、ペリフェラルコントローラ２２ａからの転送ステータス信号２６ａに応じて、ＵＳＢデバイス２０１乃至２０３に対するデータ転送開始要求の送信を保留するデータ転送保留モードになると言える。
【００８５】
さらに、ホストコントローラ２１ａは、ペリフェラルコントローラ２２ａからの転送ステータス信号２６ａがアクティブであった場合に、前記データ転送保留モードとなる。また、ホストコントローラ２１ａは、ペリフェラルコントローラ２２ａからの転送ステータス信号２６ａがインアクティブであった場合に、前記データ転送保留モード以外のモードとなる。
【００８６】
つまり、ホストコントローラ２１ａは、アクティブな転送ステータス信号２６ａを認識すると、ホストコントローラ２１ａがＵＳＢデバイス２０１乃至２０３のいずれかと通信中であれば、現在のトランザクションが完了した後に次のトランザクションからＵＳＢデバイス２０１乃至２０３のいずれかとの通信を中断する。そして、ホストコントローラ２１ａは、転送ステータス信号２６ａがインアクティブとなったことを認識すると、つまり、転送保留モードが解除されると、中断していたデータ転送を開始する。
【００８７】
また、上述したように本発明の実施の形態２にかかるデータ転送制御装置１００ａでは、転送ステータス信号２６ａにより、ホスト機能とＣＰＵとのアクセス処理を抑えることができ、ＣＰＵの全体的な負荷を抑えることができる。すなわち、本発明の実施の形態２により、ホスト機能とペリフェラル機能が同時に動作するシステムにおいて、ホスト機能よりもペリフェラル機能の転送パフォーマンスが重視される場合、ペリフェラル機能の動作中にホスト機能の動作を停止することにより、ペリフェラル機能の転送パフォーマンスの低下を防ぐことができる。
【００８８】
尚、本発明の実施の形態２にかかるペリフェラルコントローラ２２ａにおける転送ステータス信号２６ａを出力するか否かの処理の流れは、図２の説明においてホストコントローラ２１をペリフェラルコントローラ２２ａに置き換えることで同等となるため、図示及び説明を省略する。
【００８９】
図９は、本発明の実施の形態２にかかるホストコントローラ２１ａの処理の流れを示すフローチャートである。まず、ホストコントローラ２１ａは、外部からＵＳＢデバイス２０１乃至ＵＳＢデバイス２０３のいずれかとのデータ転送の開始指示を受け付ける（Ｓ３１）。例えば、ユーザからデータ転送制御装置１００ａに対する操作により、ホストコントローラ２１ａは、データ転送の開始指示を受け付ける。
【００９０】
次に、ホストコントローラ２１ａは、受け付けた開始指示が所定の転送タイプであるか否かを判定する（Ｓ３２）。ここでは、ホストコントローラ２１ａは、転送タイプがバルク転送又はコントロール転送のいずれかであるかを判定する。転送タイプがバルク転送又はコントロール転送のいずれかでない場合、すなわち、転送タイプがインタラプト転送又はアイソクロナス転送である場合、ホストコントローラ２１ａは、転送ステータス信号２６ａの信号レベルにかかわらず、ＵＳＢデバイス２０１乃至２０３のいずれかに対して、ＵＳＢ規格に則り、データ転送開始要求を送信する（Ｓ３５）。例えば、ホストコントローラ２１ａは、内部バッファの状態やソフトウェアの制御内容に応じて、通常の動作を行う。
【００９１】
ステップＳ３２において、転送タイプがバルク転送又はコントロール転送のいずれかであると判定した場合、ホストコントローラ２１ａは、転送ステータス信号２６ａがアクティブであるか否かを判定する（Ｓ３３）。ここでは、ホストコントローラ２１ａは、ペリフェラルコントローラ２２ａから受け付けた転送ステータス信号２６ａが"１"であるか否かを判定する。
【００９２】
ステップＳ３３において、転送ステータス信号２６ａがアクティブであると判定した場合、ホストコントローラ２１ａは、ＵＳＢデバイス２０１乃至２０３に対するデータ転送開始要求を保留する（Ｓ３４）。これにより、ＵＳＢデバイス２０１乃至２０３とホストコントローラ２１ａとの間のデータ転送は、一時保留される。
【００９３】
ステップＳ３３において、転送ステータス信号２６ａがアクティブでないと判定した場合、ステップＳ３５へ進む。このとき、ステップＳ３４において保留したデータ転送開始要求が存在する場合、ホストコントローラ２１ａは、当該保留したデータ転送開始要求をＵＳＢデバイス２０１乃至２０３のいずれかに対して送信する。これにより、データ転送を開始することができる。
【００９４】
このように、本発明の実施の形態２により、例えば、上述したデュアルロールデバイスがペリフェラル機能によりホスト装置とデータ転送を行っている間に、ホスト機能によるデバイス装置とのデータ転送を控えることができる。それにより、ペリフェラル機能におけるデータ転送処理により多くのリソースを割り当てることができる。そのため、ホスト機能とペリフェラル機能が同時に動作する時にペリフェラル機能の転送パフォーマンスを高く保つデータ転送制御装置及びデータ転送制御方法を提供することができる。
【００９５】
＜発明の実施の形態３＞
本発明の実施の形態３では、ホスト機能又はペリフェラル機能のいずれの転送パフォーマンスを向上させるかを制御可能としたデータ転送制御装置１００ｂについて説明する。図１０は、本発明の実施の形態３にかかるデータ転送制御装置１００ｂを含む全体構成を示すブロック図である。尚、データ転送制御装置１００ｂは、上述したデータ転送制御装置１００又は１００ａに改良を加えたものであってもよい。図１０では、図１又は図８と同等の機能を有する構成については、同一の符号を付し、以下では、詳細な説明を省略する。また、以下では、本発明の実施の形態１及び２との違いを中心に説明する。
【００９６】
データ転送制御装置１００ｂは、ＣＰＵ１０と、ＵＳＢ規格に準拠したデュアルロールデバイスであるＵＳＢデュアルロールデバイス２０ｂとを備える装置である。データ転送制御装置１００ｂは、外部からのホスト機能又はペリフェラル機能のいずれかにおけるデータ転送処理を優先させることが指定された優先機能指定情報（PRIORITY FLAG）２８１を受け付け、優先機能指定情報２８１に基づきＵＳＢデバイス２０１乃至２０３及びＵＳＢホスト３００との間でデータ転送処理を行う。
【００９７】
ＵＳＢデュアルロールデバイス２０ｂは、ホストコントローラ２１ｂとペリフェラルコントローラ２２ｂと、ダウンストリームポート２４１乃至２４３と、アップストリームポート２５と、バスインタフェース２７とレジスタ２８とを備える。
【００９８】
レジスタ２８は、上述した優先機能指定情報２８１を格納したレジスタである。例えば、データ転送制御装置１００ｂは、外部から優先機能指定情報２８１を受け付けて、レジスタ２８に格納するようにしてもよい。ここで、優先機能指定情報２８１は、データ転送処理を優先すべき機能を制御するための情報である。または、優先機能指定情報２８１は、データ転送を優先すべき通信部としてホストコントローラ２１ｂ又はペリフェラルコントローラ２２ｂのいずれかが指定された通信部指定情報と呼ぶこともできる。また、以下に優先機能指定情報２８１の例を示す。例えば、優先機能指定情報２８１は、２ビットで表現されるデータとする。このとき、上位ビットが"１"である場合、ホストコントローラ２１ｂからペリフェラルコントローラ２２ｂへの転送ステータス信号２６の送信を許可し、上位ビットが"０"である場合、当該転送ステータス信号２６の送信を不許可とすることを示すものとする。また、下位ビットが"１"である場合、ペリフェラルコントローラ２２ｂからホストコントローラ２１ｂへの転送ステータス信号２６ａの送信を許可し、下位ビットが"０"である場合、当該転送ステータス信号２６ａの送信を不許可とすることを示すものとする。但し、上位及び下位ビットが共に"１"とは指定できないものとする。すなわち、この例では、優先機能指定情報２８１が"１０"である場合、データ転送を優先すべき通信部としてホストコントローラ２１ｂが指定されていることを示す。また、優先機能指定情報２８１が"０１"である場合、データ転送を優先すべき通信部としてペリフェラルコントローラ２２ｂが指定されていることを示す。尚、優先機能指定情報２８１の例は、これに限定されない。
【００９９】
ホストコントローラ２１ｂは、優先機能指定情報２８１に自己が指定されている場合にのみ、ペリフェラルコントローラ２２ｂに対して転送ステータス信号２６を出力する。その他、ホストコントローラ２１ｂの機能は、ホストコントローラ２１と同様の機能を有するものとする。
【０１００】
また、ペリフェラルコントローラ２２ｂは、優先機能指定情報２８１に自己が指定されている場合にのみ、ホストコントローラ２１ｂに対して転送ステータス信号２６ａを出力する。その他、ペリフェラルコントローラ２２ｂの機能は、ペリフェラルコントローラ２２ａと同様の機能を有するものとする。
【０１０１】
すなわち、ホストコントローラ２１ｂは、ホストコントローラ２１ｂとＵＳＢデバイス２０１乃至２０３のいずれかとの間のデータ転送が開始され、かつ、データ転送を優先すべき通信部として当該ホストコントローラ２１ｂが指定されている場合に、ペリフェラルコントローラ２２ｂに対し、ホストコントローラ２１ｂがＵＳＢデバイス２０１乃至２０３のいずれかとの間でデータ転送中であることを通知する。そして、ペリフェラルコントローラ２２ｂは、ホストコントローラ２１ｂから当該ホストコントローラ２１ｂがＵＳＢデバイス２０１乃至２０３のいずれかとの間でデータ転送中であることが通知されている場合に、ＵＳＢホスト３００からのデータ転送開始要求に対して、ＵＳＢホスト３００へデータ転送が行えないことを示す転送不可応答を送信する。
【０１０２】
一方、ペリフェラルコントローラ２２ｂは、当該ペリフェラルコントローラ２２ｂとＵＳＢホスト３００との間のデータ転送が開始され、かつ、データ転送を優先すべき通信部として当該ペリフェラルコントローラ２２ｂが指定されている場合に、ホストコントローラ２１ｂに対し、ペリフェラルコントローラ２２ｂがＵＳＢホスト３００との間でデータ転送中であることを通知する。そして、ホストコントローラ２１ｂは、ペリフェラルコントローラ２２ｂがＵＳＢホスト３００との間でデータ転送中であることが当該ペリフェラルコントローラ２２ｂから通知されている場合に、ＵＳＢデバイス２０１乃至２０３に対するデータ転送開始要求の送信を保留し、ペリフェラルコントローラ２２ｂがＵＳＢホスト３００との間のデータ転送が完了した後に、ＵＳＢデバイス２０１乃至２０３のいずれかに対して当該保留したデータ転送開始要求を送信する。
【０１０３】
また、ホストコントローラ２１ｂは、パイプＰ１、Ｐ２、・・・、Ｐｎと、論理和回路２３１と、論理積回路２３２とを備える。パイプＰ１、Ｐ２、・・・、Ｐｎは、図１と同等の構成及び機能であるため、内部構成の図示及び詳細な説明を省略する。論理和回路２３１は、パイプＰ１、Ｐ２、・・・、Ｐｎから出力された転送ステータス信号を１本にまとめて、アクティブレベル又はインアクティブレベルの信号として論理積回路２３２へ出力する。論理積回路２３２は、論理和回路２３１から入力された信号と、レジスタ２８に格納された優先機能指定情報２８１の上位ビットとの論理積を取り、論理積の結果が"１"である場合に、転送ステータス信号２６を"１"としてペリフェラルコントローラ２２ｂへ出力する。また、ホストコントローラ２１ｂは、当該論理積の結果が"０"である場合に、転送ステータス信号２６を"０"としてペリフェラルコントローラ２２ｂへ出力する。尚、論理和回路２３１及び論理積回路２３２は、図１の送信部２３に対して改良を加えたものを用いても構わない。
【０１０４】
つまり、ホストコントローラ２１ｂは、ＵＳＢデバイス２０１乃至２０３のいずれかとの間でデータ転送を開始した場合に、レジスタ２８に格納された優先機能指定情報２８１に応じて、データ転送中であるか否かを通知する。
【０１０５】
また、ペリフェラルコントローラ２２ｂは、エンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａと、論理和回路２３３と、論理積回路２３４とを備える。エンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａは、図８と同等の構成及び機能であるため、内部構成の図示及び詳細な説明を省略する。論理和回路２３３は、エンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａから出力された転送ステータス信号を１本にまとめて、アクティブレベル又はインアクティブレベルの信号として論理積回路２３４へ出力する。論理積回路２３４は、論理和回路２３３から入力された信号と、レジスタ２８に格納された優先機能指定情報２８１の下位ビットとの論理積を取り、論理積の結果が"１"である場合に、転送ステータス信号２６ａを"１"としてホストコントローラ２１ｂへ出力する。また、ペリフェラルコントローラ２２ｂは、当該論理積の結果が"０"である場合に、転送ステータス信号２６ａを"０"としてホストコントローラ２１ｂへ出力する。尚、論理和回路２３３及び論理積回路２３４は、図８の送信部２３ａに対して改良を加えたものを用いても構わない。
【０１０６】
つまり、ペリフェラルコントローラ２２ｂは、ＵＳＢホスト３００との間でデータ転送を開始した場合に、レジスタ２８に格納された優先機能指定情報２８１に応じて、データ転送中であるか否かを通知する。
【０１０７】
また、ホストコントローラ２１ｂは、優先機能指定情報２８１に応じて、ペリフェラルコントローラ２２ｂに対し、当該ペリフェラルコントローラ２２ｂとＵＳＢホスト３００との間のデータ転送の許否を通知する転送許否信号として転送ステータス信号２６を出力する。そして、ペリフェラルコントローラ２２ｂは、ホストコントローラ２１ｂからの転送ステータス信号２６に応じて、ＵＳＢホスト３００からのデータ転送開始要求に対して転送不可応答を送信するデータ転送不可モードになる。
【０１０８】
一方、ペリフェラルコントローラ２２ｂは、優先機能指定情報２８１に応じて、ペリフェラルコントローラ２２ｂとＵＳＢホスト３００との間でデータ転送中であることを転送ステータス信号２６ａによりホストコントローラ２１ｂへ通知する。そして、ホストコントローラ２１ｂは、ペリフェラルコントローラ２２ｂからアクティブな転送ステータス信号２６ａを受信すると、ＵＳＢデバイス２０１乃至２０３に対するデータ転送開始要求を一時保留する。
【０１０９】
図１１は、本発明の実施の形態１にかかるホストコントローラ又はペリフェラルコントローラの処理の流れを示すフローチャートである。尚、ここでは、ペリフェラルコントローラ２２ｂについて説明するが、ホストコントローラ２１ｂについても同等の処理が行われる。また、この例においては、出力制御レジスタＣ１ａ及びＣ２ａには、予め"１"が格納済みとする。
【０１１０】
まず、ペリフェラルコントローラ２２ｂは、データ転送中か否かを判定する（Ｓ４１）。例えば、論理和回路２３３は、エンドポイントＥ１ａ、Ｅ２ａ、・・・、Ｅｍａから出力された転送ステータス信号の論理和を取り、論理和の結果が"１"であるか否かを判定する。
【０１１１】
ステップＳ４１において、論理和の結果が"１"となった場合、ペリフェラルコントローラ２２ｂは、データ転送を優先するか否かを判定する（Ｓ４２）。例えば、論理積回路２３４は、論理和回路２３３から入力された信号と、レジスタ２８に格納された優先機能指定情報２８１の下位ビットとの論理積を取り、論理積の結果が"１"であるか否かを判定する。
【０１１２】
ステップＳ４２において、論理積の結果が"１"となった場合、論理積回路２３４は、アクティブレベルの転送ステータス信号２６ａをホストコントローラ２１ｂへ出力する（Ｓ４３）。例えば、ペリフェラルコントローラ２２ｂとＵＳＢホスト３００とのデータ転送を開始した場合、ステータスレジスタＳ１ａに"１"が格納されており、出力制御レジスタＣ１ａには予め"１"が格納されているため、エンドポイントＥ１ａは、論理和回路２３３へ"１"を出力する。この場合、エンドポイントＥ２ａ、・・・、Ｅｍａからの出力結果に係わらず、論理和の結果は"１"となる。そして、優先機能指定情報２８１が"０１"つまり、下位ビットが"１"である場合、論理積回路２３４における論理積の結果は"１"となる。つまり、データ転送を優先すべき通信部としてペリフェラルコントローラ２２ｂが指定されていると判定される。このとき、論理積回路２３４は、転送ステータス信号２６ａを"１"としてホストコントローラ２１ｂへ出力する。
【０１１３】
また、ステップＳ４２において、論理積の結果が"０"となった場合、論理積回路２３４は、インアクティブレベルの転送ステータス信号２６ａをホストコントローラ２１ｂへ出力する（Ｓ４４）。例えば、優先機能指定情報２８１が"１０"つまり、下位ビットが"０"である場合、論理積回路２３４における論理積の結果は、論理和回路２３３における論理和の結果に関わらず、常に"０"となる。つまり、データ転送を優先すべき通信部としてペリフェラルコントローラ２２ｂが指定されていないと判定される。このとき、論理積回路２３４は、転送ステータス信号２６ａを"０"としてホストコントローラ２１ｂへ出力する。
【０１１４】
また、ステップＳ４１において、論理和の結果が"０"となった場合、論理積回路２３４は、インアクティブレベルの転送ステータス信号２６ａをホストコントローラ２１ｂへ出力する（Ｓ４４）。例えば、ペリフェラルコントローラ２２ｂとＵＳＢホスト３００とのデータ転送が行われていない場合、エンドポイントＥ１ａ、・・・、Ｅｍａから論理和回路２３３への出力結果は、いずれも"０"となり、論理和の結果が"０"となる。そのため、優先機能指定情報２８１の下位ビットが"１"であっても、論理積回路２３４における論理積の結果は"０"となる。このとき、論理積回路２３４は、転送ステータス信号２６ａを"０"としてホストコントローラ２１ｂへ出力する。
【０１１５】
このように、本発明の実施の形態３では、実施の形態１にかかるホストコントローラ２１ａと実施の形態２にかかるペリフェラルコントローラ２２ａとを改良し、優先機能指定情報２８１が格納されたレジスタ２８を加えたものといえる。そのため、優先機能指定情報２８１に応じて、ホスト機能又はペリフェラル機能のいずれかの転送ステータス信号の出力を制御することができる。これにより、例えば、データ転送制御装置１００ｂを使用するユーザがホスト機能又はペリフェラル機能のいずれの転送パフォーマンスを優先させるかを選択することができる。特に、データ転送制御装置１００ｂに接続されるＵＳＢデバイス２０１乃至２０３及びＵＳＢホスト３００の機器の種別や、具体的なデータ転送処理の種別に応じて、レジスタ２８に格納された優先機能指定情報２８１を更新することにより、柔軟に転送パフォーマンスを優先させるべき機能を切り替えることが可能となる。
【０１１６】
また、高機能かつ転送パフォーマンスが高いＵＳＢデバイス装置又はＵＳＢホスト装置を開発した場合であっても、データ転送制御装置１００ｂが搭載されたＵＳＢデュアルロールデバイスに接続することで所望の機能を利用することができる。
【０１１７】
このように、本発明の実施の形態３により、任意に指定されたホスト機能又はペリフェラル機能のいずれか一方を優先してデータ転送処理を行わせることができる。それにより、例えば、上述したデュアルロールデバイスを使用するユーザにいずれの機能を優先させるかを柔軟に選択させることができる。そして、ホスト機能とペリフェラル機能が同時に動作する時に、指定された機能の転送パフォーマンスを高く保つデータ転送制御装置及びデータ転送制御方法を提供することができる。
【０１１８】
＜その他の実施の形態＞
尚、本発明の実施の形態１にかかるデータ転送制御装置１００は、ＵＳＢデバイス２０１乃至２０３のいずれかとホストコントローラ２１との間のデータ転送の状態を保持する状態管理レジスタをさらに備え、ペリフェラルコントローラ２２は、ＵＳＢデバイス２０１乃至２０３のいずれかとホストコントローラ２１との間のデータ転送が開始された場合に、状態管理レジスタにデータ転送中であることを示す情報を格納し、当該データ転送が完了した場合に状態管理レジスタに格納された情報をクリアするようにしてもよい。これにより、データ転送状態及び負荷状態をソフトウェアにより取得することができ、デバッグ又は分析等に用いることができる。
【０１１９】
尚、本発明の実施の形態１にかかるペリフェラルコントローラ２２は、ホストコントローラ２１におけるデータ転送の開始及び終了に伴い、自己におけるデータ転送の待ち状態を内部のフラグ（不図示）を切り替えることにより管理しても構わない。その場合、ペリフェラルコントローラ２２は、当該内部のフラグに応じて、ＵＳＢホスト３００からのデータ転送開始要求に対する応答を切り替えるように制御しても構わない。また、本発明の実施の形態３にかかるペリフェラルコントローラ２２ｂも同様である。
【０１２０】
また、本発明の実施の形態２にかかるホストコントローラ２１ａは、ペリフェラルコントローラ２２ａにおけるデータ転送の開始及び終了に伴い、自己におけるデータ転送の待ち状態を内部のフラグ（不図示）を切り替えることにより管理しても構わない。その場合、ホストコントローラ２１ａは、当該内部のフラグに応じて、ＵＳＢデバイス２０１乃至２０３に対するデータ転送開始要求の送信を保留するか否か切り替えるように制御しても構わない。また、本発明の実施の形態３にかかるホストコントローラ２１ｂも同様である。
【０１２１】
ここで、本発明の実施の形態１乃至３は、次のようにいうことができる。すなわち、本発明の実施の形態１乃至３にかかるデータ転送制御装置は、ホストコントローラ又はペリフェラルコントローラ２２の一方がデータ転送を優先すべき優先通信部であり、他方が非優先通信部であり、優先通信部は、当該優先通信部においてデータ転送中である場合に非優先通信部に対してデータ転送中であることを通知し、非優先通信部は、優先通信部からデータ転送中であることが通知されている場合に、当該非優先通信部におけるデータ転送を保留する。
【０１２２】
そして、本発明の実施の形態１は、ホストコントローラ２１が優先通信部として、ペリフェラルコントローラ２２が非優先通信部として固定された場合を示す。そして、ペリフェラルコントローラ２２は、転送不可応答を送信することにより、ＵＳＢホスト３００との間のデータ転送を保留することを示す。
【０１２３】
また、本発明の実施の形態２は、ペリフェラルコントローラ２２ａが優先通信部として、ホストコントローラ２１ａが非優先通信部として固定された場合を示す。そして、ホストコントローラ２１ａは、ＵＳＢデバイス２０１乃至２０３のいずれかに対するデータ転送開始要求の送信を保留することにより、ＵＳＢデバイス２０１乃至２０３との間のデータ転送を保留することを示す。
【０１２４】
さらに、本発明の実施の形態３は、ホストコントローラ２１ｂ及びペリフェラルコントローラ２２ｂに対して、外部から優先通信部又は非優先通信部の指定が可能である場合を示す。そして、レジスタ２８は、ホストコントローラ２１ｂ又はペリフェラルコントローラ２２ｂのいずれかが優先通信部として指定された優先機能指定情報２８１を格納したものである。
【０１２５】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、ホストコントローラ２１及びペリフェラルコントローラ２２を制御する処理を、ＣＰＵ１０にコンピュータプログラムを実行させることにより実現することも可能である。その場合、当該コンピュータプログラムは、ホストコントローラ２１のデータ転送状態を監視し、ホストコントローラ２１においてデータ転送中である場合に、ペリフェラルコントローラ２２に対して、転送不可応答を送信させる指示を行うようにしても構わない。これにより、ホスト機能とペリフェラル機能が同時に動作する時において、ホスト機能のデータ転送処理のパフォーマンスを高く維持することが可能となる。
【０１２６】
尚、上述したコンピュータプログラムの実現には、複雑な処理の実装が必要となり、当該複雑な処理をＣＰＵ１０が実行する場合、ＣＰＵ１０の処理不可が高まる恐れがある。上述した本発明の実施の形態１では、転送不可信号を出力させる指示を、ＣＰＵ１０を介さずにホストコントローラ２１からペリフェラルコントローラ２２への転送ステータス信号として実現するものである。これにより、ＣＰＵ１０の処理負荷をさらに軽減させるものである。
【０１２７】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【０１２８】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【０１２９】
（付記１）デバイス装置との間のデータ転送を処理する第１の通信部と、
ホスト装置との間のデータ転送を処理する第２の通信部と、を有し、
前記第２の通信部は、前記第１の通信部が前記デバイス装置との間でデータ転送中であることが当該第１の通信部から通知されている場合に、前記ホスト装置からのデータ転送開始要求に対し、当該ホスト装置へデータ転送が行えないことを示す転送不可応答を送信するデータ転送制御装置。
【０１３０】
（付記２）前記第１の通信部は、当該第１の通信部と前記デバイス装置との間のデータ転送が開始され、かつ、データ転送を優先すべき通信部として当該第１の通信部が指定されている場合に、前記第２の通信部に対し、前記第１の通信部が前記デバイス装置との間でデータ転送中であることを通知し、
前記第２の通信部は、当該第２の通信部と前記ホスト装置との間のデータ転送が開始され、かつ、データ転送を優先すべき通信部として当該第２の通信部が指定されている場合に、前記第１の通信部に対し、前記第２の通信部が前記ホスト装置との間でデータ転送中であることを通知し、
前記第１の通信部は、前記第２の通信部が前記ホスト装置との間でデータ転送中であることが当該第２の通信部から通知されている場合に、前記デバイス装置に対するデータ転送開始要求の送信を保留し、前記第２の通信部が前記ホスト装置との間のデータ転送が完了した後に、前記デバイス装置に対して当該保留したデータ転送開始要求を送信することを特徴とする付記１に記載のデータ転送制御装置。
【０１３１】
（付記３）前記データ転送制御装置は、前記データ転送を優先すべき通信部として前記第１の通信部又は前記第２の通信部のいずれかが指定された通信部指定情報を格納したレジスタをさらに備え、
前記第１の通信部又は前記第２の通信部は、前記データ転送を開始した場合に、前記レジスタに格納された前記通信部指定情報に応じて、前記データ転送中であるか否かを通知することを特徴とする付記２に記載のデータ転送制御装置。
【０１３２】
（付記４）前記第１の通信部は、前記通信部指定情報に応じて、前記第２の通信部に対し、当該第２の通信部と前記ホスト装置との間のデータ転送の許否を通知する転送許否信号を出力し、
前記第２の通信部は、前記転送許否信号に応じて、前記ホスト装置からのデータ転送開始要求に対して前記転送不可応答を送信するデータ転送不可モードになり、
前記第２の通信部は、前記通信部指定情報に応じて、前記第１の通信部に対し、当該第１の通信部と前記デバイス装置との間のデータ転送の保留の要求を通知する転送保留要求信号を出力し、
前記第１の通信部は、前記転送保留要求信号に応じて、前記デバイス装置に対するデータ転送開始要求を保留するデータ転送保留モードになることを特徴とする付記３に記載のデータ転送制御装置。
【０１３３】
（付記５）デバイス装置との間のデータ転送を処理する第１の通信部と、
ホスト装置との間のデータ転送を処理する第２の通信部と、を有し、
前記第１の通信部は、前記第２の通信部が前記ホスト装置との間でデータ転送中であることが当該第２の通信部から通知されている場合に、前記デバイス装置に対するデータ転送開始要求の送信を保留し、前記第２の通信部が前記ホスト装置との間のデータ転送が完了した後に、前記デバイス装置に対して当該保留したデータ転送開始要求を送信するデータ転送制御装置。
【０１３４】
（付記６）前記デバイス装置と前記第１の通信部との間のデータ転送及び前記ホスト装置と前記第２の通信部との間のデータ転送は、ＵＳＢ（Universal Serial Bus）規格に基づく転送であり、
前記第１の通信部は、バルク転送又はコントロール転送において、前記データ転送開始要求の送信を保留することを特徴とする付記５に記載のデータ転送制御装置。
【０１３５】
（付記７）デバイス装置との間のデータ転送を処理する第１の通信部と、
ホスト装置との間のデータ転送を処理する第２の通信部とを有するデータ転送制御装置を制御するデータ転送制御方法であって、
前記第１の通信部において、当該第１の通信部と前記デバイス装置との間のデータ転送が開始された場合に、前記第２の通信部に対し、当該第１の通信部が前記デバイス装置との間でデータ転送中であることを通知し、
前記第２の通信部において、前記第１の通信部が前記デバイス装置との間でデータ転送中であることが当該第１の通信部から通知されている場合に、前記ホスト装置からのデータ転送開始要求に対し、当該ホスト装置へデータ転送が行えないことを示す転送不可応答を送信するデータ転送制御方法。
【０１３６】
（付記８）デバイス装置との間のデータ転送を処理する第１の通信部と、
ホスト装置との間のデータ転送を処理する第２の通信部とを有するデータ転送制御装置を制御するデータ転送制御方法であって、
前記第２の通信部において、当該第２の通信部と前記ホスト装置との間のデータ転送が開始された場合に、前記第１の通信部に対し、前記第２の通信部が前記ホスト装置との間でデータ転送中であることを通知し、
前記第１の通信部において、前記第２の通信部が前記ホスト装置との間でデータ転送中であることが当該第２の通信部から通知されている場合に、前記デバイス装置に対するデータ転送開始要求の送信を保留し、前記第２の通信部が前記ホスト装置との間のデータ転送が完了した後に、前記デバイス装置に対して当該保留したデータ転送開始要求を送信するデータ転送制御方法。
【０１３７】
（付記９）デバイス装置との間のデータ転送を処理する第１の通信部と、
ホスト装置との間のデータ転送を処理する第２の通信部とを有するデータ転送制御装置を制御するデータ転送制御方法であって、
前記第１の通信部において、当該第１の通信部と前記デバイス装置との間のデータ転送が開始され、かつ、データ転送を優先すべき通信部として当該第１の通信部が指定されている場合に、前記第２の通信部に対し、前記第１の通信部が前記デバイス装置との間でデータ転送中であることを通知し、
前記第２の通信部において、前記第１の通信部が前記デバイス装置との間でデータ転送中であることが当該第１の通信部から通知されている場合に、前記ホスト装置からのデータ転送開始要求に対し、当該ホスト装置へデータ転送が行えないことを示す転送不可応答を送信し、
前記第２の通信部において、当該第２の通信部と前記ホスト装置との間のデータ転送が開始され、かつ、データ転送を優先すべき通信部として当該第２の通信部が指定されている場合に、前記第１の通信部に対し、前記第２の通信部が前記ホスト装置との間でデータ転送中であることを通知し、
前記第１の通信部において、前記第２の通信部が前記ホスト装置との間でデータ転送中であることが当該第２の通信部から通知されている場合に、前記デバイス装置に対するデータ転送開始要求の送信を保留し、前記第２の通信部が前記ホスト装置との間のデータ転送が完了した後に、前記デバイス装置に対して当該保留したデータ転送開始要求を送信するデータ転送制御方法。
【符号の説明】
【０１３８】
１００  データ転送制御装置
１００ａ  データ転送制御装置
１００ｂ  データ転送制御装置
１０  ＣＰＵ
２０  ＵＳＢデュアルロールデバイス
２０ａ  ＵＳＢデュアルロールデバイス
２０ｂ  ＵＳＢデュアルロールデバイス
２１  ホストコントローラ
２１ａ  ホストコントローラ
２１ｂ  ホストコントローラ
２２  ペリフェラルコントローラ
２２ａ  ペリフェラルコントローラ
２２ｂ  ペリフェラルコントローラ
２３  送信部
２３ａ  送信部
２３１  論理和回路
２３２  論理積回路
２３３  論理和回路
２３４  論理積回路
２４１  ダウンストリームポート
２４２  ダウンストリームポート
２４３  ダウンストリームポート
２５  アップストリームポート
２６  転送ステータス信号
２６ａ  転送ステータス信号
２７  バスインタフェース
２８  レジスタ
２８１  優先機能指定情報
４１  ＰＩＮＧトークン
４２  ＮＡＫ応答
４３  ＰＩＮＧトークン
４４  ＮＡＫ応答
４５  ＰＩＮＧトークン
４６  ＡＣＫ応答
４７  ＯＵＴトークン
４８  ＤＡＴＡ
４９  ＡＣＫ応答
５１  ＰＩＮＧトークン
５２  ＡＣＫ応答
５３  ＯＵＴトークン
５４  ＤＡＴＡ
５５  ＡＣＫ応答
５６  ＰＩＮＧトークン
５７  ＮＡＫ応答
５８  ＰＩＮＧトークン
５９  ＮＡＫ応答
Ｐ１  パイプ
Ｐ２  パイプ
Ｐｎ  パイプ
Ｃ１  出力制御レジスタ
Ｃ２  出力制御レジスタ
Ｓ１  ステータスレジスタ
Ｓ２  ステータスレジスタ
Ｅ１  エンドポイント
Ｅ２  エンドポイント
Ｅｍ  エンドポイント
Ｐ１ａ  パイプ
Ｐ２ａ  パイプ
Ｐｎａ  パイプ
Ｃ１ａ  出力制御レジスタ
Ｃ２ａ  出力制御レジスタ
Ｓ１ａ  ステータスレジスタ
Ｓ２ａ  ステータスレジスタ
Ｅ１ａ  エンドポイント
Ｅ２ａ  エンドポイント
Ｅｍａ  エンドポイント
２０１  ＵＳＢデバイス
２０２  ＵＳＢデバイス
２０３  ＵＳＢデバイス
３００  ＵＳＢホスト
Ｔ４１  時刻
Ｔ４２  時刻
Ｔ５１  時刻
Ｔ５２  時刻
Ｔ６１  時刻
Ｔ６２  時刻
Ｔ６３  時刻
Ｔ６４  時刻
Ｔ７１  時刻
Ｔ７２  時刻
Ｔ７３  時刻
Ｔ７４  時刻
【図１】
2011065630.tif 000003
【図２】
2011065630.tif 000004
【図３】
2011065630.tif 000005
【図４】
2011065630.tif 000006
【図５】
2011065630.tif 000007
【図６】
2011065630.tif 000008
【図７】
2011065630.tif 000009
【図８】
2011065630.tif 000010
【図９】
2011065630.tif 000011
【図１０】
2011065630.tif 000012
【図１１】
2011065630.tif 000013