(57)【要約】【課題】バッファメモリの一部を複数のエンドポイント部で共有し、共有するバッファメモリを、バッファメモリの使用状況に応じて変更することにより、回路規模を小さく抑えつつデータ転送速度を向上させることができるデータ通信システムを提供する。【解決手段】ＵＳＢ規格に準拠したデータ通信を行うデータ通信システムにおいて、エンドポイント部１３ａに対して二つのバッファメモリ２０ａ、２０ｃを用意し、エンドポイント部１３ｂに対しては二つのバッファメモリ２０ｂ、２０ｃを用意し、その複数のバッファメモリのうちバッファメモリ２０ｃを二つのエンドポイント部１３ａ、１３ｂが共有する構成とし、その共有バッファメモリ２０ｃを使用するエンドポイント部をどちらにするか決定する際、その共有バッファメモリ２０ｃを共有するエンドポイント部１３ａ、１３ｂについてバッファメモリを用いて転送された送受信成功パケット数を比較することにより共有バッファメモリ２０ｃを用いるエンドポイント部を決定する構成にした。【選択図】      図１
2004280199.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ規格に準拠したデータ通信をおこなうデータ通信システムにおいて、一つのエンドポイント部に対してバッファメモリを複数用意し、該複数のバッファメモリのうちの一つ以上を他のエンドポイント部と共有する共有バッファメモリを備え、該共有バッファメモリを使用するエンドポイント部を決定する際、バッファメモリを介して転送された送受信成功パケットの数を複数のエンドポイント部間で比較することにより前記共有バッファメモリを用いるエンドポイント部を決定することを特徴とするデータ通信システム。
【請求項２】
請求項１記載のデータ通信システムにおいて、前記共有バッファメモリを共有するエンドポイント部のいずれかが所定数のデータパケットの送受信に成功する毎に前記送受信成功パケット数を比較する構成にしたことを特徴とするデータ通信システム。
【請求項３】
請求項１記載のデータ通信システムにおいて、所定時間が経過する毎に前記送受信成功パケット数を比較する構成にしたことを特徴とするデータ通信システム。
【請求項４】
請求項１記載のデータ通信システムにおいて、前記共有バッファメモリを共有するエンドポイント部のいずれかが所定数のデータパケットの送受信に成功するか、または所定時間が経過するかどちらかの条件を満たす毎に前記送受信成功パケット数を比較する構成にしたことを特徴とするデータ通信システム。
【請求項５】
請求項２または請求項４記載のデータ通信システムにおいて、送受信に成功したデータパケット数である前記所定数を変更可能な構成にしたことを特徴とするデータ通信システム。
【請求項６】
請求項５記載のデータ通信システムにおいて、前記共有バッファメモリを共有するエンドポイント部のいずれかが所定数のデータパケットの送受信に成功するのに要した時間に応じて前記所定数を自動的に変更する構成にしたことを特徴とするデータ通信システム。
【請求項７】
請求項３または請求項４記載のデータ通信システムにおいて、前記所定時間を変更可能な構成にしたことを特徴とするデータ通信システム。
【請求項８】
請求項７記載のデータ通信システムにおいて、前記所定時間当たりの前記送受信成功パケット数に応じて前記所定時間を自動的に変更する構成にしたことを特徴とするデータ通信システム。
【請求項９】
請求項１乃至請求項８のいずれか１項に記載のデータ通信システムにおいて、前記共有バッファメモリを使用するエンドポイント部の変更タイミング時の直前に送受信をおこなったエンドポイント部と、そのときのデータパケットのデータサイズとの組み合わせに応じて前記変更タイミングを遅らせる構成にしたことを特徴とするデータ通信システム。
【請求項１０】
請求項９記載のデータ通信システムにおいて、前記共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部で所定数のデータパケットの送受信が成功したことにより共有バッファメモリを使用するエンドポイント部を変更する際、直前に送受信したデータパケットのデータサイズが設定された最大の大きさでない場合、前記変更タイミングを遅らせる構成にしたことを特徴とするデータ通信システム。
【請求項１１】
請求項９記載のデータ通信システムにおいて、所定時間が経過したことにより共有バッファメモリを使用するエンドポイント部を変更する場合、共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部で前記送受信成功パケットの数が多く、且つ、直前にデータパケットを送受信したエンドポイント部が共有バッファメモリを現在使用しているエンドポイント部であり、なお且つ該データパケットのデータサイズが設定された最大の大きさの場合に前記変更タイミングを遅らせる構成にしたことを特徴とするデータ通信システム。
【請求項１２】
請求項９記載のデータ通信システムにおいて、バッファメモリを共有するエンドポイント部のいずれかが所定数のデータパケットの送受信に成功したか、または所定時間が経過して共有バッファメモリを使用するエンドポイント部を変更する場合、共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部で所定数のデータパケットの送受信が成功し、且つ、直前に送受信したデータパケットのデータサイズが設定された最大の大きさでないとき、前記変更タイミングを遅らせるとともに、前記所定時間が経過した際に共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部の送受信成功パケットの数が多く、且つ、直前にデータパケットを送受信したエンドポイント部が共有バッファメモリを現在使用しているエンドポイント部であり、その送受信時のデータサイズが設定された最大の大きさのとき、前記変更タイミングを遅らせる構成にしたことを特徴とするデータ通信システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えばパーソナルコンピュータとプリンタなど一つまたは複数の周辺機器との間でＵＳＢ規格に準拠したデータ通信をおこなうデータ通信システムに関する。
【０００２】
【従来の技術】
近年、パーソナルコンピュータ（以下、ＰＣと称す）と周辺機器とを接続するインターフェースとしてＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）規格が使用されている。ＵＳＢ規格ではＰＣが一つしか存在しないホスト装置となり、そのホスト装置の下に複数のデバイス（周辺機器など）がツリー状に接続され、デバイス内のＵＳＢコントローラがそれぞれ固有のアドレスを持つ。
図１９はＵＳＢ通信システムの接続概念図である。図１９に示したように、ルートハブ（ＨＵＢ）機能（集配信機能など）をもつＵＳＢホスト装置（以下、ホスト装置と略す）１、ハブ（ＨＵＢ）２（２ａ、２ｂ）、デバイス３（３ａ〜３ｄ）などがＵＳＢバス４により接続されている。このように、ＵＳＢ通信システムでは一つのホスト装置１の下に複数のハブ（ＨＵＢ）２またはデバイス３がツリー状に接続される。また、デバイス３は図２０に示したようにＵＳＢコントローラ６、ターゲット機器７から構成される。
ホスト装置であるＰＣは固有のアドレスのＵＳＢコントローラ６に対してデータ送受信の要求とデータの送受信をおこなう。ＵＳＢコントローラ６は、ホスト装置１からデータ送受信の要求を受信すると、割込み信号などを用いてターゲット機器７内のユーザ回路に対してホスト装置１からデータ送受信の要求を受けたことを示す。そして、ユーザ回路はＵＳＢコントローラ６からデータ送受信の要求の内容を読み出して、ＵＳＢコントローラ６がホスト装置１から受信したデータを読み出したり、ホスト装置１に対する送信データをＵＳＢコントローラ６に書き込んだりする。なお、ＵＳＢコントローラ６は、ホスト装置１に対してデータを送信したり、ホスト装置１からデータを受信したりする際にデータを一時的に記憶する、通常ＦＩＦＯメモリ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ  Ｍｅｍｏｒｙ）からなるエンドポイント部を複数もつ（その数は規格によって決められている）。ターゲット機器７は、デバイス３のＵＳＢコントローラ６のローカルバスに接続され、エンドポイント部であるＦＩＦＯメモリに対してアクセスするのである。
ところで、ＵＳＢバスを用いたデータ転送は、パケットという単位でおこなわれる。パケットの種類としては、転送方向やセットアップ情報を送るトークンパケット、実際のデータであるデータパケット、データ転送結果（成功・失敗など）を送るハンドシェイクパケットがある。また、転送のモードも、エンドポイント部ゼロを介しておこなわれる、デバイスの初期化や各種情報のやりとりに使用するコントロール転送、転送周期を問わずプリンタのデータのようにまとまった量のデータを転送するバルク転送、マウスやキーボードのステータスを送るような低周期で少量のデータを送るインタラプト転送、音声データなどリアルタイムのデータを送るときにデータの正当性を保証しない代わりにバンド幅を保証するアイソクロナス転送の４モードある。
【０００３】
図２１はＵＳＢコントローラの構成例である。図２１において、ＵＳＢトランシーバ１１は、ＵＳＢバス４に接続され、図中には示されないホスト装置１から送信されたパケットをＵＳＢバス４の信号から論理信号に変換して次に説明するシリアル入力エンジン１２に出力すると同時に、シリアル入力エンジン１２からホスト装置１へ送信するパケットを論理信号からＵＳＢバスの信号に変換してＵＳＢホストに出力する。
また、シリアル入力エンジン１２は、ＵＳＢトランシーバ１１から入力されるホスト装置１から送信されたパケットのうちトークンパケットおよびハンドシェイクパケットをデコードし、それを基にホスト装置１との通信を制御し、必要に応じてハンドシェイクパケットをＵＳＢトランシーバ１１に出力するとともに、ホスト装置１へ出力するデータを次に説明するエンドポイント群１３から読み出し、制御データを付加してデータパケットとしてＵＳＢトランシーバ１１へ出力し、ＵＳＢトランシーバ１１から入力するホスト装置１からのデータパケットの中のデータをエンドポイント群１３に書き込む制御をおこなう。
また、エンドポイント群１３はローカルバスから受信しホスト装置１へ送信するデータをバッファリングするとともに、ホスト装置１から受信しローカルバスへ出力するデータをバッファリングし、Ｉ／Ｏコントローラ１５は図中には示されないユーザ回路とエンドポイント群１３、および次に述べるレジスタとの間におけるデータ転送を制御し、レジスタ１６はＵＳＢコントローラ内部モジュールの各種設定をおこなうとともに、コントロール転送の自動応答リクエストを格納しておく。
なお、エンドポイント群１３は、エンドポイント部ゼロ１３０とコントロール転送以外の転送に使用される複数のエンドポイント部１３１、・・・、１３ｎから構成される。ここで、エンドポイント部ゼロ１３０はコントロール転送で使用される双方向のエンドポイント部で、ホスト装置１から見た場合のエンドポイント番号は０に固定されている。それを除いては単一の転送方向（ホスト装置１に対して出力または入力）のエンドポイント部で、転送方法、転送の向き、ホスト装置１から見た場合のエンドポイント番号は０以外に固定、または、レジスタ１６に利用者が設定して使用する。
【０００４】
図２２はエンドポイント群１３の構成例である。図２２に示したように、ホスト装置１に対して送信するデータやホスト装置１から受信したデータを格納するＦＩＦＯ２００、２０１、そのＦＩＦＯ２００、２０１に対するデータ書き込みの制御をおこなうライトコントローラ２１、ＦＩＦＯ２００、２０１からのデータ読み出しの制御をおこなうリードコントローラ２２、データを読み出すＦＩＦＯを選択するマルチプレクサ２３を備える。
このように、各エンドポイント部は、ＦＩＦＯメモリを二つ持ち、ＦＩＦＯメモリの一方をデータ書き込み用、他方をデータ読み出し用とする。そして、ライトコントローラ２１とリードコントローラ２２との間でＦＩＦＯメモリの状態を表す信号を授受し、データ書き込み用に設定されたＦＩＦＯメモリへのデータ書き込み終了時にデータ読み出し用に設定されているＦＩＦＯメモリからのデータ読み出しが終了しているときは直ぐに、また、データ読み出しが終了していないときは、データ読み出しの終了を待って、データ書き込み用ＦＩＦＯメモリとデータ読み出し用ＦＩＦＯメモリを切り換えることによりデータ転送速度を向上させる。なお、このような構成を持つＵＳＢコントローラとしては例えばＭＬ６０８５１Ｃがある。
また、特表２００１−５１２８７０公報に示されたユニバーサルシリアルバスデバイスコントローラ、特開２００２−００９８４９公報に示されたＵＳＢ転送制御方法およびＵＳＢコントローラでは、一つのＦＩＦＯメモリを複数のエンドポイント部で共有する。
【特許文献１】特表２００１−５１２８７０公報
【特許文献２】特開２００２−００９８４９公報
【０００５】
【発明が解決しようとする課題】
しかしながら、前記したＭＬ６０８５１Ｃなどで提供されている従来技術においては、エンドポイント部毎にＦＩＦＯメモリを二つ使用するので、ＦＩＦＯメモリの数が多くなり、したがって、回路規模が大きくなるという問題点があった。また、特許文献１、２に示された従来技術では、特定のエンドポイント部のデータ転送速度の問題が優先的に解決されるものであり、本発明の解決方法とは異なる。
本発明の目的は、ＦＩＦＯメモリなどバッファメモリの一部を複数のエンドポイント部で共有し、そのバッファメモリを使用するエンドポイント部を、バッファメモリの使用状況（データ転送状況）に応じて変更することにより、回路規模を小さく抑えつつ、特定のエンドポイント部でなく、各エンドポイント部のデータ転送速度を向上させることができるデータ通信システムを提供することにある。
また、バッファメモリを使用するエンドポイント部を変更する変更タイミングについても考慮を払う。例えば一方のエンドポイント部において大量データを送り終わった後に別のエンドポイント部において大量データを送り始めたような場合には変更タイミングを遅らせることにより、大量データを送受信しているエンドポイント部の方に共有バッファメモリを引き続き使用させて更にデータ転送速度を向上させることができるようにする。
【０００６】
【課題を解決するための手段】
前記の課題を解決するために、請求項１記載の発明では、ＵＳＢ規格に準拠したデータ通信をおこなうデータ通信システムにおいて、一つのエンドポイント部に対してバッファメモリを複数用意し、該複数のバッファメモリのうちの一つ以上を他のエンドポイント部と共有する共有バッファメモリを備え、該共有バッファメモリを使用するエンドポイント部を決定する際、バッファメモリを介して転送された送受信成功パケットの数を複数のエンドポイント部間で比較することにより前記共有バッファメモリを用いるエンドポイント部を決定することを特徴とする。
また、請求項２記載の発明では、請求項１記載の発明において、前記共有バッファメモリを共有するエンドポイント部のいずれかが所定数のデータパケットの送受信に成功する毎に前記送受信成功パケットの数を比較する構成にした。
また、請求項３記載の発明では、請求項１記載の発明において、所定時間が経過する毎に前記送受信成功パケットの数を比較する構成にした。
また、請求項４記載の発明では、請求項１記載の発明において、前記共有バッファメモリを共有するエンドポイント部のいずれかが所定数のデータパケットの送受信に成功するか、または所定時間が経過するかどちらかの条件を満たす毎に前記送受信成功パケットの数を比較する構成にした。
また、請求項５記載の発明では、請求項２または請求項４記載の発明において、送受信に成功したデータパケット数である前記所定数を変更可能な構成にした。
また、請求項６記載の発明では、請求項５記載の発明において、前記共有バッファメモリを共有するエンドポイント部のいずれかが所定数のデータパケットの送受信に成功するのに要した時間に応じて前記所定数を自動的に変更する構成にした。
【０００７】
また、請求項７記載の発明では、請求項３または請求項４記載の発明において、前記所定時間を変更可能な構成にした。
また、請求項８記載の発明では、請求項７記載の発明において、前記所定時間当たりの前記送受信成功パケットの数に応じて前記所定時間を自動的に変更する構成にした。
また、請求項９記載の発明では、請求項１乃至請求項８のいずれか１項に記載のデータ通信システムにおいて、前記共有バッファメモリを使用するエンドポイント部の変更タイミング時の直前に送受信をおこなったエンドポイント部と、そのときのデータパケットのデータサイズとの組み合わせに応じて前記変更タイミングを遅らせる構成にした。
また、請求項１０記載の発明では、請求項９記載のデータ通信システムにおいて、前記共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部で所定数のデータパケットの送受信が成功したことにより共有バッファメモリを使用するエンドポイント部を変更する際、直前に送受信したデータパケットのデータサイズが設定された最大の大きさでない場合、前記変更タイミングを遅らせる構成にした。
また、請求項１１記載の発明では、請求項９記載のデータ通信システムにおいて、所定時間が経過したことにより共有バッファメモリを使用するエンドポイント部を変更する場合、共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部で前記送受信成功パケットの数が多く、且つ、直前にデータパケットを送受信したエンドポイント部が共有バッファメモリを現在使用しているエンドポイント部であり、なお且つ該データパケットのデータサイズが設定された最大の大きさの場合に前記変更タイミングを遅らせる構成にした。
また、請求項１２記載の発明では、請求項９記載の発明において、バッファメモリを共有するエンドポイント部のいずれかが所定数のデータパケットの送受信に成功したか、または所定時間が経過して共有バッファメモリを使用するエンドポイント部を変更する場合、共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部で所定数のデータパケットの送受信が成功し、且つ、直前に送受信したデータパケットのデータサイズが設定された最大の大きさでないとき、前記変更タイミングを遅らせるとともに、前記所定時間が経過した際に共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部の送受信成功パケットの数が多く、且つ、直前にデータパケットを送受信したエンドポイント部が共有バッファメモリを現在使用しているエンドポイント部であり、その送受信時のデータサイズが設定された最大の大きさのとき、前記変更タイミングを遅らせる構成にした。
【０００８】
【発明の実施の形態】
以下、図面により本発明の実施の形態を詳細に説明する。
図１に、本発明の第１の実施例として、イン（ＩＮ：ホスト装置から見て入力）転送用のエンドポイント部とアウト（ＯＵＴ：ホスト装置から見て出力）転送用のエンドポイント部を同時に使用する際にバッファメモリとして用いるＦＩＦＯメモリを共有する構成を示す。図示したように、シリアル入力エンジン１２、エンドポイント群１３、およびＩ／Ｏコントローラ１５を備えている。なお、ここでは、図を簡略化するために、エンドポイント部としてＦＩＦＯメモリを共有するエンドポイント部１３ａ、１３ｂのみを示す。エンドポイント部１３ａはイン転送のエンドポイント部、エンドポイント１３ｂはアウト転送のエンドポイント部であり、それぞれ１つの占有ＦＩＦＯメモリと１つの共有ＦＩＦＯメモリを持つ。つまり、ＦＩＦＯメモリ２０ａはエンドポイント部１３ａの占有ＦＩＦＯメモリ、ＦＩＦＯ２０ｂはエンドポイント部１３ｂの占有ＦＩＦＯメモリ、ＦＩＦＯ２０ｃはエンドポイント部１３ａとエンドポイント部１３ｂの共有ＦＩＦＯメモリである。
図１では、イン転送においてエンドポイント部１３ａからホスト装置１へ送るデータ数が、アウト転送においてエンドポイント部１３ｂがホスト装置１から受け取るデータ数より多い場合、（ａ）図に示したようにＦＩＦＯメモリ２０ｃをエンドポイント部１３ａ側で使用して、エンドポイント部１３ａではＦＩＦＯメモリ２０ａとＦＩＦＯメモリ２０ｃを用いてユーザ回路からのデータを交互に受け取ることによりホスト装置１へデータを送り、エンドポイント部１３ｂではＦＩＦＯメモリ２０ｂのみ用いてホスト装置１からのデータを受け取りユーザ回路へ送る。
一方、アウト転送においてエンドポイント部１３ｂのホスト装置１から受け取るデータ数がイン転送においてエンドポイント部１３ａからホスト装置１へ送るデータ数より多い場合は（ｂ）図に示したようにＦＩＦＯメモリ２０ｃをエンドポイント部１３ｂ側で使用して、エンドポイント部１３ｂではＦＩＦＯメモリ２０ｂとＦＩＦＯメモリ２０ｃを用いてホスト装置１からのデータを交互に受け取りユーザ回路へ送り、エンドポイント部１３ａではＦＩＦＯメモリ２０ａのみ用いてユーザ回路からのデータを受け取りホスト装置１へデータを送る。
なお、このようにイン転送用のエンドポイント部とアウト転送用のエンドポイント部を同時に使用する際にホスト装置１へのデータ送信とホスト装置１からのデータ受信のデータ数に差が生じる例としては、ハードディスク記憶装置や光ディスク記憶装置などストレージデバイスで大量のデータリードやデータライトを行う場合とか、ファクシミリ装置やスキャナ機能付きプリンタにおけるデータスキャン入力やプリント出力を行う場合などがある。また、ここでは説明しないが、例えば一つのＵＳＢコントローラ６に対して複数のユーザ回路が接続されるような場合などにおいてホスト装置１へのデータ送信を行うエンドポイント部同士、ホスト装置１からのデータ受信を行うエンドポイント部同士でデータ数に差が生じる場合もあり得る。
【０００９】
図２に、この実施例のＵＳＢコントローラ６の構成を示す。図２に示したＵＳＢコントローラ６が図１０に示した従来技術のＵＳＢコントローラ６ａと異なる点はエンドポイント群１３の中に共有ＦＩＦＯコントローラ１７を持つことである。同じ構成要素には同じ参照番号が付されているので、重複する説明は省略する。
この共有ＦＩＦＯコントローラ１７は複数のエンドポイント部で共有するＦＩＦＯメモリをどのエンドポイント部に接続するかを制御するものであり、転送されたデータ量を所定時間毎に比較して、またはいずれかのエンドポイント部において所定のデータ量が転送される毎に比較して、またはどちらか一方の条件を満たす毎に比較して、共有ＦＩＦＯメモリを転送データ量の多いエンドポイント部に接続するように決定し、制御信号を出力する。
これにより、この実施例では、回路規模を小さく抑えつつ、特定のエンドポイント部でなく、各エンドポイント部のデータ転送速度を向上させることができる。なお、データ量の計算は共有ＦＩＦＯメモリを接続する対象のエンドポイント部または共有ＦＩＦＯコントローラ１７にカウンタを設けて行う。
【００１０】
図３は本発明の第２の実施例を示すＵＳＢコントローラ６のエンドポイント群の構成である。
この実施例では、二つのエンドポイント部ＥＰＡ、ＥＰＢが一つのＦＩＦＯメモリを共有する。図３に示したＦＩＦＯメモリ  ２０ａにはエンドポイント部ＥＰＡのデータを格納し、ＦＩＦＯメモリ２０ｂにはエンドポイント部ＥＰＢのデータを格納し、ＦＩＦＯメモリ２０ｃはエンドポイント部ＥＰＡ、ＥＰＢが共有する。ＦＩＦＯメモリ２０ｃはデータ転送の状況に応じてエンドポイント部ＥＰＡ、ＥＰＢのうちどちらかのデータを格納するように制御される。
そのため、この実施例では、図３に示したように、エンドポイント部ＥＰＡのＦＩＦＯメモリに対するデータ書き込みの制御を行うライトコントローラ２１ａ、エンドポイント部ＥＰＢのＦＩＦＯメモリに対するデータ書き込みの制御を行うライトコントローラ２１ｂ、エンドポイント部ＥＰＡのＦＩＦＯメモリからのデータ読み出しの制御を行うリードコントローラ２２ａ、エンドポイント部ＥＰＢのＦＩＦＯメモリからのデータ読み出しの制御を行うリードコントローラ２２ｂ、エンドポイント部ＥＰＡのデータを読み出すＦＩＦＯメモリを選択するマルチプレクサ２３ａ、エンドポイント部ＥＰＢのデータを読み出すＦＩＦＯメモリを選択するマルチプレクサ２３ｂ、エンドポイント部ＥＰＡ、ＥＰＢが共有するＦＩＦＯメモリに入力するライト制御信号を切り換えるマルチプレクサ２４、エンドポイント部ＥＰＡ、ＥＰＢが共有するＦＩＦＯメモリに入力するライトデータ信号を切り換えるマルチプレクサ２５、エンドポイント部ＥＰＡ、ＥＰＢで共有するＦＩＦＯメモリに入力するリード制御信号を切り換えるマルチプレクサ２６、エンドポイント部ＥＰＡで転送したデータパケットの送受信が成功した回数を計算するカウンタ２７ａ、エンドポイント部ＥＰＢで転送したデータパケットの送受信が成功した回数を計算するカウンタ２７ｂなどを備える。
【００１１】
図４に、この実施例のエンドポイント群におけるデータリード／ライトの動作フローを示す。以下、図４に従ってこの動作フローを説明する。
まず、エンドポイント部ＥＰＡ、ＥＰＢにより共有されるＦＩＦＯメモリ２０ｃの接続されるエンドポイント部が共有ＦＩＦＯコントローラ１７から入力する共有ＦＩＦＯ制御信号によってエンドポイント部ＥＰＡに設定される場合（Ｓ１でＹｅｓ）、ライトコントローラ２１ａからの制御信号によってマルチプレクサ２４はエンドポイント部ＥＰＡのライト制御信号を出力し、マルチプレクサ２５はＦＩＦＯメモリ２０ａに入力するものと同一のエンドポイント部ＥＰＡのライトデータ信号を出力する。また、リードコントローラ２２ａからの制御信号によってマルチプレクサ２６はリードコントローラ２２ａから出力されるエンドポイント部ＥＰＡのリード制御信号を出力し、これらはＦＩＦＯメモリ２０ｃに接続される（Ｓ２）。
そして、ＦＩＦＯメモリ２０ｃがこのようにエンドポイント部ＥＰＡに接続される場合、ライトコントローラ２１ａはエンドポイント部ＥＰＡのライト制御信号をＦＩＦＯメモリ２０ａに出力するように設定され、リードコントローラ２２ａは、エンドポイント部ＥＰＡのリード制御信号をＦＩＦＯメモリ２０ｃに出力するように設定される。同時に、エンドポイント部ＥＰＡのリードデータを読み出すＦＩＦＯメモリを選択するマルチプレクサ２３ａの制御信号の値をＦＩＦＯメモリ２０ｃのリードデータ信号を出力するように設定する（Ｓ３）。
この後、エンドポイント部ＥＰＡのライト制御信号がライトコントローラ２１ａに入力すると、ライトコントローラ２１ａはＦＩＦＯメモリ２０ａに対してライト制御信号を出力し、ＦＩＦＯメモリ２０ａではライトコントローラ２１ａから入力されるライト制御信号に基づいてライトデータをＦＩＦＯメモリに書き込む（Ｓ４）。
【００１２】
そして、ＦＩＦＯメモリ２０ａへのデータ書き込みが終了すると（Ｓ５でＹｅｓ）、ＦＩＦＯメモリ２０ｃからのデータ読み出しが終了しているかどうかの判断を行うが（Ｓ６）、最初は読み出し側ＦＩＦＯメモリ（ＦＩＦＯメモリ２０ｃ）には元々データが入っておらず、その状態を示す信号がデータ読み出し終了であるので（Ｓ６でＹｅｓ）、ＦＩＦＯメモリ２０ｃが共有ＦＩＦＯ制御信号でエンドポイント部ＥＰＡに設定されている場合（Ｓ７でＹｅｓ）、ライトコントローラ２１ａは、ライト制御信号出力先ＦＩＦＯメモリをＦＩＦＯメモリ２０ａからＦＩＦＯメモリ２０ｃに変更する。また、リードコントローラ２２ａは、リード制御信号出力先ＦＩＦＯメモリをＦＩＦＯメモリ２０ｃからＦＩＦＯメモリ２０ａに変更し、同時にエンドポイント部ＥＰＡのリードデータを読み出すＦＩＦＯメモリを選択するマルチプレクサ２３ａの制御信号の値を  ＦＩＦＯメモリ２０ａのリードデータ信号を出力するように設定する（Ｓ８）。
この後、エンドポイント部ＥＰＡのライト制御信号がライトコントローラ２１ａに入力すると、ライトコントローラ２１ａは今度はＦＩＦＯメモリ２０ｃに対してライト制御信号を出力し、ＦＩＦＯメモリ２０ｃではライトコントローラ２１ａから入力されるライト制御信号に基づいてライトデータをＦＩＦＯメモリに書き込む。
【００１３】
一方、ＦＩＦＯメモリ２０ａへのデータ書き込みが終了したとき、ＦＩＦＯメモリ２０ａの状態を示す信号はデータ書き込み中からデータ書き込み終了へと変化するが、その変化は読み出し先（シリアル入力エンジン１２またはユーザ回路（Ｉ／Ｏコントーラ１５経由の割込み信号、またはエンドポイント部ＥＰＡがＤＭＡをサポートする場合はそのリクエスト信号によって））に示される。そして、エンドポイント部ＥＰＡのリード制御信号がリードコントローラ２２ａに入力すると、リードコントローラ２２ａはＦＩＦＯメモリ２０ａに対してリード制御信号を出力し、ＦＩＦＯメモリ２０ａではリードコントローラ２２ａから入力されるライト制御信号に基づいてリードデータをＦＩＦＯメモリから読み出す（Ｓ９）。
こうして、ＦＩＦＯメモリ２０ｃへのデータ書き込みが終了したとき（Ｓ１０でＹｅｓ）、読み出し側ＦＩＦＯメモリ（ＦＩＦＯメモリ２０ａ）の状態を示す信号がデータ読み出し終了状態であり（Ｓ１１でＹｅｓ）、ＦＩＦＯメモリ２０ｃが共有ＦＩＦＯ制御信号でエンドポイント部ＥＰＡに設定されている場合（Ｓ１でＹｅｓ）、ＦＩＦＯメモリ２０ｃの接続はエンドポイント部ＥＰＡのままに保つ（Ｓ２）。
そして、ライトコントローラ２１ａはライト制御信号を出力するＦＩＦＯメモリをＦＩＦＯメモリ２０ｃからＦＩＦＯメモリ２０ａに変更する。また、リードコントローラ２２ａは、リード制御信号を出力するＦＩＦＯメモリをＦＩＦＯメモリ２０ａからＦＩＦＯメモリ２０ｃに変更し、同時にエンドポイント部ＥＰＡのリードデータを読み出すＦＩＦＯメモリを選択するマルチプレクサ２３ａの制御信号の値をＦＩＦＯメモリ２０ｃのリードデータ信号を出力するように設定する（Ｓ３）。
【００１４】
それに対して、ＦＩＦＯメモリ２０ｃへのデータ書き込みが終了した時点でＦＩＦＯメモリ２０ａのデータ読み出しが未だ終了していない場合（Ｓ１１でＮｏ）は、ＦＩＦＯメモリ２０ａの読み出しが終わるのを待ち（Ｓ９〜Ｓ１１、この間ＦＩＦＯメモリ２０ｃへのデータ書き込みは禁止）、ＦＩＦＯメモリ２０ａのデータ読み出しが終了した場合（Ｓ１１でＹｅｓ）、ＦＩＦＯメモリ２０ｃが共有ＦＩＦＯ制御信号でエンドポイント部ＥＰＡに設定されている場合（Ｓ１でＹｅｓ）、ＦＩＦＯメモリ２０ｃの接続はエンドポイント部ＥＰＡのまま保持する（Ｓ２）。
そして、ライトコントローラ２１ａはライト制御信号を出力するＦＩＦＯメモリをＦＩＦＯメモリ２０ｃからＦＩＦＯメモリ２０ａに変更する。また、リードコントローラ２２ａはリード制御信号を出力するＦＩＦＯメモリをＦＩＦＯメモリ２０ａからＦＩＦＯメモリ２０ｃに変更し、同時にエンドポイント部ＥＰＡのリードデータを読み出すＦＩＦＯメモリを選択するマルチプレクサ２３ａの制御信号の値をＦＩＦＯメモリ２０ｃのリードデータ信号を出力するように設定する（Ｓ３）。
以後、ＦＩＦＯメモリ２０ｃがエンドポイント部ＥＰＡに接続されている間は、同様に、データ書き込みを行うＦＩＦＯメモリとデータ読み出しを行うＦＩＦＯメモリをライトコントローラ２１ａとリードコントローラ２２ａによってＦＩＦＯメモリ２０ａとＦＩＦＯメモリ２０ｃの間で切り換えながらデータ転送を行う（Ｓ１〜Ｓ１１）。
【００１５】
それに対して、ステップＳ１またはＳ７においてＦＩＦＯメモリ２０ｃがエンドポイント部ＥＰＡに接続されない（ＥＰＢに接続される）と判定された場合、ライトコントローラ２１ｂからの制御信号によってマルチプレクサ２４はエンドポイント部ＥＰＢのライト制御信号を出力し、マルチプレクサ２５はＦＩＦＯメモリ２０ｂに入力するものと同一のエンドポイント部ＥＰＢのライトデータを出力する。また、リードコントローラ２２ｂからの制御信号によってマルチプレクサ２６はリードコントローラ２２ｂから出力されるエンドポイント部ＥＰＢのリード制御信号を出力し、これらはＦＩＦＯメモリ２０ｃに接続される。そのため、エンドポイント部ＥＰＡでは、ライトコントローラ２１ａは共有ＦＩＦＯ制御信号によってライト制御信号をＦＩＦＯメモリ２０ａのみに出力するように設定され、リードコントローラ２２ａはリード制御信号をＦＩＦＯメモリ２０ａのみに出力するように設定される。同時に、エンドポイント部ＥＰＡのリードデータを読み出すＦＩＦＯメモリを選択するマルチプレクサ２３ａの制御信号の値はＦＩＦＯメモリ２０ａのリードデータを出力するように設定される（Ｓ１２）。そして、ＦＩＦＯメモリ２０ａはデータ書き込み用に設定される（Ｓ１３）。
こうして、エンドポイント部ＥＰＡのライト制御信号がライトコントローラ２１ａに入力すると、ライトコントローラ２１ａはＦＩＦＯメモリ２０ａに対してライト制御信号を出力し、ＦＩＦＯメモリ２０ａではライトコントローラ２１ａから入力するライト制御信号に基づいてライトデータをＦＩＦＯメモリに書き込む（Ｓ１４、Ｓ１５でＮｏ）。そして、ＦＩＦＯメモリ２０ａへのデータ書き込みが終了すると（Ｓ１５でＹｅｓ）、ＦＩＦＯメモリ２０ａはデータ読み出し用に設定され（Ｓ１６）、その状態変化を示す信号が読み出し先（シリアル入力エンジン１２またはユーザ回路）に示される。
続いて、読み出し先から、エンドポイント部ＥＰＡに対するリード制御信号がリードコントローラ２２ａに入ると、リードコントローラ２２ａはＦＩＦＯメモリ２０ａに対してリード制御信号を出力し、ＦＩＦＯメモリ２０ａではリードコントローラ２２ａから入力されるリード制御信号に基づいてリードデータをＦＩＦＯメモリから読み出す（Ｓ１７、Ｓ１８でＮｏ、この間ライトデータは書き込み禁止）。
そして、ＦＩＦＯメモリ２０ａからのデータ読み出しが終了し（Ｓ１８でＹｅｓ）、ＦＩＦＯメモリ２０ｃが共有ＦＩＦＯ制御信号でエンドポイント部ＥＰＡに設定されない（ＥＰＢに接続される）場合（Ｓ１でＮｏ）、ＦＩＦＯメモリ２０ｃはＥＰＢに接続された状態を保持する（Ｓ１２）。
こうして、ＦＩＦＯメモリ２０ａは再び書き込み用に設定され（Ｓ１３）、エンドポイント部ＥＰＡのライト制御信号がライトコントローラ２１ａに入力するとライトコントローラ２１ａはＦＩＦＯメモリ２０ａに対してライト制御信号を出力し、ＦＩＦＯメモリ２０ａではライトコントローラ２１ａから入力されるライト制御信号に基づいてライトデータをＦＩＦＯメモリに書き込む（Ｓ１４、Ｓ１５でＮｏ）。以後、ステップＳ１においてＦＩＦＯメモリ２０ｃがエンドポイント部ＥＰＡに接続されない（エンドポイント部ＥＰＢに接続される）と判定される限り、ステップＳ１３〜Ｓ１８を繰り返す。
【００１６】
なお、エンドポイント部ＥＰＢにおいては、ＦＩＦＯメモリ２０ｃがエンドポイント部ＥＰＡに接続される間、ステップＳ１３〜Ｓ１８と同様な動作をＦＩＦＯメモリ２０ｂを用いて実行し、ＦＩＦＯメモリ２０ｃがエンドポイント部ＥＰＢに接続される間は、ステップＳ３〜Ｓ１１と同様の動作をＦＩＦＯメモリ２０ｂとＦＩＦＯメモリ２０ｃを用いて実行する。
こうして、エンドポイント部ＥＰＡ、ＥＰＢが共有するＦＩＦＯメモリ２０ｃの接続されるエンドポイント部が共有ＦＩＦＯコントローラ１７から入力される共有ＦＩＦＯ制御信号によって変更される度に、マルチプレクサ２４、２５、２６によってＦＩＦＯメモリ２０ｃに接続されるエンドポイント部のライト制御、ライトデータ、リード制御の各信号が変更され、それにより、エンドポイント部ＥＰＡ、ＥＰＢにおけるデータ転送方法（ＦＩＦＯメモリ２０ｃ使用の有無）が変更される。
なお、それぞれのエンドポイント部のライト制御信号およびライトデータ信号は、イン転送の場合、Ｉ／Ｏコントローラ１５との間で接続され、アウト転送の場合はシリアル入力エンジン１２との間で接続される。また、エンドポイント部のリード制御信号およびリードデータ信号は、イン転送のエンドポイントの場合、シリアル入力エンジン１２との間で接続され、アウト転送の場合はＩ／Ｏコントローラ１５との間で接続される。
【００１７】
また、図３に示したこの実施例の構成では、エンドポイント部ＥＰＡ、ＥＰＢにおける転送の方向は、両方ともイン転送、両方ともアウト転送、一方がイン転送で他方がアウト転送のいずれも可能で、また、転送の種類の組み合わせにもよらない。さらに、この実施例では、二つのエンドポイント部で一つの共有ＦＩＦＯメモリを持つ場合を示したが、本発明はこのような場合だけに限定されず、他のエンドポイント部と共有しないＦＩＦＯメモリを少なくとも一つ持ちさえすれば、例えば三つのエンドポイント部で一つの共有ＦＩＦＯメモリを持つような構成でもよいし、また、二つのエンドポイント部が二つの共有ＦＩＦＯメモリを持つような構成でもよい。
また、エンドポイント部ＥＰＡ、ＥＰＢが共有するＦＩＦＯメモリ２０ｃの接続されるエンドポイント部の決定については、所定時間が経過する毎に、または、カウンタ２７ａ、２７ｂから入力される各エンドポイント部の送受信成功パケット数の一方が予め設定した値に達する毎に、または所定時間が経過するかあるいは一方が予め設定した送受信成功パケット数に達する毎に、ＥＰＡとＥＰＢの送受信成功パケット数を比較しておこなう。そして、送受信成功パケット数が多いエンドポイント部に共有ＦＩＦＯメモリ２０ｃを接続することで、データ転送量の多いエンドポイント部のデータ転送速度を向上させることができる。
【００１８】
次に、図３に示した共有ＦＩＦＯメモリ２０ｃの接続先エンドポイント部の切換え動作を図３および図５〜図７に示した動作フロー図により説明する。
図５はＦＩＦＯメモリを共有するエンドポイント部のうちの一方の送受信成功パケット数が設定値に達した場合に共有ＦＩＦＯメモリ２０ｃの接続先を変更する場合の動作フローである。
この場合、共有ＦＩＦＯメモリ２０ｃはまず共有ＦＩＦＯコントローラ１７によって初期設定されているエンドポイント部に接続される（Ｓ２１）。続いて、共有ＦＩＦＯコントローラ１７はエンドポイント部ＥＰＡ、ＥＰＢ毎の送受信成功パケット数を計算するカウンタ２７ａ、２７ｂをリセットし（Ｓ２２）、送受信成功パケット数のカウントを開始する（Ｓ２３）。そして、エンドポイント部ＥＰＡの送受信成功パケット数が設定値に達せず（Ｓ２４でＮｏ）、エンドポイント部ＥＰＢの送受信成功パケット数も設定値に達しない限り（Ｓ２５でＮｏ）、カウンタ２７ａ、２７ｂにおけるカウントを続行する（Ｓ２３）。
こうして、エンドポイント部ＥＰＡの送受信成功パケット数が設定値に達した場合（Ｓ２４でＹｅｓ）、共有ＦＩＦＯコントローラ１７は共有ＦＩＦＯメモリ２０ｃの接続先をエンドポイント部ＥＰＡに設定し（Ｓ２７）、その後、ステップＳ２２以下を繰り返す。また、エンドポイント部ＥＰＢの送受信成功パケット数が設定値に達した場合（Ｓ２５でＹｅｓ）、共有ＦＩＦＯコントローラ１７は共有ＦＩＦＯメモリ２０ｃの接続先をエンドポイント部ＥＰＢに設定し（Ｓ２６）、その後、ステップＳ２２以下を繰り返す。
【００１９】
図６は送受信成功パケット数のカウント開始後、設定された一定時間経過後に双方の送受信成功パケット数を比較して共有ＦＩＦＯメモリ２０ｃの接続先を変更する場合の動作フロー図である。
この場合も、共有ＦＩＦＯコントローラ１７は、まず共有ＦＩＦＯメモリ２０ｃを初期設定されたエンドポイント部に接続する（Ｓ３１）。そして、エンドポイント部ＥＰＡ、ＥＰＢ毎の送受信成功パケット数をカウントするカウンタ２７ａ、２７ｂをリセットし、同時に共有ＦＩＦＯコントローラ１７内にある送受信成功パケット数カウント開始後の経過時間を計測するタイムカウンタもリセットし（Ｓ３２）、それぞれ送受信成功パケット数のカウントと経過時間の計測を開始させる（Ｓ３３）。そして、経過時間を計測するタイムカウンタの値が設定値に達しない間は（Ｓ３４でＮｏ）、カウンタ２７ａ、２７ｂによる送受信成功パケット数のカウントとタイムカウンタによる経過時間の計測を続行する。
こうして、経過時間を計測するタイムカウンタの値が設定値に達すると（Ｓ３４でＹｅｓ）、共有ＦＩＦＯコントローラ１７はエンドポイント部ＥＰＡにおける送受信成功パケット数とエンドポイント部ＥＰＢにおける送受信成功パケット数を比較する（Ｓ３５）。そして、エンドポイント部ＥＰＡの送受信成功パケット数の方が多い場合（Ｓ３５でＹｅｓ）、共有ＦＩＦＯコントローラ１７は共有ＦＩＦＯメモリ２０ｃの接続先をエンドポイント部ＥＰＡに設定し（Ｓ３６）、その後、ステップＳ３２以下を繰り返す。また、エンドポイント部ＥＰＢの送受信成功パケット数の方が多い場合は（Ｓ３５でＮｏ）、共有ＦＩＦＯメモリ２０ｃの接続先をエンドポイント部ＥＰＢに設定し（Ｓ３７）、その後、ステップＳ３２以下を繰り返す。
【００２０】
図７はＦＩＦＯメモリを共有するエンドポイント部のうちの一方の送受信成功パケット数が設定値に達した場合、または送受信成功パケット数のカウント開始後設定された一定時間経過後に双方の送受信成功パケット数を比較して共有ＦＩＦＯメモリ２０ｃの接続先を変更する場合の動作フロー図である。
この場合、共有ＦＩＦＯコントローラ１７はまず共有ＦＩＦＯメモリ２０ｃを初期設定されるエンドポイント部に接続する（Ｓ４１）。そして、共有ＦＩＦＯコントローラ１７はエンドポイント部ＥＰＡ、ＥＰＢ毎の送受信成功パケット数をカウントするカウンタ２７ａ、２７ｂをリセットし、同時にＦＩＦＯコントローラ１７内にある送受信成功パケット数カウント開始後の経過時間を計測するタイムカウンタもリセットし（Ｓ４２）、それぞれ転送された送受信成功パケット数のカウントを開始させる（Ｓ４３）。
そして、エンドポイント部ＥＰＡの送受信成功パケット数が設定値に達せず（Ｓ４４でＮｏ）、エンドポイント部ＥＰＢの送受信成功パケット数も設定値に達せず（Ｓ４５でＮｏ）、さらに経過時間を計測するタイムカウンタの値も設定値に達しない（Ｓ４６でＮｏ）間は、カウンタ２７ａ、２７ｂにおける送受信成功パケット数のカウントとタイムカウンタにおける経過時間の計測を続行する。
こうして、エンドポイント部ＥＰＡの送受信成功パケット数が設定値に達した場合（Ｓ４４でＹｅｓ）、共有ＦＩＦＯコントローラ１７は共有ＦＩＦＯメモリ２０ｃの接続先をエンドポイント部ＥＰＡに設定し（Ｓ４９）、その後、ステップＳ４２以下を繰り返す。また、エンドポイント部ＥＰＢの送受信成功パケット数が設定値に達した場合（Ｓ４５でＹｅｓ）、共有ＦＩＦＯコントローラ１７は共有ＦＩＦＯメモリ２０ｃの接続先をエンドポイント部ＥＰＢに設定し（Ｓ４８）、その後、ステップＳ４２以下を繰り返す。
また、経過時間を計測するタイムカウンタの値が設定値に達した場合（Ｓ４６でＹｅｓ）、共有ＦＩＦＯコントローラ１７はエンドポイント部ＥＰＡにおける送受信成功パケット数とエンドポイント部ＥＰＢにおける送受信成功パケット数を比較し（Ｓ４７）、エンドポイント部ＥＰＡの送受信成功パケット数の方が多い場合は（Ｓ４７でＹｅｓ）、共有ＦＩＦＯメモリ２０ｃの接続先をエンドポイント部ＥＰＡに設定し（Ｓ４９）、その後、ステップＳ４２以下を繰り返す。また、エンドポイント部ＥＰＢの送受信成功パケット数の方が多い場合は（Ｓ４７でＮｏ）、共有ＦＩＦＯメモリ２０ｃの接続先をエンドポイント部ＥＰＢに設定し（Ｓ４８）、その後、ステップＳ４２以下を繰り返す。
【００２１】
なお、図５〜図７に示した動作フロー図では、一つのエンドポイント部の送受信成功パケット数が設定値に達する度に、または経過時間が設定値に達する度に、共有ＦＩＦＯメモリ２０ｃの接続先エンドポイント部が前回と異なれば、共有ＦＩＦＯメモリ２０ｃの接続先エンドポイント部を変更したが、例えば同一エンドポイント部の所定時間当たりの送受信成功パケット数が続けて所定回数（例えば２度）多くなってはじめて接続先のエンドポイント部を変更するようにしてもよい。
また、所定の送受信成功パケット数を転送するに要した所要時間を共有メモリを共有する各エンドポイント部について比較し、所要時間の短いエンドポイント部に共通ＦＩＦＯメモリを接続する構成でもよい。
また、送受信成功パケット数の設定値、経過時間の設定値をＵＳＢコントローラ内部のレジスタなどを用いて変更できるようにしてもよい。例えば、経過時間の設定値については、バッファメモリを介して転送された所定時間における送受信成功パケット数が少な過ぎる場合には所定時間を長くし、送受信成功パケット数が多すぎれば所定時間を短くするのである。
また、送受信成功パケット数の設定値は全てのエンドポイント部で同一である必要はない。
また、送受信成功パケット数をエンドポイント部間で比較する代わりに、送受信成功パケット数の差を求め、その差が予め設定した所定値以上になった場合に接続先のエンドポイントを変更するようにしてもよい。
また、所定の送受信成功パケット数を転送するのに要する時間が大幅に変わるような場合は送受信成功パケット数の設定値または経過時間の設定値を変更するようにして共有ＦＩＦＯメモリを接続するエンドポイント部の制御効率を上げることも可能である。
【００２２】
本発明の第３の実施例では、共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部で所定数のデータパケットの送受信に成功した場合、後者のエンドポイント部によりそのとき送受信されたデータパケットのデータサイズが設定された最大の大きさでないならば、共有バッファメモリの接続先を変更するタイミングを遅らせる。以下、図８に示した動作フローに従って、この実施例の動作フローを説明する。
まず、共有ＦＩＦＯコントローラ１７が共有ＦＩＦＯメモリ２０ｃを初期設定されているエンドポイント部に接続する（Ｓ５１）。続いて、共有ＦＩＦＯコントローラ１７はエンドポイント部ＥＰＡ、ＥＰＢ毎の送受信成功パケット数を計算（カウント）するカウンタ２７ａ、２７ｂをリセットし、同時に、共有ＦＩＦＯコントローラ１７内にある共有ＦＩＦＯメモリ２０ｃの接続先変更タイミングを遅らせる延長フラグもリセットし（Ｓ５２）、送受信成功パケット数の計算（カウント）を開始する（Ｓ５３）。そして、ＥＰＡの送受信成功パケット数が設定値（延長フラグがセットされていない状態における初期設定値）に達せず（Ｓ５４でＮｏ）、且つＥＰＢの送受信成功パケット数も初期設定値に達しない（Ｓ５５でＮｏ）間、カウンタ２７ａ、２７ｂは送受信成功パケット数の計算を続行する（Ｓ５３）。
こうして、ＥＰＡの送受信成功パケット数が初期設定値に達した場合（Ｓ５４でＹｅｓ）、共有ＦＩＦＯメモリ２０ｃの接続先変更の延長フラグをセットする条件（図９参照）に該当するか否かを判定し（Ｓ５６）、該当しない場合（Ｓ５６でＮｏ）、共有ＦＩＦＯコントローラ１７は共有ＦＩＦＯメモリ２０ｃをＥＰＡに設定し（Ｓ５７）、Ｓ５２以下を繰り返す。
それに対して、接続先変更の延長フラグをセットする条件に該当する場合（図９に示したように、このときの共有ＦＩＦＯメモリ２０ｃの接続先がＥＰＢであり、最終送受信パケットのデータサイズがＥＰＡの設定最大値より小さく、延長フラグがまだセットされていない場合）は（Ｓ１３１でＹｅｓ）、共有ＦＩＦＯコントローラ１７は延長フラグをセットし（Ｓ５８）、Ｓ５３以下を繰り返す。
【００２３】
また、ＥＰＢの送受信成功パケット数が設定値に達した場合は（Ｓ５５でＹｅｓ）、この場合における、共有ＦＩＦＯメモリ２０ｃの接続先変更の延長フラグをセットする条件（図１０参照）に該当するか否かを判定し（Ｓ５９）、該当しない場合（Ｓ５９でＮｏ）、ＦＩＦＯコントローラ１７は共有ＦＩＦＯメモリ２０ｃをＥＰＢに設定し（Ｓ６０）、Ｓ５２以下を繰り返す。それに対して、延長フラグをセットする条件に該当する場合（図１０に示したように、このときの共有ＦＩＦＯメモリ２０ｃの接続先がＥＰＡであり、最終送受信パケットのデータサイズがＥＰＢの設定最大値より小さく、延長フラグがまだセットされていない場合）は（Ｓ５９でＹｅｓ）、延長フラグをセットし（Ｓ６１）、Ｓ５３以下を繰り返す。
なお、Ｓ５８、Ｓ６１で延長フラグがセットされた後のＳ５４におけるＥＰＡの送受信成功パケット数の設定値、およびＳ５５におけるＥＰＢの送受信成功パケット数の設定値は、初期設定値とは別の延長設定値を用いる。
こうして、この実施例によれば、共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部で所定数のデータパケットの送受信が成功したことにより共有バッファメモリを使用するエンドポイント部を変更する場合、直前に送受信したデータパケットのデータサイズが設定された最大の大きさでないとき、変更タイミングを遅らせるので、例えば共有バッファメモリを使用中のエンドポイント部でおこなわれている大量データ転送途中に別のエンドポイント部によりおこなわれた少量データの転送で、共有バッファメモリの使用が後者のエンドポイント部に切り替えられてしまうのを避けることができ、したがって、データ転送速度をさらに向上させることができる。
【００２４】
本発明の第４の実施例では、所定時間が経過した際に共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部の送受信成功パケット数が多く、且つ、直前にデータパケットを送受信したエンドポイント部がそのとき共有バッファメモリの接続されているエンドポイントであり、そのとき送受信されたデータサイズが設定された最大の大きさの場合に共有バッファメモリの接続先を変更する変更タイミングを遅らせる。以下、図１１に示した動作フローに従って、この実施例の動作フローを説明する。
まず、共有ＦＩＦＯコントローラ１７が共有ＦＩＦＯメモリ２０ｃを初期設定されているエンドポイント部に接続する（Ｓ７１）。続いて、共有ＦＩＦＯコントローラ１７はＥＰＡ、ＥＰＢ毎の送受信成功パケット数を計算（カウント）するカウンタ２７ａ、２７ｂをリセットし、同時に、共有ＦＩＦＯコントローラ１７内にある送受信成功パケット数カウント開始後の経過時間を計算するタイムカウンタおよび共有ＦＩＦＯメモリ２０ｃの接続先を変更する変更タイミングを遅らせる延長フラグもリセットする（Ｓ７２）。そして、各エンドポイント部の送受信成功パケット数の計算と経過時間の計算を開始し（Ｓ７３）、タイムカウンタの値（経過時間）が初期設定値に達しない間（Ｓ７４でＮｏ）、計算（カウント）を続行する。
こうして、タイムカウンタの値（経過時間）が初期設定値に達すると（Ｓ７４でＹｅｓ）、共有ＦＩＦＯコントローラ１７はＥＰＡにおける送受信成功パケット数とＥＰＢにおける送受信成功パケット数とを比較する（Ｓ７５）。そして、ＥＰＡにおける送受信成功パケット数の方が多い場合は（Ｓ７５でＹｅｓ）、図１２に示した共有ＦＩＦＯメモリ２０ｃの接続先変更の延長フラグをセットする条件に該当するか否かを判定し（Ｓ７６）、該当しない場合（Ｓ７６でＮｏ）、共有ＦＩＦＯコントローラ１７は共有ＦＩＦＯメモリ２０ｃをＥＰＡに設定し（Ｓ７７）、Ｓ７２以下を繰り返す。それに対して、延長フラグをセットする条件に該当する場合（図１２に示したように、このときの共有ＦＩＦＯメモリ２０ｃの接続先がＥＰＢであり、最終パケットの送受信がＥＰＢにおいておこなわれ、そのときのデータサイズがＥＰＢの設定最大値であり、延長フラグがまだセットされていない場合）は（Ｓ７６でＹｅｓ）、延長フラグをセットし（Ｓ７８）、Ｓ７３以下を繰り返す。
また、ＥＰＢにおける送受信成功パケット数の方が多い場合は（Ｓ７５でＮｏ）、図１３に示した共有ＦＩＦＯメモリ２０ｃの接続先変更の延長フラグをセットする条件に該当するか否かを判定し（Ｓ７９）、該当しない場合（Ｓ７９でＮｏ）、共有ＦＩＦＯコントローラ１７は共有ＦＩＦＯメモリ２０ｃをＥＰＢに設定し（Ｓ８０）、Ｓ７２以下を繰り返す。それに対して、延長フラグをセットする条件に該当する場合（図１３に示したように、このときの共有ＦＩＦＯメモリ２０ｃの接続先がＥＰＡであり、最終パケットの送受信がＥＰＡにおいておこなわれ、そのときのデータサイズがＥＰＡの設定最大値であり、延長フラグがまだセットされていない場合）は（Ｓ７９でＹｅｓ）、延長フラグをセットし（Ｓ８１）、Ｓ７３以下を繰り返す。
【００２５】
なお、Ｓ７８、Ｓ８１で延長フラグがセットされた後のＳ７４におけるタイムカウンタの値（経過時間）の設定値は延長設定値を用いる。
このように、第４の実施例によれば、所定時間が経過したことにより共有バッファメモリを使用するエンドポイント部を変更する場合、共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部で送受信成功パケットの数が多く、且つ、直前にデータパケットを送受信したエンドポイント部が共有バッファメモリを現在使用しているエンドポイント部であり、且つ、そのデータパケットのデータサイズが設定された最大の大きさの場合に変更タイミングを遅らせるので、一方のエンドポイント部において大量データを送り終わった後に別のエンドポイント部において大量データを送り始めたような場合には変更タイミングを遅らせることにより大量データを送り始めたエンドポイント部の方に共有バッファメモリを引き続き使用させることができ、したがって、データ転送速度をさらに向上させることができる。
【００２６】
本発明の第５の実施例では、共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部で所定数のデータパケットの送受信が成功した場合、そのとき（直前に）送受信したデータパケットのデータサイズが設定された最大の大きさでないときに共有バッファメモリの接続先を変更する変更タイミングを遅らせるとともに、所定時間が経過した際に共有バッファメモリが現在接続されているエンドポイントとは別のエンドポイントのデータパケットの送受信が成功した回数が多く、且つ、直前にデータパケットを送受信したエンドポイント部がそのときに共有バッファメモリの接続されているエンドポイント部であり、そのときに送受信されたデータサイズが設定された最大の大きさの場合に共有バッファメモリの接続先を変更するタイミングを遅らせる。以下、図１４に示した動作フロー従って、この実施例の動作フローを説明する。
まず、共有ＦＩＦＯコントローラ１７が共有ＦＩＦＯメモリ２０ｃを初期設定されているエンドポイント部に接続する（Ｓ９１）。続いて、共有ＦＩＦＯコントローラ１７はＥＰＡ、ＥＰＢ毎の送受信成功パケット数を計算するカウンタ２７ａ、２７ｂをリセットし、同時に、共有ＦＩＦＯコントローラ１７内にある前記タイムカウンタ、および共有ＦＩＦＯメモリ２０ｃの接続先の変更タイミングを遅らせる転送パケット数延長フラグとタイム延長フラグもリセットする（Ｓ９２）。そして、送受信成功パケット数および経過時間の計算（カウント）を開始し（Ｓ９３）、ＥＰＢの送受信成功パケット数が設定値に達せず（Ｓ９４でＮｏ）、ＥＰＡの送受信成功パケット数も設定値に達せず（Ｓ９５でＮｏ）、さらにタイムカウンタの値（経過時間）も設定値に達しない間（Ｓ９６でＮｏ）、カウンタ２７ａ、２７ｂによる送受信成功パケット数の計算とタイムカウンタによる経過時間の計算を続行する。
こうして、ＥＰＢの送受信成功パケット数が初期設定値に達した場合（Ｓ９４でＹｅｓ）、図１６に示した共有ＦＩＦＯメモリ２０ｃの接続先変更の転送パケット数延長フラグをセットする条件に該当するか否かを判定し（Ｓ９７）、該当しない場合（Ｓ９７でＮｏ）、共有ＦＩＦＯコントローラ１７は共有ＦＩＦＯメモリ２０ｃをＥＰＢに設定し（Ｓ９８）、Ｓ９２以下を繰り返す。それに対して、転送パケット数延長フラグをセットする条件に該当する場合は（Ｓ９７でＹｅｓ）、転送パケット数延長フラグをセットし（Ｓ９９）、Ｓ９３以下を繰り返す。
【００２７】
また、ＥＰＡの送受信成功パケット数が設定値に達した場合（Ｓ９５でＹｅｓ）、図１５に示した共有ＦＩＦＯメモリ２０ｃの接続先変更の転送パケット数延長フラグをセットする条件に該当するか否かを判定し（Ｓ１００）、該当しない場合（Ｓ１００でＮｏ）、共有ＦＩＦＯコントローラ１７は共有ＦＩＦＯメモリ２０ｃをＥＰＡに設定し（Ｓ１０１）、Ｓ９２以下を繰り返す。それに対して、転送パケット数延長フラグをセットする条件に該当する場合は（Ｓ１００でＹｅｓ）、転送パケット数延長フラグをセットし（Ｓ１０２）、Ｓ９３以下を繰り返す。
また、タイムカウンタの値（経過時間）が初期設定値に達した場合（Ｓ９６でＹｅｓ）、共有ＦＩＦＯコントローラ１７はＥＰＡにおける送受信成功パケット数とＥＰＢにおける送受信成功パケット数を比較する（Ｓ１０３）。そして、ＥＰＡの送受信成功パケット数の方が多い場合は（Ｓ１０３でＹｅｓ）、図１７に示した共有ＦＩＦＯメモリ２０ｃの接続先変更のタイム延長フラグをセットする条件に該当するか否かを判定し（Ｓ１０４）、該当しない場合（Ｓ１０４でＮｏ）、共有ＦＩＦＯコントローラ１７は共有ＦＩＦＯメモリ２０ｃをＥＰＡに設定し（Ｓ１０１）、Ｓ９２以下を繰り返す。それに対して、タイム延長フラグをセットする条件に該当する場合は（Ｓ１０４でＹｅｓ）、延長フラグをセットし（Ｓ１０５）、Ｓ９３以下を繰り返す。
また、ＥＰＢの送受信成功パケット数の方が多い場合は（Ｓ１０３でＮｏ）、図１８に示した共有ＦＩＦＯメモリ２０ｃの接続先変更のタイム延長フラグをセットする条件に該当するか否かを判定し（Ｓ１０６）、該当しない場合（Ｓ１０６でＮｏ）、共有ＦＩＦＯコントローラ１７は共有ＦＩＦＯメモリ２０ｃをＥＰＢに設定し（Ｓ９８）、Ｓ９２以下を繰り返す。それに対して、タイム延長フラグをセットする条件に該当する場合は（Ｓ１０６でＹｅｓ）、タイム延長フラグをセットし（Ｓ１０７）、Ｓ９３以下を繰り返す。
このように、第５の実施例によれば、第３または第４の実施例に比べて変更タイミングを遅らせる条件が多面的になり、その分だけデータ転送速度をさらに向上させることができる。
なお、Ｓ９９、Ｓ１０２で転送パケット数延長フラグがセットされた後のＳ９４におけるＥＰＢの送受信成功パケット数の設定値、Ｓ９５におけるＥＰＡの送受信成功パケット数の設定値、およびＳ１０５、Ｓ１０７でタイム延長フラグがセットされた後のＳ９６におけるタイムカウンタの値（経過時間）の設定値は延長設定値を用いる。
【００２８】
また、図８、図１１、図１４に示した動作フローでは、送受信成功パケット数が設定値に達するエンドポイント部、または経過時間が設定値に達するエンドポイント部が変わる度に共有ＦＩＦＯメモリ２０ｃの接続先のエンドポイント部を変更しているが、例えば同一エンドポイント部の送受信成功パケット数が設定した複数回続けて多くなった場合に接続先のエンドポイント部を変更するようにしてもよい。
また、送受信成功パケット数のエンドポイント間での差が予め設定した所定値以上大きくなった場合に接続先のエンドポイント部を変更するようにしてもよい。
さらに、送受信成功パケット数および経過時間など、予め設定しておく値をＵＳＢコントローラ内部のレジスタなどを用いることにより変更できるようにしてもよい。また、送受信成功パケット数の設定値はすべてのエンドポイント部で同一である必要はない。
また、所定数のデータパケットの送受信が成功するのに要する時間が大幅に変わるような場合は比較するための送受信成功パケット数の設定値または経過時間の設定値を変更するようにして共有ＦＩＦＯメモリを接続するエンドポイント部の制御効率を上げることをしてもよい。
さらに、前記した第３〜第５の実施例において、延長フラグを用いた共有ＦＩＦＯメモリ２０ｃの接続先のエンドポイント変更の延長回数は１回であるが、複数のフラグを用いたり、フラグの代わりにカウンタを用いたりすることにより延長回数を複数回としてもよい。
【００２９】
【発明の効果】
以上説明したように、本発明によれば、請求項１記載の発明では、ＵＳＢ規格に準拠したデータ通信をおこなうデータ通信システムにおいて、一つのエンドポイント部に対してバッファメモリを複数用意し、その複数のバッファメモリのうちの一つ以上を他のエンドポイント部と共有する共有バッファメモリとし、その共有バッファメモリを使用するエンドポイント部を決定する際、バッファメモリを共有するエンドポイント部間でバッファメモリを介して転送された送受信成功パケットの数が比較され、その結果により共有バッファメモリを用いるエンドポイント部が決定されるので、バッファメモリを多く使用するエンドポイント部に共有バッファメモリを与えることができ、したがって、回路規模を小さく抑えつつ、特定のエンドポイント部でなく、各エンドポイント部のデータ転送速度を一様に向上させることができる。
また、請求項２記載の発明では、請求項１記載の発明において、共有バッファメモリを共有するエンドポイント部のいずれかが所定数のデータパケットの送受信に成功する毎に送受信成功パケットの数が比較されるので、請求項１記載の発明の効果を容易に実現することができる。
また、請求項３記載の発明では、請求項１記載の発明において、所定時間が経過する毎に送受信成功パケットの数が比較されるので、同様に、請求項１記載の発明の効果を容易に実現することができる。
また、請求項４記載の発明では、請求項１記載の発明において、共有バッファメモリを共有するエンドポイント部のいずれかが所定数のデータパケットの送受信に成功するか、または所定時間が経過するかどちらかの条件を満たす毎に送受信成功パケットの数が比較されるので、より効果的に請求項１記載の発明の効果を得ることができる。
また、請求項５記載の発明では、請求項２または請求項４記載の発明において、送受信に成功したデータパケット数である前記所定数が変更できるので、共有バッファメモリを与える先のエンドポイント部を変更するタイミングを状況に応じて適切に変更することができる。
また、請求項６記載の発明では、請求項５記載の発明において、共有バッファメモリを共有するエンドポイント部のいずれかが所定数のデータパケットの送受信に成功するのに要した時間に応じて前記所定数が自動的に変更されるので、共有バッファメモリを与える先のエンドポイント部を変更するタイミングを状況に応じてさらに適切に且つ容易に変更することができる。
【００３０】
また、請求項７記載の発明では、請求項３または請求項４記載の発明において、前記所定時間を変更することができるので、同様に、共有バッファメモリを与える先のエンドポイント部を変更するタイミングを状況に応じて適切に変更することができる。
また、請求項８記載の発明では、請求項７記載の発明において、前記所定時間当たりの送受信成功パケットの数に応じて所定時間が自動的に変更されるので、共有バッファメモリを与える先のエンドポイント部を変更するタイミングを状況に応じてさらに適切に且つ容易に変更することができる。
また、請求項９記載の発明では、請求項１乃至請求項８のいずれか１項に記載の発明において、共有バッファメモリを使用するエンドポイント部の変更タイミングになったとき、その直前に送受信をおこなったエンドポイント部とそのときのデータパケットのデータサイズとの組み合わせに応じてその変更タイミングを遅らせるので、例えば一方のエンドポイント部において大量データを送り終わった後に別のエンドポイント部において大量データを送り始めたような場合には変更タイミングを遅らせて大量データを送り始めたエンドポイント部の方に共有バッファメモリを引き続き使用させることが可能になり、したがって、データ転送速度をさらに向上させることができる。
また、請求項１０記載の発明では、請求項９記載の発明において、共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部で所定数のデータパケットの送受信が成功したことにより共有バッファメモリを使用するエンドポイント部を変更する場合、直前に送受信したデータパケットのデータサイズが設定された最大の大きさでないとき、前記変更タイミングを遅らせるので、例えば共有バッファメモリを使用中のエンドポイント部でおこなわれている大量データ転送途中に別のエンドポイント部によりおこなわれた少量データの転送で、共有バッファメモリの使用が後者のエンドポイント部に切り替えられてしまうのを避けることができ、したがって、データ転送速度をさらに向上させることができる。
【００３１】
また、請求項１１記載の発明では、請求項９記載の発明において、所定時間が経過したことにより共有バッファメモリを使用するエンドポイント部を変更する場合、共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部で前記送受信成功パケットの数が多く、且つ、直前にデータパケットを送受信したエンドポイント部が共有バッファメモリを現在使用しているエンドポイント部であり、且つ、そのデータパケットのデータサイズが設定された最大の大きさの場合に前記変更タイミングを遅らせるので、請求項９記載の発明の効果と同様に、一方のエンドポイント部において大量データを送り終わった後に別のエンドポイント部において大量データを送り始めたような場合には変更タイミングを遅らせることにより大量データを送り始めたエンドポイント部の方に共有バッファメモリを引き続き使用させることができ、したがって、データ転送速度をさらに向上させることができる。
また、請求項１２記載の発明では、請求項９記載の発明において、バッファメモリを共有するエンドポイント部のいずれかが所定数のデータパケットの送受信に成功したか、または所定時間が経過したかして共有バッファメモリを使用するエンドポイント部を変更する場合、共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部で所定数のデータパケットの送受信が成功し、且つ、直前に送受信したデータパケットのデータサイズが設定された最大の大きさでないとき、前記変更タイミングを遅らせるとともに、前記所定時間が経過した際に共有バッファメモリを現在使用しているエンドポイント部とは別のエンドポイント部の送受信成功パケットの数が多く、且つ、直前にデータパケットを送受信したエンドポイント部が共有バッファメモリを現在使用しているエンドポイント部であり、その送受信時のデータサイズが設定された最大の大きさのとき、前記変更タイミングを遅らせるので、変更タイミングを遅らせる条件が多面的になり、その分だけ請求項９記載の効果を効果的に実現することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施例を示すＵＳＢ通信システム要部の構成ブロック図。
【図２】本発明の第１の実施例を示すＵＳＢ通信システム要部の他の構成ブロック図。
【図３】本発明の第２の実施例を示すＵＳＢ通信システム要部の構成ブロック図。
【図４】本発明の第２の実施例を示すＵＳＢ通信システム要部の動作フロー図。
【図５】本発明の第２の実施例を示すＵＳＢ通信システム要部の他の動作フロー図。
【図６】本発明の第２の実施例を示すＵＳＢ通信システム要部の他の動作フロー図。
【図７】本発明の第２の実施例を示すＵＳＢ通信システム要部の他の動作フロー図。
【図８】本発明の第３の実施例を示すＵＳＢ通信システム要部の動作フロー図。
【図９】本発明の第３の実施例を示すＵＳＢ通信システム要部の説明図。
【図１０】本発明の第３の実施例を示すＵＳＢ通信システム要部の他の説明図。
【図１１】本発明の第４の実施例を示すＵＳＢ通信システム要部の動作フロー図。
【図１２】本発明の第４の実施例を示すＵＳＢ通信システム要部の説明図。
【図１３】本発明の第４の実施例を示すＵＳＢ通信システム要部の他の説明図。
【図１４】本発明の第５の実施例を示すＵＳＢ通信システム要部の動作フロー図。
【図１５】本発明の第５の実施例を示すＵＳＢ通信システム要部の説明図。
【図１６】本発明の第５の実施例を示すＵＳＢ通信システム要部の他の説明図。
【図１７】本発明の第５の実施例を示すＵＳＢ通信システム要部の他の説明図。
【図１８】本発明の第５の実施例を示すＵＳＢ通信システム要部の他の説明図。
【図１９】従来技術の一例を示すＵＳＢ通信システムの接続概念図。
【図２０】従来技術の一例を示すＵＳＢ通信システム要部の構成ブロック図。
【図２１】従来技術の一例を示すＵＳＢ通信システム要部の他の構成ブロック図。
【図２２】従来技術の一例を示すＵＳＢ通信システム要部の他の構成ブロック図。
【符号の説明】
１  ＵＳＢホスト装置、２  ハブ、３  デバイス、４  ＵＳＢバス、６  ＵＳＢコントローラ、１１  ＵＳＢトランシーバ、１２  シリアル入力エンジン、１３  エンドポイント部、１５  Ｉ／Ｏコントローラ、１７  共有ＦＩＦＯコントローラ、２０  ＦＩＦＯメモリ、２１  ライトコントローラ、２２  リードコントローラ、２３〜２６  マルチプレクサ、２７  カウンタ
【図１】
2004280199.tif 000003
【図２】
2004280199.tif 000004
【図３】
2004280199.tif 000005
【図４】
2004280199.tif 000006
【図５】
2004280199.tif 000007
【図６】
2004280199.tif 000008
【図７】
2004280199.tif 000009
【図８】
2004280199.tif 000010
【図９】
2004280199.tif 000011
【図１０】
2004280199.tif 000012
【図１１】
2004280199.tif 000013
【図１２】
2004280199.tif 000014
【図１３】
2004280199.tif 000015
【図１４】
2004280199.tif 000016
【図１５】
2004280199.tif 000017
【図１６】
2004280199.tif 000018
【図１７】
2004280199.tif 000019
【図１８】
2004280199.tif 000020
【図１９】
2004280199.tif 000021
【図２０】
2004280199.tif 000022
【図２１】
2004280199.tif 000023
【図２２】
2004280199.tif 000024