(57)【特許請求の範囲】
【請求項１】
等時ブロック・データ、非同期ブロック・データ、及び非同期制御データを含む複数の異なるデータ・タイプのデータ転送を含む動作を制御する際に使用するアービタであって、
基本時間周期を確立する周期的タイマと、
等時及び非同期ブロック・データ転送を含む周期的データ転送待ち行列と、
非同期ブロック・データ転送を含む非周期的データ転送待ち行列と、
制御データ転送を含む制御データ転送待ち行列と、
総ての周期的データ転送の予定を立て他の転送を実行した後で、前記基本時間周期における自由時間を決定する手段と、
前記周期的待ち行列、前記非周期的待ち行列、及び前記制御待ち行列の１つから実行すべき次の転送を選択する手段と、
を含み、自由時間がゼロよりも少ない場合に次の周期的データ転送を選択する前記手段が、自由時間がゼロよりも多い場合は、総ての自由時間がゼロになるかまたは総ての周期的データ転送を完了するまで、夫々の待ち行列における次の周期的データ転送と次の制御データ転送の間で選択を変化させ、周期的待ち行列内の総ての周期的データ転送を完了して自由時間がゼロよりも大きい場合は、次の制御データ転送と次の非周期的データ転送の間で変更するアービタ。
【請求項２】
選択する前記手段が、前記転送の完了後に、完了した制御データ転送を前記制御待ち行列から除去することを特徴とする、請求項１に記載のアービタ。
【請求項３】
選択する前記手段が、制御データ転送が読取り転送であって前記読取り応答を受け取っていないかどうかを判定し、前記制御待ち行列内の次の制御データ転送を選択する代わりに読取りトークンを提供することを特徴とする、請求項１に記載のアービタ。
【請求項４】
自由時間を決定する前記手段が、前記基本周期の最初に自由時間を記憶することを特徴とする、請求項１に記載のアービタ。
【請求項５】
自由時間を決定する前記手段が、制御データ転送に必要な時間を前記制御データ転送完了後の自由時間から差し引くことを特徴とする、請求項４に記載のアービタ。
【請求項６】
自由時間を決定する前記手段が、前記非周期データ転送完了後の前記自由時間から非周期的データ転送に必要な時間を差し引き、自由時間を決定する前記手段が、前記周期的データ転送の完了後に、前記自由時間に算出転送時間を加え、周期的データ転送用の前記自由時間から実際の転送時間を差し引くことを特徴とする、請求項５に記載のアービタ。
【請求項７】
自由時間を決定する前記手段が、前記非周期的データ転送完了後に非周期的データ転送に必要な時間を自由時間から差し引くことを特徴とする、請求項４に記載のアービタ。
【請求項８】
自由時間を決定する前記手段が、前記周期的データ転送の完了後に、算出転送時間を前記自由時間に加え、周期的データ転送用の前記自由時間から実際の転送時間を差し引くことを特徴とする、請求項４に記載のアービタ。
【請求項９】
自由時間を決定する前記手段が、基本周期の最初に、前記周期的待ち行列内の周期的データ転送用の算出全時間を基本時間周期から差し引くことを特徴とする、請求項４に記載のアービタ。
【請求項１０】
等時ブロック・データ、非同期ブロック・データ、非同期制御データを含む複数の様々なデータ・タイプのデータ転送を含む動作を調停するための方法であって、
基本時間周期を確立する段階と、
要求された等時及び非同期データ転送を含む周期的データ転送待ち行列を準備する段階と、
要求された非同期データ転送を含む非周期的データ転送待ち行列を準備する段階と、
要求された制御データ転送を含む制御データ転送待ち行列を準備する段階と、
総ての周期的データ転送の予定を立て他の転送を実行した後で前記基本時間周期における自由時間を決定する段階と、
前記周期的待ち行列、前記非周期的待ち行列、及び前記制御待ち行列の１つから実行すべき次の転送を選択する段階と、
を含み、自由時間がゼロよりも少ない場合に次の周期的データ転送を選択する前記段階が、自由時間がゼロよりも多い場合は、総ての自由時間がゼロになるかまたは総ての周期的データ転送を完了するまで、夫々の待ち行列における次の周期的データ転送と次の制御データ転送の間で選択を変化させ、周期的待ち行列内の総ての等時データ転送を完了して自由時間がゼロよりも大きい場合は、次の制御データ転送と次の非周期的データ転送の間で変更する方法。
【請求項１１】
選択する前記段階が、前記転送の完了後に前記制御待ち行列から完了した制御データ転送を除去することを特徴とする、請求項１０に記載の方法。
【請求項１２】
選択する前記段階が、制御データ転送が読取り転送であって前記読取り応答を受け取っていないかどうかを判定し、前記制御待ち行列内の次の制御データ転送を選択する代わりに読取りトークンを提供することを特徴とする、請求項１０に記載の方法。
【請求項１３】
自由時間を決定する前記段階が、前記基本周期の最初に自由時間を記憶することを特徴とする、請求項１０に記載の方法。
【請求項１４】
自由時間を決定する前記段階が、制御データ転送に必要な時間を前記制御データ転送完了後の自由時間から差し引くことを特徴とする、請求項１３に記載の方法。
【請求項１５】
自由時間を決定する前記段階が、前記非周期的データ転送完了後に非周期的データ転送に必要な時間を前記自由時間から差し引き、自由時間を決定する前記段階が、前記周期的データ転送完了後に、算出転送時間を前記自由時間に加え実際の転送時間を周期的データ転送用の前記自由時間から差し引くことを特徴とする、請求項１４に記載の方法。
【請求項１６】
自由時間を決定する前記段階が、前記非周期的データ転送完了後に、非周期的データ転送に必要な時間を前記自由時間から差し引くことを特徴とする、請求項１３に記載の方法。
【請求項１７】
自由時間を決定する前記段階が、前記周期的データ転送完了後に、算出転送時間を前記自由時間に加え、実際の転送時間を周期的データ転送用の前記自由時間から差し引くことを特徴とする、請求項１３に記載の方法。
【請求項１８】
自由時間を決定する前記段階が、基本周期の最初に、前記周期的待ち行列内の周期的データ転送用の算出合計時間を基本時間周期から差し引くことを特徴とする、請求項１３に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、幾つかのタイプのシリアル・バス・デバイスを扱うことができるシリアル・バス転送機構に関し、より詳細にはシリアル・バス上でのデバイス動作機構の動作及びタイミングを管理するアービタに関する。
【０００２】
【従来の技術】
コンピュータ・システムは、日々絶えず性能が向上している。コンピュータ・システムのより優れたパフォーマンスを実現するために、ＰＣＩすなわちPeripheral Component Interchangeバス等の多数の新しく進歩したバス構造が開発された。更に、コンピュータ・システムのための新しいデバイス及び使用法が開発されている。過去においては、コンピュータは本質的にスタンドアローン装置であり、或いは他のコンピュータ・システムとネットワーク接続されていた。しかしながら今日では、最新のパーソナル・コンピュータは、より多く接続されたマルチメディア指向のシステムになりつつある。例えば、現在では高速ビデオ・オーディオ機能は普通になってきており、電話システムとの統合が既に始まっている。
【０００３】
しかし、これらの新しい機能の多くは、ＰＣＩバス等の優れたバスの基本的な帯域幅または能力よりも下位にある。従って、新しい機能及びデバイスを夫々ＰＣＩバスに直接接続するのはバスのローディングに影響を与え全体のコストを大幅に上昇させることになり、効率的でない。更に、これらの新しい機能の多くは本質的にシリアル特性であり、データは、並列バス構造ではなくビット・ストリームで転送される。これは、配線コストの削減等の多くの理由で行われ、必要なデータ転送速度が遅いために行うことができる。
【０００４】
その結果、これらの様々な低い帯域幅のデバイスの総てに接続するシリアル・バス機構の開発が提案されてきた。シリアル・バスは一連のポートを有するホスト制御機構によって構成され、これらの一連のポートは次に、デバイスまたは機能に直接接続されるか、或いは更に他のデバイスまたは機能を支配するハブに接続することができる。更にハブまたはホスト制御機構は、必要ならば機能を組み込むことができる。この方式では、ツリー構造を発展させて妥当数の機能またはデバイスをシリアル・バス・システムに接続することができる。ホスト制御機構は、例えばＰＣＩバス等のコンピュータ内のバスにホスト制御機構を介して接続する。集信装置として機能するホスト制御機構を備えることによって、ＰＣＩバスへの接続は１つでよい。この接続により、多数の接続を必要とせずにＰＣＩバスの性能をより良く利用できる。
【０００５】
ホスト制御機構、夫々のハブ、及び各機能またはポートは、セットアップ及び初期設定動作を行う特定の制御レジスタを含む。更に、シリアル・バス・システムでは、データ転送の３つの基本的なタイプが定義される。第１のタイプは等時転送であり、実際には電話による情報や音声情報等の連続実時間転送である。第２のタイプは、プリンタの動作や従来のシリアル・ポート動作等の非同期ブロック転送であり、第３のタイプは、一般に様々な装置の制御情報と呼ばれるキーボードやマウス、ポインティング・デバイス、ペン・インターフェース、構成状況情報等の非同期の対話式デバイス転送である。
【０００６】
ホスト制御機構が一連のパケットのとき、情報はシリアル・バス・システムを介して渡され、その結果、ホスト制御機構はバス・マスタ及びハブとして機能し、デバイスはホスト制御機構の要求またはポーリング・アクセスだけに応答する。パケット・タイプには、データ・パケット、ホストからデバイスに対して使用するトークン・パケット、ハンドシェーク・パケット、特殊制御パケットが含まれる。データ・パケットは、等時性の非同期ブロックで非同期制御型である。トークン・パケットは、データ・パケットの転送を可能にする。ハンドシェーク・パケットは、データまたは制御パケットの転送後に作動可能ハンドシェークを実行して、成功した受信を肯定応答したり不成功に終わった受信を示したりするために使用される。特殊制御パケットは、論理リセット及び状況要求転送のために使用される。夫々の機能またはデバイスは、論理アドレスを有する。
【０００７】
【発明が解決しようとする課題】
この説明の最も重要な点は、等時、非同期ブロック、及び制御の３つのデータ転送のタイプである。等時デバイスと非同期ブロック・デバイス両方の制御機能が制御データ転送を使って行われることに注意されたい。等時性デバイスは、所与の最小帯域幅を有する仮想チャネルを必要とし、従って等時転送はこの最小帯域幅を有する様に要求され或いはスケジュールが立てられなければならない。帯域幅は、大きなブロック・サイズの希な転送、小さなブロック・サイズのより頻繁な転送、またはその組合せによって求められる。非同期ブロックのデバイスは、一般にデータ転送速度にある程度の柔軟性を持たせることができるため保証された帯域幅を有する必要はないが、好ましくは、転送はエラーを検出したときに再転送できるほど強力でなければならない。非同期デバイスは、実質的に、高帯域と低帯域の２つのタイプがある。高帯域デバイスにはプリンタやモデム等が含まれ、低帯域デバイスはキーボードやマウス等である。制御機能は比較的低い帯域である。制御機能は本質的に一回限りの特性を有し、システムの初期設定の間とデバイスのブロック転送を準備する間に使用される。それに対して、等時及び非同期ブロック・デバイスは、かなり定期的な傾向があり、従って制御及び対話デバイスとは違う動作をする。
【０００８】
ハブまたはホスト制御機構の各デバイス及びポートは、適切なハブの特定ノードとデバイスそれ自体の間で低レベルのバス転送プロトコルを処理する能力を有する。これにより、パケット・タイプの数が制限された比較的単純な転送プロトコルが定義される。
【０００９】
一方、特に重要なことは、シリアル・バス・システムにおいて特定デバイスの帯域を割り当てる機構である。好ましい実施例では、シリアル・バスは５〜２０Ｍｂ／秒の帯域を有し、これを様々なデバイス間で分割しなければならない。重要なことは、できれば、等時デバイスが帯域の保証された部分を受け取り、非同期ブロック転送と制御転送が飢餓状態にもならず過度に遅延もされないことである。従って、シリアル・バス・システムにおいて行われる様々な転送を適切に調整する様なアービタまたはスケジューラを開発しなければならない。
【００１０】
更に、アービタは、シリアル・バス・システムを常に最大限に利用してシリアル・バス・システムにおけるデバイスのパフォーマンスを最高にできる様にすることが望ましい。更に、通例ソフトウェア・ベースの機能の動作は低速であり、慣例的にハードウェアによってより早い速度が得られるため、アービタの重要な部分をハードウェアで処理することが望ましい。
【００１１】
【課題を解決するための手段】
本発明によるシリアル・バス・ホスト制御機構は、データ転送事象を、一般に等時転送であるデータ転送と、一般に非同期転送である非周期的転送と、制御転送の３つのカテゴリに編成するアービタを利用する。アービタは基本的に、周期的に動作する。各周期の最初において、アービタは周期的転送と制御転送とを交互に行うことが好ましい。周期的転送が総て完了すると、次にアービタは、行う様にスケジュールが立てられた様々な非同期転送にアクセス権を提供して、残りの制御転送を交互に行う。好ましい実施例では、アービタは周期的事象を優先し、その周期内の任意の時間が使用可能な場合、それは自由時間と呼ばれ、自由時間が残っていなかまたは総てが完了するまで制御事象が周期的事象に交互に挟まれる。周期内の残りの任意の時間は、非周期的転送によって循環式に使用される。好ましい実施例のアービタは、追加の制御または非周期的転送を行えるかどうか判定するために、各周期の間自由時間のその時点での合計を保持する。
【００１２】
この様に関連したデータ待ち行列でアービタを編成することにより、ソフトウェアの複雑さが最小限に抑えられ、より高速なハードウェアを最大限に利用でき、より低速なソフトウェアの使用を最小限に抑えて、シリアル・バス・システムの全体的なパフォーマンスを改善することができる。
【００１３】
本発明のより良い理解は、次の好ましい実施例の詳細な説明を添付図面と共に検討するときに得ることができる。
【００１４】
【実施例】
次に図１を参照し、好ましい実施例によるコンピュータ・システムＣを概略的に示す。コンピュータ・システムＣは、インテルによるＰｅｎｔｉｕｍ（登録商標）または４８６プロセッサ或いはそれらの等価物等のプロセッサ１００を有する。当然ながら、他のプロセッサも使用できると理解されている。プロセッサ１００は、第２レベル即ちＬ２キャッシュ１０２に接続され、メモリ／Ｌ２キャッシュ制御機構／ＰＣＩブリッジ１０４並びにアドレス／データ・バッファ１０６に接続される。コンピュータ・システムＣのメイン・メモリ１０８が、メモリ／Ｌ２キャシュ制御機構１０４とアドレス／データ・バッファ１０６との間に接続される。プロセッサ１００、キャッシュ１０２、メモリ／キャッシュ制御機構１０４、アドレス／データ・バッファ１０６、及びメイン・メモリ１０８はプロセッサ・システムを構成し、ＰＣＩシステムによるプロセッサ・システムからＰＣＩバスへのブリッジを構成すると理解されている。当然ながら、必要であれば代替えプロセッサ・システム及び高速バス・アーキテクチャを使用できると理解されている。更に、ＰＣＩブリッジ１０４には、アドレス・バッファリングを含むこともできる。
【００１５】
ＰＣＩブリッジ１０４及びアドレス／データ・バッファ１０６は、コンピュータ・システムＣの高速で高性能なバックボーンを実施するＰＣＩバス１１０に接続される。ＰＣＩから「ＩＳＡ(Industry Standard Architecture:インダストリー  スタンダード  アーキテクチャ) 」へのブリッジ１１０が、ＰＣＩブリッジ１１０とＩＳＡバス１１４の間に接続される。フロッピ・ディスク制御機構１１６がＩＳＡバス１１４に接続され、同様にシステム「ＲＯＭ（read only memory: 読取り専用メモリ）」１１８も接続される。更に、交換可能なカードを受け入れるために、ＩＳＡバス１１４に接続された複数のＩＳＡスロットがあってもよい。
【００１６】
デバイスの大部分はＰＣＩバス１１０に接続される。例えば、ＳＣＳＩまたは「ＩＤＥ（Intelligent Drive Electronics:インテリジェント  ドライブ  エレクトロニクス) 」コントローラ１２２が、ＰＣＩバス１１０並びに関連ディスク・ドライブ及びその他の装置（図示せず）に接続される。また、高性能なネットワーク接続を可能にするために、ネットワーク・インターフェース・カード（ＮＩＣ）１２４がＰＣＩバス１１０に接続される。更に、ビデオ・グラフィック・システム１２６がＰＣＩバス１１０及び関連したモニタ１２８に接続される。ファックス及びモデムのデータ処理のために、ファックス／モデム「ＤＳＰ（degital signal processor: デジタル・シグナル・プロセッサ）」１３８をＰＣＩバス１１０に接続することもできる。これは、周知の様に例示的なコンピュータ・システム・アーキテクチャで、説明のために提供したものであり、当業者には変形は容易且つ明白である。
【００１７】
この説明の重要な点は、シリアル・バス・ホスト制御機構１３０がＰＣＩバス１１０にも接続されていることである。示した実施例のシリアル・バス・ホスト制御機構１３０は、ホスト制御機構とハブの両方として機能し、ホスト・バス制御機構１３０には様々なハブ及び機能が接続される。例えば、シリアル・バス・ホスト制御機構１３０の第１のポートにはプリンタ１３２が接続され、一方第２のポートには更に他の拡張機能を提供する拡張ハブ１３４が接続される。必須のＣＯＤＥＣ及びＤＡＡ構成要素を含む電話インターフェース１３６が第３のポートに接続され、電話線も受ける。電話線は、アナログ線、ＩＳＤＮ線、ＰＢＸ接続等の任意の使用可能なタイプでよい。
【００１８】
図示した実施例では、更に、モニタ１２８がハブ及びノードとして機能する。従って、モニタ１２８は、シリアル・バス・ホスト制御機構１３０の１つのポートに接続される。モニタ１２８のノードまたはデバイス機能により、モニタ１２８の構成をビデオ・システム１２６で利用される高速データから独立させることができる。モニタ１２８は、最新のコンピュータ・システムにおける従来の物理編成のためハブとして機能することが好ましい。他の装置を含むシステム・ユニットは机の下または比較的離れた場所に置かれ、モニタ１２８、キーボード１４０、マウス１４２やペン１４４等のポインティング・デバイス、電話ハンドセット１４６、及びマイクロホンとスピーカだけはユーザが比較的利用しやすい場所に置かれることが好ましい。モニタ１２８は、事実上このユニットの中心となるので、理論的にはハブとして適切な場所である。電話ハンドセット１４６は、モニタ・ハブの１つのポートに接続され、電話インターフェース１３６から直接、或いは他の場合なら、使用可能な応答装置やボイス・メール機能等からデジタル化されたアナログ情報を受け取ることができる。マイクロホンは、モニタ・ハブの第２のポートに接続された音声入力回路１４８の一部であり、一方音声出力回路１５０は音声出力用に使用されるスピーカを含む。更に、キーボード１４０は、モニター・ハブに接続され、更にマウス１４２及びペンまたはスタイラス・ポインティング・デバイス・インターフェース１４４に接続するポートを有するという点で、ハブ自体及びノードとして機能する。この物理接続は、これらの装置が基本的な入力装置であるので適切であり、殆どの場合、使用または操作を容易にするためにキーボード１４０の比較的近くにある。
【００１９】
これにより、シリアル・バス・システムによって、比較的遅いデータ転送速度の動作がシリアル・バス・ホスト制御機構１３０に接続されることがわかる。プリンタ１３２は、高帯域の非同期ブロック転送でセットアップされ使用されるが、電話インターフェース１３６と電話ハンドセット１４６、更に殆どの場合、音声入力回路１４８と音声出力回路１５０は等時デバイスであることが好ましい。キーボード１４０、マウス１４２、及びペン・インターフェース１４４は、低帯域の非同期ブロック・デバイスとして扱うことができる。総ての事例において、シリアル・バス・システム上で接続された特定のデバイスは、夫々個々のデバイスの制御及びセットアップを可能にするために、シリアル・バス・ホスト制御機構１３０を介してプロセッサ１００がアクセスする必要がある制御ポート及び構成レジスタを含む。
【００２０】
次に図２に移り、シリアル・バス・システムのブロック図を示す。説明図は、全体像が分かる様なソフトウェア及びハードウェアの構成要素を含む。例えば、オペレーティング・システム２００は、様々なシリアル・バス・デバイスとの通信を定義する。このため、〔オペレーティング・システム２００〕は、特定のデバイスを適切に構成する構成ソフトウェア２０２、及び様々なデバイスに基本データ及び制御インターフェースを提供するデバイス・ドライバ・ソフトウェア２０４とで通信する。デバイス・ドライバ・ソフトウェア２０４と構成ソフトウェア２０２は、シリアル・バス・サービス２０６と呼ばれる層と対話する。シリアル・バス・サービス２０６は、データをデバイス・ドライバ・ソフトウェア２０４と構成ソフトウェア２０２の両方に戻し、オペレーティング・システム２００に直接戻すこともある。シリアル・バス・サービス２０６は、４つの基本機能を提供する。第１の機能はクライアント・サービス２０８であり、デバイス・ドライバ・ソフトウェア２０４及び構成ソフトウェア２０２がシリアル・バス・サービス２０６に登録するときに使用し、デバイス・ドライバ・ソフトウェア２０４及び構成ソフトウェア２０２に事象通知を戻す。シリアル・バス・サービス２０６は更に、シリアル・バス・システム内の様々な機能またはデバイスの構成を追跡、管理し、更に各デバイスの構成状態を保守する構成管理ソフトウェア２１０も含む。バス管理モジュール２１２は、帯域や電力管理等のシリアル・バス・システムの動作の高レベルの管理を必要に応じて等時と非同期両方のデバイスに提供する。バス管理モジュール２１２は更に診断も実行する。第４のモジュールは、構成ソフトウェア２０２とデバイス・ソフトウェア２０４とホスト制御機構システム２１６との間で実データ転送を処理するデータ転送モジュール２１４である。
【００２１】
ホスト制御機構システム２１６は、実際には、ホスト制御機構サービス・ソフトウェア２１８とシリアル・バス・ホスト制御機構１３０の２つの部分からなる。ホスト制御機構サービス・ソフトウェア２１８は、３つのモジュールを含み、その第１のモジュールは、特定の転送またはチャネルのポーリングを実際に構成する責任をもち、効率的または円滑な動作を可能にするスケジュール管理モジュール２２０である。スケジュール管理モジュール２２０は事実上、主にシリアル・バス・システムのアービタとみなすことができる。待ち行列管理モジュール２２２は、様々なデータ待ち行列へのアクセスを制御する。コントローラ管理モジュール２２４は、シリアル・バス・ホスト制御機構１３０の実際の動作及び構成を処理し、シリアル・バス・サービス２０６に特定の機能及び状況の情報を戻す。これにより、ホスト制御機構サービス２１８は、シリアル・バス・ホスト制御機構１３０と直接対話する。シリアル・バス・ホスト制御機構１３０は、更に低いレベルのバス・プロトコルによって様々な機能またはデバイスと対話する。
【００２２】
次に図３を参照し、ホスト制御機構システム２１６の論理動作と構成を示すブロック図を示す。ＰＣＩバス１１０及びソフトウェア・インターフェース３００は、物理的にはＰＣＩバス１１０に接続され、論理的にはシリアル・バス・サービス２０６に接続される。ホスト制御機構サービス２１６の待ち行列管理モジュール２２２は、事実上４つの待ち行列を処理し、第１及び第２の待ち行列は、ブロック・データ送信待ち行列３０２とブロック・データ受信待ち行列３０４である。実際にはこれらは、等時及び非同期ブロック転送データ待ち行列である。更に他に、制御送信待ち行列３０６と制御受信待ち行列３０８の２つの待ち行列がある。これらは実際には、制御情報のための論理送信及び受信待ち行列である。送信待ち行列３０２及び３０６は、送信論理部３１０に接続され、一方受信待ち行列３０４及び３０８は受信論理部３１２に接続される。送信及び受信論理部３１０及び３１２は、ハブ機能３１４に接続され、ホスト制御機構１３０の実ポートに接続される。事実上スケジュール管理モジュール２２０の機能であるポーリング・スケジューラ３１６は、様々な待ち行列３０２、３０４、３０６及び３０８、並びに送信及び受信論理部３１０及び３１２に接続され、それによりパケットが、ポーリング・スケジューラ３１６の動作に従って適切に往復する。制御機構状況ブロック３１８が、ハブ機能３１４とインターフェース３００とに接続され、制御機構管理モジュール２２４として機能する。
【００２３】
これは論理的構成であり、ソフトウェアとハードウェアの間の機能の実際の配分は変化してもよい。この説明は主に、ソフトウェアの複雑さを最小限に抑えて全体的なパフォーマンスを最大限に高める、アービタまたはポーリング・スケジューラ３１６のハードウェア動作に関連している。様々な代替え構成は後で説明する。
【００２４】
ポーリング・スケジューラ３１６の中にあるアービタは、幾つかの異なる方法で構成することができる。これらの総ての構成において、ポーリング・スケジューラ３１６は、リセットまたは再構成するための周期タイマまたはチック・カウンタ(tick counter)を含み、所定の周期タイム・スライスを提供し、それにより等時転送を一定の順序に予定を立てることができる。周期タイマはプログラム式であることが好ましく、その動作は当業者には周知である。
【００２５】
ポーリング・スケジューラ３１６に接続されたアービタの第１の構成では、行う様に予定が立てられた様々な事象の調停は、図４に示した様な単一の待ち行列３２０の中に保持される。示した様々な事象は、実際には、行う様に予定が立てられたデータ転送動作である。例えば、電話インターフェース１３６と電話ハンドセット１４６の間に等時仮想チャネルを接続して、電話呼出しを受信できる様にする。この場合、一連の等時データ転送パケット要求は待ち行列３２０の中に入れられ、それによりシリアル・バス上の帯域が所与のパケット・サイズとデータ転送に十分になって電話での会話を中断なしに行うことができる様になる。データ転送速度が等時転送に関して比較的低速な場合は、待ち行列３２０内にエントリは１つでよいが、より高い転送速度が必要な場合には、幾つかのエントリを配置して全部合わせた帯域幅をより大きくすることができる。更に、必要に応じてパケット・サイズを変更して適応性を高めることもできる。
【００２６】
等時転送要求は、待ち行列３２０の一番上に配置され、それにより各周期の最初にアービタが待ち行列を走査し始める前に等時転送が終わることが好ましい。構成管理ソフトウェア２１０の一部は、シリアル・バス・システムの全帯域幅を所与の等時及び非同期特性の様々な転送に割り振って、等時転送が望み通りに行われることを保証する。このため、構成管理ソフトウェア２１０は、十分な等時転送だけがあり、その転送によって帯域が完全には利用されない様に計算を行う。
【００２７】
図４の説明図では、待ち行列３２０内には等時転送の次に非同期転送が配置される。例えば、これはプリンタ転送を含むことがある。これらの非同期転送は、それらの転送が非同期でありそのためより適応性があるという自明の理由で、等時要求の後に配置される。従って、非同期転送は、等時転送が行われた後でのみ実行される。非同期転送の後には、制御転送が待ち行列３２０の中に場所を割り当てられる。制御転送は、転送が適切な期間内に実行され飢餓状態にならない様に待ち行列３２０内に配置される。
【００２８】
図４に示した様な単一の待ち行列３２０だけを使用する場合は、特に等時転送の数が増えた時、等時転送と非同期転送の走査の後には制御転送用に最低の時間しか残らないことがあるため、ホスト制御機構サービス２１８のスケジュール管理モジュール２２０は極めて困難になり、それによりスケジュール管理モジュール２２０は、待ち行列３２０内の事象を頻繁に再編成して、非同期転送と制御転送が少なくとも周期的に最低の繰返し率で行われる様に保証しなければならない。これは比較的複雑なタスクであり、このため、単一の待ち行列編成を使用するのは望ましくない。単一の待ち行列３２０は、走査すべき待ち行列が１つだけなのでシリアル・バス・ホスト制御機構１３０のハードウェア動作を簡素化し、実際のスケジューリング及び飢餓状態の制御の殆どを提供するスケジュール管理ソフトウェア２２０に大きな重点が置かれる。これにより、ソフトウェアの複雑さが高まり、通常はソフトウェアはハードウェアよりも低速で稼動するので、シリアル・バス・システムの全体的パフォーマンスは最大化されない。
【００２９】
図５（Ａ）及び図５（Ｂ）は、スケジューラ３１６のアービタによって使用される待ち行列のより好ましい編成を示す。図５（Ａ）では、等時待ち行列３４０と非同期待ち行列３４２が使用される。等時待ち行列３４０には等時転送だけが含まれ、各周期の間に一度走査されることが好ましく、この待ち行列３４０は最初に走査される。待ち行列３４２は、ブロック転送や制御転送等の非同期事象を含む。待ち行列３４２は、実行後に制御転送を除去して循環式に処理されることが好ましい。制御転送は、パケット・ヘッダ情報を使用して転送を識別することにより検出される。この構造は、等時転送が単に適当に待ち行列３４０内に入れられ除去されてスケジュール管理モジュール２２０の複雑さが減少するという点で、単一の待ち行列３２０を上回る明らかな改善であるが、待ち行列３４２にはブロックや制御等の様々な非同期転送が入れられ、ブロック転送だけを取り除く必要がある。一方、スケジュール管理機能は更に、待ち行列３４２の順序をある程度維持して、制御事象が妥当な期間内に確実に起こる様にしなければならない。ソフトウェアの複雑さは大幅に低減されるが、実際にはまだ所与の望ましいデータ転送速度を上回る複雑さが存在する。
【００３０】
図５（Ｂ）は、ブロック転送待ち行列３４６と制御転送待ち行列３４８とを有する代替え待ち行列編成を示す。ブロック転送待ち行列３４６は、望ましくは等時転送の次に非同期転送が続く順序で、等時転送と非同期転送を両方とも含む。待ち行列３４６は各周期内で一回走査されることが好ましく、制御待ち行列３４８は時間と事象が使用可能なときに走査される。この場合、各制御事象は実行後に取り除かれる。この編成は、一定の事象をブロック待ち行列３４６に入れ、一方ランダムまたは擬似ランダムな制御要求を別の待ち行列３４８に単純に入れるという点で、スケジュール管理ソフトウェア２２０の動作を更に簡素化する。この編成は、制御事象がブロック事象の後にあり、そのため様々なブロック事象が全周期及びそれ以上を占める場合に飢餓状態になることがあるという欠点を有する。従って、スケジュール管理ソフトウェア２２０はこうした可能性を認識して、待ち行列３４６及び３４８を適切に扱わなければならない。更にスケジュール管理ソフトウェア２２０は、非同期転送を再編成して飢餓状態にならない様にしなければならない場合もある。
【００３１】
次に図６に移り、好ましい実施例による待ち行列構造を示す。この事例では、周期的転送待ち行列３６０、非周期的転送待ち行列３６２、及び制御転送待ち行列３６４の３つの待ち行列がアービタによって使用される。総ての等時要求は周期的待ち行列３６０に入れられ、一方非同期ブロック転送は通常総て非周期的待ち行列３６２に入れられ、保証された帯域が必要な場合には非同期ブロック転送が周期的待ち行列３６０に入れられる。制御待ち行列３６４には、様々な制御事象が入れられる。更に、図７及び図８のフローチャートにアービタの動作を示す。
【００３２】
所与の周期の動作サイクルは、ステップ４００で、周期タイマ・パルスの受信または事象に基づいて始まる。アービタは、周期的待ち行列３６０のポインタを一番上に移動し、次に制御はステップ４０２に進んで周期内で使用可能な自由時間がゼロよりも大きいかどうか判定する。構成管理ソフトウェア２１０とスケジュール管理ソフトウェア２２０は、周期的待ち行列３６０内の、通常は等時転送だけの転送によって利用される算出合計時間を決定する。この算出合計時間と周期タイマによって定義された合計時間との差が自由時間である。非周期的事象と制御事象が実際に行われ、全く飢餓状態にならないことを保証するために、自由時間は常にゼロよりも大きいことが好ましい。この自由時間の保証は構成管理ソフトウェア２１０のより高レベルの機能であり、自由時間がゼロを下回って再割振りを実行できない場合に、様々なデバイス・ドライバ２０４が要求に応じない様に帯域要求を調整する。
【００３３】
自由時間が正であると仮定すると、制御は次にステップ４０４に進んで制御待ち行列３６４内に項目があるかどうかを判定する。ある場合は、制御はステップ４０６に進んで、読取りが、制御待ち行列３６４内に提供された前の読取り要求から保留状態であるかどうかを判定する。シリアル・バス・ホスト制御機構１３０の動作を部分的に簡素化するためには、制御動作によってデバイスに読取り要求が出され応答が受け取られなかったら制御動作はそれ以上進まないことが好ましい。代替え実施例では、読取り遅延はデバイス毎にデバイス上で行われるが、これはホスト制御機構１３０の複雑さを増大させることになり好ましい実施例ではない。ホスト制御機構１３０の複雑さを回避するためには、単に読取り再実行を待つことが望ましい。読取りが保留状態の場合は、制御はステップ４０８に進み、読取り動作が中断されたかどうかを判定する。読取りを要求してもデバイスが結果を戻さないこともある。読取り動作が中断された場合、制御はステップ４１０に進んで、読取りトークン・パケットを読取り、保留していた特定デバイスに渡して、その時にデバイスが応答する準備ができているかどうか判定する。制御は、繰返し読取りトークンのステップ４１０からステップ４１２に進む。
【００３４】
ステップ４０８で読取りに考慮された時間が完了するか、またはステップ４０６で読取りが保留されていなかった場合は、制御はステップ４１３に進んで、残りの自由時間が次の制御項目を実行するのに十分かどうか判定する。十分でない場合は、制御はステップ４２０に進む。十分な場合は、制御はステップ４１４に進み、次の制御項目を実行して待ち行列３６４から除去する。当然ながら、これが読取り動作であった場合は、読取り保留フラグが送られることになる。制御はステップ４１４からステップ４１２に進む。ステップ４１２では、制御事象によって要求された特定の転送が完了したかどうか判定される。完了している場合は、制御はステップ４１６に進む。完了していない場合は、制御はステップ４１８に進んで、機能またはデバイスからの特定の応答または肯定応答が中断されたかどうか判定する。中断されてない場合は、制御はステップ４１２に戻り、完了または中断を待つ。動作が完了または中断されていた場合は、制御はステップ４１２及び４１８からステップ４１６に進む。ステップ４１６では、転送を行うために実際に必要な時間が自由時間の値から差し引かれ、その周期における残りの自由時間の量が決定される。
【００３５】
次に、制御はステップ４２０に進み、周期的待ち行列３６０内に周期的項目があるかどうか判定する。制御はまた、ステップ４０２において自由時間がゼロよりも大きくなかった場合、またはステップ４０４において制御項目がなかった場合もステップ４２０に進む。周期的項目がある場合は、制御はステップ４２２に進み、待ち行列３６０内の次の周期的項目を実行する。次に制御はステップ４２４に進み、転送が完了したかどうかを判定する。完了していない場合は、制御はステップ４２６に進み、その転送が中断されたかどうかを判定する。中断されていない場合は、制御はステップ４２４に戻る。中断が行われた場合または転送が完了した場合は、制御はステップ４２６及び４２４からステップ４２８に進み、自由時間の変化が計算される。ホスト制御機構サービス２１６は、周期的転送毎に、算出時間またはおおよその時間を知ることが好ましい。図６は、待ち行列３６０、３６２、及び３６４内の特定の事象を示しているが、待ち行列のエントリは単に、関連テーブル内へのエントリ・ポイントまたはインデックスであることが好ましい。テーブルのエントリは、単数または複数のアドレス、パケット・タイプ、送信及び受信パケットの大きさ、ホスト制御機構１３０がバス支配能力を使ってアクセスできるメイン・メモリ１０８内のパケットの位置、特定の転送の中断期間、一般に少なくとも中断期間でなければならない転送の算出時間、及び他の関連情報等の制御ブロック情報を含む。テーブル・メモリは、速さのため、そしてＰＣＩバス１１０のトラフィックを最少にするためにホスト制御機構１３０内にあってもよく、別個のローカル・メモリ内にあってもよく、またはメイン・メモリ１０８内にあってもよい。次に、この算出時間が転送に必要な実際の時間と比較され、自由時間を適切に調整することができる。転送が、算出時間よりも短い時間で完了した場合は、その差を自由時間に加えることができ、一方転送が適切な時間よりも長くかかった場合は、自由時間が減らされる。一般に実際の時間は、算出時間または要求時間よりも短くなければならないが、一定の条件下では実際の時間が要求時間を超える可能性もあり得ると理解されている。次に制御はステップ４０２に戻り、このループを続ける。
【００３６】
ステップ４２０で周期的項目がない場合は、制御はステップ４２９に進み、次の周期的項目を実行するのに十分な自由時間があるかどうかを判定する。時間が十分にない場合は、制御はステップ４０２に戻る。十分にある場合は、制御はステップ４３０に進み、非周期的待ち行列３６２内の次の非周期項目を実行する。非周期的待ち行列３６２は循環待ち行列として処理され、どの項目も除去することなく完全に走査されることが好ましい。周期的待ち行列３６０は上から下に一回走査され、制御待ち行列３６４はＦＩＦＯとして処理される。スケジュール管理及び構成管理ソフトウェア２２０及び２１０は、非周期的待ち行列３６２に事象を入れる責任を持つ。非周期的転送が実行され、制御はステップ４３２に進んでそれが完了したかどうかを確認する。完了していない場合は、制御はステップ４３４に進み、その転送が中断されたかどうか判定する。中断されてない場合は、制御はステップ４３２に戻る。転送がステップ４３４で中断したかステップ４３２で完了した場合は、制御はステップ４３６に進み、非周期的転送を行うために必要な時間が残りの自由時間から差し引かれ、この周期における全自由時間が決定される。次に制御はステップ４０２に戻る。非周期的待ち行列３６２は、高帯域と低帯域両方の総ての非同期項目を含むことが好ましく、高帯域のデバイスと低帯域のデバイスの主な違いは、データ・サイズと、ある程度、ポーリング率である。この好ましい実施例の場合は、それらは非周期的待ち行列３６２に簡単に入れられ、周期的ポーリング動作ではない単一事象型転送のためだけに制御待ち行列３６４が確保される。
【００３７】
この編成では、自由時間の量が比較的大きい場合に、周期的事象はかなり頻繁に実行されることに注意されたい。これは、一般にポートのハンドシェークが主に専用ハードウェアの機能であるためデバイス内では問題にならない。更に、これにより、飢餓状態を回避するために自由時間が少ないときに待ち行列３６２を整理し直す問題が軽減される。更に、潜在的高速ポーリングは、休止バス時間または非同期事象を行わなければならない第２の周期を定義するよりも好ましいと考えられる。しかし、非同期項目は、この潜在的高速ポーリングが望ましくない場合に、等時項目と一緒に周期的待ち行列３６０に入れてもよい。
【００３８】
この全プロセスの間の任意時間に周期的タイマがゼロになる様に数えられる場合は、現在の転送が完了した後ですぐに新しい周期が始まって、制御がステップ４００に戻り、それにより周期的待ち行列ポインタが最上部にリセットされて、各周期の間周期的事象を走査することができることは周知である。周期的タイマがゼロになる様に数えられるときに何らかの理由で制御または非周期的転送が行われている場合は、必要な追加の完了時間を次の周期の自由時間から差し引かなければならない。
【００３９】
この方式では、制御転送は、極めて短いことが多く、非常に高い優先順位を与えられるが、周期的転送が任意の自由時間を提供する場合のみ行われる。総ての周期的転送が行われた後、非周期的転送が循環式に行われ、残りの制御項目が間に挟まれる。図７及び図８に示されている様な調停フローにおける３つの待ち行列３６０、３６２及び３６４の使用によって、スケジュール管理モジュール２２０が最も簡素化される。スケジュール管理ソフトウェア２２０は、転送要求を特定待ち行列に入れることだけを必要とし、アービタはその待ち行列からの事象を処理する。ソフトウェア２２０は、図４、図５（Ａ）及び図５（Ｂ）の前例の様に、待ち行列を周期的に再編成する必要がない。これにより動作は大幅に簡略化され、重要な部分は比較的簡素化されたハードウェアで行われているため、シリアル・バス・システムの全体的動作のパフォーマンスの向上が実現される。
【００４０】
調停動作の様々なステップにおいて、残りの自由時間の算出が必要であることに注意されたい。これは、図９（Ａ）に示されている様に行うことができる。ホスト制御機構１３０は、スケジュール管理ソフトウェア２２０が算出全自由時間を記憶するレジスタ５００を含むことが好ましい。このレジスタ５００は、自由時間の値、即ち周期的待ち行列３６０内の全事象に関して算出した等時転送及び非同期転送の合計時間を周期時間から差し引いた結果を含む。このレジスタ５００は、選択された入力が周期的タイマ・パルスに接続されたマルチプレクサ５０２の１つの入力に接続される。マルチプレクサ５０２の出力は、自由時間レジスタ５０４の並列ロード入力に接続され、レジスタ５０４は実際の残りの自由時間を管理する。自由時間レジスタ５０４は、周期的タイマ事象か、等時、非同期または制御の特定の転送の完了または中断の何れかによってロードされる。自由時間レジスタ５０４のデータ出力は、加算器５０６の正の入力に提供される。加算器５０６への負または減じる入力は、加算器５０８の出力によって提供される。加算器５０８の正または加える入力は、特定の転送に関する実際の時間を受け取る。これは、転送が開始されたときに始動され転送が完了したときに停止される簡単なタイマによって保持されることが好ましい。加算器５０８の負または減算入力は、２つのマルチプレクサ５１０の出力によって提供される。マルチプレクサ５１０の選択は、周期的事象があるかどうかに基づく。周期的事象が行われていない場合は、値ゼロに接続されたマルチプレクサ５１０のゼロ入力が選択され、それにより、この事例では自由時間レジスタの値が単に周期的または制御事象に必要な実際の時間から差し引かれる。しかし、周期的事象が行われていたときは、その特定の事象について算出した時間がマルチプレクサ５１０の１つの入力に提供され、それによりこの事例では自由時間の値と算出時間の値とを加え実際の時間の値を減じたものが加算器５０６の出力に提供される。加算器５０６の出力はマルチプレクサ５０２のゼロ入力に接続され、それにより自由時間レジスタは次に、アービタが利用する自由時間の値を維持するために適切に変更される。自由時間レジスタ５０４はまた、決定ステップ４０２においてアービタによって利用されるゼロよりも大きな出力を含む。
【００４１】
代替え実施例では、算出全自由時間レジスタ５００を、スケジュール管理ソフトウェア２２０及び周期的タイマ再ロード・レジスタ５２２から周期的事象の算出全転送時間を受けとるレジスタ５２０と置き換えることができ、それはシリアル・バス・ホスト制御機構１３０内にあって常に周期的タイマを維持する。レジスタ５２２内の周期的タイマの時間は、加算器５２４の正または加える入力に提供され、周期的事象の算出合計時間は加算器５２４の負または減じる入力に提供される。次に、加算器５２４の出力はマルチプレクサ５０４の１つの入力に接続され、従ってこの方式ではソフトウェア２２０は自由時間全部を算出する必要はなく、周期的事象の算出全転送時間を簡単に提供することができる。
【００４２】
本発明の前述の開示及び説明はその例示的、説明的なものであり、大きさ、形状、材料、成分、回路素子、配線接続及び接触、並びに例示した回路、構造及び動作方法の詳細の様々な変更は、本発明の精神から逸脱しない範囲で行うことができる。
【００４３】
【発明の効果】
以上、主要なデータ・タイプ毎に３つの独立した待ち行列を利用する好ましいアービタを説明したが、このアービタは比較的単純であり、ホスト制御機構システム２１６内で利用されるスケジュール管理ソフトウェア２２０を大幅に簡素化する。この方式では、ソフトウェア要件を最小限に抑えることによってシリアル・バス・システム動作を大幅に高めることができ、更にハードウェアを複雑にし過ぎることがない。
【図面の簡単な説明】
【図１】好ましい実施例によるシリアル・バス・システムを組み込むコンピュータ・システムのブロック図である。
【図２】好ましい実施例によるシリアル・バス・システム内の様々なソフトウェア及びハードウェア機能の区分を示すブロック図である。
【図３】ホスト制御機構システムのハードウェアとソフトウェアに配分される様々な論理ブロックを示す図２のホスト制御機構システムのブロック図である。
【図４】第１の実施例による調停待ち行列の図である。
【図５】（Ａ）及び（Ｂ）は夫々第２及び第３の実施例による調停待ち行列の図である。
【図６】好ましい実施例による調停待ち行列の図である。
【図７】好ましい実施例によるアービタの動作を示すフローチャートの前半である。
【図８】好ましい実施例によるアービタの動作を示すフローチャートの後半である。
【図９】（Ａ）は図７及び図８のアービタに使用される自由時間計算器のブロック図であり、（Ｂ）は（Ａ）の一部分の代替え実施例の図である。
【符号の説明】
１００  プロセッサ
１０２  Ｌ２キャッシュ
１０４  メモリ／Ｌ２キャッシュ制御機構／ＰＣＩブリッジ
１０６  アドレス／データ・バッファ
１０８  メイン・メモリ
１１２  ＰＣＩ／ＩＳＡブリッジ
１１６  フロッピ制御機構
１１８  ＲＯＭ
１２０  スロット
１２２  ＳＣＳＩ及び／またはＩＤＥ
１２４  ＮＩＣ
１２６  ビデオ・システム
１２８  モニタ
１３０  シリアル・バス・ホスト制御機構
１３２  プリンタ
１３４  拡張ハブ
１３６  電話インターフェース
１３８  ファックス／モデムＤＳＰ
１４０  キーボード
１４２  マウス
１４４  ペン・インターフェース
１４６  電話ハンドセット
１４８  音声入力
１５０  音声出力
２００  オペレーティング・システム
２０２  構成ソフトウェア
２０４  デバイス・ソフトウェア
２０６  シリアル・バス・サービス
２０８  クアイアント・サービス
２１０  構成管理
２１２  バス管理
２１４  データ転送
２１６  ホスト制御機構システム
２１８  ホスト制御機構サービス
２２０  スケジュール管理
２２２  待ち行列管理
２２４  制御機構管理
３００  ＰＣＩインターフェース／ソフトウェア・インターフェース
３０２  ブロック・データ送信待ち行列
３０４  ブロック・データ受信待ち行列
３０６  制御送信待ち行列
３０８  制御受信待ち行列
３１０  送信論理機構
３１２  受信論理機構
３１４  ハブ機能
３１６  ポーリング・シュケジューラ
３１８  制御機構状況ブロック
【図１】
0003729546.tif 000002
【図２】
0003729546.tif 000003
【図３】
0003729546.tif 000004
【図４】
0003729546.tif 000005
【図５】
0003729546.tif 000006
【図６】
0003729546.tif 000007
【図７】
0003729546.tif 000008
【図８】
0003729546.tif 000009
【図９】
0003729546.tif 000010