(57)【要約】【課題】電子サブシステム間の柔軟な通信能力を与えるための通信装置及び方法を提供する。【解決手段】本発明の通信システム（１００）の１つの実施の形態は、接続を確立することにより通信する第１機能ブロック（１０２）と第２機能ブロック（１０４）の少なくとも２つの機能ブロックを含む。接続はデータが第１機能ブロックと第２機能ブロックとの間を転送される論理的状態である。１つの実施の形態では各機能ブロック間を結合して複数の信号を伝搬するように構成されたバス（１１２）を含み、これら複数の信号はデータ転送が一部であるトランザクションストリームを指示するスレッド識別子及び資源が転送を実行することができない時にターゲット機能ブロックにより送信されるスレッド識別子により識別されるビジー信号を含む。【選択図】図１
2004530197.tif 000002
【特許請求の範囲】
【請求項１】
通信装置内の機能ブロック間でデータを通信するための方法であって、
少なくとも１つのスレッド識別子を設定し、各スレッド識別子はイニシエーター機能ブロックとターゲット機能ブロックとの間のデータ転送が一部であるトランザクションストリームにデータ転送を関連付け、
もし、ターゲット機能ブロックがイニシエーター機能ブロックからのデータ転送を受領できない場合、ターゲット機能ブロックがスレッド識別子により識別されたビジー信号を送信し、
イニシエーター機能ブロックがビジー信号に応答してスレッド識別子に関連したデータ転送を差し控え、一方、送信されたビジー信号により識別されたスレッド識別子とは関連しないデータ転送は送信できる、
ことを含む方法。
【請求項２】
ビジー信号が、ターゲット機能ブロックがデータ転送を受領できない時、アクティブに維持される信号を含む請求項１に記載の方法。
【請求項３】
ビジー信号が、ターゲット機能ブロックがどれだけのデータ転送を受領可能かを指示するクレジット数を通信するために使用されるクレジット信号を含む請求項１に記載の方法。
【請求項４】
アクティブな各データ転送に対してクレジット数を減少し、そしてさらなるデータ転送のために資源が自由になる時にクレジット数を増加することを含む請求項３に記載の方法。
【請求項５】
クレジット信号が、クレジット数に対応したクロックサイクル数の間だけアクティブ状態に信号を維持することにより生成される請求項３に記載の方法。
【請求項６】
クレジット信号が、クレジット数を指示する符号化された信号を含む請求項３に記載の方法。
【請求項７】
イニシエーター機能ブロックとターゲット機能ブロックの間の少なくとも１つのトランザクションストリームに対するサービス保証を決定することをさらに含む請求項１に記載の方法。
【請求項８】
ビジー信号の送信後に所定数を超えたデータ転送をターゲット機能ブロックが受信しないように、イニシエーター機能ブロックがデータ転送の送信を停止することをさらに含む請求項１に記載の方法。
【請求項９】
ターゲット機能ブロックがイニシエーター機能ブロックからのデータ転送を受信するために不十分なバッフアスペースを持つと判断した後、ターゲット機能ブロックが所定数のクロックサイクルを超えないビジー信号を送信する請求項１に記載の方法。
【請求項１０】
ターゲット装置が、資源がバッフアされたデータ転送のサービスに利用可能となるまで、ビジー信号の送信後、受信されたデータ転送をバッフアすることをさらに含む請求項８に記載の方法。
【請求項１１】
サービス保証を決定することが、
トランザクションストリームをイニシエーター装置とターゲット装置の間の部品のデータチャンネルにマッピングし、
データチャンネルの保証の単位が均一に整列されるようにマッピングされたトランザクションストリームの選ばれたデータチャンネルの性能保証を変換し、
トランザクションストリームに対するデータチャンネルの保証を総計する、
ことを含む請求項７に記載の方法。
【請求項１２】
総計することが、トランザクションストリームのデータチャンネルの保証を加算すること、トランザクションストリームのデータチャンネルの最大保証を選択すること、及びトランザクションストリームのデータチャンネルの最小保証を選択することからなるグループより選択された関数を含む請求項１１に記載の方法。
【請求項１３】
保証が、サービス保証、性能保証、帯域幅保証、待ち時間保証、最大未処理要求保証、及びサービス待ち時間最大変動保証の品質からなるグループより選択される請求項１１に記載の方法。
【請求項１４】
通信装置内の機能ブロック間でデータを通信するための方法であって、
少なくとも１つのスレッド識別子を設定し、各スレッド識別子はイニシエーター機能ブロックとターゲット機能ブロックとの間のデータ転送が一部であるトランザクションストリームにデータ転送を関連付け、
もし、ターゲット機能ブロックがイニシエーター機能ブロックからのデータ転送を受領できない場合、ターゲット機能ブロックがスレッド識別子により識別されたビジー信号を送信し、
ビジー信号の送信後、バッフアされたデータ転送のサービスが可能となるまで受信されたデータ転送をバッフア内に格納し、バッフアの量はビジー信号が主張された後に到着するどんな転送をバッフアするのに十分であり、一方、イニシエーター機能ブロックとターゲット機能ブロックの間のインターフェイスは他のスレッド識別子のデータ転送を阻止しない、
ことを含む方法。
【請求項１５】
ターゲット機能ブロックがイニシエーター機能ブロックからのデータ転送を受領できないと判断した時、ターゲット機能ブロックが所定数のクロックサイクルのビジー信号を送信する請求項１４に記載の方法。
【請求項１６】
ターゲット機能ブロックが、ビジー信号の送信後、所定数を超えるデータ転送を受信しないことを含む請求項１４に記載の方法。
【請求項１７】
イニシエーター機能ブロックとターゲット機能ブロックとの間の少なくとも１つのトランザクションストリームに対するサービス保証を決定することをさらに含む請求項１５に記載の方法。
【請求項１８】
サービス保証を決定することが、
トランザクションストリームをイニシエーター装置とターゲット装置の間の部品のデータチャンネルにマッピングし、
データチャンネルの保証の単位が均一に整列されるようにマッピングされたトランザクションストリームの選ばれたデータチャンネルの性能保証を変換し、
トランザクションストリームに対するデータチャンネルの保証を総計する、
ことを含む請求項１７に記載の方法。
【請求項１９】
総計することが、トランザクションストリームのデータチャンネルの保証を加算すること、トランザクションストリームのデータチャンネルの最大保証を選択すること、及びトランザクションストリームのデータチャンネルの最小保証を選択することからなるグループより選択された関数を含む請求項１８に記載の方法。
【請求項２０】
接続を確立することにより通信をするイニシエーター機能ブロックとターゲット機能ブロックの少なくとも２つの機能ブロックと、
各機能ブロックと結合されて複数の信号を伝搬するために構成されたバスと、を含み、
これら複数の信号が、イニシエーター機能ブロックとターゲット機能ブロックとの間のトランザクションストリームにデータ転送を関連付けるように構成されたスレッド識別子及びターゲット機能ブロックにより資源がデータ転送を実行するのに利用不可能であることを指示するために送信されるスレッド識別子により識別されたビジー信号を含み、
ビジー信号の送信に応答して関連したイニシエーター機能ブロックがスレッド識別子と関連したデータ転送の送信を差し控える通信装置。
【請求項２１】
ビジー信号が、ターゲット機能ブロックがデータ転送を受領できない時、アクティブに維持される信号を含む請求項２０に記載の装置。
【請求項２２】
ビジー信号が、ターゲット機能ブロックがどれだけのデータ転送を受領可能かを指示するクレジット数を通信するために使用されるクレジット信号を含む請求項２０に記載の装置。
【請求項２３】
クレジット数が、アクティブな各データ転送に対して減少され、そしてさらなるデータ転送のために資源が自由になる時に増加される請求項２２に記載の装置。
【請求項２４】
クレジット信号が、クレジット数に対応したクロックサイクル数の間だけアクティブ状態に信号を維持することにより生成される請求項２２に記載の装置。
【請求項２５】
クレジット信号が、クレジット数を指示する符号化された信号を含む請求項２２に記載の装置。
【請求項２６】
少なくとも１つのトランザクションストリームが、イニシエーター機能ブロックとターゲット機能ブロックとの間のトランザクションストリームに対するサービス保証を決定することができるノンブロッキングである請求項２０に記載の装置。
【請求項２７】
ターゲット機能ブロックが、ターゲット機能ブロックによりビジー信号が送信された後でイニシエーター機能ブロックによりビジー信号が受取られる前にイニシエーター機能ブロックから送信されたデータ転送を受信するためのバッフアをさらに含む請求項２０に記載の装置。
【請求項２８】
トランザクションストリームをイニシエーター装置とターゲット装置の間の部品のデータチャンネルにマッピングし、データチャンネルの保証の単位が均一に整列されるようにマッピングされたトランザクションストリームの選ばれたデータチャンネルの性能保証を変換し、及びトランザクションストリームに対するデータチャンネルの保証を総計する、ことによりサービス保証が決定される請求項２７に記載の装置。
【請求項２９】
総計することが、トランザクションストリームのデータチャンネルの保証を加算すること、トランザクションストリームのデータチャンネルの最大保証を選択すること、及びトランザクションストリームのデータチャンネルの最小保証を選択することからなるグループより選択された関数を含む請求項２８に記載の装置。
【請求項３０】
保証が、サービス保証、性能保証、帯域幅保証、待ち時間保証、最大未処理要求保証、及びサービス待ち時間最大変動保証の品質からなるグループより選択される請求項２６に記載の装置。
【請求項３１】
接続を確立することにより通信をするイニシエーター機能ブロックとターゲット機能ブロックの少なくとも２つの機能ブロックと、
各機能ブロックと結合されて複数の信号を伝搬するために構成されたバスと、
これら複数の信号が、イニシエーター機能ブロックとターゲット機能ブロックとの間のデータ転送の一部であるトランザクションストリームにデータ転送を関連付けるように構成された少なくとも１つのスレッド識別子を含み、もし、ターゲット機能ブロックがイニシエーター機能ブロックからのデータ転送を受領するのが不可能である場合、ターゲット機能ブロックがスレッド識別子により識別されたビジー信号を送信し且つビジー信号の送信の後に資源がバッフアされたデータ転送のサービスのために利用可能となるまで受信されたデータ転送をバッフアし、
ビジー信号の主張後に到着するトランザクションストリームに関するいずれのデータ転送もバッフアするのに十分なバッフア大きさのターゲット機能ブロックに結合されたバッフアと、を含み、
イニシエーター機能ブロックとターゲット機能ブロックとの間のインターフェイスが少なくとも１つの実行できる他のトランザクションストリームのデータ転送とインターフェイスを阻止しない通信装置。
【請求項３２】
ターゲット機能ブロックがイニシエーター機能ブロックからのデータ転送を受領することが不可能であることを判断した後、ターゲット機能ブロックが所定数のクロックサイクルのビジー信号を送信する請求項３１に記載の装置。
【請求項３３】
ターゲット機能ブロックが、ビジー信号の送信後に所定数を超えるデータ転送を受信しないことをさらに含む請求項３１に記載の装置。
【請求項３４】
ターゲット機能ブロックが、イニシエーター機能ブロックとターゲット機能ブロックとの間の少なくとも１つのトランザクションストリームに対するサービス保証を決定することをさらに含む請求項３１に記載の装置。
【請求項３５】
サービス保証を決定することが、
トランザクションストリームをイニシエーター装置とターゲット装置の間の部品のデータチャンネルにマッピングし、
データチャンネルの保証の単位が均一に整列されるようにマッピングされたトランザクションストリームの部品のデータチャンネルの決定保証を選択的に変換し、
トランザクションストリームに対するデータチャンネルの保証を総計する、
ことを含む請求項３４に記載の装置。
【請求項３６】
総計することが、トランザクションストリームのデータチャンネルの保証を加算すること、トランザクションストリームのデータチャンネルの最大保証を選択すること、及びトランザクションストリームのデータチャンネルの最小保証を選択することからなるグループより選択された関数を含む請求項３５に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューテイング・サブシステムを接続する通信システムに関する。
【背景技術】
【０００２】
電子計算及び通信システムはより多数の特徴を包含し、複雑性を増加し続けている。同時に、電子計算及び通信システムの物理的な大きさ及び機能当たりのコストは減少している。４層深サブミクロン相補的金属酸化物半導体（ＣＭＯＳ）技術などの半導体技術の急速な進歩が、真の「チップ上のシステム」デザインを可能にしている。これらの複雑なデザインは、例えば、１つ又は複数のプロセッサコア、デジタル信号処理（ＤＳＰ）コア、いくつかの通信インターフェイス、及びグラフイック支援をアプリケーション特別ロジックの中に組み込む。いくつかのシステムにおいて、これらの極端に複雑なチップの１つ又はいくつかは互いにそして他のシステムと通信しなければならない。効率的な通信が単一の複雑なチップ上のサブシステム間及びシステムボード上のチップ間及びシステムボート上のチップ間で行われる必要があるため、このようなシステムの集積化、検証、そして試験に重大な新しい挑戦が生ずる。サブシステムとチップの間の通信の効率的で柔軟な方法を有する１つの利点は、システム部品を他のシステムに最小の再設計で再使用できることである。
【０００３】
現代の電子システムの集積化、検証、そして試験における１つの挑戦は、多くのアプリケーション分野における現代の電子システムが機能ブロック間でメモリなどの資源を共有することを必要とする機能性、コスト及びフォームファクターの要件を有する事実から生ずる。ここで、機能ブロックは通信システムとインターフェイスするどんなエンティテイであることができる。このようなシステムでは、機能ブロックは典型的に異なる性能特性と要件を有し、そして共有資源が全部の要件を同時に満足しなければならない。典型的な機能ブロックの重要な要件は、機能ブロック間で大きさが数オーダーにわたって変化できる待ち時間及び帯域幅制約である。広く変化する制約を同時に満足するために、通信システムは高度の予報可能性を与えなければならない。
【０００４】
現代の複雑なコンピュータ・システムについての通信システム設計の従来の手法は、さまざまな長所と短所を有している。このような手法の本質的な観点はさまざまなサブシステムが互いに提供する通信インターフェイスである。１つの手法は、サブシステムとそれが通信しなければならない各ピアとの間にカスタマイズされたポイント・ツー・ポイント・インターフェイスを定義することである。このカスタマイズされた手法は、プロトコルの簡潔さ、保証された性能、及び関係の無いサブシステムへの依存性からの隔離を提供する。しかし、カスタマイズされたインターフェイスはその性質上、柔軟性に欠ける。異なるインターフェイスを持つ新しいサブシステムの追加はデザインの再設計を必要とする。
【０００５】
第２の手法は、標準化されたインターフェイスを使用してシステムを定義することである。多くの標準化されたインターフェイスは以前に確立されたコンピュータバスプロトコルに基づいている。コンピュータバスの使用は、バスが十分な性能を有する限り、システムが必要とする多くの異なる機能ブロックを一緒に接続することができるため、システム設計に柔軟性を与える。また、さまざまなサブシステムの間でバスへのアクセスを割り当てる必要がある。コンピュータバスの場合、資源の割り当ては典型的に、アービトレイション（仲裁）と呼ばれている。
【０００６】
コンピュータバスの１つの不利な点は、バスに接続された各サブシステム又は部品はバスプロトコルを使用する制約を受ける。いくつかの場合、これがサブシステムの性能を制限する。例えば、サブシステムは同時に複数のトランザクションストリームを取り扱う能力を持つことができるが、バスプロトコルは同時的操作を十分に支援することができない。各トランザクションストリームが順番制約を持つ複数のトランザクションストリームを取り扱うサブシステムの場合、ストリーム間を認識しそしてストリーム内の順番を保存するために、サブシステムは受信又は送信されたデータの各増加をあるデータストリームのある部分と識別する必要がある。これはデータ送信源であるサブシステムを識別することを含む。通常は、このような識別は特別のサブシステム又は部品により生成される構成可能でないハードウェア識別子に限定されている。
【０００７】
現在のバスシステムは、１つのトランザクションからのデータが同じストリームの別のトランザクションからのデータにより間挿（インターリーブ）される「分割トランザクション」を支援することにより、１つのトランザクションストリーム内の順番を保存するための制限された能力を提供する。このようなバスでは、データは順番から外れて到着しても識別できるように１つのデータストリームに所属しているタグが付けられる。これは受信するサブシステムが識別情報を抽出するために到着アドレスを復号することを必要とする。
【０００８】
現在のバスシステムは、いくつかのＤＲＡＭクライアントに対して１つのダイナミックランダムアクセスメモリ（ＤＲＡＭ）へのアクセスを取り扱うメモリコントローラなど、１つの相互接続を介して複数のトランザクションストリームを処理できるサブシステムの真の同時的操作を支援していない。ＤＲＡＭコントローラは、アクセス要求源、アクセス要求優先度、順番要求等に関する情報を必要とするであろう。現在の通信システムは、既存のプロトコルに適応させるためにサブシステムに追加の負荷を課すことなくして、このような情報をデータと共に送信することをしない。
【０００９】
多くのサブシステムがそれらの能力の全てを使用して従来のシステムで動作するためには、既存の通信システム上の通信を提供するために追加の知識がサブシステムに設計されなければならない。これはサブシステムが後で新しいサブシステム又は部品と通信することが要求される場合、サブシステムをより高価にして柔軟性を失わせる。このように、既存の通信手法は、今日の大きくて複雑な電子システムの要求を満足していない。従って、大きくて複雑な電子システムのサブシステムがそれらの変化する性能特性及び要件に関係なく効率的に相互動作することを可能にする通信システム及びメカニズムが必要とされる。
【００１０】
（発明の開示）
本発明の１つの実施の形態は、電子サブシステム間の柔軟な通信能力を与えるための共有通信バスを含む。１つの実施の形態は、サブシステムに追加の知識を設計することなく、特定のサブシステムにより必要とされる詳細さの異なるレベルでデータ送信の識別を可能にするプロトコルを含む。
【００１１】
本発明の１つの実施の形態は、少なくとも１つのイニシエーター機能ブロック及び１つのターゲット機能ブロックを含むいくつかの機能ブロックを含む。いくつかのイニシエーター機能ブロックはターゲット機能ブロックとしても機能できる。１つの実施の形態では、イニシエーター機能ブロックはイニシエーター・インターフェイス・モジュールに接続され、ターゲット機能ブロックはターゲット・インターフェイス・モジュールに接続されている。イニシエーター機能ブロックとターゲット機能ブロックはそれらのそれぞれのインターフェイス・モジュールと通信し、そしてインターフェイス・モジュールは互いに通信する。イニシエーター機能ブロックはターゲット機能ブロックと接続を確立することにより通信をする。ここで、接続とはデータをイニシエーター機能ブロックとターゲット機能ブロックとの間で送ることが可能な論理状態である。
【００１２】
また、１つの実施の形態は、複数の信号を運搬するために構成されたバスを含み、ここで、信号はイニシエーター機能ブロックとターゲット機能ブロックとの間のデータ転送が一部である特定の接続を示す接続識別子信号を含む。接続識別子は、どの機能ブロックが送信源であるか、送信要求の優先度、及び送信順番情報などの接続に関する情報を含む。また、１つの実施の形態は、スレッド識別子を含み、接続識別子により与えられる情報の小組を提供する。１つの実施の形態では、スレッド識別子はインターフェイス・モジュールと接続された機能ブロックとの間の転送を識別するローカル範囲の識別子であり、いくつかの実施の形態では、インターフェイス・モジュールが機能ブロックを共有通信バスに接続する。
【００１３】
接続識別子は情報をインターフェイス・モジュール間又はそれらのインターフェイス・モジュールを介して機能ブロック間に転送するグローバル範囲の識別子である。いくつかの機能ブロックは接続識別子により提供される全ての情報を必要とするが、他の機能ブロックはスレッド識別子により提供される情報の小組のみを必要とする。
【００１４】
（詳細な説明）
本発明は、複雑な電子システムの複数の機能ブロック又はサブシステムが共有通信バスなどの共有通信資源を介して互いに通信することを可能にした通信システム及び方法である。１つの実施の形態では、通信プロトコルが１つの半導体装置上の複数の機能ブロックが互いに通信することを可能にする。別の実施の形態では、その通信プロトコルが異なる半導体装置上の複数の機能ブロックがバスなどの共有オフチップ通信資源を介して互いに通信することを可能にするために使用できる。
【００１５】
１つの実施の形態では、本発明は別の命令、アドレス、及びデータ線を持つパイプライン化された通信バスである。代替的な実施の形態は、多重化されたアドレス、データ、及び制御信号を持つパイプライン化された通信バスを含む。前者の実施の形態は、割増の線を必要とするが後者の実施の形態より高い性能と単純な制御を提供する。前者の実施の形態は、線が相対的に高価ではなく、性能要求が通常はより高いオンチップ通信についてよりふさわしい。後者の実施の形態は、アドレスとデータ転送の間で同じ線を共有するため、線当たりの転送についてより高い効率を与える。後者の実施の形態は、パッケージピン及びボードトレースが信号当たりのコストを増加するため、そして総通信要求性能が普通低い、半導体装置間のチップ・ツー・チップ通信によりふさわしい。
【００１６】
図１は、複雑な電子システム１００のブロック図である。共有通信バス１１２がサブシステム１０２、１０４、１０６、１０８及び１１０を接続する。サブシステムは典型的に、共有バスへインターフェイスするためのインターフェイス・モジュールを含んだ機能ブロックである。サブシステムは、それ自身が１つ又は複数の機能ブロックを含んでもよく、そして集積化された又は物理的に別のインターフェイス・モジュールを含むか又は含まなくてもよい。１つの実施の形態では、通信バス１１２により接続されたサブシステムは別の集積回路チップである。サブシステム１０４は、特定の機能を実行するために設計された集積回路として知られているアプリケーション特別集積回路（ＡＳＩＣ）である。サブシステム１０６は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）である。サブシステム１０８は、消去可能、プログラム可能、読み出し専用メモリ（ＥＰＲＯＭ）である。サブシステム１１０は、フィールドプラグラム可能ゲートアレイ（ＦＰＧＡ）である。サブシステム１０２は、システム１００において動作するように特別に設計された完全なカスタム集積回路である。他の実施の形態は、図示したような同じタイプの又は図示しない他のタイプの追加のサブシステムを含むことができる。他の実施の形態はシステム１００に示されるサブシステムよりは少ないサブシステムを含んでも良い。集積回路１０２は、サブシステム１０２Ａ、１０２Ｂ、１０２Ｃ、１０２Ｄ及び１０２Ｅを含む。ＡＳＩＣ１０４は、機能ブロック１０４Ａ、１０４Ｂ及び１０４Ｃを含む。ＦＰＧＡ１１０は、機能ブロック１１０Ａ及び１１０Ｂを含む。機能ブロックは特定の機能を実行する論理の定ブロックであってよい。また、機能ブロックは集積回路上のメモリ部品であってもよい。
【００１７】
システム１００は、１つ又は複数の集積回路又はチップからなってもよいシステムの一例である。機能ブロックは例えば機能ブロック１０２Ｅのような集積回路上の論理ブロック、又は、機能ブロックは単一の論理機能を実行する完全なカスタム集積回路１０２などのような集積回路であってよい。
【００１８】
共有通信バス１１２は、システム１００のサブシステム間に共有通信バスを提供する。共有通信バス１１４は、単一の集積回路上のサブシステム又は機能ブロック間に共有通信バスを提供する。図示された機能ブロックのいくつかは、インターフェイス・モジュールに接続されて、それを介して共有通信バス１１２又は共有通信バス１１４から及びへ信号を受信し及び送信する。相互接続１１５は、インターフェイス・モジュールを機能ブロックに接続するためのローカル・ポイント・ツー・ポイント相互接続である。
【００１９】
図示するように、インターフェイス・モジュール１２０−１２７はさまざまな機能ブロックに接続される。この実施の形態では、インターフェイス・モジュール１２０、１２２、１２３及び１２４はそれらが接続された機能ブロック（それぞれ、Ａ、Ｂ、Ｃ、Ｅ及び１０２）からは物理的に分離されている。インターフェイス・モジュール１２１、及び１２５−１２８は本質的にそれらのそれぞれの機能ブロック又はサブシステムの部分である。１０２Ｄなどのいくつかの機能ブロックは、専用のインターフェイス・モジュールを必要としない。サブシステム、機能ブロック、及びインターフェイス・モジュールの配置は柔軟で、システム設計者により決定される。
【００２０】
１つの実施の形態では、４つの基本的なタイプの機能ブロックが存在する。４つの基本的なタイプは、イニシエーター、ターゲット、ブリッジ、及びスヌーピング・ブロックである。典型的なターゲットはメモリ装置であり、典型的なイニシエーターは中央処理ユニット（ＣＰＵ）である。機能ブロックの全ては共有通信１１２又は共有通信バス１１４及び１つの実施の形態のプロトコルを介して互いに通信する。イニシエーター及びターゲット機能ブロックはインターフェイス・モジュールを介して共有通信バスと通信できる。イニシエーター機能ブロックは、イニシエーター・インターフェイス・モジュールを介して共有通信バスと通信でき、そしてターゲット機能ブロックはターゲット・インターフェイス・モジュールを介して共有通信バスと通信できる。
【００２１】
イニシエーター・インターフェイス・モジュールはそれが付随するもの以外の機能ブロックから及びへ読み出し及び書き込み要求を受信し及び送信する。１つの実施の形態では、イニシエーター・インターフェイス・モジュールは典型的に、ＣＰＵ、デジタル信号処理（ＤＳＰ）コア、又は直接メモリアクセス（ＤＭＡ）エンジンに接続される。
【００２２】
図２は、本発明の実施の形態のイニシエーター・インターフェイス・モジュール８００のブロック図である。イニシエーター・インターフェイス・モジュール８００は、クロック発生器８０２、データフロー・ブロック８０６、アービトレーター・ブロック８０４、アドレス／命令復号ブロック８０８、構成レジスタ８１０、及びシンクロナイザー８１２を含む。イニシエーター・インターフェイス・モジュール８００は、共有通信バス８１４とイニシエーター機能ブロック８１６に接続される。１つの実施の形態では、共有通信バス８１４は図１にバス１１２のようにサブシステムを接続する共有通信バスである。
【００２３】
クロック発生器８０２は、イニシエーター機能ブロック８１６が異なる周波数で共有通信バス８１４に対して同期して動作する時、クロック分割を実行するために使用される。イニシエーター機能ブロック８１６が共有通信バス８１４に対して非同期して動作する時、クロック発生器８０２は使用されず、シンクロナイザー８１２が使用される。アービトレーター・ブロック８０４は共有通信バス８１４へのアクセスのアービトレイション（仲裁）を実行する。１つの実施の形態では、複数レベルのアービトレイション構成が使用され、アービトレーター・モジュール８０４は第１レベル・アービトレイションの前割当て帯域幅アスペクトを管理する論理回路と第２レベル・アービトレイションを管理する論理を含む。データフロー・ブロック８０６は、共有通信バス８１４とイニシエーター機能ブロック８１６の間のトランザクションの管理と関連する制御論理に加えて、共有通信バス８１４とイニシエーター機能ブロック８１６の間にデータフロー・ファーストイン・ファーストアウト（ＦＩＦＯ）バッフアを含む。ＦＩＦＯバッフアは、共有通信バス８１４とイニシエーター機能ブロック８１６との間で転送されるアドレス及びデータ・ビットの両方をステージする。1つの実施の形態では、共通通信バス８１４はメモリマップド・プロトコルを実現する。基礎にあるコンピュータバスプロトコルがある操作の同時性を支援するならば、基礎にあるコンピュータバスプロトコルの特定の詳細は本発明には重要ではない。本発明に使用されるバスプロトコルの好適な実施の形態は、繰り返しトランザクション又は分割トランザクションを支援するものである。何故ならば、これらのプロトコルは他の関係無いトランザクションに属する転送を可能にするために複数サイクルトランザクションを中断することにより操作の同時性を伝える機構を提供する。これらのプロトコルは、イニシエーターにより前に要求されたデータを長い待ち時間のターゲットが戻すのをイニシエーターが待つ間、独立のトランザクションがバスを使用できるから、高い転送効率を可能にする。
【００２４】
アドレス／命令復号ブロック８０８は、イニシエーター機能ブロック８１６に付随したレジスタへの書き込みが実行されるべきかを決定するために共有通信バス８１４上のアドレスを復号する。アドレス／命令復号ブロック８０８はまた、入力する命令を復号する。構成レジスタ８１０は、帯域幅割当て及びクライアント・アドレス・ベースを含む、モジュール８００の状態を決定するビットを格納する。1つのレジスタ８１０は、イニシエーター機能ブロック８１６を独特に識別するビット組であるアイデンティフイケーション（ＩＤ）を格納する。
【００２５】
図３は、ターゲット・インターフェイス・モジュール９００の実施の形態のブロック図である。ターゲット・インターフェイス・モジュール９００は共有通信バス９１４及びターゲット機能ブロック９１８に接続されている。ターゲット・インターフェイス・モジュール９００は、クロック発生器９０２と、データフロー・ブロック９０６と、アドレス／命令復号ブロック９０８と、シンクロナイザー９１２と、状態制御ブロック９１６内の状態レジスタとを含む。イニシエーター・インターフェイス・モジュール８００のブロックと同様な名前のターゲット・インターフェイス・モジュール９００のブロックは、イニシエーター・ブロック８００に関して説明したのと実質的に同じ方法で機能する。状態レジスタ及び状態制御ブロック９１６は、例えば、ターゲット機能ブロック９１８に対する識別子とクライアント・アドレス・ベースを格納するレジスタを含む。
【００２６】
１つの実施の形態では、イニシエーター機能ブロック８１６などのイニシエーター機能ブロックはまたターゲット機能ブロックとして動作し、他の機能ブロック又はサブシステムへ信号を送信することにより動作を開始すると共に他の機能ブロック又はサブシステムからの信号に応答する能力を有する。
【００２７】
図４は、１つの実施の形態によるコンピュータ・システム１００の一部のブロック図である。図４は、複数レベル接続アイデンティフイケーションを説明するために有用である。システム１００は、イニシエーター・インターフェイス・モジュール１００４に相互接続１０１０により接続されたイニシエーター機能ブロック１００２を含む。イニシエーター・インターフェイス・モジュール１００４は、共有通信バス１０１２によりターゲット・インターフェイス・モジュール１００６に接続されている。ターゲット・インターフェイス・モジュール１００６は、相互接続１０１０によりターゲット機能モジュール１００８に接続されている。典型的に、共有通信バス１０１２は図１の共有通信バス１１２又は図１の共有通信バス１１４と類似している。相互接続１０１０は典型的に、共有された相互接続ではなく、ポイント・ツー・ポイントである機能ブロックをインターフェイス・モジュールに接続する図１の相互接続１１５に類似する。相互接続１０１０は典型的に、そのローカル的性質のため、共有通信バス１０１２よりも物理的に短い。以下により詳細に説明するが、システム１００は特定の機能ブロックの要件に依存して２つの異なるレベルの接続識別を使用する。「グローバル」接続識別情報は共有通信バス１０１２上に送信されるが、「ローカル」接続識別又はスレッド識別情報は相互接続１０１０内に送信される。
【００２８】
図５は、共有通信バス１０１２の１つの実施の形態のブロック図である。共有通信バス１０１２が、インターフェイス・モジュール又は機能ブロックであってよいエンティテイＡ、Ｂ、Ｃ、Ｄ及びＥに接続されていることが示されている。共有通信バス１０１２は、一組の線からなっている。データ線２３０は、共有通信バス１０１上の機能ブロック間に直接的な高効率のデータトラフイックの転送を提供する。１つの実施の形態では、共有通信バス１０１２は、別個のアドレス、データ、及び接続識別線を使用してフレーム化され、時間分割多重化され、完全にパイプライン化されて、固定待ち時間の通信プロトコルであるバスプロトコルを支援する。バスプロトコルは高い動作の同時性を可能にするため細かい粒のインターリーブ（間挿）を支援し、そして長い又は可変の待ち時間のターゲット装置からの読出しを効率的に実行するための再試行トランザクションを用いる。本発明を理解するためには、共有通信バス１０１２をアクセスするために用いられるアービトレイション方法の詳細は必要でない。イニシエーター機能ブロックが命令とアドレスをドライブした時から機能ブロックが応答をドライブするまでの遅延時間は、共有通信バス１０１２の待ち時間として知られている。バスプロトコルは、バスをアクセスするために多くのイニシエーター機能ブロックとターゲット機能ブロックの間のアービトレイションを支援する。図示された実施の形態では、共有バス１０１２へのアクセスのアービトレイションは図４のモジュール１００４などのイニシエーター・インターフェイス・モジュールにより実行される。他の実施の形態では、アービトレイションは機能ブロックにより直接実行されるか、又は、インターフェイス・モジュールと機能ブロックの組合わせにより実行される。１つの実施の形態では、バス許可は１つのパイプライン化されたバスサイクルの間、続く。プロトコルは、単一の機能ブロックが連続したバスサイクルについてバス所有者になることを禁止しないが、その機能ブロックがその権利を得るために連続したバスサイクルにおいてアービトレイションに成功的に勝利することを必要とする。
【００２９】
共有通信バス１０１２は、別個のアドレス、データ及び制御線を含む。他の実施の形態では、１つ又は複数の線を共有する多重化されたアドレス、データ及び制御信号を含んでよい。このような実施の形態は、線がアドレス及びデータ転送で共有されるため線当たりの高い転送効率を与えるだろう。共有通信バス１０１２の非多重化の実施の形態は、単一の集積回路チップ上では線が相対的に安価であり性能要求が普通はより高いため、単一集積回路チップ上の機能ブロック間の通信に対してよりふさわしい。
【００３０】
クロック線２２０は、全ての他の共有通信バス１０１２信号が同期される時間基準信号を与えるグローバル信号線である。リセット線２２２は、接続された各機能ブロックをシステム構成が開始されるデフォルト状態にするためのグローバル信号線である。命令線２２４は、イニシエーターバス所有者により駆動される複数ビット信号を運搬する。さまざまな実施の形態では、複数ビット命令信号はさまざまなタイプの情報を伝達できる。例えば、命令信号は転送タイプ、接続持続期間に関する情報、及び接続の際の期待されるイニシエーターとターゲットの行動を示すことができる。１つの実施の形態では、命令信号は接続の開始と終了を示す１つ又は複数のビットを含む。１つの実施の形態で、例えば、１ビットが接続の開始を示す。もし、ビットがゼロならば、現在の転送はその接続で最後の転送である。ゼロの接続状態ビットを受信後、論理１の接続状態の次の受信は、転送が新たに開かれた接続で最初のものであることを示す。引き続いて受信される１の接続状態ビットは接続がまだオープンしていることを示す。
【００３１】
この実施の形態で支援される転送のタイプは、限定的ではなく、読出し及び書込み転送を含む。アドレス線２２８は、現在の転送中に読み出される又は書き込まれるべきオブジェクトのアドレスを特定するためにイニシエーターバス所有者により駆動される複数ビット信号を伝搬する。応答線２３２は、現在の転送の状態を示すためにターゲットにより駆動される複数ビット信号を伝搬する。応答により支援されるものは限定的ではなく次の応答を含む。ＮＵＬＬ応答は、現在の転送は多分、アドレスがいずれのターゲットを選択しないために中止されるべきことを示す。データ有効及び受領（ＤＶＡ）応答は、読出しの場合、ターゲットがデータ線２３０上に要求されたデータを返していることを示す。書き込みの場合、ＤＶＡ応答はターゲットがデータ線２３０から与えられたデータを受領したことを示す。ＢＵＳＹ応答は選択されたターゲットが資源の衝突を有し、現在の要求にサービスできないことを示す。この場合、イニシエーターは後で再び転送を試みるべきである。ＲＥＴＲＹ応答は、選ばれたターゲットが間に合うように要求された読出しデータを配達することができないが、後でそうすることを約束することを示す。この場合、イニシエーターは後で転送を再度試みなければならない。
【００３２】
接続識別子（ＣＯＮＮＩＤ）線２２６は、現在の転送が接続のどの部分であるかを示すためにイニシエーターバス所有者により駆動される複数ビット信号を伝搬する。接続はイニシエーターにより設定された論理状態であり、データがイニシエーターと関連するターゲットの間に転送される。ＣＯＮＮＩＤは、典型的に、転送を開始した機能ブロックの識別を含む情報と転送が処理されるべき順番に関する順番情報とを送信する。１つの実施の形態では、ＣＯＮＮＩＤにより伝達される情報は他の転送に対するその転送の優先度に関する情報を含む。１つの実施の形態では、ＣＯＮＮＩＤは、８ビットコードである。イニシエーター・インターフェイス・モジユールは接続の初期アドレス転送と共に独特なＣＯＮＮＩＤを送信する。この接続に関連した後の転送（例えば、データ転送）でもまた、ＣＯＮＮＩＤ値を提供して、送信者及び受信者が（及び共有通信バス１０１２上の転送を監視しているどんな装置も）共にその接続に関連した転送を明確に識別することができる。ＣＯＮＮＩＤの使用の１つの利点は、サイクル当たりのベースで複数の装置間の異なるトランザクションに属する転送を任意にインターリーブ（間挿）できることである。１つの実施の形態では、共有通信バス１０１２は適正なシステム動作を保証するためにトランザクションの順番について厳格な制御を必要とする完全にパイプライン化されたプロトコルを実現する。ＣＯＮＮＩＤを使用しないと、特定の接続に関連する転送が識別できないから特定のトランザクション内の順番制約は違反されるであろう。
【００３３】
後の命令が既に飛行中にある時に最初の命令がＢＵＳＹ応答により拒絶されるかもしれないため、どちらの命令が完了したかについて十分な制御を可能にする機構を提供することが必須である。もし、このような制御が提供されないと、不明確なシステムの行動を生ずる。例えば、もし、１つのイニシエーター・インターフェイス・モジュールが依存した読出し及び書込み命令の一続きを送信すると、命令の１つに対するビジー応答は後の命令が誤ったデータを戻す結果を発生する。このような問題に対する１つの解決は依存した命令の重なり合いを避けることである。しかし、この解決は正しい結果を確保するために依存した各命令の待ち時間を増加する。本発明は、部分的に依存した命令の重なり合いを可能にするためにＣＯＮＮＩＤ信号を使用する。従って、ＣＯＮＮＩＤの使用はシステムの性能と効率性を改良する。本発明のＣＯＮＮＩＤの別の利点は、共有機能ブロックが接続の間で変化するサービス保証の品質に基づいて要求に応答することを可能にするため、通信システムの予測可能性を増加する。例えば、コンピュータ表示装置を動作するために要求されるデータは、遅延が表示装置にフリッカーを発生するために予期できない遅延を許容することができない。従って、表示装置コントローラから共通資源への要求が他の要求の前にサービスされるようにするため、ＣＯＮＮＩＤは表示装置コントローラからのデータ要求を優先付けるために使用できる。本発明はまた、システム性能を再調整するためにＣＯＮＮＩＤの柔軟な再構成を可能にする。
【００３４】
図６は、共通通信バス１０１２上で２つの書込み転送からなるパイプライン化された書込みトランザクションのタイミング図である。図５もまた参照して説明する。図６に示すように、単一のパイプライン化された転送は、アービトレイション・サイクル（図示しない）を含み、その後に、命令／アドレス／ＣＯＮＮＩＤ（ＣＭＤ３２４／ＡＤＤＲ３２８／ＣＯＮＮＩＤ３２６）サイクル（要求又はＲＥＱサイクルと呼ばれる）が続き、ＤＡＴＡ３３０／ＲＥＳＰ３４２サイクル（応答又はＲＥＳＰサイクルと呼ばれる）により完了する。１つの実施の形態では、ＲＥＱサイクルとＲＥＳＰサイクルとの間のサイクル数は、システム性能を最適化するために動作周波数とモジュール待ち時間に基づいたシステム実行時間で選ばれる。１つの実施の形態では、ＲＥＱ−ＲＥＳＰ待ち時間は２サイクルで、図６でデータ３３０信号線上にラベルされている。従って、完全な転送時間は、４つの共有通信バス１０１２サイクル、アービトレイション、要求、遅延及び応答を含む。
【００３５】
図６には、２つの転送が示されている。サイクル１では、イニシエーターＥがアドレスＡＤＤＲＥ０へ書込み転送を要求するためにＲＥＱフィールド３４０を駆動する。このプロセスは、転送要求送信と呼ばれる。１つの実施の形態では、ＡＤＤＲＥ０の外部アドレス部分を復号することにより書込みデータを受信するための単一のターゲットが選択される。サイクル３で（ＲＥＱ−ＲＥＳＰ待ち時間の後）、イニシエーターＥがＤＡＴＡ線上に書込みデータＤＡＴＡ０をドライブし、同時に、選択されたターゲットＡがＤＶＡコードによりＲＥＳＰ線３４２をドライブして、Ａが書込みデータを受領したことを示す。サイクル３の終わりまでに、ターゲットＡが書込みデータを獲得し、イニシエーターＥはターゲットＡが書込みデータを受領することができたことを検出し、そして、転送が成功的に完了する。
【００３６】
その間（すなわち、サイクル３において）、イニシエーターＥがターゲットＡへパイプライン化された書込み転送を送信する（アドレスＡＤＤＲＥ１）。この転送に対する書込みデータ及びターゲット応答の両方がサイクル５で発生し、ここで、転送が成功的に完了する。多くのシステムとサブシステムの適正な動作は、関連する転送の適正な順番に依存する。従って、適正なシステム動作は、サイクル１書込み転送の後にサイクル３書込みが完了することを必要とするであろう。図６のＣＯＮＮＩＤフィールドが適正な順番を実現するために使用できる転送の源に関する重要な情報を伝達する。順番の制限の好ましい実施の形態は、イニシエーターとターゲットが共同してパイプライン化された転送中でも適正な順番を確保することである。これは、パイプライン転送が一組の転送（おそらくは、単一トランザクション）の全待ち時間を減少するため、システム性能を改良するので（待ち時間の減少と使用可能帯域幅の増加により）、重要である。
【００３７】
１つの実施の形態のアルゴリズムによると、
１．次の条件でイニシエーターは転送Ｙを送信してよい。：
ａ）もし、転送Ｙが一致するＣＯＮＮＩＤを有する転送要求の組の中で最も古くて、送信されていない、退却されていない転送であるならば、又は、
ｂ）もし、一致するＣＯＮＮＩＤを有するより古くて退却されていない転送の全てが、転送Ｙと同じターゲットへ現在送信されているならば。もし、この規定下で送信されると、転送Ｙはより古い退却されていない転送と共にパイプライン化されているとみなされる。
２．転送Ｘに応答するターゲットはイニシエーターがその転送を退却しないように、転送Ｘと同じＣＯＮＮＩＤを持つＸと共にパイプライン化されたより後の全ての転送に対してはＢＵＳＹで応答しなければならない。
【００３８】
ＣＯＮＮＩＤが一致した新しい転送Ｘの後に送信されたより古いＹは、たとえ、ＹがＸの完了前に送信されても、Ｘと共にパイプライン化されているとはみなされないことに注意する。図７にこの状態が示されている。もし、ターゲットＡが一時的にサイクル１から書込みＡＤＤＲＥ０に関連したＤＡＴＡ０の受領をできなくする資源衝突を有する場合、ＡはＢＵＳＹを応答する。前述のアルゴリズムのステップ２は、Ａが同じＣＯＮＮＩＤ（この場合は、ＣＯＮＮＤ１）からのいずれの他のパイプライン化された転送もまた拒絶（ＢＵＳＹを使用して）することを要求する。これは、イニシエーターがＲＥＱ−ＲＥＳＰ待ち時間の経過後まで、資源衝突について知ることは多分できないからである。従って、ターゲットＡは、同じＣＯＮＮＩＤを持つイニシエーターが最初の書込み転送に対するＢＵＳＹ応答を解釈できる前に送信され従ってパイプライン化された転送であるサイクル３中に送信された書込みＡＤＤＲＥ１をＢＵＳＹとしなければならない。さらに、書込みＡＤＤＲＥ０転送の第２の試みは（サイクル４で送信される）、たとえサイクル３の書込みＡＤＤＲＥ１の転送と重なり合ってもパイプライン化された転送ではないため、完了することができる。
【００３９】
ターゲットＡは、サイクル４の書込みがいずれの前の転送とはパイプライン化されていないことをそれの発生時とそれが示すＣＯＮＮＩＤの理由から決定し、ＣＭＤ又はＡＤＤＲ値のいずれかの理由からはでないことに注意する。アルゴリズムのステップ１は、イニシエーターが与えられた接続内で最も古くて送信されず退却されていない転送のみを送信することを保証する。従って、最初の書込みＡＤＤＲＥ０がサイクル３でＢＵＳＹ応答を受け取ると、もはや送信されず、ＣＯＮＮＩＤ＝１転送のみが送信について可能となる。従って、もし、最初のサイクル１の転送がＢＵＳＹ応答を受信してＲＥＱ−ＲＥＳＰ待ち時間が２サイクルである場合、適正に動作するイニシエーターがサイクル４でパイプライン化された転送を行うのは不可能である。
【００４０】
１つの実施の形態のイニシエーターは、あるＣＯＮＮＩＤ内の所望の転送からなる時間順序待ち行列を維持する。各転送は、待ち行列内に入力する時に送信されず且つ退却されていないものとして印が付けられる。さらに、もし、待ち行列内で直前の古いエントリイが退却されていなく且つ同じターゲットをアドレスする場合、パイプライン化された印が付けられる。それ以外は、新しい転送は非パイプライン化の印が付けられる。転送が送信される度に、それは送信された印が付けられる。転送が完了する時（すなわち、ＲＥＳＰサイクルが終了する時）、転送は送信されていないと印が付けられる。もし、転送が成功的に完了したならば、それは退却されたと印が付けられて待ち行列から削除できる。もし、転送が成功的に完了しなければ、典型的に、それは再度試行され、再送信のためのアービトレイションに戻ることができる。もし、転送が成功的に完了せず且つ再度試行されない場合には、もし存在する次の転送が送信されたと印が付けられないまでは、それは退却されたと印を付けるべきでない。この制限は、イニシエーター論理が順番から外れた送信をすることを防ぐ。最も古い退却されていない転送が送信されると、それは送信済みと印が付けられる。これは、第２番目に古い退却されていない転送がより古い転送が完了する（従って、送信されていないと印が付けられる）まで、もしパイプライン化として印が付けられているならば、送信のためのアービトレイションを受けることを可能にする。
【００４１】
１つの実施の形態によるターゲットの実現は、ＲＥＱ−ＲＥＳＰ待ち時間と深さが一致した時間順序待ち行列を維持する。待ち行列はバスクロックから外れて動作し、待ち行列内の最も古いエントリイは各バスサイクルで退却され、同時に、新しいエントリイが各バスサイクルで待ち行列に加えられる。現在のＲＥＱ位相からのＣＯＮＮＩＤは新しい待ち行列エントリイにコピーされる。これに加えて、もし、現在のＲＥＱ位相がターゲット（外部アドレスを介して）を選択する有効な転送を含む場合、新しい待ち行列内の「第１」及び「ビジー」フィールドをセットできる。それ以外は、第１及びビジービットはクリアされる。第１ビットは、もし、現在の転送がＢＵＳＹ応答（資源衝突による）を受信し且つ待ち行列内の前の転送が同じＣＯＮＮＩＤを持たず且つその第１ビットをセットしていなければ、セットされる。第１ビットは、現在の転送が、順番を保つためにＢＵＳＹされることが必要な潜在的にパイプライン化された転送の一組の最初であることを示す。ビジービットはもしターゲットが資源衝突又は待ち行列内の前の転送の１つが同じＣＯＮＮＩＤを持ち且つ第１ビットをセットしているかのいずれかの場合にセットされる。このロジックは、イニシエーターが第１の印が付けられた転送に対するＢＵＳＹ応答に反応できるまでターゲットがパイプライン化された転送を受領しないことを確保するＲＥＱ−ＲＥＳＰパイプライン待ち時間を実行する。
【００４２】
このアルゴリズムを通信システムのイニシエーター及びターゲットに適用すると、トランザクションの順番を維持してパイプライン転送（接続あたりの帯域幅を増加し、そして、全トランザクション待ち時間を減少する）を可能にできる。従って、このアルゴリズムは接続あたりの高い性能を促進する。パイプライン化されたバスの基本的にインターリーブ（間挿）される構成は、複数の論理トランザクションが互いに重なり合うことができ、接続あたりのピーク帯域幅を超える持続したシステム帯域幅を可能にするため、高いシステム性能を可能にする。例えば、図８は、イニシエーターＥが１つおきのバスサイクルでターゲットＡにデータを転送する必要があり、一方、イニシエーターＤが１つおきのバスサイクルでターゲットＢからデータを要求する構成を示す。通信システムが細かいインターリーブ（バスサイクルあたり）を支援するため、トランザクションは機能ブロックの自然なデータ速度で送信される個別の転送から構成される。これは機能ブロック内でのバッフアリング要求を減少し、そしてシステムコストを減少する。この例では全システム帯域幅はいずれの機能ブロックのピーク帯域幅の２倍であり、従って、高システム性能が実現される。
【００４３】
本発明は、効率性と予測可能性の分野で追加のシステムレベル改善を加える。最初に、接続識別子は順番通りの操作を保持するためにどの要求を拒絶しなければならないかをターゲットに選択可能にする。システムは、ターゲットがパイプライン化された転送のみを拒絶（ＢＵＳＹを使用して）しなければならないので、同じＣＯＮＮＩＤを持つ転送内の順番のみを保証する必要がある。これはターゲットは特定のＣＯＮＮＩＤを拒絶しても他のＣＯＮＮＩＤ値を持つ転送を受領することができることを意味する。図９にこの状態が示されている。図９は図７のパイプライン化された書込み転送にイニシエーターＤからのインターリーブ（間挿）された読出し転送を追加したものである。図９内の４つの転送の全てはターゲットＡを選択し、Ａはサイクル１に送信される書込みＡＤＤＲＥ０の成功的な完了を妨げる資源衝突を有する。最初の書込みの拒絶はＡがサイクルｒまでＣＯＮＮＤ１からの他のいずれの転送を受領することを妨げるが、Ａはもし十分な資源があればサイクル２の無関係な読出しＡＤＤＲＤ０要求を受領できる。従って、より少ないバスサイクルが浪費されるため（ターゲットＡが接続間の区別ができない場合と比べて）、全体のシステム効率が増加する。
【００４４】
第２に、１つの実施形態で、接続識別子はターゲットがどの要求を拒絶するかを選択可能にする。ターゲットは転送優先度などの意味をＣＯＮＮＩＤ値に関連付けることができ、従って、ＣＯＮＮＩＤ値とターゲットの内部状態との組合わせに基づいてどの要求に動作すべきかを決定できる。例えば、ターゲットは異なる優先度の転送要求を格納するための別個の待ち行列を有することができる。図９を参照すると、ターゲットは低い優先度の要求（奇数ＣＯＮＮＩＤを持つ）のための待ち行列と高い優先度の要求（偶数ＣＯＮＮＩＤを持つ）のための待ち行列を有しても良い。従って、サイクル１のＣＯＮＮＩＤ１の書込みＡＤＤＲＥ０要求はもし低優先度待ち行列が一杯であれば拒絶されるであろう。一方、ＣＯＮＮＩＤ２読出しＡＤＤＲＥ０転送は利用可能な高優先度待ち行列資源に基づいて成功的に完了できるだろう。このような転送優先度の違いは高集積電子システムではごく普通であり、ターゲットがより高い優先度の転送要求に対してより高い品質のサービスを配達できる能力はシステムの全体の予測可能性を顕著に増す。図９が示すように、上述したアルゴリズムはターゲットが同時に複数のＣＯＮＮＩＤ値からの転送要求を能動的に満足することを可能にする。従って、もし、別のＣＯＮＮＩＤ値を持つならば、同じターゲットへ及び／又はからの複数の論理的トランザクションがインフライトで存在できる。このように、本発明はターゲット機能ブロックあたり複数の接続を支援する。
【００４５】
さらに、イニシエーターは通信システムに対して複数のトランザクションを同時に提供する能力を必要としてもよい。このような能力は、２つのターゲット間にデータを転送する直接メモリアクセス（ＤＭＡ）などのイニシエーターについて大変有用である。このような応用では、ＤＭＡイニシエーターはデータ源の第１ターゲットへ第１ＣＯＮＮＩＤを使用して読出しトランザクションを送り、さらにデータ宛先の第２ターゲットへ第２ＣＯＮＮＩＤを使用して書込みトランザクションを送るだろう。転送レベルでは、読出し及び書込み転送はインターリーブできる。これはＤＭＡイニシエーター内のデータ格納の量を減少し、よってシステムコストを減少する。図１０にこのような構成が示されている。イニシエーターＥがターゲットＡからのパイプライン化された読出し転送をターゲットＢへのパイプライン化された書込み転送とインターリーブする。このようにして、本発明はイニシエーター機能ブロックあたり複数の接続を支援する。
【００４６】
アルゴリズムに関して上述したように、本発明の実現を支援するために必要な制御構造は、単純で且つ転送の効率的で細かいインターリーブを提供しない伝統的なプロトコルに関連したデータバッフア領域よりもかなり少ない領域を必要とする。従って、本発明は高い性能と柔軟性を与えると同時に通信システムの領域と複雑性を最小にする。
【００４７】
最後に、特定のイニシエーター・トランザクションに関連したＣＯＮＮＩＤ値は典型的に転送優先度などの有用な情報を提供すると共に実現コストを最小にするために選ばれる。値が独特であることを保証しそして比較と他の操作を単純にするために順番付けられるように、システム設計時に特定のＣＯＮＮＩＤ値を選択することが役に立つ。さらに、システムの性能と予測可能性の観点を変更するために通信システムの操作中にＣＯＮＮＩＤ値を変更できることがしばしば有用である。本発明の好適な実現では、システム構築時又はシステム運転時のいずれかにおいて容易に再構成できるように、機能ブロックのＲＯＭ又はＲＡＭ資源内にＣＯＮＮＩＤ値を格納することにより、柔軟なシステム構成を可能にする。
【００４８】
図１１は、図４に示すようなポイント・ツー・ポイント相互接続である相互接続１０１０を示す。相互接続１０１０は、図５を参照して説明したプロトコルと比較して追加の信号を含む。以下に説明するように、いくつかの追加の信号は、相互接続１０１０のようなポイント・ツー・ポイント相互接続上に送られる信号として特に有用である。相互接続１０１０のプロトコルは、専用（非共有）の相互接続を介してマスターエンティテイ１１０２とスレーブエンティテイ１１０４の間のポイント・ツー・ポイント転送を制御する。図５を参照すると、例えば、マスターエンティテイはイニシエーター機能ブロック１００２又はターゲット・インターフェイス・モジュール１００６であってよい。例えば、スレーブエンティテイはイニシエーター・インターフェイス・モジュール１００４又はターゲット機能ブロック１００８であってよい。
【００４９】
図１１に示される信号は、信号名でラベルされている。さらに、いくつかの信号名は丸括弧又は角括弧内の記号が後に続く。記号は以下の通りである。
（Ｉ）信号はオプショナルであり、独立に構成可能である。
（Ａ）信号は同様な記号を持つ信号と一緒に構成されなければならない。
（ＡＩ）信号はもし（Ａ）インターフェイス・モジュールが存在するならば、独立に構成可能である。
［＃］最大信号幅
【００５０】
Ｃｌｏｃｋ信号は接続された機能ブロックのクロックである。命令（Ｃｍｄ）信号はバス上の転送タイプを指示する。命令はデータとは独立に送信できる。アドレス（Ａｄｄｒ）信号は典型的にイニシエーター機能ブロックがアクセスを望む特定の資源の指示である。要求受領（ＲｅｑＡｃｃｅｐｔ）はハンドシェイク信号で、これによりスレーブ１１０４はマスター１１０２が１つの転送からＣｍｄ、Ａｄｄｒ、及びＤａｔａＯｕｔを放出することを可能にし、そしてそれらを別の転送について再使用することを可能にする。もし、スレーブ１１０４がビジーで、要求された転送に参加できなければ、マスター１１０２はＣｍｄ、Ａｄｄｒ、及びＤａｔａＯｕｔを送り続けなければならない。ＤａｔａＩｎは、典型的に書込み転送において、マスターからスレーブへ送られるデータである。ＤａｔａＩｎは典型的に読出しデータを運ぶ。
【００５１】
応答（Ｒｅｓｐ）とＤａｔａＩｎは、スレーブ１１０４からマスター１１０２へ送られる信号である。Ｒｅｓｐはスレーブ１１０４により受信された転送要求がサービスされたことを指示する。応答受領（ＲｅｓｐＡｃｃｅｐｔ）は、マスターがスレーブにＲｅｓｐとＤａｔａＩｎを放出することを可能にするかどうかを指示するために使用されるハンドシェイク信号である。
【００５２】
１つの実施の形態で、信号Ｃｌｏｃｋ、Ｃｍｄ、Ａｄｄｒ、ＤａｔａＯｕｔ、ＲｅｑＡｃｃｅｐｔ、Ｒｅｓｐ、ＤａｔａＩｎ、及びＲｅｓｐＡｃｃｅｐｔは、インターフェイス・モジュール信号の基本組を構成する。いくつかの機能ブロックについては、この基本組で通信目的に十分であろう。
【００５３】
他の実施の形態では、バス１０１２の残りの信号のいくつか又は全部が使用される。１つの実施の形態では、Ｗｉｄｔｈは転送の幅を指示する３ビット信号であり、可変幅の転送を含む接続に有用である。Ｂｕｒｓｔは個別の命令を接続と関連付けることを可能にする複数ビット信号である。Ｂｕｒｓｔは、どれだけの数があるかそして期待されるアドレスパターンなど、将来の転送の性質の指示を提供する。Ｂｕｒｓｔは、標準の終了マーカーを持つ。Ｂｕｒｓｔフィールドのいくつかのビットは、接続内のある特定のプロトコル詳細を接続が無視するために、ユーザ定義フィールドのために保存される。
【００５４】
割り込み及びエラー信号は大部分のコンピュータ・システムの重要な部分である。イニシエーター又はターゲット機能ブロックにより生成された割り込み及びエラー信号が示される。しかし、それらの機能的な説明は特定の機能ブロックの性質に依存し、本発明の理解には重要でない。
【００５５】
要求スレッド識別子（ＲｅｑＴｈｒｅａｄＩＤ）は、１つの実施の形態で、スレーブ１１０４に対して意図された現在のトランザクションと関連したスレッド番号を提供する４ビット信号である。特定のスレッドＩＤと共に実行される全ての命令は互いに順番に実行されなければならないが、他のスレッドからの命令に関しては順番を外れて実行できる。応答スレッド識別子（ＲｅｓｐＴｈｒｅａｄＩＤ）は、現在の応答と関連したスレッド番号を提供する。スレッド内の応答は他のスレッドに関しては順番を保たず戻るので、ＲｅｓｐＴｈｒｅａｄＩＤはどのスレッドの命令が応答されているかを識別する必要がある。１つの実施の形態では、ＲｅｑＴｈｒｅａｄＩＤ及びＲｅｓｐＴｈｒｅａｄＩＤはオプショナルな信号である。しかし、もし、１つが使用されると、両方を使用しなければならない。
【００５６】
要求接続識別子（ＲｅｑＣｏｎｎＩＤ）は、ターゲットについて意図された現在のトランザクションに関連したＣＯＮＮＩＤを提供する。ＣＯＮＮＩＤは、それによりシステムエンティテイが特定のトランザクションをそのシステムエンティテイに関連付ける機構を提供する。ＣＯＮＮＩＤの１つの使用は、さまざまなイニシエーターの中で要求優先度を設定することである。別の使用は、動作又はデータ転送をトランザクション要求と共に提供されたアドレスではなくイニシエーター識別に関連付けることである。
【００５７】
要求スレッドビジー（ＲｅｑＴｈｒｅａｄＢｕｓｙ）は、スレーブがマスターにそれがあるスレッドに関する新しいいずれの要求も受けることができないことを指示することを可能にする。１つの実施の形態では、ＲｅｑＴｈｒｅａｄＢｕｓｙ信号は、スレッドあたり１つの信号を持つベクトルであり、主張された信号は関連スレッドがビジーであることを指示する。
【００５８】
応答スレッドビジー（ＲｅｓｐＴｈｒｅａｄＢｕｓｙ）は、マスターがスレーブにそれがあるスレッドに関していずれの応答（例えば、読出しについて）を取ることができないことを指示する。１つの実施の形態では、ＲｅｓｐＴｈｒｅａｄＢｕｓｙ信号は、スレッドあたり１つの信号を持つベクトルであり、主張された信号は関連スレッドがビジーであることを指示する。
【００５９】
上述のＲｅｑＴｈｒｅａｄＢｕｓｙ及びＲｅｓｐＴｈｒｅａｄＢｕｓｙ信号は、スレッドあたりのフロー制御機構の一例である。他のスレッドあたりのフロー制御機構が存在する。代わりに、クレジットに基づいた機構が使用できる。クレジットに基づいた機構では、スレーブはマスターにそれがどれだけの又はおおよそどれだけの転送を受領できるかを知らせる。１つの実施の形態では、この情報はスレーブによりそれが受領できる各転送について１つのサイクルに対してクレジット信号を立ち上げることにより通信される。従って、スレーブが受領できる「クレジット」又は転送の数は、その信号が活性化されているサイクル数により通信される。
【００６０】
図１３に、１つの実施の形態のクレジットに基づいたスレッド当たりのフロー制御機構のタイミング・チャートが示される。マスター装置からの命令は、ＣＭＤ線１３１０上のアクティブ高信号により反映される。クレジット線１３２０は、どれだけの命令を受領できるかを指示するスレーブ装置により送信されたアクティブ高信号により反映される。従って、図示するように、２つのクロックパルス１３３０により指示される２つのクレジットが最初に利用可能である。１つのクレジットが、命令１３３５の送信により使用される。そして、新クレジット１３４０が送信される。２つの命令１３４５が送信され、クレジットは利用できなくなる。クレジット線がさらなるクレジットを送信するまでは、その後の命令は送信されない。従って、クレジット線１３２０上に新しいクレジット１３５０が出現した後、マスター装置は命令１３５５を送信できる。
【００６１】
代わりに、クレジット数のカウントを各サイクル又は所定数のサイクルで送信できる。この実施の形態では、複数の信号線がカウントを通信するために必要と考えられる。
【００６２】
スレッドあたりのフロー制御を利用すると複数のスレーブとマスター装置の間で共有されるインターフェイスがブロックされるのを防ぐことができる。いくつかのスレッドが相互接続を共有する時、個々のスレッドは互いに独立に留まることが一般に望ましい。独立動作を維持するために、相互接続へのインターフェイスはブロックできないようにすべきである。例えば、マスターがスレーブにより受領できない転送を送信する場合、スレーブはＲｅｑＡｃｃｅｐｔを主張せず、マスターが転送をインターフェイス上で保持するようにさせる。これは他のいずれのスレッドもインターフェイスに転送を提供することを防止する。すなわち、相互接続が全てのスレッドに対して実効的にブロックされる。個別のスレッド当たりのフロー制御を有することにより、マスターはもしスレーブがＴｈｒｅａｄＢｕｓｙ信号を使用してそのスレッドに関する転送を受領できないことを指示した場合、特定スレッドに関して転送を送信すべきでないことを知ることができる。
【００６３】
いくつかの実施の形態では、スレーブによるフロー制御動作を必要とする転送の後にＴｈｒｅａｄＢｕｓｙが何時出されたか、及び／又はマスターがＴｈｒｅａｄＢｕｓｙ主張の後に新しい転送を何時送信できないかに関して特定する必要があるだろう。例えば、スレーブがその資源が枯渇した又は枯渇しつつある（従って、ＴｈｒｅａｄＢｕｓｙ主張の必要性）と決定するために数クロックサイクルを要するであろう。別の例では、マスターがＴｈｒｅａｄＢｕｓｙ主張信号に反応するのに数クロックサイクルを要するであろう。これらのクロックサイクル中、マスターは追加の命令を送信し続けるだろう（例えば、データ転送）。インターフェイスがブロックしないことを確保する１つの方法は、マスター及びスレーブの両方に対して転送に関するＴｈｒｅａｄＢｕｓｙ信号のタイミングを指定し、スレーブによりＴｈｒｅａｄＢｕｓｙ信号が主張された後にマスターによる命令の新しい転送を吸収するためにスレーブに十分なバッファリングを提供することである。
【００６４】
スレッドあたりのフロー制御の手段は相互接続にわたるエンド・ツー・エンド性能保証を決定することを可能にする。エンド・ツー・エンド・データチャンネルは、相互接続のスレッドを使用してリンクされ、そしてスレッドあたりのフロー制御は特定のイニシエーターとターゲットの間のエンド・ツー・エンド・フロー制御を可能にする。図１４、１５ａ、１５ｂ、１６、１７、１８、１９、２０及び２１を参照してエンド・ツー・エンド性能保証の１つの実施の形態が説明される。
【００６５】
図１４は例示的なシステムを示している。システムは１つ又は複数の機能ブロック１４０５、１４１０、１４１５、１４２０、１４２５、１４３０及び一組のインターフェイス１４４５、１４５０、１４５５、１４６０、１４６５、１４７０、１４７５、１４８０を使用して全てが一緒に接続された１つ又は複数の通信サブシステム１４３５、１４４０からなる。機能ブロック１４０５、１４１０、１４１５、１４２０、１４２５、１４３０は、システムにより行われる実際の作業を実行する（計算など）。この明細書では、機能ブロック間の通信に焦点を置く。機能ブロックがデータフローを開始するか又はそのターゲットかに依存して、機能ブロックはイニシエーター１４０５、１４１０、１４２０とターゲット１４１５、１４２５、１４３０に分類される。
【００６６】
ここで、説明のため、データフローは２つの機能ブロック間で時間にわたり通信される事象、データ項目、又は一組の命令である。イニシエーターからターゲットへのいずれの要求もある動作を実行するための要求である。例えば、読出しと書込み要求はそれぞれターゲットにデータの検索と格納をさせる。チャンネルは特定のデータフローのサービスに専用な部品中の物理的資源の組の一部である。例えば、ターゲットは異なる入力データフローをサービスするために異なるデータチャンネルを持つことができる。通信サブシステムは、各データフローについて専用データチャンネルを使用して、その１つの入力ポートから出力ポートへデータ項目を送信する。各ポートはインターフェイスを介して別の通信サブシステム又は機能ブロックから導かれる又はへ導く。インターフェイスはまた各データフローについて専用チャンネルを有する。
【００６７】
従って、例えば、データフローのエンド・ツー・エンド進行は次の通りである。データフローがイニシエーターで発生する。それはインターフェイスのチャンネルを介して第１通信サブシステムの入力ポートへ移動する。一旦、第１通信サブシステムの内部で、それからチャンネルを介して出力ポートへ移動する。そして、それはターゲットに最終的に到着するまで、他のサブ通信システムへ別のインターフェイスを横断する。それはターゲット内の専用チャンネルによりサービスされて、もし、応答が必要なければ完了する。もし、応答が必要ならば、データフローは通信サブシステムを介してその方向を逆に進み、発生源のイニシエーターに到着したときに完了する。
【００６８】
１つの実施の形態では、異なる部品を一緒に結び付けたインターフェイスは、送信される各要求と応答にそれが属するチャンネルの識別のタグを付ける能力及びチャンネルあたりのベースでフロー制御を送信する能力を持つ。インターフェイスのこれらの特徴は、個々の部品により与えられるサービス保証の品質がインターフェイスを介して接続された別の部品に伝達されることを可能にする独立データチャンネルを達成するために望ましい。従って、例えば、図４を参照すると、サービス保証の品質がイニシエーター機能ブロック１００２からターゲット機能ブロック１００８への信号伝搬時間を含む。
【００６９】
図１５ａは、サービス保証の機能ブロック品質の例を示す。この場合、３つのチャンネルについてサービス保証の異なる品質を持つメモリシステムが示されている。与えられたサービス保証の品質は、８バイト読出し又は書込み要求をサービスする間の最小の帯域幅と最大の待ち時間である。この例では、各チャンネルは秒あたり１０Ｍ８バイト要求に耐えることができる。チャンネル１は、より低い待ち時間のために最適化されていて、１００ｎｓの最大サービス待ち時間を保証する。一方、チャンネル２及び３は２００ｎｓの最大サービス待ち時間だけを保証する。特定の機能ブロックにより与えられる性能保証がここに示されるよりもずっと複雑で、要求サイズ、内部到着間隔等の多数の異なるファクターに依存していることが普通である。ここに使用されるメトリックスは例を単純にするために選ばれている。最大の待ち時間と最小の帯域幅は性能パラメータの２つの普通のタイプであるが、最大未処理要求、サービス待ち時間の最大変化などの他のパラメータを使用したサービス保証の品質も等しく可能である。さらに、もし、特定の部品がサービス保証の異なる品質を容易に達成するためには複雑すぎる場合、より小さいより管理可能な部分に分割することにより、この方法をその部品に繰返し適用できる。
【００７０】
図１５ｂは、サービス保証の通信システム品質の例を示す。この特定の通信システムは、イニシエーターＸ２１０及びＹ２１５に接続する２つのポートとターゲットＺ２２０に接続する１つのポートを有する。そして、ポートＸ２１０は２つの異なる入口チャンネルを支援し、ポートＹは１つの入口チャンネルを支援し、そしてポートＺは３つの出口チャンネルを支援する。これは通信サブシステム内に３つのデータチャンネル（Ａ、Ｂ、Ｃ）を生ずる。現在の例では、ここでの説明を簡単にするためそして時々、あるデータフローは保証を有しないため、チャンネルＡにはサービス保証の品質が与えられていない。チャンネルＢは各４サイクルに４バイトの最小帯域幅と各方向に３サイクルの最大待ち時間でサービスされる。チャンネルＣは各２サイクルに４バイトの最小帯域幅と各方向に５サイクルの最大待ち時間でサービスされる。
【００７１】
さまざまな技術が部品の保証を決定するために使用できる。通信サブシステムなどの特定の部品についてのサービス保証の品質を決定するために使用できる１つの技術が、米国特許第５，９４８，０８９号に記載されていて、ここに参照のために組み込む。
【００７２】
１つの実施の形態では、得られる保証は全ての可能なシステム状態下で有効であろう。すなわち、設計によりシステムがその性能要求を満足するための能力を与えられる。さらに、１つの実施の形態では、各データフローを互いに独立にすることで解析が大変に単純化され、複雑システム解析問題をより単純なデータフロー解析問題に分解する。
【００７３】
図１４に示すように、インターフェイス１４４５、１４５０、１４５５、１４６０、１４６５、１４７０、１４７５、１４８０は部品（機能ブロックと通信サブシステムの両方）を一緒に接続するために使用される。エンド・ツー・エンド性能保証を可能にするために、これらインターフェイスは各チャンネルに個別のフロー制御を持つ複数の個別データフローの伝搬を可能にしなければならない。図１６にインターフェイスの一例が示されている。ここで、イニシエーター１６０５はターゲット１６１０へ潜在的に書込みデータ１６２５と共に要求１６２０を送信する。ターゲット１６１０は応答１６３０によりおそらく読出しデータ１６３５と共に返答する。このインターフェイスを横断して複数の独立データフローを可能にするために、チャンネル識別子１６１５が各要求と共にイニシエーター１６０５からターゲット１６１０へ送信され、チャンネル識別子１６３５が各応答と共にターゲットからイニシーター１６０５へ送信され、そしてデータフローあたりのフロー制御信号１６４０がターゲットからイニシエーターに送られる。このようなイニシエーターの一例が１１／１２／９９に出願されたＰＣＴ／ＵＳ９９／２６９０１に記載されている。
【００７４】
図１７に、１つの実施の形態の異なるデータフローについてエンド・ツー・エンド・システム性能保証を計算するための方法を示す。システム１７１０内の各イニシエーターのデータフローについて、システムのチャンネルを通るデータフローのマッピングが最初に決定される１７１５。図１８に、例示的なマッピング方法がさらに示されていて、下に詳細に説明する。
【００７５】
次に図１７を参照すると、このデータフローに含まれる部品のデータチャンネルのサービス保証の品質のパラメータはステップ１７２０で均一に整列される。全ての保証はステップ１７３０で全体的な総計を容易にするため均一であることが好ましい。異なる部品は異なる人々及び／又は会社により開発されるため、全てのサブシステム上のサービス保証の全ての品質が同じ単位で表されることはまれである。単位は変換が必要で、時間スケールは翻訳が必要で、又はサービス保証の所望の品質は与えられたこれらから導出しなければならない可能性が高いであろう。例えば、１つの部品がＭバイト／秒で帯域幅保証を特定するが、別のは転送サイズに関係なく転送／秒の数で特定するだろう。次に、総計プロセスを達成するために、この整列方法は個別の部品が与えるべき保証のタイプについての要件を置くだろう。
【００７６】
データフロー全体に沿って単位が整列されると、全体システムを通してそのデータフローに対するサービス保証の総計品質がステップ１７３０で計算される。使用される総計メカニズムはサービス保証の品質を表すために使用されるパラメータのタイプに依存する。例えば、各部品の最大待ち時間は全体的な最大待ち時間を与えるために一緒に加えられる。これに対して、全体の経路に沿って最小の部品帯域幅が最小の帯域幅サービス保証を決定する。図１８は、図１７に示された全体的な機構の一部であるデータフロー・マッピング・プロセスの１つの実施の形態に焦点を合わせたものである。例えば、ステップ１７１０のいくつかのインターフェイス及び１つ又は複数の通信サブシステムを介して、イニシエーターからターゲットまでの経路中の各部品について、イニシエーター・チャンネル・ステップ１７１５を運ぶために利用可能なチャンネルが選択される。ある部品について利用可能なチャンネルの組から特定のデータフローを選択するのは複雑な作業である。作業を達成しそして全体システム性能の最適化する多くの可能な方法が存在する。例えば、イニシエーターのデータフローの性能要求と最も近くに一致したチャンネルを選ぶことができる。また、イニシエーターからターゲットへ複数経路の中でデータフローを分割することが可能である。本例では、有効なマッピングが選択されたと単に仮定する。
【００７７】
ある部品内でチャンネルが使用されると、ステップ１８２０で、別のイニシエーター・データフローのために選択されないように、使用済みの印が付けられる。このアルゴリズムは、全体のデータフローがイニシエーターからターゲットへマップされるまで続けられる。ある部品はこの特定のシステムに必要とされるよりも多くのチャンネルを持つかもしれないことに注意する。これは問題とはならず、余りのチャンネルは単にその部品内で使用されない。逆に、もし、部品がシステムを支援するのに十分なチャンネルを持たないと、その部品はシステムにふさわしくなく、異なる部品が選択される。
【００７８】
さらに、チャンネルを共有する複数のデータフローを可能にしてもよい。この場合、特定のデータフローについての性能保証は他のデータフローの特性に依存し、もし他のデータフローのイニシエーターがそれらのデータフローの特性（最大送信帯域幅など）について保証を与える場合のみ、よく決められる。
【００７９】
チャンネルへのデータフローのマッピングは、システム中で固定された静的マッピングである必要がない。システムは異なる通信パターンを採用するために再構成ができてよい。例えば、通信サブシステムは、サービス要求のデータフロー品質の変化に対応するために１つのデータチャンネルから別へ帯域幅資源を再割当てができる。
【００８０】
１つの実施の形態では、システムは改訂されたマッピングでロードされ、従って、システムは再構成される。これはシステムが動作中に、例えば、実時間態様で実行できる。
【００８１】
別の実施の形態では、システムの再構成はシステム自身により達成できて、さらなる柔軟性と適応性を与える。いくつかの実施の形態では、これもまた実時間態様で実行できてシステムの機能性を高める。
【００８２】
１つの実施の形態では、システムは少なくとも１つのデータフローのマッピングを使用して動作する。１つの実施の形態では、選ばれたデータチャンネルの保証の総計がアプリケーションの要求を満足する。しかし、１つの実施の形態では、システムが最初は所望の保証を満足しない総計を生成する第１マッピングを使用して動作すると考える。しかし、システムはここに説明されるステップを実行してアプリケーション要求を満足する総計保証を生ずるデータフローの第２マッピングを決定するだろう。そして、システムはアプリケーション要求を満足するデータフローの第２マッピングに従い再構成される。
【００８３】
システムはまた、異なるアプリケーション要求を満足する異なるマッピングに適用するために再構成できる。マッピングは決められた基準に基づいて選択される。このようにして、システムは所望の要求を満足する複数のマッピングを与えることができる。使用される特定のマッピングは所望の要求と関係する又は関係しない他の基準に従い選択できる。
【００８４】
いくつかの実施の形態では、システムの部品は異なる内部実現構造の他の部品と置換えることができる。新部品のサービス保証の品質が置換された部品のそれらと同じである限り、システム全体のエンド・ツー・エンド保証には変化がない。従って、このような交換はシステムの他の部品に透明のままであることができる。
【００８５】
図１９は、図１５ａと図１５ｂに示される例示的機能ブロックと通信サブシステムについての単位翻訳がどのように進行するかを示す例である。所望の単位は最小帯域幅保証に対してＭバイト／秒と仮定する。本実施の形態では、メモリシステムと通信サブシステムの両方について、サービス保証の品質は特定のイニシエーターが送信した要求の大きさに依存する。図１９では、４、８及び１６バイトの要求サイズに対する2つの部品の帯域幅保証が整列されている。元のメモリシステム帯域幅保証は秒あたり８バイト要求として述べられている。本実施の形態で、より小さい要求が使用される時、サービス速度が増加しないと保守的に仮定する。より小さい要求に対して帯域幅がより低いからである。
【００８６】
通信サブシステムでは、帯域幅保証が４バイト要求に対して与えられた。そして、８又は１６バイト要求はそれぞれ２つ又は４つの４バイト要求に分割できると仮定する。しかし、選ばれた単位はサイクルであるので、帯域幅保証を整列するために通信サブシステムの動作周波数も知る必要がある。１００ＭＨｚ周波数が通信サブシステムについて選択されたと仮定する。すなわち、サイクル時間が、１０ｎｓである。得られる最小帯域幅保証は、４バイト又は上記の全ての要求サイズに対して１００Ｍバイト／秒である。
【００８７】
図２０には、単純なシステムを使用したサービス総計機構の品質の応用の一例が示されている。イニシエーターＡ２００５は、１２０１０及び２２０１５として示される２つのデータフローの源である。第２イニシエーターＢは１つのデータフロー２０２５の源である。通信サブシステム２０３０はそれぞれポートＸ２０３５及びＹ２０４０でイニシエーター・データフローを受信して、これらフローの全てをポートＺ２０５０を介してターゲットＣ２０４５に送信する。
【００８８】
図２１の最初の表は、このシステムを通る各イニシエーター・データフローのマッピングの１つの実施の形態である。例えば、イニシエーターＡデータフローは、インターフェイス１のチャンネルＡ２０６０を介して通信サブシステムポートＸ２０３５へ送信される。それはチャンネルＢを介して通信サブシステム２０３０を横断してポートＺ２０６５を介して出る。そして、インターフェイス３チャンネルＡ２０７０を介してターゲットＣへ送信される。ターゲットＣ２０４５で、チャンネル１２０７５がこのデータフローを処理するために選ばれる。
【００８９】
図２１の第２の表は、３つの異なるイニシエーター・データフローに対する単位整列後のサービス保証の品質の一例を示す。この例では、イニシエーターＡフロー１は４バイト要求を使用していて、イニシエーターＡフロー２は１６バイト要求を使用していて、そしてイニシエーターＢフロー１は８バイト要求を使用していると仮定する。単位変換と整列が上述したプロセスを使用して達成される。
【００９０】
図２１の最後の表は、３つのイニシエーター・データフローに対するサービス保証の例示的システム・エンド・ツー・エンド品質を示す。各データフローに対するシステム内の最小帯域幅を計算するために、各部品を通る各マップされたデータフローの最小帯域幅が見つけられる。最大の待ち時間がイニシエーターからターゲットまでのデータフローに沿った各部品の待ち時間を加えることにより見つけられる。
【００９１】
要求接続識別子（ＲｅｑＣｏｎｎＩＤ）は、スレーブ又はターゲットに意図された現在のトランザクションと関連したＣＯＮＮＩＤを与える。ＣＯＮＮＩＤは、システムエンティテイが特定のトランザクションをそのシステムエンティテイに関連付ける機構を提供する。ＣＯＮＮＩＤの１つの使用は、さまざまなイニシエーターの中で要求優先度を設定することである。別の使用は、動作又はデータ転送をトランザクション要求と共に提供されたアドレスではなくイニシエーター識別子と関連付けることである。
【００９２】
図１１の実施の形態は、スレッドＩＤを持つポイント・ツー・ポイント、又はよりローカルな識別と同様にＣＯＮＮＩＤを持つエンド・ツー・エンド接続識別子を提供する。スレッドＩＤは、インターフェイス・モジュールとそれの接続された機能ブロックとの間の転送を単に識別するローカルな範囲の識別子である。対照的に、ＣＯＮＮＩＤは、２つのインターフェイス・モジュール（及び、要求されるならば、それらの接続された機能ブロック）の間の転送を識別するグローバルな範囲の識別子である。
【００９３】
スレッドＩＤは、接続された識別子モジュールと機能ブロック内で直接的にテーブルを索引するために十分に小さい。対照的に、どんな１つのインターフェイス・モジュールが同時的に受領することができるよりも多いＣＯＮＮＩＤがシステム内に普通、存在する。スレッドＩＤの代わりにＣＯＮＮＩＤを使用すると、戻されたＣＯＮＮＩＤを特定の要求又はバッフア・エントリイと関連付けるために高価な一致論理をインターフェイス・モジュール内に必要とする。
【００９４】
ネットワーク・アナロジーを使用すると、スレッドＩＤはレベル２（データリンク層）コンセプトであり、一方、ＣＯＮＮＩＤはレベル３（転送／セッション層）コンセプトにより似ている。いくつかの機能ブロックはレベル２のみで動作し、その機能ブロック又はそのインターフェイス・モジュールにレベル３の資源を処理するための費用を課することは望ましくない。代わりに、いくつかの機能ブロックがレベル３の接続特徴を必要とする。この場合、その機能ブロックにＣＯＮＮＩＤを送ることが実用的である。
【００９５】
図４を参照すると、ＣＯＮＮＩＤは、共有通信バス１０１２上のインターフェイス・モジュール１００４と１００６の間に転送される時、独特であるべきである。ＣＯＮＮＩＤは、相互接続１０１０などのローカルな相互接続上を送信される。しかし、多くの場合、機能ブロックとそのインターフェイス・モジュールの間はスレッドＩＤのみを使用することがずっと効率的である。例えば、イニシエーター機能ブロック１００２はＣＯＮＮＩＤにより提供される全ての情報を必要としないだろう。また、いくつかのシステムでは、同じＣＯＮＮＩＤを持つ複数の同一のイニシエーター機能ブロック１００２が存在し、イニシエーター・インターフェイス・モジュール１００４内のロジックが「ローカル」ＣＯＮＮＩＤを独特な「グローバル」ＣＯＮＮＩＤに翻訳しなければ、転送を受信する特定のターゲット機能ブロック１００８は実際にどの接続の部分であるかを知らない。インターフェイス・モジュール内でこのような翻訳機能を設計し実現することは複雑で高価である。このような場合、スレッドＩＤが機能ブロックとインターフェイス・モジュールとの間を送信される間にＣＯＮＮＩＤが共有通信バス１０１２を介してインターフェイス・モジュール間に送信される。
【００９６】
イニシエーター機能ブロックの場合、スレッドＩＤとＣＯＮＮＩＤの間に一対一の静的な一致が存在するであろう。例えば、もし、スレッドＩＤが“１”の場合、単一のＣＯＮＮＩＤが特定のインターフェイス・モジュールに対してマップされて、複数の同一の機能ブロックの問題を解決する。
【００９７】
ターゲット機能ブロックの場合、スレッドＩＤとＣＯＮＮＩＤの間に一対一の動的な一致が存在するであろう。もし、ターゲット機能ブロックが２つの同時的スレッドを支援する場合、ターゲット・インターフェイス・モジュールはオープン接続のＣＯＮＮＩＤを獲得し、そしてそれを必要なスレッドと関連付ける。例えば、ターゲット・インターフェイス・モジュールは“７”のＣＯＮＮＩＤを受信し、そしてＣＯＮＮＩＤ７をスレッド“０”にマップする。その後、ＣＯＮＮＩＤ７を持つ全ての転送は接続７がクローズされるまでスレッド０と関連付けられる。
【００９８】
図１２を参照すると、スレッドＩＤを使用した一例が、システム内の同一な直接メモリアクセス（ＤＭＡ）エンジンの一続きである。要素１２０２が同一のＤＭＡエンジンであり、各々がイニシエーター・インターフェイス・モジュール１２０４に接続されている。イニシエーター・インターフェイス・モジュール１２０４は、共有通信バス１２１２に接続されている。また、ターゲット・インターフェイス・モジュール１２０６は、共有通信バス１２１２に接続されており、ターゲット機能ブロックであるＤＲＡＭコントローラ１２０８へバス１２１２からデータを送信する。ターゲット・インターフェイス・モジュール１２０６は、相互接続１２１４によりＤＲＡＭコントローラ１２０８に接続されている。ＤＲＡＭコントローラ１２０８はＤＲＡＭ１２１３へのアクセスを制御する。
【００９９】
ＤＭＡエンジンは、ターゲット機能ブロックとしても機能するイニシエーター機能ブロックの一例である。ＤＭＡエンジンがソフトウェアによりプログラムされる時、それはターゲットとして動作する。その後、ＤＭＡエンジンはイニシエーターである。ＤＭＡエンジンは、読出し及び書込み操作の両方を実行するため、２つの接続が単一のＤＭＡエンジンと関連付けられる。もし、あるバッフアリングがＤＭＡエンジン内で利用可能ならば、読出し及び書込み操作は両方のタイプの操作が同時的に実行できるように切り離してもよい。読出しは、書込み操作がデータを書き込む前にＤＭＡエンジン上で読出しデータがバッフアされることが必要な待ち時間の長い記憶装置から発生することがある。１つの実施の形態では、各ＤＭＡエンジン１２０２は、読出しストリームを識別するのに１つのスレッドＩＤを使用し、書込みストリームを識別するのに異なるスレッドＩＤを使用する。ＤＭＡエンジンは、トランザクション中にどんな他の機能ブロックが参加しているかなどのより多い情報を必要としない。従って、ＣＯＮＮＩＤは、ＤＭＡエンジン１２０２から接続されたインターフェイス・モジュール１２０４へ送られる必要がない。ＣＯＮＮＩＤへのスレッドＩＤのマッピングがインターフェイス・モジュール１２０４で生ずる。
【０１００】
１つの実施の形態では、各イニシエーター・インターフェイス・モジュール１２０４が独特なＣＯＮＮＩＤを接続されたＤＭＡエンジン１２０２からの２つのスレッドＩＤの各々にマップする。各ＤＭＡエンジン１２０２は、２つのスレッドの間を識別するために単一ビット、例えば、図１１のスレッドＩＤ、を使用する。共有通信バスを介する各転送について、独特なＣＯＮＮＩＤがターゲット・インターフェイス・モジュール１２０６に送信される。ＣＯＮＮＩＤは、例えば、グラフイックス・データについて高い優先度要求を割当てる、優先度情報を含んでも良い。高い優先度のグラフイックス・データ要求はＤＲＡＭコントローラ１２０８により直ちにサービスされるが、より低い優先度の要求は待つことが必要であろう。
【０１０１】
インテリジェンスがインターフェイス・モジュール及び通信プロトコル内に設計されて、ＤＭＡコントローラ１２０８及びＤＭＡエンジン１２０２などの機能ブロックにより少ないインテリジェンスが必要とされる。これは、システムが進化するにつれて機能ブロックをよりポータブルにそして再利用可能にする利点を有する。例えば、より高優先度アプリケーションに使用されるＤＭＡエンジンとより低優先度アプリケーションに使用されるＤＭＡエンジンとを、単にそれぞれが接続されたインターフェイス・モジュールを変更することにより交換できる。
【０１０２】
１つの実施の形態では、ターゲット及びイニシエーター・インターフェイス・モジュールは、それらのＣＯＮＮＩＤ割当てを含むそれらの正確な機能がパワーアップで固定されるようにトランジスタ・レベルでプログラムされる。別の実施の形態では、インターフェイス・モジュールは再プログラム可能な資源であるようにインターフェイス・モジュールの設計はＲＡＭの中にある。この場合、インターフェイス・モジュールはソフトウェアによりＣＯＮＮＩＤ再割当てを含み、再プログラムされる。
【０１０３】
本発明が、特定の実施の形態について説明された。例えば、本発明の実施の形態が特定の信号を有するプロトコルを含んだ特定の構成のシステムとして示された。当業者は特許請求の範囲に記載された発明の範囲と精神に逸脱することなく異なる信号と異なるシステム構成が使用できることを認識できる。
【図面の簡単な説明】
【０１０４】
【図１】本発明の１つの実施の形態による複雑な電子システムのブロック図。
【図２】本発明の実施の形態のシステムモジュールのブロック図。
【図３】本発明の実施の形態のシステムモジュールのブロック図。
【図４】本発明の実施の形態の通信バスのブロック図。
【図５】パイプライン化された書き込み転送を示すタイミング図。
【図６】拒絶された第１のパイプライン化された書き込み転送と成功した第２の書き込み転送を示すタイミング図。
【図７】パイプライン化された読み出し及び書き込み転送の間挿（インターリーブ）を示すタイミング図。
【図８】１つのターゲットへの間挿（インターリーブ）された接続を示すタイミング図。
【図９】１つのイニシエーターからの間挿（インターリーブ）された接続を示すタイミング図。
【図１０】本発明の１つの実施の形態によるコンピュータ・システムの一部のブロック図。
【図１１】本発明の実施の形態の通信バスのブロック図。
【図１２】本発明の１つの実施の形態によるコンピュータ・システムの一部のブロック図。
【図１３】本発明の実施の形態のスレッド当たりクレジットに基づいたフロー制御機構を示すタイミング図。
【図１４】３つのイニシエーター機能ブロックと、３つのターゲット機能ブロックと、一組のインターフェイスを使用する一緒に結び付けられた２つの通信サブシステムとからなる例示的システムを示すブロック図。
【図１５ａ】サービス保証の機能ブロックの品質と、サービス保証の通信サブシステムの品質との例を示す図。
【図１５ｂ】サービス保証の機能ブロックの品質と、サービス保証の通信サブシステムの品質との例を示す図。
【図１６】チャンネル識別及びチャンネル当たりフロー制御信号の両方を有する例示的インターフェイスを示すブロック図。
【図１７】サービス保証構成機構の品質を示すフローチャート。
【図１８】データフロー・マッピングを実行する方法の実施例を示すフローチャート。
【図１９】サービス保証の品質の単位整列の例を示す図。
【図２０】マップされたデータフローを持つサンプル・システムのブロック図。
【図２１】サービス保証のエンド・ツー・エンド品質を得るために図２０のシステムにどのように構成方法が適用されるかの例を説明する図。
【図２】
2004530197.tif 000003
【図３】
2004530197.tif 000004
【図４】
2004530197.tif 000005
【図５】
2004530197.tif 000006
【図６】
2004530197.tif 000007
【図１０】
2004530197.tif 000008
【図１１】
2004530197.tif 000009
【図１２】
2004530197.tif 000010
【図１３】
2004530197.tif 000011
【図１４】
2004530197.tif 000012
【図１５ａ】
2004530197.tif 000013
【図１５ｂ】
2004530197.tif 000014
【図１６】
2004530197.tif 000015
【図１７】
2004530197.tif 000016
【図１８】
2004530197.tif 000017
【図１９】
2004530197.tif 000018
【図２０】
2004530197.tif 000019
【図２１】
2004530197.tif 000020
【国際公開パンフレット】
2004530197.tif 000021
2004530197.tif 000022
2004530197.tif 000023
2004530197.tif 000024
2004530197.tif 000025
2004530197.tif 000026
2004530197.tif 000027
2004530197.tif 000028
2004530197.tif 000029
2004530197.tif 000030
2004530197.tif 000031
2004530197.tif 000032
2004530197.tif 000033
2004530197.tif 000034
2004530197.tif 000035
2004530197.tif 000036
2004530197.tif 000037
2004530197.tif 000038
2004530197.tif 000039
2004530197.tif 000040
2004530197.tif 000041
2004530197.tif 000042
2004530197.tif 000043
2004530197.tif 000044
2004530197.tif 000045
2004530197.tif 000046
2004530197.tif 000047
2004530197.tif 000048
2004530197.tif 000049
2004530197.tif 000050
2004530197.tif 000051
2004530197.tif 000052
2004530197.tif 000053
2004530197.tif 000054
2004530197.tif 000055
2004530197.tif 000056
2004530197.tif 000057
2004530197.tif 000058
2004530197.tif 000059
2004530197.tif 000060
2004530197.tif 000061
2004530197.tif 000062
2004530197.tif 000063
2004530197.tif 000064
2004530197.tif 000065
2004530197.tif 000066
2004530197.tif 000067
2004530197.tif 000068
2004530197.tif 000069
2004530197.tif 000070
2004530197.tif 000071
2004530197.tif 000072
2004530197.tif 000073
2004530197.tif 000074
2004530197.tif 000075
2004530197.tif 000076
2004530197.tif 000077
2004530197.tif 000078
2004530197.tif 000079
2004530197.tif 000080
2004530197.tif 000081
2004530197.tif 000082
2004530197.tif 000083
2004530197.tif 000084
【国際調査報告】
2004530197.tif 000085