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