(57)【要約】【課題】ＵＳＢのエンドポイント・メモリを柔軟に制御する装置および方法を得る。【解決手段】ＵＳＢ装置内のエンドポイント・メモリを柔軟に制御する装置および方法を開示する。一実施形態では、この方法は、第１のエンドポイント番号を含んでいる第１のトークン・パケットをＵＳＢホストから受けるＵＳＢ装置を含んでいる。第１のエンドポイント番号は、ＵＳＢ装置内の第１のデータ・バッファに対応するメモリ内の第１のタグに保存される。その後でＵＳＢ装置は、エンドポイント・データを有するデータ・パケットをＵＳＢホストから受ける。データ・パケットのエンドポイント・データは、第１のデータ・バッファに保存される。【選択図】  図２
2004157966.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ装置が第１のエンドポイント番号を有する第１のトークン・パケットをＵＳＢホストから受けることと、
前記第１のエンドポイント番号を第１のデータ・バッファに対応する第１のタグに保存することと、
前記ＵＳＢ装置が第１のエンドポイント・データを有する第１のデータ・パケットを前記ＵＳＢホストから受けることと、
前記第１のデータ・パケットの中の第１のエンドポイント・データを前記第１のデータ・バッファに保存することとを備えるエンドポイント・メモリ制御方法。
【請求項２】
請求項１に記載のエンドポイント・メモリ制御方法において、
前記第１のエンドポイント番号を第２のデータ・バッファに対応する第２のタグに保存することと、
前記第１のデータ・パケットの中の第１のエンドポイント・データを前記第２のデータ・バッファに保存することとを更に備えるエンドポイント・メモリ制御方法。
【請求項３】
請求項２に記載のエンドポイント・メモリ制御方法において、
第１の順序番号を前記第１のタグおよび前記第２のタグの各々に保存することを更に備えるエンドポイント・メモリ制御方法。
【請求項４】
請求項３に記載のエンドポイント・メモリ制御方法において、
第１の副順序番号を前記第１のタグに保存することと、
第２の副順序番号を前記第２のタグに保存することとを更に備えるエンドポイント・メモリ制御方法。
【請求項５】
請求項１に記載のエンドポイント・メモリ制御方法において、
前記ＵＳＢ装置が前記第２のエンドポイント番号を有する第２のトークン・パケットを前記ＵＳＢホストから受けることと、
前記第２のエンドポイント番号を第２のデータ・バッファに対応する第２のタグに保存することと、
前記ＵＳＢ装置が第２のエンドポイント・データを有する第２のデータ・パケットを前記ＵＳＢホストから受けることと、
前記第２のデータ・パケットの中の第２のエンドポイント・データを前記第２のデータ・バッファに保存することとを更に備えるエンドポイント・メモリ制御方法。
【請求項６】
請求項１に記載のエンドポイント・メモリ制御方法において、
前記ＵＳＢ装置が第２のエンドポイント番号を有する第２のトークン・パケットを前記ＵＳＢホストから受けることと、
前記第１のタグの保存内容を前記第２のエンドポイント番号とすることと、
前記ＵＳＢ装置が第２のエンドポイント・データを有する第２のデータ・パケットを前記ＵＳＢホストから受けることと、
前記第１のデータ・バッファの保存内容を前記第２のデータ・パケットの中の第２のエンドポイント・データとすることとを更に備えるエンドポイント・メモリ制御方法。
【請求項７】
データを保存するための複数のデータ・バッファと、
１つまたは複数のメモリ装置に保存され、前記複数のデータ・バッファにそれぞれ対応する複数のタグと、
エンドポイント番号を有するトークン・パケットをＵＳＢホストから受ける手段と、
第１のデータ・バッファに対応する第１のタグに前記エンドポイント番号を保存する手段と、
データを含んでいるデータ・パケットを前記ＵＳＢホストから受ける手段と、
前記データ・パケットの中のデータを前記第１のデータ・バッファに保存する手段とを備えるエンドポイント・メモリ制御装置。
【請求項８】
データを保存するための複数のデータ・バッファと、前記複数のデータ・バッファにそれぞれ対応する複数のタグと、ＵＳＢ装置内で実行できる命令を保存する命令メモリとを備え、
前記命令が実行される時に、第１のエンドポイント番号を前記複数のタグのうちの第１のタグに保存することと、第１のエンドポイント・データを前記複数のデータ・バッファのうちの前記第１のタグに対応する第１のデータ・バッファに保存することとを備えた方法が実行されるＵＳＢ装置。
【請求項９】
請求項８に記載のＵＳＢ装置において、
前記方法は、前記第１のエンドポイント番号を前記複数のタグのうちの第２のタグに保存することと、第１のエンドポイント・データを前記複数のデータ・バッファのうちの前記第２のタグに対応する第２のデータ・バッファに保存することとを更に備えるＵＳＢ装置。
【請求項１０】
請求項８に記載のＵＳＢ装置において、
前記方法は、前記第１のタグの保存内容が第２のエンドポイント番号となるように前記第２のエンドポイント番号を前記第１のタグに保存することと、前記第１のデータ・バッファの保存内容が第２のエンドポイント・データとなるように前記第２のエンドポイント・データを前記第２のデータ・バッファに保存することとを更に備えるＵＳＢ装置。
【請求項１１】
データを保存するための複数のデータ・バッファと、
１つまたは複数のメモリ装置に保存され、前記複数のバッファにそれぞれ対応する複数のタグと、
前記複数のタグの各々を修正するタグ制御器回路とを備えるＵＳＢ装置。
【請求項１２】
請求項１１に記載のＵＳＢ装置において、
第１のエンドポイント番号を有する第１のトークン・パケットをＵＳＢホストから受けるために構成されているエンドポイント制御器回路を更に備え、
前記タグ制御器回路は、前記第１のトークン・パケットを受ける前記エンドポイント制御器に応答して、前記第１のエンドポイント番号を前記複数のタグの中の第１のタグの中のフィールドに保存するように構成されているＵＳＢ装置。
【請求項１３】
請求項１２に記載のＵＳＢ装置において、
前記エンドポイント制御器回路は、第１のエンドポイント・データを有する第１のデータ・パケットを前記ＵＳＢホストから受けるために構成され、
前記エンドポイント制御器回路は、前記第１のデータ・パケットの中の第１のエンドポイント・データを前記複数のデータ・バッファのうちの第１のデータ・バッファに保存するために構成され、前記第１のデータ・バッファは前記第１のタグに対応するＵＳＢ装置。
【請求項１４】
請求項１２に記載のＵＳＢ装置において、
前記タグ制御器回路は、前記第１のトークン・パケットを受けるエンドポイント制御器回路に応答して、前記第１のエンドポイント番号を前記複数のタグのうちの第２のタグの中のフィールドに保存するために構成され、
前記エンドポイント制御器回路は、前記第１のデータ・パケットの中の第１のエンドポイント・データを前記複数のデータ・バッファのうちの第２のデータ・バッファに保存するために構成され、
前記第２のデータ・バッファは第２のタグに対応するＵＳＢ装置。
【請求項１５】
請求項１２に記載のＵＳＢ装置において、
前記エンドポイント制御器回路は、第２のエンドポイント番号を有する第２のトークン・パケットを前記ＵＳＢホストから受けるために構成され、
前記タグ制御器回路は、前記第２のトークン・パケットを受けるエンドポイント制御器回路に応答して、前記第１のタグのフィールド内の保存内容を前記第２のエンドポイント番号とするために構成されているＵＳＢ装置。
【請求項１６】
請求項１５に記載のＵＳＢ装置において、
前記エンドポイント制御器回路は、第２のエンドポイント・データを有する第２のデータ・パケットを前記ＵＳＢホストから受けるために構成され、
前記エンドポイント制御器回路は、前記第１のデータ・バッファに保存されている保存内容を前記第２のデータ・パケットの中の第２のエンドポイント・データにするために構成されているＵＳＢ装置。
【請求項１７】
ＵＳＢ装置のメモリの中にありかつ各々が複数のビットを有しかつ前記ＵＳＢ装置の複数のデータ・バッファにそれぞれ対応する複数のタグに対して、アクセスする第１の回路と、
前記複数のタグのアクセスに応答して前記複数のタグのうちの１つのタグの中の第１のビットの状態を切り替える第２の回路と、
ＵＳＢホストからデータを受ける前記ＵＳＢ装置に応答して複数のタグのうちの１つのタグに対応するデータ・バッファにデータを保存する第３の回路とを備えるＵＳＢ装置。
【請求項１８】
プロセッサと、複数のデータ・バッファと、複数のタグとを備えたＵＳＢ装置が、第１のエンドポイント番号を有する第１のトークン・パケットを受ける前記ＵＳＢ装置に応答して第１のタグに前記第１のを保存することと、第１のエンドポイント・データを有する第１のデータ・パケットを受ける前記ＵＳＢ装置に応答して前記第１のエンドポイント・データを前記第１のタグに対応する第１のデータ・バッファに保存することとを備えている方法を実行するための命令を保存する記憶媒体。
【請求項１９】
請求項１８に記載の記憶媒体において、
前記方法は、前記第１のエンドポイント番号が前記第１のタグに保存された後で、前記第１のエンドポイント番号を、前記第２のデータ・バッファに対応する第２のタグに保存することと、前記第１のデータ・パケットの中の第１のエンドポイント・データを前記第２のタグに対応する前記第２のデータ・バッファに保存することと、を更に備える記憶媒体。
【請求項２０】
請求項１８に記載の記憶媒体において、
前記方法は、第２のエンドポイント番号を有する第２のトークン・パケットを受ける前記ＵＳＢ装置に応答して第２のタグに前記第２のエンドポイント番号を保存することと、第２のエンドポイント・データを有する第２のデータ・パケットを受ける前記ＵＳＢ装置に応答して前記第２のエンドポイント・データを、前記第２のタグに対応する第２のデータ・バッファに保存することと、を更に備える記憶媒体。
【請求項２１】
請求項１８に記載の記憶媒体において、
前記方法は、第２のエンドポイント番号を有する第２のトークン・パケットを受ける前記ＵＳＢ装置に応答して、前記第１のタグの保存内容を前記第２のエンドポイント番号にすることと、
第２のエンドポイント・データを有する第２のデータ・パケットを受ける前記ＵＳＢ装置に応答して、前記第１のデータ・バッファの保存内容を前記第２のエンドポイント・データにすることと、を更に備える記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ユニバーサル・シリアル・バス（ＵＳＢ：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を備えた装置とその制御方法に関する。
【０００２】
【従来の技術】
ＵＳＢネットワークは周知技術である。ＵＳＢネットワークは、１つまたは複数のＵＳＢ装置（たとえば、プリンタ、スキャナ、ファクシミリ等）で構成されており、そのＵＳＢ装置は、ＵＳＢホスト（たとえば、デスクトップコンピュータ）に直接に、またはハブを介してＵＳＢホストに間接に接続される。
【０００３】
いかなるＵＳＢネットワークも、ＵＳＢホストは１つだけしか存在しない。ＵＳＢホストとＵＳＢ装置の間の通信は、多数のＵＳＢ装置をＵＳＢホストに取り付けるハブを介して行ってもよい。
【０００４】
ＵＳＢ装置は、ＵＳＢ接続ケーブルを介してＵＳＢホストと通信する多くの機能を実現できる。多機能ＵＳＢ装置は、複合ＵＳＢ装置として知られている。複合ＵＳＢ装置の一例は、ファクシミリ、プリンタ、またはスキャナとして機能できるＵＳＢ装置である。ＵＳＢハブは、複合ＵＳＢ装置に含まれてもよい。
【０００５】
ＵＳＢホストとＵＳＢ装置の間の通信は、ＵＳＢ仕様により定義される。ＵＳＢ仕様は、パーソナル・コンピュータ（ＰＣ）産業界によって開発された。ＵＳＢ仕様は、１９９８年９月２３日に出版されたユニバーサル・シリアル・バス仕様の改訂版１．１と、２０００年４月２７日に出版されたユニバーサル・シリアル・バス仕様の改訂版２．０とに、詳細に記されている。ＵＳＢ仕様の内容は、それらの全てを参照することによりここに包含される。
【０００６】
ＵＳＢホストとＵＳＢ装置は、ＵＳＢ接続ケーブルを介して送信されるバス・トランザクションを介して通信する。ＵＳＢネットワークにおける全てのバス・トランザクションは、ＵＳＢホストとＵＳＢ装置との間で、３つまでのパケットの伝送を含む。その３つのパケットは、トークン・パケット、データ・パケット、および任意に選択できるトランザクション完了パケットである。
【０００７】
各トランザクションは、トランザクションのタイプとトランザクションの向き（すなわち、データがＵＳＢホストからＵＳＢ装置へ送られるか、またはデータがＵＳＢ装置からＵＳＢホストへ送られるか）とＵＳＢ装置のアドレスとエンドポイント番号とを記述しているＵＳＢトークン・パケットを、ＵＳＢホストが、計画に基づいて送るときに始まる。
【０００８】
各ＵＳＢ装置は、それぞれのエンドポイント番号により示された１つまたは複数のエンドポイントを有する。エンドポイントというのは、データ・トランザクションのデータの最終の発信元またはデータ・トランザクションのデータの最終の到着先である。
【０００９】
トークン・パケットによりアドレスされたＵＳＢ装置は、そのトークン・パケットの適切なアドレス・フィールドを復号することにより自身を選択する。
【００１０】
トークン・パケットが送信された後で、ＵＳＢホストからＵＳＢ装置へ、またはＵＳＢ装置からＵＳＢホストへ、データはデータ・パケットで転送される。
【００１１】
データ転送の向きは、トークン・パケットで指定されている。
【００１２】
その後で、トランザクションのデータの到着先は、データ転送が成功したかどうかを示すトランザクション完了パケットを送る。
【００１３】
ＵＳＢは、信頼できる通信を可能にしている。
【００１４】
ＵＳＢは、誤りを検出でき、トランザクションのタイプを基にして誤りを復旧できる。制御トランザクション・タイプ、割り込みトランザクション・タイプおよびバルクトランザクション・タイプなどのほとんどのトランザクションは、データの完全性を求め、かつ誤り検出を用い、さらに再試行を行う。
【００１５】
等時性トランザクションは、時間特性の配信に起因する再試行を用いず、訂正されていない誤りがより多く生ずることを容認する。したがって、トランザクション完了終了パケットは、等時性トランザクションの終了が成功であるかを確認するために用いられない。
【００１６】
図７は、単一のＵＳＢ装置１４にＵＳＢ接続ケーブル１６を介して接続されているＵＳＢホスト１２で構成されているＵＳＢネットワーク１０を示す。
【００１７】
説明のために、ＵＳＢ装置１４は、任意の時点でファクシミリ、プリンタ、またはスキャナとして動作できる複合装置であると仮定する。更に、ＵＳＢ装置１４はＮ個のエンドポイントを含み、そのＮ個のエンドポイントは、ＵＳＢホスト１２に対するデータ・トランザクションのデータの最終の発信元、またはデータ・トランザクションのデータの最終の到着先である。
【００１８】
本発明は、ＵＳＢホストと単一のＵＳＢ装置を有するＵＳＢネットワークを参照して説明されているが、本発明はそれに限定されるものではないことが理解される。
【００１９】
図８は、図７に示されているＵＳＢ装置１４内の回路１８の関連する構成要素を示す。更に詳しくいえば、図８は、エンドポイント制御器２２とバックエンド・インタフェース２４との間に結合されているメモリ（たとえば、ＲＡＭ）２０をブロック図で示す。
【００２０】
エンドポイント制御器２２とバックエンド・インタフェース２４は、ＵＳＢ装置１４内に設けられている１つまたは複数のプロセッサ（不図示）で実行するソフトウェアの形をとることができる。
【００２１】
エンドポイント制御器２２とバックエンド・インタフェース２４は、メモリ２０内のデータをアクセスする（読出しまたは書込み）ために構成されている。
【００２２】
エンドポイント制御器２２は、ＵＳＢホスト１２（図８には示されていない）に結合されており、  データ・パケットを含むパケットをＵＳＢホスト１２から受けたり、データ・パケットを含むパケットを送ったりするために構成されている。
【００２３】
バックエンド・インタフェース２４は、ＵＳＢ装置１４の各エンドポイントと通信し、エンドポイントとの間でデータを送受信するために構成されている。
【００２４】
メモリ２０は、ＵＳＢ装置１４のエンドポイント１〜Ｎにそれぞれ対応するエンドポイント・バッファ１〜Ｎと記されたエンドポイント・バッファの群として構成されている。エンドポイント・バッファ１〜Ｎは、ＵＳＢ装置１４のエンドポイントとＵＳＢホスト１２との間で伝送されるエンドポイントのデータをそれぞれ一時的に保存する。
【００２５】
実例で説明すると、エンドポイント制御器２２は、ＵＳＢホスト１２によって後で送られる新しいデータの最終の処理場所としてＵＳＢ装置１４のエンドポイント２を指定しているトークン・パケットを受けることがある。
【００２６】
トークン・パケットを受けると、エンドポイント・バッファ２に保存するためのエンドポイント２のデータを含んでいるデータ・パケットが、ＵＳＢホスト１２から送られる。
【００２７】
エンドポイント制御器２２は、エンドポイント・バッファ２が新しいデータを受けるために十分な記憶容量を有するかどうかを判定する。
【００２８】
エンドポイント制御器２２が、エンドポイント・バッファ２は新しいデータを受けるために十分な記憶容量を有すると判定すると、エンドポイント制御器２２は、確認応答パケットをＵＳＢホスト１２へ送り返す。
【００２９】
それに応答して、ＵＳＢホスト１２から、エンドポイント・バッファ２に保存するためのエンドポイント２のデータを含んでいるデータ・パケットが送られる。
【００３０】
その後で、エンドポイント制御器２２は、データ転送の成功またはデータ転送の失敗の状態を示す確認応答パケットをＵＳＢホスト１２へ送り返す。
【００３１】
ＵＳＢホスト１２からエンドポイント制御器２２へのデータ・トランザクションが終了すると、エンドポイント制御器２２は、エンドポイント・バッファ２が新しいデータを含んでいることをバックエンド・インタフェース２４に警報する。
【００３２】
最後に、バックエンド・インタフェース２４は、エンドポイント・バッファ２に含まれているデータを読出して、それをバックエンドに設けられているプロセッサまたはＵＳＢ装置１４の任意のアプリケーション専用ハードウェアへ送る。
【００３３】
【発明が解決しようとする課題】
ＵＳＢ装置１４内の各エンドポイントは、メモリ２０内の特定のエンドポイント・バッファが固定的に割当てられている。
【００３４】
各エンドポイント・バッファのサイズは、予め決定されている。バッファのサイズがひとたび決定されると、バッファのサイズは変更できない。ＵＳＢホスト１２とＵＳＢ装置１４の１つのエンドポイントとの間で伝送されるデータ・パケットのサイズは変更できる。
【００３５】
メモリ２０内の各エンドポイント・バッファのサイズは、ＵＳＢホスト１２とＵＳＢ装置１４のエンドポイントとの間で伝送される最大のデータ・パケットのデータを保存できるものでなければならない。
【００３６】
エンドポイント・バッファが、トランザクションのデータを保存するために十分なサイズを有していないと、データ・トランザクションを終了できない。
【００３７】
また、エンドポイントに割当てられているバッファを大きくすると、バッファ内に存在するデータの読出しに遅延が生じ、その遅延の結果、そのバッファは、新しいデータを保存するために利用できるメモリ空間をほとんど有さないものとなる可能性がある。
【００３８】
エンドポイント・バッファがトランザクションのデータを保存するために十分な空間を持っていないとすると、データ・トランザクションを二度と終了できなくなる。
【００３９】
これを避けるために、エンドポイント・バッファは、通常、過大なサイズにされるか、または、ＵＳＢホスト１２とＵＳＢ装置１４のエンドポイントとの間で伝送されるトランザクションの最大パケットサイズを保存するためのサイズにされる。
【００４０】
しかし、ＵＳＢ装置１４を製造コストは、メモリ２０のサイズに比例する。
【００４１】
したがって、メモリ２０内のエンドポイント・バッファ１〜Ｎのサイズが大きくなるほど、メモリ２０の製造コストが増大し、かつＵＳＢ装置１４の製造コストが増大する。
【００４２】
したがって、大容量メモリ２０を持つＵＳＢ装置を設計することと安価なＵＳＢ装置を設計することは対立する。
【００４３】
【課題を解決するための手段】
ＵＳＢ装置内のエンドポイント・メモリをフレキシブルに制御する方法および装置が開示されている。
【００４４】
本発明は、ＵＳＢ装置内のメモリの制御について説明するが、本発明はＵＳＢ装置内での使用に限定すべきではない。
【００４５】
一実施形態では、本発明の方法は、第１のエンドポイント番号を含んでいる第１のトークン・パケットをＵＳＢホストから受けるＵＳＢ装置を含む。
【００４６】
第１のエンドポイント番号は、ＵＳＢ装置内の第１のデータ・バッファに対応するメモリ内の第１のタグに保存される。
【００４７】
その後、ＵＳＢ装置は、エンドポイント・データを有するデータ・パケットをＵＳＢホストから受ける。
【００４８】
データ・パケットの中のエンドポイント・データは第１のデータ・バッファに保存される。
【００４９】
【発明の実施の形態】
添付図面を参照することによって本発明をより良く理解でき、本発明の数多くの目的、特徴、および利点が当業者に明らかにされる。
【００５０】
図１は、本発明の一実施形態を採用しているＵＳＢネットワークの例を示すブロック図である。
【００５１】
ＵＳＢネットワークは、ＵＳＢ接続ケーブル２８を介してＵＳＢ装置３０に結合されているＵＳＢホスト２６を含む。図１は、ＵＳＢ接続ケーブル２８を介してＵＳＢホスト２６に直接に結合されているＵＳＢ装置３０を示す。結合されているという用語は、図１に示されているものに限定すべきではない。
【００５２】
２つの装置（たとえば、ＵＳＢホスト２６とＵＳＢ装置３０）は、直結で一つにされ、または間接に結合されてもよい。たとえば、ＵＳＢホスト２６は、ハブ（図１には示されていない）を介してＵＳＢ装置３０に結合されてもよい。
【００５３】
ＵＳＢホスト２６とＵＳＢ装置３０とは、同じプリント回路板上で一緒に結合してもよい。また、ＵＳＢ装置３０とハブとは、同じプリント回路板上で一緒に結合でき、または可撓性プリント回路板により一緒に結合してもよい。
【００５４】
本発明は、図１に示されているＵＳＢネットワークを参照して説明されるが、本発明は、それに限定されるものではないことを理解すべきである。
【００５５】
ＵＳＢ装置３０は、エンドポイント１〜Ｎを含み、各エンドポイントは固有のエンドポイント番号で示されている。ＵＳＢ装置３０の各エンドポイントは、データの供給側またはデータの処理側として作動する。
【００５６】
ＵＳＢ装置３０の各エンドポイントは、ＵＳＢ接続ケーブル２８を通じて送られたデータ・トランザクションを介してＵＳＢホスト２６と通信する。
【００５７】
データ・トランザクションは、典型的に３つまでのパケット、すなわち、トークン・パケット、データ・パケット、および任意に選択できるトランザクション完了パケットの伝送を含む。
【００５８】
各データ・トランザクションは、ＵＳＢホスト２６により発生されるトークン・パケットで開始される。
【００５９】
トークン・パケットは、データ・トランザクションのタイプと、データ・トランザクションの向きと、ＵＳＢ装置のアドレスと、データの最終の発信元またはデータの最終の到着先となるエンドポイント番号とを特定する。
【００６０】
トークン・パケットの後に、トークン・パケットで特定されたエンドポイントとホスト２６との間で転送されるデータ（エンドポイント・データ）を含んでいるデータ・パケットが続く。
【００６１】
最後に、トランザクションのデータの到着先は、データ転送がＵＳＢホスト２６とＵＳＢ装置３０の間で成功したかどうかを示すトランザクション完了パケットを任意に送る。
【００６２】
図２は、図１のＵＳＢ装置３０内の回路の関連する構成要素を示すブロック図である。
【００６３】
更に詳しくいえば、図２は、バックエンド・インタフェース３４と、メモリ３６と、制御状態レジスタのバンク４０と、バッファ・タグ回路４２とに結合されているエンドポイント制御器３２を示す。
【００６４】
エンドポイント制御器３２、バックエンド・インタフェース３４、バッファ・タグ回路４２の少なくとも１つは、ハードウェア、ソフトウェア、ファームウェアまたはそれらの混合した形態をとることができる。
【００６５】
説明のために、エンドポイント制御器３２とバックエンド・インタフェース３４は、ＵＳＢ装置２６の１つまたは複数のプロセッサで実行されるソフトウェア命令の形をとるが、本発明はそれに限定すべきでないことが理解できよう。
【００６６】
メモリ３６は、ＲＡＭの形をとることができ、以下でより詳しく説明するように、ＵＳＢ装置３０のエンドポイントとＵＳＢホスト２６との間で伝送されるデータを一時的に保存するための等しい容量のバッファのセットとして構成されている。
【００６７】
別の実施形態では、メモリ３６は、等しくない容量のバッファのセットとして、または２つのバッファ群として構成される。２つのバッファ群のうちの第１の群のバッファは、第１の群内においては容量が等しいが、第２のバッファ群中のバッファとは容量が異なる。
【００６８】
ＵＳＢ装置３０は、上記のように、Ｎ個のエンドポイントを含んでいる。
【００６９】
エンドポイント制御器３２とバックエンド・インタフェース３４は、Ｎ個のエンドポイントの各々に対するデータを処理する。
【００７０】
エンドポイント制御器３２とバックエンド・インタフェース３４が、エンドポイントに対するデータの処理が可能となる前に、そのエンドポイントに対する制御情報は、制御状態レジスタ４０にロードされなければならない。
【００７１】
データを処理するために、エンドポイント制御器３２とバックエンド・インタフェース３４は、種々のエンドポイントの間で切り替えることができる。いいかえると、エンドポイント制御器３２とバックエンド・インタフェース３４は、第２のエンドポイント・トランザクションのデータを処理するために、第１の異なるエンドポイント・トランザクションのデータの処理を停止できる。
【００７２】
エンドポイント制御器３２とバックエンド・インタフェース３４が、第２のエンドポイント・トランザクションのデータを処理可能となる前に、第２のエンドポイント処理のための制御情報は、制御状態レジスタ４０にロードされなければならない。
【００７３】
エンドポイント制御器３２とバックエンド・インタフェース３４が第２のエンドポイント・トランザクションに対するデータを処理した後で、第１のエンドポイント・トランザクションのデータの処理を再開するために、エンドポイント制御器３２とバックエンド・インタフェース３４により必要とされる制御情報は、制御状態レジスタ４０に再びロードされなければならない。
【００７４】
第１のエンドポイント・トランザクションのための制御情報が再びロードされた後で、エンドポイント制御器３２とバックエンド・インタフェース３４は、第１のエンドポイント・トランザクションのデータの処理を再開できる。
【００７５】
図２に示されているように、バッファ・タグ回路４２は、エンドポイント制御器３２とバックエンド・インタフェース３４の間に結合されている。
【００７６】
図３は、バッファ・タグ回路４２の関連する構成要素を示すブロック図である。また、図３は、メモリ３６のより詳細な図を示す。
【００７７】
図３において、メモリ３６は、等しい容量の複数のバッファ１〜Ｎを含んでいる。
【００７８】
各バッファ１〜Ｎは、ＵＳＢ装置３０の１つまたは複数のエンドポイントのデータを保存するために構成されている。
【００７９】
説明のために、各バッファ１〜Ｎは、以下でより詳しく説明するように、ＵＳＢ装置３０のＮ個のエンドポイントのいずれかとＵＳＢホスト２６との間で伝送されるデータを保存するために構成されている。
【００８０】
図３は、メモリ４６に結合されているタグ制御器回路４４を示す。
【００８１】
メモリ４６は、バッファ１〜Ｎに対応するバッファ・タグ１〜Ｎをそれぞれ保存する。
【００８２】
エンドポイント制御器３２またはバックエンド・インタフェース３４は、情報をタグ制御器回路４４を介してメモリ４６内のバッファ・タグのいずれかに書込むことができ、またはそれらのバッファ・タグのいずれかから情報を読出すことができる。
【００８３】
一般的にいうと、バッファ・タグ１〜Ｎは、バッファ１〜Ｎにそれぞれ保存されている（または保存すべき）データの発信元または到着先であるＵＳＢ装置３０のエンドポイントを特定する情報を含んでいる。
【００８４】
たとえば、バッファ・タグ３と４は、ＵＳＢ装置３０のエンドポイント２を、メモリ３６のバッファ３と４に現在保存されているデータの到着先として特定する情報（タグ制御器回路４４により書込まれた）を含むことができる。
【００８５】
別の時刻には（すなわち、バッファ４に保存されているエンドポイント２のデータが新しいデータで置き換えられた後）、バッファ・タグ４は、ＵＳＢ装置３０のエンドポイント６を、メモリ３６のバッファ４に新たに保存されたデータの到着先として特定できる。
【００８６】
更に別の時刻には、バッファ・タグ２〜４は、エンドポイント制御器３２とＵＳＢ接続ケーブル２８を介してＵＳＢホスト２６へ後で送るデータを、バッファ２〜４がエンドポイント５から受けて保存することを示すことができる。
【００８７】
各バッファ・タグ１〜Ｎは、エンドポイント制御器３２とバックエンド・インタフェース３４からの要求に応答したタグ制御器回路４４の書込み動作により論理１または論理０にセットされる複数のビットを含んでいる。
【００８８】
別の実施形態では、タグ制御器回路３２とバックエンド・インタフェース３４は、バッファ・タグ１〜Ｎの各々に直接書込むことができる。
【００８９】
図４は、バッファ・タグ１〜Ｎの各々のフォーマットの例を示す。本発明は、図４に示されているバッファ・タグに限定すべきではない。
【００９０】
図４の参照を続けると、ビット１１は所有者として示されたＯを示し、ビット１０は請求として示されたＣを示し、ビット９はアクティブとして示されたＡを示し、ビット８は向きとして示されたＤを示し、ビット７と６は第１の順序番号として示されたＳＥＱを示し、ビット５と４は副順序番号として示されたＳＳＥＱを示し、ビット３ないし０はエンドポイント番号＃を示す。
【００９１】
各バッファ・タグのビット０ないし３は、対応するバッファに保存されているデータの発信元または到着先であるエンドポイントを特定するエンドポイント番号を保存する。
【００９２】
任意の時点において、メモリ３６中の１つまたは複数のバッファは、ＵＳＢ装置３０の同じエンドポイントを含んでいる別々のトランザクションのデータを保存できる。
【００９３】
図４に示されているＳＥＱビットは、別々のデータ・トランザクションのデータを保存するメモリ３６のバッファを弁別する。
【００９４】
たとえば、メモリ３６のバッファ１と２が、ＵＳＢ装置３０のエンドポイント３に宛てられたデータを保存し、バッファ５もＵＳＢ装置３０のエンドポイント３に宛てられたデータを保存するものと仮定する。
【００９５】
更に、バッファ１と２に保存されているデータが、第１のデータ・トランザクションにおいてＵＳＢホスト２６から受けられ、バッファ５に保存されているデータが第１に続く第２のデータ・トランザクションにおいてＵＳＢホスト２６から受けられたと仮定する。
【００９６】
この状況では、バッファ・タグ１、２および５のＥＮＤＰＯＩＮＴ＃ビット（ビット０〜３）は「０１１」（すなわち、２進の３）にセットされてバッファ１、２および５がＵＳＢ装置３０のエンドポイント３に宛てられたデータを保存することを示す。
【００９７】
また、バッファ・タグ１と２のＳＥＱビットを「００」にセットし、バッファ・タグ５のＳＥＱビットを「０１」にセットすることにより、バッファ１と２に保存されているデータが、バッファ５に保存されているデータを含んでいたデータ・トランザクションより時間的に早くＵＳＢホスト２６から受けられたデータ・トランザクションであることを示す。
【００９８】
上記のように、トランザクションは、メモリ３６内の単一のバッファに保存できるデータよりも多くのデータを含むことができる。
【００９９】
図４に示されているＳＳＥＱビットは、データがＵＳＢホスト２６から受けられた順序を識別する。
【０１００】
上の例では、バッファ１と２は、ＵＳＢ装置３０のエンドポイント５に宛てられたデータを保存する。
【０１０１】
バッファ・タグ１と２のＳＥＱビットとＥＮＤＰＯＩＮＴ＃ビットは、上記のようにそれぞれ「００」と「０１１」にセットされる。
【０１０２】
バッファ２に保存されているデータは、バッファ１に保存されているデータより前にＵＳＢホスト２６から受けられたと仮定する。
【０１０３】
バッファ・タグ１と２のＳＳＥＱビットは、「０１」と「００」にそれぞれセットでき、それによってバッファ２がバッファ１に保存されているデータより前にＵＳＢホスト２６から受けられたことを示す。
【０１０４】
ＳＳＥＱビットは、メモリ３６内の各バッファの容量がデータ・パケットに含まれているデータの量より小さい時にのみ求められる。
【０１０５】
向きすなわち図４におけるＤビットは、対応するバッファ内のデータが、後でＵＳＢホスト２６へ送るためにＵＳＢ装置３０のバックエンドから受けたかどうか、または対応するバッファに保存されているデータが、後でＵＳＢ装置３０のバックエンドへ送るためにＵＳＢホスト２６から受けらたかどうかを示す。
【０１０６】
たとえば、バッファ・タグ３のＤビットが論理１にセットされると、バッファ３に保存されているデータは、ＵＳＢホスト２６へ送られ、論理０にセットされると、バッファ３内のデータはバックエンドへ送られる。
【０１０７】
アクティブすなわちＡビットは、論理１にセットされると、対応するバッファ内のデータがＵＳＢホスト２６へ送られる用意が整っていること、またはＵＳＢ装置３０のバックエンドへ送られる用意が整っていることを、Ｄビットの状態に応じて示す。
【０１０８】
Ａビットは、対応するバッファのデータがひとたび読出しに成功した（すなわち、ＵＳＢホスト２６へ送られた、またはＵＳＢ装置３０のエンドポイントへ送られた）ならばクリヤされる。
【０１０９】
Ａビットがひとたびクリヤされると、対応するバッファは新しいデータを保存するためにすぐに利用可能となる。
【０１１０】
請求すなわちＣビットは、論理１にセットされると、対応するバッファが、ＵＳＢ装置３０のエンドポイントまたはＵＳＢホスト２６からデータを受けて保存することを求められていることを示す。
【０１１１】
Ｃビットは、エンドポイント制御器３２またはバックエンド・インタフェース３４からの要求に応じてタグ制御器回路４４によりセットまたはクリヤされる。
【０１１２】
たとえば、ＵＳＢホスト２６がＵＳＢ装置３０のエンドポイントへ宛てられたデータを含んでいるデータ・パケットを次に送る予定であることを示すトークン・パケットをエンドポイント制御器３２が受けたとき、エンドポイント制御器３２は、バッファ・タグ４のＣビットをセットする。
【０１１３】
バッファ・タグ４のＡビットが論理０にクリヤされているのでバッファ４をすぐに利用できる、とエンドポイント制御器３２とバックエンド・インタフェース３４がみなすような状況を避けるために、バッファ・タグ４のＣビットはセットされる。
【０１１４】
バッファ・タグ４のＣビットを論理１にセットすることにより、エンドポイント制御器３２は、データを保存するためのバッファ・タグ４を予約する。
【０１１５】
データをバッファ・タグ４に保存することにひとたび成功すると、バッファ・タグ４のＣビットは論理０にクリヤされ、バッファ・タグ４のＡビットは論理１に同時にセットされる。
【０１１６】
所有者すなわちＯビットは、バックエンド・インタフェース３４またはエンドポイント制御器３２のいずれが、対応するバッファを求めているかに応じて、論理１または論理０にセットされる。
【０１１７】
エンドポイント制御器３２が対応するバッファを要求する時にＯビットは論理１にセットされ、またはバックエンド・インタフェース３４が対応するバッファを要求する時にＯビットは論理０にクリヤされる。
【０１１８】
説明したように、メモリ３６のバッファは、ＵＳＢホスト２６とＵＳＢ装置３０のエンドポイントとの間で送られるトランザクションのデータを一時的に保存する。
【０１１９】
たとえば、ＵＳＢ装置３０の特定のエンドポイントからのデータは、そのデータがたとえばエンドポイント制御器３２により作成されたデータ・パケットで、かつＵＳＢホスト２６へ送られる前に、メモリ３６内の１つまたは複数のバッファ１〜Ｎのいずれかに保存される。
【０１２０】
データは、ＵＳＢホスト２６からデータ・トランザクションを受けるエンドポイント制御器３２に応答してエンドポイント制御器３２によりメモリ３６内の任意のバッファに書込むことができ、またはＵＳＢ装置３０に埋め込まれているプロセッサまたはアプリケーション専用ハードウェアからデータを受けるバックエンド・インタフェース３４に応答してバックエンド・インタフェース３４によりメモリ３６内の任意のバッファに書込むことができる。
【０１２１】
図５は、本発明の一実施形態に従ってデータをメモリ３６の１つまたは複数のバッファにデータを書込む動作の例を示す。
【０１２２】
図５に示されているデータ書込みプロセスは、エンドポイント制御器３２、バックエンド・インタフェース３４またはタグ制御器回路４４により実行できる。
【０１２３】
また、図５の書込みプロセスは、エンドポイント制御器３２から受けた要求に応じて動作するタグ制御器回路４４とエンドポイント制御器３２との組合わせにより実行でき、または書込みプロセスは、バックエンド・インタフェース３４から受けた要求に応じて動作するタグ制御器回路４４とバックエンド・インタフェース３４との組合わせにより実行できる。
【０１２４】
図５は、ＵＳＢホスト２６からデータ・トランザクションを受けるエンドポイント制御器３２に応答してメモリ３６の１つまたは複数のバッファにデータを書込むことを参照して説明される。
【０１２５】
図５の書込プロセスは、ＵＳＢホスト２６が、データ・トランザクションのトークン・パケットをＵＳＢ装置３０のエンドポイント制御器３２へ送る時に始まる。
【０１２６】
トークン・パケットは、ＵＳＢ装置３０の１つのエンドポイントをデータ・トランザクションのデータの最終の到着先として特定するエンドポイント番号を含む。
【０１２７】
図５のステップ６２において、エンドポイント制御器３２またはその他の装置（たとえば、タグ制御器回路）が、トークン・パケットを受けるエンドポイント制御器３２に応答してダミー変数ｘを０にセット（ｘ＝０とセット）する。
【０１２８】
ステップ６４において、メモリ３６内のバッファがデータの保存のために利用できるかどうかを判定するために、バッファ・タグ１〜Ｎはアクセスされる。
【０１２９】
バッファのそれぞれに応じたバッファ・タグのＡビットとＣビットが論理０にセットされているならば、そのバッファを利用できる。
【０１３０】
したがって、バッファ・タグ１〜Ｎの１つにおいてＡビットとＣビットが論理０にセットされているかどうかを判定するために、バッファ・タグがアクセスされる。
【０１３１】
各バッファ・タグのＡビットとＣビットは、エンドポイント制御器３２により、またはエンドポイント制御器３２からの要求に応答してタグ制御器回路４４により調べることができる。
【０１３２】
あるバッファがデータを保存するために利用できると、ステップ６６において、利用できるバッファが請求され、そのバッファはデータを保存するために割当てられる。
【０１３３】
その利用できるバッファは、エンドポイント制御器３２により、またはエンドポイント制御器３２からの要求に応答してタグ制御器回路により請求され、割当てられる。
【０１３４】
その利用できるバッファは、エンドポイント制御器３２により実行される１つの動作で、またはエンドポイント制御器３２からの要求に応答してタグ制御器回路により実行される１つの動作で、請求と割当てができることが注目される。
【０１３５】
利用できるバッファは、それの対応するタグのＣビットを論理１にセットすることにより請求される。
【０１３６】
バッファの割当ては、利用できるバッファに対応するバッファ・タグ内の付加ビットの状態を変化することを含む。
【０１３７】
一実施形態では、バッファ割当ては、利用できるバッファに対応するバッファ・タグのＤビットを論理０にクリヤすることと、利用できるバッファに対応するバッファ・タグのＯビットを論理１にセットすることと、受けたトークン・パケットのエンドポイント番号を利用できるバッファに対応するバッファ・タグのＥＮＤＰＯＩＮＴ＃フィールドに保存することと、変数ｘの現在の値を利用できるバッファに対応するバッファ・タグのＳＳＥＱフィールドに保存することと、エンドポイント・パケット番号を利用できるバッファに対応するバッファ・タグのＳＥＱフィールドに保存することとを含む。
【０１３８】
エンドポイント・パケット番号は、レジスタ４０の保存部のレジスタに保存できる。
【０１３９】
エンドポイント・パケット番号は、メモリ３６内に現在保存されていて、ステップ６０で受けられたトークン・パケットにより定められたエンドポイントへ宛てられているデータ・パケットの数を定める。
【０１４０】
ステップ６４で、あるバッファが利用できるものと識別されたとすると、エンドポイント制御器３２またはタグ制御器回路４４は、その利用できるバッファを直ちに（すなわち、ステップ６６における割当てプロセスが実行される前に）予約するようにしてもよい。
【０１４１】
一実施形態では、データ保存のために利用できるバッファに対応するバッファ・タグ中のＣビットを１にセットすることにより、バッファは予約される。
【０１４２】
ひとたび予約されると、対応するバッファは、後で解放されるまでデータを保存するためにバックエンド・インタフェース３４により使用できない。
【０１４３】
ある利用可能なバッファの予約が行われているものとすると、ステップ６６の割当てプロセスは、使用されていないバッファのサーチ、すなわち、バッファ・タグのＡビットが論理０にセットされ、バッファ・タグのＣビットが論理０にセットされているようなバッファ・タグのサーチ、を含むことがある。
【０１４４】
このバッファ・タグがひとたび特定されると、エンドポイント制御器３２またはエンドポイント制御器３２からの要求に応答して動作するバッファ・タグ回路は、予約されているバッファに対応するバッファ・タグのＤビットを論理０にクリヤし、予約されているバッファに対応するバッファ・タグのＯビットを論理１にセットし、受けられたトークン・パケットのエンドポイント番号を予約されているバッファに対応するバッファ・タグのＥＮＤＰＯＩＮＴ＃フィールドに保存し、変数ｘの現在の値を予約されているバッファに対応するバッファ・タグのＳＳＥＱフィールドに保存し、エンドポイント・パケット番号を予約されているバッファに対応するバッファ・タグのＳＥＱフィールドに保存することにより、予約されているバッファを割当てることができる。
【０１４５】
割当ての後で、割当てられたバッファのスタートアドレスは、エンドポイント制御器３２に提供される。
【０１４６】
エンドポイント制御器３２がＵＳＢホスト２６からデータ・パケットを受けると、ステップ７０に示されているように、エンドポイント制御器３２は新たに割当てられたバッファのスタートアドレスからデータを保存する。
【０１４７】
データ・パケットのデータは、メモリ３６の割当てられたバッファのサイズより大きいことがある。
【０１４８】
ステップ７２において、タグ制御器回路４４またはエンドポイント制御器３２のいずれかは、メモリ３６内の追加バッファがデータ・パケットのデータを保存するために必要かどうかを判定する。
【０１４９】
別のバッファを必要とするならば、エンドポイント制御器３２またはタグ制御器回路４４は、ステップ７４でｘを１だけ増し（ｘ＝ｘ＋１とセットし）、それから処理はステップ６４へ戻り、そこでデータの保存のために別のバッファを使用できるかどうかの判定を行う。
【０１５０】
メモリ３６内のバッファを使用できないと、ステップ７６において、エンドポイント制御器３２またはタグ制御器回路４４は、ステップ７０でデータが保存されていたバッファに対応するバッファ・タグのＡビットとＣビットをクリヤする。
【０１５１】
その後のステップ８０で、ＵＳＢ装置３０がトランザクションのデータを保存するために十分なバッファ・メモリを欠いていることを示した受領失敗メッセージがＵＳＢホスト２６へ送られてプロセスを終る。
【０１５２】
しかし、データ・トランザクションのデータを保存するために、１つまたは複数のバッファが使用可能なことは非常に多くありそうであり、プロセスは図５のステップ６６〜７４を進む。
【０１５３】
トランザクションの全てのデータがメモリ３６の１つまたは複数のバッファに保存された後で、かつエンドポイント制御器３２またはタグ制御器回路４４がデータを保存するためにそれ以上のメモリを必要としないことを決定した後、エンドポイント制御器３２またはタグ制御器回路４４は、ステップ８２で、ステップ７０でデータが保存されたバッファに対応する全てのバッファ・タグのＡビットを論理１にセットし、ステップ７０でデータが保存されたバッファに対応する全てのバッファ・タグのＣビットを論理０にクリヤする。
【０１５４】
図５には示されていないが、エンドポイント制御器３２またはタグ制御器回路４４は、制御状態レジスタ４０のレジスタの１つに保存されているエンドポイント・パケット番号を増す。
【０１５５】
最後に、ステップ８４において、エンドポイント制御器３２は、ステップ６０で受けたトークン・パケットにより特定されたエンドポイント宛てのデータをメモリ３６が保存していることを示すメッセージをバックエンド・インタフェース３４へ送る。
【０１５６】
そのメッセージはエンドポイントの特定に加えて、パケットのサイズ、またはステップ７０中にメモリ３６に保存されたデータの量も含むようにしてもよい。
【０１５７】
上記のように、エンドポイント制御器３２またはバックエンド・インタフェース３４のいずれかは、メモリ３６の１つまたは複数のバッファに一時的に保存されているデータを読出すことができる。
【０１５８】
エンドポイント制御器３２はこのデータを読出して、後でＵＳＢホスト３６へ送るデータ・パケットを形成できる。
【０１５９】
対照的に、バックエンド・インタフェース３４は、このデータを後でＵＳＢ装置３０のエンドポイントへ送るために、メモリ３６からこのデータを読出すことができる。
【０１６０】
図６は、本発明の一実施形態に従ってメモリ３６内の１つまたは複数のバッファ中のデータを読出す動作の例を示す。
【０１６１】
一般に、図６に記載されているプロセスは、エンドポイント制御器３２またはバックエンド・インタフェース３４により実現できる。
【０１６２】
図６は、メモリ３６内の１つまたは複数のバッファがＵＳＢ装置３０の特定のエンドポイントに宛てられているデータを保存している、というメッセージをエンドポイント制御器３２から受けたことに応答して、メモリ３６内の１つまたは複数のデータ・バッファからバックエンド・インタフェース３４がデータを読出すことに関して示されている。
【０１６３】
ステップ９０でメモリ３６があるエンドポイントへ宛てられたデータを保存している、というメッセージをバックエンド・インタフェース３４が受けた後で、ステップ９２と９４において、バックエンド・インタフェース３４またはタグ制御器回路４４がダミー変数ｙを０にセットし、パケット‐サイズ・カウンタ（ＰＳＣ）を０にセットする。
【０１６４】
ステップ９０で受けたメッセージは、図５のステップ８４でエンドポイント制御器３２により送られたメッセージと同じとしてもよい。
【０１６５】
ステップ９６で、バックエンド・インタフェース３４により、またはバックエンド・インタフェース３４に応答するタグ制御器回路４４により、バッファ・タグ・サーチ要求が発生される。
【０１６６】
この要求は、サーチ情報を含む。
【０１６７】
一実施形態では、サーチ情報は、ステップ９０で受けたメッセージのエンドポイント番号と、ダミー変数ｙの現在の値と、ステップ９０で受けられたメッセージのエンドポイント番号に対応する現在のエンドポイント・パケット番号とを含む。
【０１６８】
ステップ１００に示されているように、サーチ情報は、バックエンド・インタフェース３４またはタグ制御器回路４４により、バッファ・タグ１〜Ｎ内のそれぞれのフィールドと比較される。
【０１６９】
バッファ・タグは、サーチ要求のエンドポイント番号に等しいＥＮＤＰＯＩＮＴ＃フィールドと、サーチ要求の現在のエンドポイント・パケット番号に等しいＳＥＱフィールドと、サーチ要求のダミー変数ｙの現在の値に等しいＳＳＥＱフィールドとを有するバッファ・タグが特定されるまで、サーチ情報と比較される。
【０１７０】
メモリ４６内のバッファ・タグの１つが、論理０にクリヤされたＤビットと論理０にクリヤされたＣビットと論理１にセットされたＡビットに加えて、サーチ要求の情報に合致するフィールドを有するものとすると、メモリ３６内の対応するバッファのスタートアドレスがバックエンド・インタフェース３４に提供される。
【０１７１】
その後で、ステップ１０２において、バックエンド・インタフェース３４は、記憶されたタグ・サーチ要求の情報に合致するバッファ・タグに対応するメモリ３６内のバッファからデータを読出す。
【０１７２】
このバッファから全てのデータがひとたび読出されると、ステップ１０４でバックエンド・インタフェース３４またはタグ制御器回路４４が、ＰＳＣをステップ１０２で読出されたデータの量だけ増大させる。
【０１７３】
その後のステップ１０６で、ＰＳＣの現在の値が、ステップ９０で受けたメッセージ内で特定されたデータの量より少ないかどうかの判定が行われる。
【０１７４】
ＰＳＣがデータの総量より少なければ、ステップ１１０で、バックエンド・インタフェース３４またはタグ制御器回路４４がステップ１１０で変数ｙを１だけ増加し（ｙ＝ｙ＋１とセットし）、プロセスはステップ９６の始めに戻って反復する。
【０１７５】
しかし、ＰＳＣがステップ９０のメッセージ内で特定されたデータの量に等しいとすれば、ステップ１１２において、ステップ１０２でデータが読出されるバッファに対応する各バッファ・タグのＡビットが論理０にクリヤされることにより、その対応するバッファが新しいデータを保存するためにを使用できることを示す。
【０１７６】
また、バックエンド・インタフェース３４またはタグ制御器回路４４は、エンドポイント・パケット番号を１だけ増す。
【０１７７】
エンドポイント・パケット番号を増すことによって、バックエンド・インタフェース３４またはタグ制御器回路がパケット送信／受信に同期できる。
【０１７８】
本発明をいくつかの実施形態に関連して説明したが、本発明はここで説明した実施形態に限定することを意図するものではない。
【０１７９】
それとは逆に、特許請求の範囲により定められているような発明の範囲に合理的に含まれることができるものなどの代替物、変更物、および均等物を包含することを意図するものである。
【図面の簡単な説明】
【図１】本発明の一実施形態を採用しているＵＳＢネットワークを示すブロック図である。
【図２】図１のＵＳＢ装置の回路を示すブロック図である。
【図３】図２に示されている回路のバッファ・タグ回路およびバッファ・メモリの一実施形態を示すブロック図である。
【図４】図３に示されているバッファ・タグの一実施形態を示す。
【図５】本発明の一実施形態に従ってメモリ３６の１つまたは複数のバッファにデータを書込む動作の面を示す流れ図である。
【図６】本発明の一実施形態に従ってメモリの１つまたは複数のバッファからデータを読出す動作の面を示す流れ図である。
【図７】ＵＳＢネットワークを示すブロック図である。
【図８】図７のＵＳＢ装置の回路を示すブロック図である。
【符号の説明】
２６  ＵＳＢホスト
２８  ＵＳＢ接続ケーブル
３０  ＵＳＢ装置
３２  エンドポイント制御器
３４  バックエンド・インタフェース
３６、４６  メモリ
４０  制御状態レジスタ
４２  バッファ・タグ回路
４４  タグ制御器回路
【図１】
2004157966.tif 000003
【図２】
2004157966.tif 000004
【図３】
2004157966.tif 000005
【図４】
2004157966.tif 000006
【図５】
2004157966.tif 000007
【図６】
2004157966.tif 000008
【図７】
2004157966.tif 000009
【図８】
2004157966.tif 000010