(57)【特許請求の範囲】
【請求項１】
少なくとも２つのファンクション・ブロックであって、第１のファンクション・ブロックが接続を確立することによって第２のファンクション・ブロックと通信し、その接続は、第１のファンクション・ブロックと第２のファンクション・ブロックとの間でデータを渡すことができる論理状態である、少なくとも２つのファンクション・ブロックと、
インターフェース・モジュール間で複数の信号を搬送するように構成されている通信媒体と、
データ転送がその一部であるトランザクション・ストリームを示すスレッド識別子を有する転送要求を送信するように構成されているイニシエータ・ファンクション・ブロックと、
通信媒体に結合されており、またイニシエータ・ファンクション・ブロック転送要求を受信するために結合されているイニシエータ・インターフェース・モジュールであって、前記イニシエータ・インターフェース・モジュールは受信したスレッド識別子を接続識別子にマッピングし、前記接続識別子は通信媒体を介してイニシエータ・インターフェース・モジュールから転送要求と共に送信されるよう構成されており、接続識別子は、転送優先順位と、転送順序と、転送が発せられたファンクション・ブロックとを含む情報を符号化するマルチビット値を含み、接続識別子は、イニシエータ・ファンクション・ブロックに関連付けられた複数の接続識別子の１つであるイニシエータ・インターフェース・モジュールと、
通信媒体に結合されており、かつターゲット・ファンクション・ブロックに結合されているターゲット・インターフェース・モジュールと
を含むことを特徴とする通信システム。
【請求項２】
少なくとも１つのバスをさらに含み、各バスがインターフェース・モジュールをその関連付けられたファンクション・ブロックに結合し、バスが複数の信号回線を含み、スレッド識別子が複数の信号回線の少なくとも１つを介して通信されることを特徴とする請求項１に記載の通信システム。
【請求項３】
スレッド識別子が、ターゲット・インターフェース・モジュールからターゲット・ファンクション・ブロックに、またイニシエータ・インターフェース・モジュールからイニシエータ・ファンクション・ブロックに送信されることを特徴とする請求項１に記載の通信システム。
【請求項４】
通信システムにおいて：
少なくとも２つのファンクション・ブロックであって、第１のファンクション・ブロックが接続を確立することによって第２のファンクション・ブロックと通信し、その接続が第１のファンクション・ブロックと第２のファンクション・ブロックとの間でデータを渡すことができる論理状態である、少なくとも２つのファンクション・ブロックと、
インターフェース・モジュール間で複数の信号を搬送するように構成されている通信媒体と、
転送要求を送信するように構成されているイニシエータ・ファンクション・ブロックと、
イニシエータ・ファンクション・ブロックと通信媒体に結合されたイニシエータ・インターフェース・モジュールと、
転送要求に応答するターゲット・ファンクション・ブロックと、
ターゲット・ファンクション・ブロックと通信媒体に結合されたターゲット・インターフェース・モジュールと、
イニシエータ・インターフェース・モジュールからターゲット・インターフェース・モジュールに転送要求と共に送信されるように構成された接続識別子であって、転送優先順位と、転送順序と、転送が発せられたファンクション・ブロックとを含む情報を符号化するマルチビット値を含み、イニシエータ・ファンクション・ブロックに関連付けられた複数の接続識別子の１つであり、イニシエータ・インターフェース・モジュールによってスレッド識別子にマッピングされた接続識別子と
を含むことを特徴とする通信システム。
【請求項５】
接続識別子は、同時接続をサポートするターゲット・ファンクション・ブロックに関連付けられた複数の接続識別子の１つであり、ターゲット・ファンクション・ブロックは、オープン接続の接続識別子を取得し、接続識別子をスレッド識別子にマッピングすることを特徴とする請求項４に記載の通信システム。
【請求項６】
スレッド識別子は、ターゲット・インターフェース・モジュールからターゲット・ファンクション・ブロックに、またイニシエータ・インターフェース・モジュールからイニシエータ・ファンクション・ブロックに送信されるように構成されており、接続識別子は、ターゲット・インターフェース・モジュールからターゲット・ファンクション・ブロックに、さらにイニシエータ・インターフェース・モジュールからイニシエータ・ファンクション・ブロックに送信されるように構成されていることを特徴とする請求項４に記載の通信システム。
【請求項７】
通信媒体を介して通信されるように構成され、データ転送がその一部であるトランザクション・ストリームを示すスレッド識別子をさらに含み、
接続識別子がイニシエータ・インターフェース・モジュールによってスレッド識別子からマッピングされることを特徴とする請求項４に記載の通信システム。
【請求項８】
少なくとも２つのファンクション・ブロックであって、第１のファンクション・ブロックが接続を確立することによって第２のファンクション・ブロックと通信し、その接続は、第１のファンクション・ブロックと第２のファンクション・ブロックとの間でデータを渡すことができる論理状態である、少なくとも２つのファンクション・ブロックと、
インターフェース・モジュールに結合されており、モジュール間で第１の複数の信号を搬送するように構成されている通信媒体と、
それぞれがインターフェース・モジュールをその関連付けられたファンクション・ブロックに結合し、複数の信号回線を含む少なくとも１つのバスであって、複数の信号回線は、データ転送がその一部であるトランザクション・ストリームを示すスレッド識別子（ＩＤ）と、ターゲット・ファンクション・ブロック用に意図された現在のトランザクションに関連付けられたスレッド番号を示す要求スレッドＩＤ信号と、ターゲット・ファンクション・ブロックからの転送がその一部であるスレッドを示す応答スレッドＩＤ信号と、ターゲット・ファンクション・ブロックがある種のスレッドに関連付けられた新しい要求を受信できないことをイニシエータ・ファンクション・ブロックに示す要求スレッド・ビジー信号と、イニシエータ・ファンクション・ブロックが、ある種のスレッドに関連付けられたターゲット・ファンクション・ブロックからのどんな新しい応答も受信できないことを示す応答スレッド・ビジー信号とを含む少なくとも１つのバスと
を含むことを特徴とする通信システム。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、コンピューティング・サブシステムを結合するための通信システムに関する。
【０００２】
（発明の背景）
電子コンピュータおよび通信システムは、ますます数多くの機能を含むようになり、複雑さが増している。同時に、電子コンピュータおよび通信システムでは、物理的なサイズおよび１機能当たりのコストが減少している。４層の超サブミクロン補型金属酸化膜半導体（ＣＭＯＳ）技術などの半導体技術における急速な進歩により、真の「システム・オン・チップ」設計が可能になった。これらの複雑な設計には、たとえば１つまたは複数のプロセッサ・コア、デジタル信号処理（ＤＳＰ）コア、いくつかの通信インターフェース、および特定用途向け論理でのグラフィックス・サポートを組み込むことができる。システムによっては、これらの非常に複雑なチップのうち１つまたは複数が、相互におよび他のシステム構成要素と通信しなければならない。単一の複雑なチップ上にあるサブシステム間で、ならびにシステム・ボード上にあるチップ間で、効率良く通信しなければならないことから、このようなシステムの統合、検証、およびテストを行う上で重要な問題が新しく発生してくる。サブシステム間およびチップ間の通信に有効でフレキシブルな方法の利点は、システム構成要素に最小限の再設計を施すだけで、他のシステムでも再使用できることである。
【０００３】
現在の電子システムの統合、検証、およびテストにおける課題の１つは、多くの分野に適用されている現在の電子システムが、通信システムとインターフェースするどのようなエンティティであってもよい複数のファンクション・ブロック間で、メモリなどのリソースを共用しなければならないという、機能、コスト、およびフォーム・ファクタに関する要件を有するという事実に起因している。このようなシステムでは、典型的には、ファンクション・ブロックが異なる性能特性および要件を有し、通信システムおよび共用リソースが総合的な要件を同時に満たすものでなければならない。典型的なファンクション・ブロックの主要な要件は、ファンクション・ブロック間で何桁も異なる可能性のある帯域幅および待ち時間制約である。それほど大きく異なる制約を同時に満たすためには、通信システムが高度な予測精度を用意しなければならない。
【０００４】
現在の複雑なコンピュータ・システム用に通信システムを設計するための従来の方法には、様々な長所および短所がある。このような方法に不可欠な態様は、様々なサブシステムが相互に提示する通信インターフェースである。１つの方法は、サブシステムとそれを使用して通信しなければならない各ピア間に、カスタマイズされた２地点間インターフェースを決めることである。このカスタマイズされた方法によって、単純なプロトコル、保証された性能、および関連のないサブシステムへの依存からの分離が行われる。ただし、カスタマイズされたインターフェースは、その性質上フレキシブルでない。異なるインターフェースを備えた新しいサブシステムを追加するには、設計のやり直しが必要である。
【０００５】
第２の方法は、標準化されたインターフェースを使用してシステムを形成することである。多くの標準化されたインターフェースは、事前に確立されたコンピュータ・バス・プロトコルに基づいている。コンピュータ・バスを使用することで、バスが十分な性能を備えている限り、多くの異なるファンクション・ブロックをシステムの要求に応じて相互に接続できるため、システム設計をフレキシブルにすることができる。様々なサブシステム間で、バスへのアクセスを割り振る必要もある。コンピュータ・バスの場合、リソース割振りは典型的にはアービトレーションと呼ばれる。
【０００６】
コンピュータ・バスの欠点の１つは、バスに接続された各サブシステムまたは構成要素が、バスのプロトコルを使用するのを制約されるということである。場合によっては、これによってサブシステムの性能が制限される。たとえば、サブシステムは複数のトランザクション・ストリームを同時に処理することができるが、バス・プロトコルは同時動作を完全にサポートすることができない。サブシステムが複数のトランザクション・ストリームを処理し、各トランザクション・ストリームが順序付け制約を有する場合、サブシステムは、ストリーム間を区別し、ストリーム内の順序を保存するために、送受信したデータのそれぞれの増分を、ある種のデータ・ストリームのある種の部分で識別する必要がある。これには、データの伝送元であるサブシステムを識別することが含まれる。従来から、このような識別は、特定のサブシステムまたは構成要素によって生成される構成不能のハードウェア識別子に限定されている。
【０００７】
現在のバス・システムは、１トランザクションからのデータを、同じストリーム内にある他のトランザクションからのデータでインターリーブできる「スプリット・トランザクション」をサポートすることによって、１トランザクション・ストリーム内の順序を保存するための限定機能を用意している。このようなバスでは、データは１ストリームのデータに属するものとしてタグが付けられ、その結果、たとえ順序外れで着信しても識別することができる。これには、受信側のサブシステムが着信アドレスを復号して、識別情報を抽出する必要がある。
【０００８】
現在のバス・システムは、単一のダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）へのアクセスをＤＲＡＭのいくつかのクライアント向けに処理するメモリ制御装置などの、単一の相互接続を介してトランザクションの複数のストリームを処理できるサブシステムに関して、動作の真の同時処理をサポートしていない。ＤＲＡＭ制御装置は、アクセス要求のソース、アクセス要求の優先順位、順序付け要件などに関係する情報を必要とする場合がある。現在の通信システムは、既存のプロトコルに適合するための余分な負荷をサブシステムにかけることなく、このような情報をデータと共に伝送するようには対応されていない。
【０００９】
多くのサブシステムが従来のシステムでその機能をすべて使用して動作するためには、既存の通信システムを介して通信を提供するように、追加の知識をサブシステムに組み入れて設計しなければならない。これにより、サブシステムが後に新しいサブシステムまたは構成要素と通信する必要が生じた場合に、サブシステムはさらに高価になり、フレキシブルでなくなる。したがって既存の通信方法は、現在の大規模で複雑な電子システムの要件には合致しない。そこで、大規模で複雑な電子システムのサブシステムが、その性能特性および要件が異なっても効率よく相互に動作できるようにするための、通信システムおよび機構が望ましい。
【００１０】
（発明の概要）
本発明の一実施形態には、電子サブシステム間にフレキシブルな通信機能を与えるための、共用通信バスが含まれる。一実施形態には、追加の知識をサブシステムに組み込んで設計することなく、特定のサブシステムの要求に応じて、異なる詳細なレベルのデータ伝送を識別できるプロトコルが含まれる。
【００１１】
本発明の一実施形態には、少なくとも１つのイニシエータ・ファンクション・ブロックおよび１つのターゲット・ファンクション・ブロックを含む、いくつかのファンクション・ブロックが含まれる。イニシエータ・ファンクション・ブロックの中には、ターゲット・ファンクション・ブロックとしても機能できるものがある。一実施形態では、イニシエータ・ファンクション・ブロックがイニシエータ・インターフェース・モジュールに結合され、ターゲット・ファンクション・ブロックが、ターゲット・インターフェース・モジュールに結合される。イニシエータ・ファンクション・ブロックおよびターゲット・ファンクション・ブロックはそれぞれのインターフェース・モジュールと通信する。インターフェース・モジュールは相互に通信する。イニシエータ・ファンクション・ブロックは接続を確立することによってターゲット・ファンクション・ブロックと通信する。接続とは、イニシエータ・ファンクション・ブロックとターゲット・ファンクション・ブロックとの間でデータを渡すことができる論理状態である。
【００１２】
一実施態様には、複数の信号を搬送するように構成されたバスも含まれ、信号には、イニシエータ・ファンクション・ブロックとターゲット・ファンクション・ブロックとの間のデータ転送がその一部である特定の接続を示す、接続識別子信号が含まれる。接続識別子には、どのファンクション・ブロックが伝送元であるか、転送要求の優先順位、および転送順序付け情報などの、接続に関する情報が含まれる。一実施態様には、接続識別子によって提供される情報サブセットを提供する、スレッド識別子も含まれる。一実施態様では、スレッド識別子は、インターフェース・モジュールと接続されたファンクション・ブロックとの間の転送を識別するローカル範囲の識別子であって、一部の実施態様では、インターフェース・モジュールがファンクション・ブロックを共用通信バスに接続する。
【００１３】
接続識別子は、インターフェース・モジュール間またはファンクション・ブロック間で、そのインターフェース・モジュールを介して情報を転送するグローバル範囲の識別子である。ファンクション・ブロックの中には、接続識別子が提供するすべての情報を必要とするものもあるが、その他のファンクション・ブロックは、スレッド識別子が提供する情報のサブセットだけしか必要としないことがある。
【００１４】
（詳細な説明）
本発明は、複雑な電子システムの複数のファンクション・ブロックまたはサブシステムが、共用通信バスなどの共用通信リソースを介して相互に通信できるようにするための、通信のシステムおよび方法である。一実施形態では、通信プロトコルによって、単一の半導体デバイス上にある複数のファンクション・ブロックが相互に通信できるようにする。他の実施形態では、通信プロトコルを使用して、異なる半導体デバイス上にある複数のファンクション・ブロックが、バスなどの共用オフチップ通信リソースを介して相互に通信できるようにする。
【００１５】
一実施形態では、本発明は、別々のコマンド・ワイア、アドレス・ワイア、およびデータ・ワイアを備えたパイプライン式の通信バスである。代替の実施形態には、多重化されたアドレス信号、データ信号、および制御信号を備えた、パイプライン式の通信バスが含まれる。前者の実施形態では、余分なワイアを犠牲にすることで、後者の実施形態よりも高い性能および単純な制御が得られる。前者の実施形態は、ワイアが比較的安価で性能要件が通常高いオンチップ通信に、より適している。後者の実施形態は、アドレス転送とデータ転送で同じワイアを共用するため、ワイア当たりの転送効率がより高い。後者の実施形態は、パッケージ・ピンおよびボード・トレースによって信号当たりのコストが高くなり、必要な総合通信性能が通常低いので、半導体デバイス間のチップ間通信により適している。
【００１６】
図１は、複雑な電子システム１００を示す構成図である。共用通信バス１１２が、サブシステム１０２、１０４、１０６、１０８、および１１０を接続する。サブシステムは、典型的には、共用バスにインターフェースするためのインターフェース・モジュールを含むファンクション・ブロックである。サブシステムはそれ自体が、１つまたは複数のファンクション・ブロックを含むことが可能であり、一体化されたかまたは物理的に別々のインターフェース・モジュールを含んでも含まなくてもよい。一実施形態では、通信バス１１２によって接続されたサブシステムは、別々の集積回路チップである。サブシステム１０４は特定用途向け集積回路（ＡＳＩＣ）であり、これは周知のように、特定の機能を実行するように設計された集積回路である。サブシステム１０６はダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）である。サブシステム１０８は、消去可能プログラム可能読取り専用メモリ（ＥＰＲＯＭ）である。サブシステム１１０は、書替え可能ゲート・アレイ（ＦＰＧＡ）である。サブシステム１０２は、システム１００で動作するように特別に設計された、フル・カスタム集積回路である。他の実施形態には、図示されたものと同じタイプまたは図示されていないその他のタイプの、追加のサブシステムを含めることができる。他の実施形態には、サブシステム１００に図示されているサブシステムよりも少ないサブシステムを含めることもできる。集積回路１０２は、サブシステム１０２Ａ、１０２Ｂ、１０２Ｃ、１０２Ｄ、および１０２Ｅを含む。ＡＳＩＣ  １０４は、ファンクション・ブロック１０４Ａ、１０４Ｂ、および１０４Ｃを含む。ＦＰＧＡ  １１０は、ファンクション・ブロック１１０Ａおよび１１０Ｂを含む。ファンクション・ブロックは、特定機能を実行する特定の論理ブロックであってよい。ファンクション・ブロックは、集積回路上のメモリ構成要素であってもよい。
【００１７】
システム１００は、１つまたは複数の集積回路またはチップからなるシステムの一例である。ファンクション・ブロックが、たとえばファンクション・ブロック１０２Ｅなどの集積回路上にある論理ブロックであってよく、あるいはファンクション・ブロックが、単一の論理機能を実施するフル・カスタム集積回路１０２などの集積回路であってもよい。
【００１８】
共用通信バス１１２は、システム１００のサブシステム間の共用通信バスを構成している。共用通信バス１１４は、サブシステム間または単一の集積回路上にあるファンクション・ブロック間の共用通信バスである。図示されたファンクション・ブロックの中には、それを介して共用通信バス１１２または共用通信バス１１４との間で信号の送受信を行うインターフェース・モジュールに接続されるものもある。相互接続１１５は、インターフェース・モジュールとファンクション・ブロックとを接続するための、ローカルな２地点間相互接続である。
【００１９】
インターフェース・モジュール１２０〜１２７は、図に示すように様々なファンクション・ブロックに接続される。この実施形態では、インターフェース・モジュール１２０、１２２、１２３、および１２４が、それらの接続されたファンクション・ブロック（それぞれＡ、Ｂ、Ｃ、Ｅ、および１０２）とは物理的に分離している。インターフェース・モジュール１２１および１２５〜１２８は、本来それぞれのファンクション・ブロックまたはサブシステムの一部である。１０２Ｄなどのファンクション・ブロックの中には、専用のインターフェース・モジュールを必要としないものもある。サブシステム、ファンクション・ブロック、およびインターフェース・モジュールの配置構成はフレキシブルであり、システム設計者によって決められる。
【００２０】
一実施形態では、ファンクション・ブロックには４つの基本タイプがある。４つの基本タイプのブロックとは、イニシエータ、ターゲット、ブリッジ、およびスヌーピングである。典型的なターゲットはメモリ・デバイスであり、典型的なイニシエータは中央処理装置（ＣＰＵ）である。ファンクション・ブロックはすべて、共用通信バス１１２または共用通信バス１１４および一実施形態のプロトコルを介して相互に通信する。イニシエータおよびターゲットのファンクション・ブロックは、インターフェース・モジュールを介して共用通信バスと通信することができる。イニシエータ・ファンクション・ブロックは、イニシエータ・インターフェース・モジュールを介して共用通信バスと通信し、ターゲット・ファンクション・ブロックは、ターゲット・インターフェース・モジュールを介して共用通信バスと通信することができる。
【００２１】
イニシエータ・インターフェース・モジュールは、それが関連付けられたファンクション・ブロック以外のファンクション・ブロックとの間で、読取りおよび書込み要求の発行および受取りを行う。一実施形態では、イニシエータ・インターフェース・モジュールは典型的には、ＣＰＵ、デジタル信号処理（ＤＳＰ）コア、またはダイレクト・メモリ・アクセス（ＤＭＡ）エンジンに接続される。
【００２２】
図２は、イニシエータ・インターフェース・モジュール８００の一実施形態を示す構成図である。イニシエータ・インターフェース・モジュール８００には、クロック・ジェネレータ８０２、データ・フロー・ブロック８０６、アービトレータ・ブロック８０４、アドレス／コマンド復号ブロック８０８、構成レジスタ８１０、およびシンクロナイザ８１２が含まれる。イニシエータ・インターフェース・モジュール８００は、共用通信バス８１４およびイニシエータ・ファンクション・ブロック８１６に接続される。一実施形態では、共用通信バス８１４は、図１でバス１１２が実行していたようにサブシステムを接続する共用通信バスである。
【００２３】
クロック・ジェネレータ８０２は、イニシエータ・ファンクション・ブロック８１６が共用通信バス８１４に対して同期的であるが異なる周波数で動作するときに、クロック分割を実行するのに使用される。イニシエータ・ファンクション・ブロック８１６が通信バス８１４に対して非同期的に動作する場合、クロック・ジェネレータ８０２は使用されず、シンクロナイザ８１２が使用される。アービトレータ・ブロック８０４は、共用通信バス８１４にアクセスするためのアービトレーションを実行する。一実施形態では、アービトレータ・モジュール８０４が、第１レベルのアービトレーションの事前に割り振られた帯域幅アスペクトを管理する論理回路と、第２レベルのアービトレーションを管理する論理回路とを含む、多重レベル・アービトレーション・スキームが使用される。データ・フロー・ブロック８０６には、共用通信バス８１４とイニシエータ・ファンクション・ブロック８１６との間のトランザクション管理に関連付けられた制御論理に加えて、共用通信バス８１４とイニシエータ・ファンクション・ブロック８１６との間のデータ・フロー先入れ先出し（ＦＩＦＯ）バッファが含まれる。ＦＩＦＯバッファは、アドレス・ビットとデータ・ビットの両方を、共用通信バス８１４とイニシエータ・ファンクション・ブロック８１６との間で段階的に転送する。一実施形態では、共用通信バス８１４がメモリ・マップ済みプロトコルを実施する。基礎となるコンピュータ・バス・プロトコルに特有の詳細は本発明にとって重要ではないが、これは、基礎となるコンピュータ・バス・プロトコルがいくつかの動作の同時処理をサポートしていることを条件とする。本発明で使用するバス・プロトコルの好ましい実施形態は、再試行トランザクションまたは分割トランザクションをサポートするものであり、これは、これらのプロトコルが、他の関連のないトランザクションに属している転送を実行させるために、多重サイクル・トランザクションを中断することによって、動作の同時処理を送達するためのメカニズムを提供するためである。イニシエータが以前にイニシエータによって要求されたデータを返すために長い待ち時間ターゲットを待つ間に、独立したトランザクションがバスを使用できるため、これらのプロトコルはより高い転送効率を可能にすることができる。
【００２４】
アドレス／コマンド復号ブロック８０８は、イニシエータ・ファンクション・ブロック８１６に関連付けられたレジスタに対して書込みが実行されるかどうかを判定するために、共用通信バス８１４上でアドレスを復号する。アドレス／コマンド復号ブロック８０８は、着信コマンドも復号する。構成レジスタ８１０は、帯域幅割振りおよびクライアント・アドレス・ベースを含むモジュール８００の状態を判定するビットを格納する。１つのレジスタ８１０が、イニシエータ・ファンクション・ブロック８１６を固有に識別するビット・セットである識別番号（ＩＤ）を格納する。
【００２５】
図３は、ターゲット・インターフェース・モジュール９００の一実施形態を示す構成図である。ターゲット・インターフェース・モジュール９００は、共用通信バス９１４およびターゲット・ファンクション・ブロック９１８に接続される。ターゲット・インターフェース・モジュール９００は、クロック・ジェネレータ９０２、データ・フロー・ブロック９０６、アドレス／コマンド復号ブロック９０８、シンクロナイザ９１２、および状態制御ブロック内の状態レジスタ９１６を含む。イニシエータ・モジュール８００のブロックと同様に命名されたターゲット・インターフェース・モジュール９００のブロックは、イニシエータ・ブロック８００に関して説明した方法とほぼ同じ方法で機能する。状態レジスタおよび状態制御ブロック９１６は、たとえばクライアント・アドレス・ベースおよびターゲット・ファンクション・ブロック９１８の識別子を格納するレジスタを含む。
【００２６】
一実施形態では、イニシエータ・ファンクション・ブロック８１６などのイニシエータ・ファンクション・ブロックが、他のファンクション・ブロックまたはサブシステムからの信号に応答する機能、ならびに他のファンクション・ブロックまたはサブシステムに信号を送ることによってアクションを開始する機能を有するので、ターゲット・ファンクション・ブロックとしても動作可能である。
【００２７】
図４は、一実施形態に従ったコンピュータ・システム１０００の一部を示す構成図である。図４は、多重レベル接続識別を図示するのに役立つ。システム１０００にはイニシエータ・ファンクション・ブロック１００２が含まれ、これが相互接続１０１０によってイニシエータ・インターフェース・モジュール１００４に接続される。イニシエータ・インターフェース・モジュール１００４は、共用通信バス１０１２によってターゲット・インターフェース・モジュール１００６に接続される。ターゲット・インターフェース・モジュール１００６は相互接続１０１０によってターゲット・ファンクション・ブロック１００８に接続される。典型的に共用通信バス１０１２は、図１の共用通信バス１１２または図１の共用通信バス１１４に類似している。相互接続１０１０は、ファンクション・ブロックとインターフェース・モジュールとを接続する共用ではない２地点間相互接続であるので、典型的には図１の相互接続１１５に類似している。典型的に相互接続１０１０は、そのローカルな性質から共用通信バス１０１２よりも物理的に短い。以下でより詳細に説明するように、システム１０００は、特定ファンクション・ブロックの要件に応じて２つの異なるレベルの接続識別を使用する。「グローバル」接続識別情報は共用通信バス１０１２で送信され、「ローカル」接続情報またはスレッド識別情報は、相互接続１０１０で送信される。
【００２８】
図５は、共用通信バス１０１２の一実施形態を示す構成図である。この図で共用通信バス１０１２は、インターフェース・モジュールまたはファンクション・ブロックであってもよいエンティティＡ、Ｂ、Ｃ、Ｄ、およびＥに接続されている。共用通信バス１０１２は、ワイア・セットからなる。データ・ワイア２３０は、共用通信バス１０１２上にあるファンクション・ブロック間に、直接かつ効率の高いデータ・トラフィック移送を提供する。一実施形態では、共用通信バス１０１２が、別々のアドレス・ワイア、データ・ワイア、および接続識別ワイアを使用する、フレーム化、時分割多重化、完全パイプライン式の、固定待ち時間通信プロトコルである、バス・プロトコルをサポートする。このバス・プロトコルは、高度な動作の同時処理を可能にするために転送の細粒度インターリーブをサポートし、待ち時間が長いかまたは変化するターゲット・デバイスからのトランザクション読取りを効率良く実施するために、再試行トランザクションを使用する。共用通信バス１０１２にアクセスするのに使用されるアービトレーション方法についての詳細は、本発明を理解する上では必要でない。イニシエータ・ファンクション・ブロックがコマンドおよびアドレスを駆動してからターゲット・ファンクション・ブロックが応答を駆動するまでの遅延が、共用通信バス１０１２の待ち時間として知られている。バス・プロトコルは、バスにアクセスするための、多くのイニシエータ・ファンクション・ブロックおよびターゲット・ファンクション・ブロック間でのアービトレーションをサポートする。図示された実施形態では、共用通信バス１０１２にアクセスするためのアービトレーションが、図４のモジュール１００４などのイニシエータ・インターフェース・モジュールによって実行される。他の実施形態では、アービトレーションは、ファンクション・ブロックによって直接実行されるか、またはインターフェース・モジュールとファンクション・ブロックとの組み合わせによって実行される。一実施形態では、バス認可は１パイプライン式バス・サイクルの間持続する。プロトコルは、単一のファンクション・ブロックが連続するバス・サイクルの間、バス所有者になることを禁止しないが、そのファンクション・ブロックが権利を得るために連続するサイクルでのアービトレーションを首尾良く勝ち取ることを要求する。
【００２９】
共用通信バス１０１２には、別々のアドレス・ワイア、データ・ワイア、および制御ワイアが含まれる。他の実施形態では、単数または複数のワイアを共用する多重化されたアドレス信号、データ信号、および制御信号を含むこともできる。このような実施形態では、ワイアがアドレス転送とデータ転送で共用されるため、１ワイア当たりの転送効率が高くなる。共用通信バス１０１２の多重化されていない実施形態は、ワイアが相対的に安価であり、通常は単一の集積回路チップに関する性能要件が高いことにより、単一の集積回路チップ上にあるファンクション・ブロック間での通信に、より適している場合がある。
【００３０】
クロック線２２０は、他のすべての共用通信バス１０１２信号が同期化される時間基準信号を提供する、グローバル信号ワイアである。リセット線２２２は、接続された各ファンクション・ブロックを強制的に、システム構成が開始できるデフォルト状態にするグローバル信号ワイアである。コマンド線２２４は、イニシエータ・バス所有者によって駆動されるマルチビット信号を搬送する。様々な実施形態で、マルチビット・コマンド信号は様々なタイプの情報を搬送することができる。たとえばコマンド信号は、転送タイプ、接続持続期間に関する情報、ならびに接続中に予測されるイニシエータおよびターゲットの挙動を示すことができる。一実施形態では、コマンド信号に、接続の初めおよび終わりを示す１つまたは複数のビットが含まれる。一実施形態では、たとえば１つのビットが接続状況を示すことができる。ビットがゼロの場合、現在の転送は接続の最終転送である。ゼロの接続状況ビットを受け取った後、次に論理ビットである接続状況ビットを受け取った場合、その転送は新しくオープンした接続の最初の転送であることを示す。その後に続けて１つずつ接続状況ビットを受け取れば、接続が依然としてオープンになっていることを示す。
【００３１】
この実施形態でサポートされている転送タイプには、読取り転送および書込み転送が含まれるが、これらに限定されるものではない。アドレス線２２８は、現在の転送中に読み取られるかまたは書き込まれるオブジェクトのアドレスを指定するために、イニシエータ・バス所有者によって駆動されるマルチビット信号を搬送する。応答線２３２は、現在の転送の状況を示すために、ターゲットによって駆動されるマルチビット信号を搬送する。サポートされる応答には次のような応答が含まれるが、これらに限定されるものではない。ＮＵＬＬ応答は、おそらくアドレスがどんなターゲットも選択しないため、現在の転送が打ち切られることを示す。データ有効受入れ（ＤＶＡ）応答は、読取りの場合、要求されたデータをターゲットがデータ線２３０で返していることを示す。書込みの場合、ＤＶＡ応答は、ターゲットがデータ線２３０から提供されたデータを受け入れていることを示す。ＢＵＳＹ応答は、選択されたターゲットにリソース衝突があり、現在の要求を処理できないことを示す。この場合、イニシエータは転送を後にもう一度再試行しなければならない。ＲＥＴＲＹ応答は、選択されたターゲットが要求された読取りデータを適時に送達できないことを示すが、後にそのように実行することを約束する。この場合、イニシエータは後に転送を再試行しなければならない。
【００３２】
接続識別子（ＣＯＮＮＩＤ）線２２６は、現在の転送がどの接続の一部であるかを示すために、イニシエータ・バス所有者によって駆動されたマルチビット信号を搬送する。接続とはイニシエータによって確立された、データがイニシエータと関連付けられたターゲットとの間を通過する論理状態である。典型的にはＣＯＮＮＩＤが転送を開始し、転送が処理されなければならない順序に関する情報を順序付けする、ファンクション・ブロックのアイデンティティを含む情報を伝送する。一実施形態では、ＣＯＮＮＩＤによって搬送される情報には、他の転送に関する転送の優先順位に関する情報が含まれる。一実施形態では、ＣＯＮＮＩＤは８ビット・コードである。イニシエータ・インターフェース・モジュールは、接続の最初のアドレス転送と共に固有のＣＯＮＮＩＤを送信する。この接続に関連付けられたその後の転送（たとえばデータ転送）がＣＯＮＮＩＤ値を提供し、その結果、送信者および受信者（ならびに共用通信バス１０１２上の転送を監視する任意のデバイス）は、接続に関連付けられた転送を明白に識別することができる。ＣＯＮＮＩＤを使用する一利点は、異なるトランザクションに属する転送を、複数のデバイス間でサイクルごとに自由裁量によってインターリーブできることである。一実施形態では、共用通信バス１０１２が、正しいシステム動作を保証するためにトランザクションを介した厳しい制御を必要とする、完全なパイプライン式プロトコルを実施する。ＣＯＮＮＩＤを使用しないと、特定の接続に関連付けられた転送が識別されないため、特定トランザクション内での順序付け制約に違反する可能性がある。
【００３３】
第１のコマンドがＢＵＳＹ応答によって拒絶されたとしても、その後のコマンドがすでに発信されてしまっていることがあるため、コマンドが完了するまで完全制御できるメカニズムを提供することが不可欠である。現在このような制御がなければ、あいまいなシステム挙動が生じる可能性がある。たとえば、単一のイニシエータ・インターフェース・モジュールが一連の従属する読取りおよび書込みコマンドを発行すると、そのコマンドの１つに対するＢＵＳＹ応答により、その後のコマンドが誤ったデータを返す可能性がある。このような問題に対する解決策の１つが、従属コマンドのオーバーラップを避けることである。ただしこの解決策は、正しい結果を保証するために、あらゆる従属コマンドの待ち時間を増加させてしまう。本発明は、部分的にＣＯＮＮＩＤ信号を使用し、従属コマンドのオーバーラップを可能にするものである。したがって、ＣＯＮＮＩＤを使用することにより、システムの性能および効率が改善される。本発明のＣＯＮＮＩＤの他の利点は、共用ファンクション・ブロックが、接続間で異なる可能性のあるサービス保証の質に基づいて要求に応答できるようにするため、通信システムの予測精度が高まることである。たとえば、コンピュータ・ディスプレイを動作させるように要求するデータの場合、遅延が発生するとディスプレイにちらつきを引き起こすので、予測不可能な遅延は許されない。したがって、ＣＯＮＮＩＤを使用してディスプレイ制御装置からのデータ要求に優先順位をつけることにより、ディスプレイ制御装置から共通リソースへの要求が他の要求より前に処理される。本発明は、システム性能を再調整するために、ＣＯＮＮＩＤをフレキシブルに再構成することも可能である。
【００３４】
図６は、共用通信バス１０１２上の２つの書込み転送からなる、パイプライン式書込みトランザクションを示すタイミング図である。図５を参照することもできる。図６に示されるように、単一のパイプライン式バス転送には、アービトレーション・サイクル（図示せず）、それに続くコマンド／アドレス／ＣＯＮＮＩＤ（ＣＭＤ  ３２４／ＡＤＤＲ  ３２８／ＣＯＮＮＩＤ  ３２６）サイクル（要求またはＲＥＱサイクルと呼ばれる）、および最後のＤＡＴＡ  ３３０／ＲＥＳＰ  ３４２サイクル（応答またはＲＥＳＰサイクルと呼ばれる）が含まれる。一実施形態では、システム性能を最適化するために、ＲＥＱサイクルとＲＥＳＰサイクルとの間のサイクル数が、動作頻度およびモジュール待ち時間に基づいて、システム実施時間に選択される。一実施形態では、ＲＥＱ−ＲＥＳＰ呼出し時間が２サイクルであって、図６のＤＡＴＡ  ３３０信号より上に符号付けされている。したがって、完全な転送時間には、４つの共用通信バス１０１２サイクル、アービトレーション、要求、遅延、および応答が含まれる。
【００３５】
図６には２つの転送が示されている。サイクル１では、イニシエータＥがＲＥＱフィールド３４０を駆動して、アドレスＡＤＤＲＥ０にＷＲＩＴＥ転送を要求する。このプロセスが転送要求発行と呼ばれる。一実施形態では、ＡＤＤＲＥ０の外部アドレス部分を復号することによって書込みデータを受け取るために、単一のターゲットが選択される。サイクル３（その後のＲＥＱ−ＲＥＳＰ待ち時間）では、イニシエータＥがＤＡＴＡワイア上の書込みデータＤＡＴＡＥ０を駆動し、それと同時に、選択されたターゲットＡがＤＶＡコードを伴うＲＥＳＰワイア３４２を駆動して、Ａが書込みデータを受け入れることを示す。サイクル３の終わりには、ターゲットＡが書込みデータを獲得しており、イニシエータＥは、ターゲットＡが書込みデータを受け入れることができたことを検出するため、転送は首尾良く完了したということである。
【００３６】
その間（すなわち依然としてサイクル３である）、イニシエータＥはパイプライン式ＷＲＩＴＥ転送（アドレスＡＤＤＲＥ１）をターゲットＡに発行する。この転送に対する書込みデータおよびターゲット応答は、双方ともサイクル５で発生し、ここで転送は首尾良く完了する。多くのシステムおよびサブシステムの正しい動作は、関連する転送の正しい順序付けに依拠する。したがって、正しいシステム動作には、サイクル３のＷＲＩＴＥがサイクル１のＷＲＩＴＥ転送の後に完了することが必要な場合がある。図６では、ＣＯＮＮＩＤフィールドが、強制的に正しい順序付けをさせるのに使用できる転送の原点に関する非常に重要な情報を搬送する。順序付け制約の好ましい実施形態は、たとえパイプライン式の転送中であっても、正しい順序付けを保証するために、イニシエータおよびターゲットが協働することである。これは、転送のパイプライン化によって転送セット（おそらく単一のトランザクション）の総待ち時間が減少し、その結果（待ち時間が減少し使用可能帯域幅が増加することによって）システム性能が向上するので重要である。
【００３７】
一実施形態のアルゴリズムによれば、
１．イニシエータは、
ａ）ＣＯＮＮＩＤと一致する転送要求セットの中で、転送Ｙが最も古く、未発行で未リタイアの転送である場合、または
ｂ）ＣＯＮＮＩＤと一致しており、古い未リタイアのすべての転送が、現在転送Ｙと同じターゲットに発行されている場合、転送Ｙを発行することができる。この規定の下で発行された場合、転送Ｙは、古い未リタイアの転送とパイプライン化されているとみなされる。
２．イニシエータが転送をリタイアさせることのないような方法で転送Ｘに応答するターゲットは、Ｘとパイプライン化されている転送Ｘと同じＣＯＮＮＩＤを使用して、その後のすべての転送に対してＢＵＳＹ応答しなければならない。
【００３８】
ＣＯＮＮＩＤと一致しており、新しい転送Ｘの後に発行される古い転送Ｙは、たとえＸが完了する前にＹが発行されても、Ｘとパイプライン化されているとはみなされないことに留意されたい。この状況が図７に図示されている。ターゲットＡが、サイクル１からのＷＲＩＴＥ  ＡＤＤＲＥ０に関連付けられたＤＡＴＡＥ０の受入れを一時的に妨げるリソース衝突を有する場合、その後ＡはＢＵＳＹ応答する。前述のアルゴリズムのステップ２では、ＲＥＱ−ＲＥＳＰ待ち時間が渡されるまではイニシエータがリソースの衝突について知ることができないことから、Ａは、同じＣＯＮＮＩＤ（この場合はＣＯＮＮＩＤ  １）からの任意の他のパイプライン式転送も（ＢＵＳＹを使用して）拒絶する必要がある。したがって、ターゲットＡは、同じＣＯＮＮＩＤを有し、イニシエータが第１の書込み転送へのＢＵＳＹ応答を解釈する前に発行されたものであり、したがってパイプライン式転送であるので、サイクル３で発行されるＷＲＩＴＥ  ＡＤＤＲＥ１にＢＵＳＹ応答しなければならない。さらに、ＷＲＩＴＥ  ＡＤＤＲＥ０転送の第２の試行（サイクル４で発行される）は、たとえサイクル３のＷＲＩＴＥ  ＡＤＤＲＥ１転送とオーバーラップしていても、パイプライン式転送ではないので、完了することができる。
【００３９】
ターゲットＡは、ＣＭＤ値またはＡＤＤＲ値によってではなく、いつ発生したかおよびどのＣＯＮＮＩＤを提示しているかによって、サイクル４の書込みが任意の以前の転送とパイプラインされていないと判定することに留意されたい。アルゴリズムのステップ１は、イニシエータが、所与の接続内で最も古い未発行で未リタイアの転送のみを発行することを保証する。したがって、いったん第１のＷＲＩＴＥ  ＡＤＤＲＥ０がサイクル３でＢＵＳＹ応答を受け取ると、その後は発行されないため、発行資格のある唯一のＣＯＮＮＩＤ＝１転送となる。したがって、初めのサイクル１転送がＢＵＳＹ応答を受け取り、ＲＥＱ−ＲＥＳＰ待ち時間が２サイクルであることを考えると、正しく動作しているイニシエータがサイクル４でパイプライン式転送を発行するのは不可能である。
【００４０】
イニシエータの一実施形態は、所与のＣＯＮＮＩＤ内で、所望の転送からなる時間順に順序付けされた待ち行列を維持する。各転送は待ち行列に入るときに、未発行および未リタイアとしてマークされる。待ち行列内で直前のエントリが未リタイアであり同じターゲットを対象としている場合は、パイプライン済みとしてもマークされるが、そうでない場合は、新しい転送が未パイプラインとしてマークされる。転送が発行されるたびに、発行済みとしてマークされる。転送が完了すると（すなわちＲＥＳＰサイクルが終了すると）、転送は未発行とマークされる。転送が首尾良く完了するとリタイア済みとしてマークされ、待ち行列から削除することができる。転送が首尾良く完了しないと、典型的には再試行されることになり、したがって再発行のためにアービトレーションに戻ることができる。転送が首尾良く完了せず、再試行もされない場合は、その後、次の転送が存在すれば、それが発行済みとしてマークされなくなるまでは、リタイア済みとしてマークしてはならない。この制約によって、イニシエータ論理が順序外れで発行するのを防ぐ。最も古い未リタイアの転送が発行されると、これは発行済みとしてマークされる。そのため、２番目に古い未リタイアの転送は、パイプライン済みとしてマークされていれば、最も古い転送が完了するまで（すなわち未発行であるとマークされるまで）発行をアービトレーションすることができる。
【００４１】
ターゲット実施の一実施形態では、深さがＲＥＱ−ＲＥＳＰ待ち時間と一致する、時間順に順序付けされた待ち行列を維持する。待ち行列はバス・クロックとは別に動作するため、待ち行列内で最も古いエントリは各バス・サイクルでリタイアし、同時に、新しいエントリが各バス・サイクルの待ち行列に加えられる。現在のＲＥＱ位相からのＣＯＮＮＩＤが新しい待ち行列エントリにコピーされる。さらに、現在のＲＥＱ位相に（外部アドレスを介して）ターゲットを選択する有効な転送が含まれる場合は、新しい待ち行列エントリ内の「第１」フィールドおよび「ビジー」フィールドを設定することができるが、そうでない場合は第１ビットおよびビジー・ビットは消去される。第１ビットは、現在の転送が（リソースの衝突によって）ＢＵＳＹ応答を受け取り、待ち行列内にある前の転送が同じＣＯＮＮＩＤを持っておらず、その第１ビット・セットを有する場合に、設定されることになる。第１ビットは、現在の転送が、強制的に順序付けするためにＢＵＳＹ応答される必要のない、潜在的にパイプライン式の転送の第１セットであることを示唆するものである。ビジー・ビットは、ターゲットにリソース衝突があるか、または待ち行列内にある前の転送のうち１つが同じＣＯＮＮＩＤを有し、第１ビット・セットを有する場合に、設定される。この論理は、ＲＥＱ−ＲＥＳＰのパイプライン待ち時間を強制することで、イニシエータが最初にマークされた転送へのＢＵＳＹ応答に反応できるまでは、ターゲットがパイプライン式転送を受け入れないことを保証するものである。
【００４２】
通信システム内のイニシエータおよびターゲットにアルゴリズムを適用することで、トランザクションの順序付けを維持しながら、転送をパイプライン化する機能（これによって、接続当たりの帯域幅が増加し、総トランザクション待ち時間が減少する）を提供する。したがってこのアルゴリズムは、接続当たりの高性能を容易にするものである。パイプライン式バスの基本的なインターリーブ構造によって、複数の論理トランザクションが互いにオーバーラップすることが可能であり、その結果システム性能の改善が可能となり、接続当たりのピーク帯域幅を超えるシステム帯域幅を持続させることができる。たとえば、図８は、イニシエータＥがあらゆる他のバス・サイクルでターゲットＡにデータを転送する必要があり、イニシエータＤがあらゆる他のバス・サイクルでターゲットＢにデータを要求する、システム構成を実証する図である。通信システムは微細なインターリーブ（バス・サイクル当たり）をサポートするので、トランザクションはファンクション・ブロックの本来のデータ速度で発行する個々の転送からなり、これによって、ファンクション・ブロックにおけるバッファリング要件が少なくなり、システム・コストが削減される。この例の総システム帯域幅は、任意のファンクション・ブロックのピーク帯域幅の２倍であるため、高いシステム性能が実現する。
【００４３】
本発明は、効率および予測精度の領域で、システム・レベルの改善を加えるものである。第１に、接続識別子は、ターゲットが、どの要求で順序どおりの動作を保持することを拒絶しなければならないかを選択できるようにする。システムは、同じＣＯＮＮＩＤを有する転送間で順序付けを保証するだけでよく、そのためにターゲットはパイプライン式転送だけを（ＢＵＳＹを使用して）拒絶すればよい。これは、ターゲットがたとえ特定のＣＯＮＮＩＤを拒絶していても、他のＣＯＮＮＩＤ値が示された転送を受け入れることができるという意味である。この状況は図９に示されており、イニシエータＤからのインターリーブされた読取り転送を、図７のパイプライン式の書込み転送に追加するものである。図９に示した４つの転送はすべてターゲットＡを選択し、そのＡは、サイクル１で発行するＷＲＩＴＥ ＡＤＤＲＥ０が首尾良く完了するのを妨げるリソース衝突を有する。第１の書込みを拒絶すると、Ａがサイクル４までＣＯＮＮＩＤ １から任意の他の転送を受け入れることを妨げるが、Ａが十分なリソースを有する場合、サイクル２の関連のないＲＥＡＤ ＡＤＤＲＤ０を受け入れることができる。したがって、（ターゲットＡが接続を区別できない場合のような）無駄になるバス・サイクルの数が減少するため、全体的なシステム効率が上昇する。
【００４４】
第２に、一実施形態では、接続識別子がターゲットにどの要求を拒絶するかを選択させることができる。ターゲットは、ＣＯＮＮＩＤ値に対する転送優先順位などの手段を関連付けることができるので、ＣＯＮＮＩＤ値とターゲットの内部状態との組み合わせに基づいて、どの要求に対して作用するかを決定する。たとえば、ターゲットは優先順位の異なる転送要求を格納するために、別々の待ち行列を有する場合がある。図９を参照すると、ターゲットは、優先順位の低い要求（奇数のＣＯＮＮＩＤで示される）用の待ち行列と、優先順位の高い要求（偶数のＣＯＮＮＩＤで示される）用の待ち行列とを有する場合がある。したがって、サイクル１のＣＯＮＮＩＤ  １  ＷＲＩＴＥ  ＡＤＤＲＥ０要求は、優先順位の低い待ち行列が一杯であると拒絶されるが、ＣＯＮＮＩＤ  ２  ＲＥＡＤ  ＡＤＤＲＤ０転送は、使用可能な優先順位の高い待ち行列リソースに基づいて、首尾良く完了することができる。このような転送優先順位の違いは、高度に統合された電子システムでは非常に一般的であり、品質の高いサービスを優先順位の高い転送要求に送達するターゲットの機能によって、システム全体の予測精度が大幅に向上する。
【００４５】
図９で示唆しているように、前述のアルゴリズムによって、ターゲットは、複数のＣＯＮＮＩＤ値からの同時の転送要求を積極的に満たすことができる。したがって、同じターゲットとの間で複数の論理トランザクションを交信することができるが、ただし、別々のＣＯＮＮＩＤ値を有することを条件とする。したがって、本発明は、１つのターゲット・ファンクション・ブロックについて複数の接続をサポートする。
【００４６】
さらに、イニシエータは、通信システムに複数のトランザクションを同時に提示する機能を必要とする場合がある。このような機能は、２つのターゲット間でデータを転送する、ダイレクト・メモリ・アクセス（ＤＭＡ）デバイスなどのイニシエータにとって非常に有用である。このような応用例では、ＤＭＡイニシエータは、第１のＣＯＮＮＩＤを使用して、読取りトランザクションをデータの発信元である第１のターゲットに提示し、さらに第２のＣＯＮＮＩＤを使用して、書込みトランザクションをデータの宛先である第２のターゲットに提示する。転送レベルで、読取り転送および書込み転送をインターリーブすることができる。これによって、ＤＭＡイニシエータ内のデータ記憶域容量が減少し、システム・コストが削減される。このような配置構成が図１０に示されている。ここでイニシエータＥは、ターゲットＡからのパイプライン式読取り転送と、ターゲットＢへのパイプライン式書込み転送とをインターリーブする。したがって、本発明は、１つのイニシエータ・ファンクション・ブロックについて複数の接続をサポートする。
【００４７】
アルゴリズムに関して上記で述べたように、本発明の実施をサポートするのに必要な制御構造は単純であり、効率の良い微細な転送のインターリーブを提供しない従来のプロトコルに関連付けられたデータ・バッファリング領域よりも、少ない領域しか必要としない。したがって本発明は、通信システムの領域および複雑さを最小限にすると同時に、高い性能およびフレキシビリティを発揮するものである。
【００４８】
最終的に、転送優先順位などの有用な情報を提供しながらも、実施コストを最小にするために、典型的には特定のイニシエータ・トランザクションに関連付けられたＣＯＮＮＩＤ値を選択しなければならない。システム設計時に特有のＣＯＮＮＩＤ値を選択することが有用であり、その結果、その値は固有であることが保証可能であって、比較および他の動作を簡単にするために順序付けることができる。さらに、システムの性能および予測精度のアスペクトを変更できるように、通信動作中にＣＯＮＮＩＤ値を変更できることがしばしば有用である。本発明の好ましい実施形態は、ＣＯＮＮＩＤ値をファンクション・ブロックのＲＯＭまたはＲＡＭリソース内に格納することによって、フレキシブルなシステム構成を可能にし、その結果、システム構築時またはシステム実行時のどちらでも容易に再構成することができる。
【００４９】
図１１は、図４に示されたような２地点間相互接続である相互接続１０１０を示す図である。相互接続１０１０には、図５を参照しながら説明したプロトコルと比較される追加の信号が含まれる。以下で説明するように、追加信号の中には、相互接続１０１０のような２地点間相互接続を介して送られる信号として特に有用なものがある。相互接続１０１０のプロトコルは、専用（非共用）の相互接続を介したマスター・エンティティ１１０２とスレーブ・エンティティ１１０４との間の２地点間転送を制御する。図４を参照すると、マスタ・エンティティはたとえばイニシエータ・ファンクション・ブロック１００２またはターゲット・インターフェース・モジュール１００６であってよい。スレーブ・エンティティは、たとえばイニシエータ・インターフェース・モジュール１００４またはターゲット・ファンクション・ブロック１００８であってよい。
【００５０】
図１１に示された信号には、信号名が符号付けされる。さらに、信号名の中には、後に、丸括弧または角括弧で囲まれた記号が続くものもある。記号とは、次のものである。
（Ｉ）この信号はオプションであり、独立して構成可能である。
（Ａ）この信号は、同じ記号を有する信号とともに構成されなければならない。
（ＡＩ）この信号は、（Ａ）インターフェース・モジュールが存在する場合は、独立して構成可能である。
［＃］最大信号幅である。
【００５１】
クロック信号は、接続されたファンクション・ブロックのクロックである。コマンド（Ｃｍｄ）信号は、バス上の転送タイプを示す。コマンドは、データとは無関係に発行することができる。アドレス（Ａｄｄｒ）信号は、典型的にはイニシエータ・ファンクション・ブロックがアクセスしようとする特定のリソースを示すものである。要求受入れ（ＲｅｑＡｃｃｅｐｔ）はハンドシェイク信号であり、これによってスレーブ１１０４は、マスター１１０２が１つの転送からＣｍｄ、Ａｄｄｒ、およびＤａｔａＯｕｔをリリースし、それらを他の転送用に再使用できるようにする。スレーブ１１０４がビジーであり要求された転送に参加できない場合、マスター１１０２はＣｍｄ、Ａｄｄｒ、およびＤａｔａＯｕｔの提示を継続しなければならない。ＤａｔａＯｕｔは、典型的には書込み転送において、マスターからスレーブに送信されたデータである。ＤａｔａＩｎは、典型的には読取りデータを搬送する。
【００５２】
応答（Ｒｅｓｐ）およびＤａｔａＩｎは、スレーブ１１０４からマスター１１０２に送信された信号である。Ｒｅｓｐは、スレーブ１１０４によって受け取られた転送要求が処理されたことを示す。応答受入れ（ＲｅｓｐＡｃｃｅｐｔ）は、マスターがスレーブのＲｅｓｐおよびＤａｔａＩｎのリリースを可能にするものであるかどうかを示すのに使用される、ハンドシェイク信号である。
【００５３】
一実施形態では、信号Ｃｌｏｃｋ、Ｃｍｄ、Ａｄｄｒ、ＤａｔａＯｕｔ、ＲｅｑＡｃｃｅｐｔ、Ｒｅｓｐ、ＤａｔａＩｎ、およびＲｅｓｐＡｃｃｅｐｔが、インターフェース・モジュール信号の基本セットを形成する。ファンクション・ブロックの中には、この基本セットが通信目的に適しているものもある。
【００５４】
他の実施形態では、バス１０１２の残りの信号の一部またはすべてが使用される場合がある。一実施形態では、Ｗｉｄｔｈは、転送の幅を示す３ビット信号であり、可変幅の転送を含む接続で有用である。Ｂｕｒｓｔはマルチビット信号であり、接続内で個々のコマンドを関連付けることができる。Ｂｕｒｓｔは、今後の転送数、および予測される任意のアドレス・パターンなど、将来の転送の性質を示すものである。Ｂｕｒｓｔには標準のエンド・マーカーがある。Ｂｕｒｓｔフィールドの一部のビットは、ユーザ定義フィールド用に予約されるため、通信は、接続内にある特有のプロトコルの一部詳細について知らなくてもかまわない。
【００５５】
割込みおよびエラー信号は、ほとんどのコンピュータ・システムで重要な部分である。イニシエータまたはターゲットのファンクション・ブロックによって生成される割込みおよびエラー信号が図示されているが、その機能性の詳細は特定ファンクション・ブロックの性質によって異なり、本発明を理解する上で重要ではない。
【００５６】
一実施形態では、要求スレッド識別子（ＲｅｑＴｈｒｅａｄＩＤ）は４ビット信号であり、スレーブ１１０４用に意図された現在のトランザクションに関連付けられたスレッド番号を提供する。特定のスレッドＩＤで実行されるすべてのコマンドは、相互に関しては順序どおりに実行しなければならないが、他のスレッドからのコマンドに関しては順序外れで実行することができる。応答スレッド識別子（ＲｅｓｐＴｈｒｅａｄＩＤ）は、現在の応答に関連付けられたスレッド番号を提供する。スレッド内の応答は他のスレッドに関して順序外れで返される場合があるので、ＲｅｓｐＴｈｒｅａｄＩＤは、どのスレッドのコマンドに応答するのかを識別する必要がある。一実施形態では、ＲｅｑＴｈｒｅａｄＩＤおよびＲｅｓｐＴｈｒｅａｄＩＤはオプションの信号であるが、使用する場合は両方とも使用しなければならない。
【００５７】
要求スレッド・ビジー（ＲｅｑＴｈｒｅａｄＢｕｓｙ）は、スレーブがマスターに対して、ある種のスレッドに関連付けられたいずれかの新しい要求が実行できないことを示せるようにするものである。一実施形態では、ＲｅｑＴｈｒｅａｄＢｕｓｙ信号は、スレッド当たり１つの信号を有するベクトルであり、アサートされた信号は、関連付けられたスレッドがビジーであることを示す。
【００５８】
応答スレッド・ビジー（ＲｅｓｐＴｈｒｅａｄＢｕｓｙ）は、マスターがスレーブに対して、ある種のスレッドに関連付けられたいずれかの（たとえば読取りに関する）応答が実行できないことを示せるようにするものである。ＲｅｓｐＴｈｒｅａｄＢｕｓｙ信号は、スレッド当たり１つの信号を有するベクトルであり、アサートされた信号は、関連付けられたスレッドがビジーであることを示す。
【００５９】
要求接続識別子（ＲｅｑＣｏｎｎＩＤ）は、ターゲット用に意図された現在のトランザクションに関連付けられたＣＯＮＮＩＤを提供する。ＣＯＮＮＩＤは、それによってシステム・エンティティが特定のトランザクションをシステム・エンティティに関連付けることができるメカニズムを提供する。ＣＯＮＮＩＤの使用法の１つは、様々なイニシエータ間で要求の優先順位を確立することである。他の使用法は、アクションまたはデータ転送を、トランザクション要求で提示されたアドレスではなく、イニシエータ・アイデンティティに関連付けることである。
【００６０】
図１１の実施形態は、ＣＯＮＮＩＤに終端間接続識別を提供し、さらにＴｈｒｅａｄ  ＩＤに２地点間識別またはよりローカルな識別を提供する。Ｔｈｒｅａｄ  ＩＤは、インターフェース・モジュールとその接続されたファンクション・ブロックとの間の転送を単純に識別するローカル範囲の識別子である。対照的に、ＣＯＮＮＩＤは、２つのインターフェース・モジュール（および必要であればそれらの接続されたファンクション・ブロック）間の転送を識別するグローバル範囲の識別子である。
【００６１】
Ｔｈｒｅａｄ  ＩＤは、接続されたインターフェース・モジュールおよびファンクション・ブロック内のテーブルに直接インデックス付けできるように十分小さいものでなければならない。対照的に、通常システム内には、インターフェース・モジュールが同時に受け入れるように調整されている数よりも多くのＣＯＮＮＩＤがある。ＴｈｒｅａｄＩＤの代わりにＣＯＮＮＩＤを使用するには、返されたＣＯＮＮＩＤを特定の要求またはバッファ・エントリと関連付けるために、インターフェース・モジュール内に費用のかかる突き合わせ論理が必要である。
【００６２】
ネットワーキングの類似性を使用すると、Ｔｈｒｅａｄ  ＩＤはレベル２（データ・リンク層）の概念であり、これに対してＣＯＮＮＩＤは、よりレベル３（移送／セッション層）の概念に似ている。ファンクション・ブロックの中には、レベル２でのみ動作するものもあるため、ファンクション・ブロックまたはそのインターフェース・モジュールに、レベル３のリソースを処理する費用を負担させることは望ましくない。あるいは、ファンクション・ブロックの中にはレベル３の接続機能を必要とするものもあるため、この場合は、ＣＯＮＮＩＤをファンクション・ブロックに渡すことが実用的である。
【００６３】
図４を参照すると、ＣＯＮＮＩＤは、共用通信バス１０１２上をインターフェース・モジュール１００４と１００６との間で転送される場合、固有である必要がある。ＣＯＮＮＩＤは、相互接続１０１０などのローカル相互接続を介して送ることができる。ただし多くの場合、ファンクション・ブロックとそのインターフェース・モジュールとの間でＴｈｒｅａｄ  ＩＤのみを使用する方がかなり効率的である。たとえば、イニシエータ・ファンクション・ブロック１００２は、ＣＯＮＮＩＤによって提供されるすべての情報は必要としない場合がある。また、システムによっては、同じＣＯＮＮＩＤを備えた同一のイニシエータ・ファンクション・ブロック１００２が複数存在するため、イニシエータ・インターフェース・モジュール１００４内の論理が、「ローカル」ＣＯＮＮＩＤを固有の「グローバル」ＣＯＮＮＩＤに変換しない限り、転送を受け取る特定のターゲット・ファンクション・ブロック１００８には、実際にはそれがどの接続の一部であるかがわからないことになる。インターフェース・モジュール内でのこのような変換機能の設計および実施は、複雑で費用のかかるものである。このような場合、ＣＯＮＮＩＤは、共用通信バス１０１２を介してインターフェース・モジュール間で送られる可能性があり、Ｔｈｒｅａｄ  ＩＤはファンクション・ブロックとインターフェース・モジュールとの間で送られる。
【００６４】
イニシエータ・ファンクション・ブロックの場合、Ｔｈｒｅａｄ  ＩＤとＣＯＮＮＩＤとの間に、１対１の静的対応が存在する場合がある。たとえば、Ｔｈｒｅａｄ  ＩＤが「１」の場合、特定のインターフェース・モジュールに単一のＣＯＮＮＩＤがマッピングされ、同一のファンクション・ブロックが複数あるという問題は解決される。
【００６５】
ターゲット・ファンクション・ブロックの場合、Ｔｈｒｅａｄ  ＩＤとＣＯＮＮＩＤとの間に、１対１の動的対応が存在する。ターゲット・ファンクション・ブロックが２つの同時スレッドをサポートしている場合、ターゲット・インターフェース・モジュールはオープン接続のＣＯＮＮＩＤを獲得し、それを必要に応じてスレッドに関連付ける。たとえば、ターゲット・インターフェース・モジュールはＣＯＮＮＩＤ「７」を受け取った後、ＣＯＮＮＩＤ  ７をスレッド「０」にマッピングする。その後、接続７が閉じるまで、ＣＯＮＮＩＤ  ７を伴うすべての転送がスレッド０に関連付けられる。
【００６６】
Ｔｈｒｅａｄ  ＩＤの使用法の一例である図１２を参照し、システム内に一連の同じダイレクト・メモリ・アクセス（ＤＭＡ）エンジンがあると考えてみる。図１２では、要素１２０２は同一のＤＭＡエンジンであり、それぞれがイニシエータ・インターフェース・モジュール１２０４に接続される。イニシエータ・インターフェース・モジュール１２０４は共用通信バス１２１２に接続される。ターゲット・インターフェース・モジュール１２０６も共用通信バス１２１２に接続され、バス１２１２からのデータをターゲット・ファンクション・ブロックであるＤＲＡＭ制御装置１２０８に伝送する。ターゲット・インターフェース・モジュール１２０６は相互接続１２１４によってＤＲＡＭ制御装置１２０８に接続される。ＤＲＡＭ制御装置１２０８が、ＤＲＡＭ  １２１３へのアクセスを制御する。
【００６７】
ＤＭＡエンジンは、ターゲット・ファンクション・ブロックとしても機能するイニシエータ・ファンクション・ブロックの一例である。ＤＭＡエンジンはソフトウェアによってプログラムされると、ターゲットとして作用する。その後、ＤＭＡエンジンはイニシエータとなる。ＤＭＡエンジンは読取り動作および書込み動作の両方を実行するため、２つの接続を単一のＤＭＡエンジンに関連付けることができる。ＤＭＡエンジン内で何らかのバッファリングが使用可能であれば、読取り動作および書込み動作が減結合され、その結果、どちらのタイプの動作も同時に実行することができる。待ち時間の長い記憶デバイスから読取りが発生する可能性があり、書込み動作がデータを書き込む前に、読取りデータをＤＭＡエンジン上のバッファに入れる必要がある。一実施形態では、それぞれのＤＭＡエンジン１２０２がＴｈｒｅａｄ  ＩＤを使用して読み取りストリームを識別し、別のＴｈｒｅａｄ  ＩＤを使用して書込みストリームを識別する。ＤＭＡエンジンは、他のどのファンクション・ブロックがトランザクションに参加しているかなどの、その他の情報を必要としない。したがってＣＯＮＮＩＤを、ＤＭＡエンジン１２０２から、接続されたインターフェース・モジュール１２０４に送る必要がない。Ｔｈｒｅａｄ  ＩＤのＣＯＮＮＩＤへのマッピングが、インターフェース・モジュール１２０４内で発生する。
【００６８】
一実施形態では、各イニシエータ・インターフェース・モジュール１２０４が、接続されたＤＭＡエンジン１２０２から、固有のＣＯＮＮＩＤを２つのＴｈｒｅａｄ  ＩＤそれぞれにマッピングする。それぞれのＤＭＡエンジン１２０２は、たとえば図１１のＴｈｒｅａｄ  ＩＤなどの単一ビットを使用して、２つのスレッドを区別する。共用通信バスを介したそれぞれの転送について、固有のＣＯＮＮＩＤがターゲット・インターフェース・モジュール１２０６に送られる。ＣＯＮＮＩＤは、たとえばグラフィック・データに関する要求には高い優先順位を割り当てることなどの、優先順位情報を含むことができる。優先順位の高いグラフィック・データは、ＤＲＡＭ制御装置１２０８によって即時に処理されるが、優先順位の低い要求は待機が必要な可能性がある。
【００６９】
インターフェース・モジュールおよび通信プロトコルはインテリジェンスを組み込んで設計されるため、ＤＲＡＭ制御装置１２０８およびＤＭＡエンジン１２０２などのファンクション・ブロックには、あまりインテリジェンスが要求されない。これには、システムが展開していくときに、ファンクション・ブロックをより移植可能または再使用可能にする利点がある。たとえば、単にそれぞれの接続されたインターフェース・モジュールを変更するだけで、優先度の高いアプリケーションに使用されるＤＭＡエンジンと、優先度の低いアプリケーションに使用されるＤＭＡエンジンを交換することができる。
【００７０】
一実施形態では、ターゲット・インターフェース・モジュールおよびイニシエータ・インターフェース・モジュールがトランジスタ・レベルでプログラムされるので、ＣＯＮＮＩＤ割当てを含む精密な機能がパワーアップ時に固定される。他の実施形態では、インターフェース・モジュールの設計がＲＡＭに入っているため、インターフェース・モジュールは再プログラム可能なリソースである。この場合、インターフェース・モジュールは、ソフトウェアによるＣＯＮＮＩＤの再割当てを含み、再プログラムされる。
【００７１】
以上、本発明を特有の実施形態に関して述べた。たとえば、本発明の実施形態を、特定の信号を有するプロトコルを含む特定構成のシステムとして示してきた。当技術分野の通常の技術者であれば、特許請求の範囲で述べたように、本発明の精神および範囲を逸脱することなく、様々なシステム構成および様々な信号が使用できることを理解されよう。
【図面の簡単な説明】
【図１】  本発明による複雑な電子システムの一実施形態を示す構成図である。
【図２】  システム・モジュールの一実施形態を示す図である。
【図３】  システム・モジュールの一実施形態を示す図である。
【図４】  通信バスの一実施形態を示す図である。
【図５】  パイプライン式の書込み転送を示すタイミング図である。
【図６】  第１のパイプライン式書込み転送の拒絶と、第２の書込み転送の成功を示すタイミング図である。
【図７】  パイプライン式の読取りおよび書込み転送のインターリーブを示すタイミング図である。
【図８】  単一ターゲットへのインターリーブされた接続を示すタイミング図である。
【図９】  単一イニシエータからのインターリーブされた接続を示すタイミング図である。
【図１０】  コンピュータ・システムの一部の一実施形態を示す構成図である。
【図１１】  通信バスの一実施形態を示す図である。
【図１２】  コンピュータ・システムの一部の一実施形態を示す構成図である。
【図１】
0004083987.tif 000002
【図２】
0004083987.tif 000003
【図３】
0004083987.tif 000004
【図４】
0004083987.tif 000005
【図５】
0004083987.tif 000006
【図６】
0004083987.tif 000007
【図７】
0004083987.tif 000008
【図８】
0004083987.tif 000009
【図９】
0004083987.tif 000010
【図１０】
0004083987.tif 000011
【図１１】
0004083987.tif 000012
【図１２】
0004083987.tif 000013