(57)【要約】複数のモジュールＭ，Ｓと、前記モジュールＭ，Ｓの間でメッセージを伝送するネットワークとを備えた集積回路が設けられる。第１のモジュールにより発行されたメッセージは、前記ネットワーク内のアドレス付けされたモジュールの位置を示す第１の情報と、アドレス付けされたモジュール内の位置を示す第２の情報とを備えている。前記集積回路は、前記第１および第２の情報を単一のアドレスとして配置する少なくとも一つのアドレス変換手段ＡＴを有する。前記アドレス変換手段ＡＴは、前記単一のアドレスに基づいてどのモジュールがどのようにアドレス付けされるかを決定する。前記アドレス付けされたモジュールＳの選択位置は、前記単一のアドレスに基づいて決定される。したがって、前記第１のモジュールＭ、すなわちマスターモジュールの設計は、前記アドレス付けされたモジュール、すなわちスレーブモジュールへのアドレスマッピングとは独立して実装されうる。さらに、より多くの効率的なネットワーク・リソースの利用が達成され、この方式はバスと下位互換性がある。
2006502642.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールと、前記複数のモジュールの間でメッセージを伝送するネットワークとを備えた集積回路であって、
第１のモジュールにより発行されたメッセージは、前記ネットワーク内のアドレス付けされたモジュールの位置を示す第１の情報と、前記アドレス付けされたモジュール内の位置を示す第２の情報とを有し、
前記集積回路は、前記第１および第２の情報を単一のアドレスとして配置する少なくとも一つのアドレス変換手段を有し、
前記アドレス変換手段は、どのモジュールが前記単一のアドレスに基づいてアドレス付けされるかを決定し、
前記アドレス付けされたモジュールの選択位置が前記単一のアドレスに基づいて決定されることを特徴とする集積回路。
【請求項２】
関連のある前記モジュールと前記ネットワークとの間での通信を管理する、前記モジュールの一つに関連づけられた少なくとも一つのインタフェース手段をさらに備え、
前記アドレス変換手段の一つは、前記インタフェース手段の一つに配置されることを特徴とする請求項１に記載の集積回路。
【請求項３】
前記アドレス変換手段は、前記第１のモジュールに接続された前記インタフェース手段に配置されることを特徴とする請求項２に記載の集積回路。
【請求項４】
前記アドレス変換手段は、アドレスマッピングテーブルを有することを特徴とする請求項２または３に記載の集積回路。
【請求項５】
前記アドレスマッピングテーブルは、接続の各チャネル用のフィールドと、接続のネットワークインタフェースポート用のフィールドと、アドレス付けされたモジュール内のローカルアドレス用のフィールドとを有することを特徴とする請求項４に記載の集積回路。
【請求項６】
複数のモジュールを備えた集積回路内でメッセージを交換する方法であって、
前記メッセージは前記複数のモジュール間でネットワークを介して交換され、
あるモジュールにより発行されたメッセージは、前記ネットワーク内でアドレス付けされたモジュールの位置を示す第１の情報と、前記アドレス付けされたモジュール内の位置を示す第２の情報とを有し、
前記方法は、
前記第１および第２の情報を単一のアドレスとして配置し、
モジュールがどのようにアドレスされるかを前記単一のアドレスに基づいて決定し、
前記単一のアドレスに基づいて、前記アドレス付けされたモジュールの選択位置を決定することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理モジュールと、処理モジュール間でメッセージを伝送するために構成されたネットワークとを有する集積回路、およびそのような集積回路においてメッセージを交換する方法に関する。
【背景技術】
【０００２】
シリコン上のシステムは、新機能や既存機能の改良を実装することへの要求が絶え間なく増えていることにより、複雑化し続けている。これは、集積回路上に組み込むコンポーネントの集積度を高めることによって可能になっている。同時に、回路を動作させるクロックの速度も高まる傾向にある。コンポーネントの集積度の高まりに加えてクロック速度が上がることにより、同じクロック・ドメインでの同期動作が可能な領域が小さくなっている。そのため、モジュラー手法が必要になった。モジュラー手法では、処理システムは、複数の、相対的に独立した、複雑なモジュールを含む。従来の処理システムでは、システム・モジュールは、バスを介して互いに通信するのが普通であった。しかしながら、モジュールの数が増えるにつれ、この通信方法は次の理由で非実用的になる。まず、モジュール数が多くなると、バスの負荷が過大になる。また、１つの素子しかバスにデータを渡すことができないので、バスは通信のボトルネックになる。こうした短所を克服する効果的な方法が、通信ネットワークによって得られる。
【０００３】
非常に複雑なチップの相互接続の問題の解決策として、近年、ネットワーク・オン・チップ（ＮｏＣ）が多くの注目を集めている。理由は２つある。第１に、ＮｏＣは、グローバル配線を構成および管理するので、新しいディープサブミクロン技術の電気的問題を解決するのに役立つ。同時にＮｏＣは、配線を共有して、配線数を少なくし、配線の利用度を上げる。ＮｏＣはさらに、エネルギー効率や信頼性が高く、バスよりスケーラブルである。第２に、ＮｏＣは、計算と通信を分離する。このことは、数十億規模のトランジスタ・チップの設計を管理する上で必須である。ＮｏＣがこの分離を実現できるのは、ＮｏＣが最初からプロトコル・スタックを用いて設計されているからである。プロトコル・スタックは、通信サービスの使用とサービスの実装とを分離する、明確に定義されたインターフェースを提供する。
【０００４】
ただし、システム・オン・チップ（ＳｏＣ）の設計時に、オン・チップ通信にネットワークを用いようとすると、検討を要する新たな問題がいくつも持ち上がる。これは、通信モジュール同士が直接接続される既存のオン・チップ相互接続（たとえば、バス、スイッチ、ポイント・ツー・ポイント配線など）と異なり、ＮｏＣでは、モジュール同士がネットワーク・ノードを隔てて通信するためである。結果として、相互接続のアービトレーションが集中型から分散型に変わり、順序が乱れたトランザクション、待ち時間の増加、エンド・ツー・エンド・フロー制御などの課題は、知的所有権ブロック（ＩＰ）またはネットワークによって処理されなければならない。
【０００５】
これらの問題のほとんどは、既に、並列マシン相互接続ネットワークの相互接続という、ローカル・エリア・ネットワークおよびワイド・エリア・ネットワーク（コンピュータ・ネットワーク）の分野における研究課題になっている。両方ともオン・チップ・ネットワークと非常に関連性があり、それらの分野における結果の多くはオン・チップにも適用できる。ただし、ＮｏＣの前提条件はオフ・チップ・ネットワークと異なるため、ネットワーク設計の選択肢のほとんどについて評価をし直す必要がある。オン・チップ・ネットワークは、異なるプロパティ（たとえば、リンク同期がより緊密）および制約条件（たとえば、メモリ・コストがより高い）を有するため、設計の選択肢も異なり、これが最終的にはネットワーク・サービスに影響を及ぼす。ストレージ（つまり、メモリ）や計算のリソースはオン・チップのほうが比較的高価であるが、ポイント・ツー・ポイント・リンクの数はオン・チップのほうがオフ・チップより多い。ストレージが高価であるのは、ＲＡＭなどの汎用オン・チップ・メモリが多くの領域を占めるからである。メモリを比較的小さいサイズでネットワーク・コンポーネント内に分散させることは、メモリ内のオーバーヘッド領域が支配的になるため、さらによくない。
【０００６】
また、オン・チップ・ネットワークの場合は、計算も、オフ・チップ・ネットワークに対して比較的高コストになる。オフ・チップ・ネットワーク・インターフェースは、通常、プロトコル・スタックをネットワーク層以上に実装してホスト・プロセッサを通信処理から解放する専用プロセッサを含む。専用プロセッサをネットワーク・インターフェースに内蔵することは、オン・チップでは不可能である。ネットワーク・インターフェースのサイズが、ネットワークに接続されるＩＰと同等か、それより大きくなるからである。さらに、プロトコル・スタックをＩＰそのものの上で実行することも不可能であろう。多くの場合、これらのＩＰは専用機能を１つしか持たず、ネットワーク・プロトコル・スタックを実行する機能を持たないからである。
【０００７】
ネットワーク・コンポーネントを接続する配線およびピンの数は、オン・チップのほうがオフ・チップより桁違いに多い。それらの配線およびピンは、ＮｏＣ通信以外の用途に大量に使われていない限り、広いポイント・ツー・ポイント相互接続（たとえば、３００ビット・リンク）を可能にする。これは、リンクが（８〜１６ビットと）比較的狭いオフ・チップでは不可能である。
【０００８】
さらにオン・チップの配線はオフ・チップより比較的短いため、オフ・チップより格段に緊密な同期が可能である。これにより、通信をより小さな細分性で行うことができるため、ルータ内のバッファ領域を小さくできる。現在の半導体技術では、配線の速度や信頼性も高いので、リンク層プロトコルをよりシンプルにすることができる（たとえば、エラー訂正や再送信が不要）。これは、メモリや計算のリソースの不足を補うことにもなる。
【０００９】
データの順序付け：ネットワーク内では、ソースから宛先に送信されたデータの着信順序が、（経路の違い、ドロップ後の再送信などによる）ネットワーク・ノードでの再順序付けのために乱れる場合がある。オフ・チップ・ネットワークでは、データ配信の順序が乱れるのはよくあることである。しかし、データのドロップがないＮｏＣでは、ソースと宛先の間のデータの経路を強制的に同じにして（確定的経路選択）、再順序付けをなくすことができる。このような順序どおりのデータ転送では、必要なバッファ領域が小さくてすみ、再順序付けモジュールが不要になる。
【００１０】
オン・チップ相互接続にネットワークを導入すると、その通信は、バスやスイッチなどの直接相互接続から根本的に変化する。これは、通信モジュール同士が直接接続されず、１つまたは複数のネットワーク・ノードで隔てられる、ネットワークのマルチホップ性による。これは、広く普及している、モジュール同士が直接接続される既存の相互接続（すなわち、バス）と対照的である。この変化の影響は、（集中型から分散型に変わる必要のある）アービトレーションと通信プロパティ（たとえば、順序付けやフロー制御）に現れる。
【００１１】
トランザクションの順序付け：従来、バス上では、すべてのトランザクションが順序付けられる（Peripheral VCI、AMBA、またはCoreConnect PLBおよびＯＰＢを参照）。これは低コストで行うことが可能だが、それは、相互接続が、通信を行う双方の間の直接リンクであることから、データの再順序付けを行わないためである。しかし、スプリット・バスでは、スレーブの応答速度が様々である場合に、１つのマスタでトランザクションの全体の順序付けを行うことが性能の足かせになる可能性がある。この問題を解決するために、バス・プロトコルの近年の拡張によって、トランザクションを接続に対して実施することが可能になった。接続内でのトランザクションの順序付けは依然として残るが、接続間での順序付けの制約はなくなった（たとえば、ＯＣＰやBasic VCI）。少数のバス・プロトコルでは、そのアドバンス・モード（たとえば、Advanced VCI）において、接続ごとの、順序の乱れた応答を許容しているが、宛先には、要求と応答の両方が送信時と同じ順序で着信する。
【００１２】
ＮｏＣでは、順序付けはそれほど厳格ではない。グローバル順序付けは、非常に高いコストでのみ可能である。これは、ネットワークの分散的な性質と、グローバル順序付けに必要な集中型アービトレーションの要件とが相反するからである。ソースと宛先のペアの間のローカル順序付けであっても、コストがかかる可能性がある。データは、複数の経路で転送されると、乱れた順序で着信する可能性がある。そのような場合は、順序どおりの配信にするために、データにシーケンス番号のラベルを付け、宛先で再順序付けをしてから配信しなければならない。通信ネットワークは、複数の、部分的に接続されたノードを含む。モジュールからのメッセージは、これらのノードによって、１つまたは複数の他のノードに転送される。この目的のために、メッセージは、ネットワーク内でアドレス指定されたモジュールの場所を示す第１の情報を含む。メッセージはさらに、モジュール内の特定の場所（メモリやレジスタのアドレスなど）を示す第２の情報を含むことができる。この第２の情報は、アドレス指定されたモジュールの特定の応答を呼び出すことができる。
【００１３】
宛先の名前と経路指定：バスの場合、コマンド、アドレス、およびデータは、相互接続に対してブロードキャストされる。それらはすべての宛先に着信し、そのうちの１つが、ブロードキャストされたアドレスに基づいてアクティブになり、要求されたコマンドを実行する。これが可能なのは、すべてのモジュールが同じバスに直接接続されているからである。ＮｏＣの場合、すべての宛先に情報をブロードキャストするには、すべてのルータおよびネットワーク・インターフェースに情報をコピーしなければならないので、実現は不可能である。これを行おうとすると、ネットワークにデータがあふれることになる。
【発明の開示】
【課題を解決するための手段】
【００１４】
本発明の目的は、ネットワークに多くのデータを誘導することなく、集積回路内でメッセージを交換する集積回路と方法を提供することである。
【００１５】
この目的は、請求項１による集積回路と、請求項７によるメッセージを交換する方法とにより達成される。
【００１６】
このため、複数のモジュールＭ，Ｓと、前記モジュールＭ，Ｓの間でメッセージを伝送するネットワークＮとを備えた集積回路が設けられる。第１のモジュールＭにより発行されたメッセージは、前記ネットワーク内でアドレス付けされたモジュールの位置を示す第１の情報と、前記アドレス付けされたモジュールＳ内の位置を示す第２の情報とを有する。前記集積回路は、前記第１および第２の情報を単一のアドレスとして配置する少なくとも一つのアドレス変換手段ＡＴをさらに有する。前記アドレス変換手段ＡＴは、どのアドレスがどのようにアドレス付けされるかを前記単一のアドレスに基づいて決定する。前記アドレス付けされたモジュールＳの選択位置は、前記単一のアドレスに基づいて決定される。
【００１７】
したがって、前記第１のモジュール、すなわちマスターモジュールの設計は、アドレス付けされたモジュール、すなわちスレーブモジュールにマップしているアドレスとは独立して実装されうる。さらに、より効率的なネットワークリソースの利用が達成され、この方式はバスと下位互換性がある。アドレス付けは、前記アドレス変換手段により行われる。
【００１８】
本発明の一態様によれば、前記集積回路は、モジュールＭ，Ｓの一つに関連づけられた少なくとも一つのインタフェース手段ANIP,PNIPを備えており、同インタフェース手段は、関連のあるモジュールＭ，ＳとネットワークＮとの間での通信を管理する。前記アドレス変換手段ＡＴは、前記インタフェース手段ANIP,PNIPの一つに配置される。
【００１９】
本発明の他の一態様によれば、前記アドレス変換手段ＡＴは、前記第１のモジュールＭに関連づけられた、前記インタフェース手段ANIP,PNIP内に配置される。
【００２０】
本発明の他の一態様によれば、前記アドレス変換手段ＡＴは、アドレスマッピングテーブルを備え、グローバルなメモリマッピングとローカルなメモリマッピングとの間の関係を格納する。
【００２１】
本発明の他の一態様によれば、前記アドレスマッピングテーブルは、静的か、プログラム可能か、あるいは動的である。
【００２２】
本発明の他の一態様によれば、前記アドレスマッピングテーブルは、接続の各チャネル用のフィールドと、接続のネットワークインタフェースポートANIP,PNIP用のフィールドと、アドレス付けされたモジュールＳのローカルアドレス用のフィールドとを有する。
【００２３】
本発明はまた、複数のモジュールＭ，Ｓを備えた集積回路内でメッセージを交換する方法に関する。これらモジュールＭ，Ｓ間のメッセージは、ネットワークＮを介して交換され、モジュールＭにより発行されたメッセージは、前記ネットワーク内のアドレス付けされたモジュールＳの位置を示す第１の情報と、前記アドレス付けされたモジュールＳ内の位置を示す第２の情報とを有する。アドレス変換ＡＴは、第１および第２の情報を単一のアドレスとして配置することにより実行される。前記アドレス変換は、どのモジュールがどのようにアドレス付けされるかを前記単一のアドレスに基づいて決定する。前記アドレス付けされたモジュールＳの選択位置は、前記単一のアドレスに基づいて決定される。
【００２４】
本発明は、マスターモジュールからのデータのアドレス付けを隠すアイデアに基づく。
【００２５】
さらに、本発明の一態様は、従属請求項に記載されている。
【００２６】
本発明の上述した態様と他の態様は、以下の実施例を参照して明らかにされる。
【発明を実施するための最良の形態】
【００２７】
以下の実施形態は、システム・オン・チップに関する。すなわち、同一チップ上にある複数のモジュールが、ある種の相互接続を介して互いに通信する。この相互接続は、ネットワーク・オン・チップＮＯＣとして実施される。ネットワーク・オン・チップは、ネットワーク内に配線、バス、時分割多重、スイッチ、および／またはルータを含めることができる。前記ネットワークのトランスポート層では、接続を介してモジュール間通信を実施する。接続は、第１のモジュールと少なくとも１つの第２のモジュールの間にあって、それぞれが接続プロパティのセットを有するチャネルのセットであると考えられる。第１のモジュールと単一の第２のモジュールの間の接続の場合（すなわち、単純な接続の場合）、接続は２つのチャネルを含む。１つは、第１のモジュールから第２のモジュールに向かう要求チャネルであり、もう１つは、第２のモジュールから第１のモジュールに向かう応答チャネルである。要求チャネルは、第１のモジュールから第２のモジュールへのデータおよびメッセージのために予約され、応答チャネルは、第２のモジュールから第１のモジュールへのデータおよびメッセージのために予約される。ただし、たとえば、マルチキャスト接続を提供するために、接続が１つの第１のモジュールとＮ個の第２のモジュールを含む場合は、２＊Ｎ個のチャネルを用意する。ここでは、第１のモジュールがすべての第２のモジュールに要求を発行する。接続プロパティに含めることができるのは、順序付け（順序どおりのデータ転送）、フロー制御（リモート・バッファを接続用として予約し、生成されたデータのための領域が保証される場合のみ、データの送信をデータ・プロデューサに許可する）、スループット（スループットの下限を保証する）、待ち時間（待ち時間の上限を保証する）、損失の大きさ（データのドロップ）、送信の中止、トランザクションの完了、データの正確さ、優先度、またはデータ配信である。
【００２８】
図１は、第１の実施形態によるシステム・オン・チップを示す。このシステムは、マスタ・モジュールＭ、２つのスレーブ・モジュールＳ１、Ｓ２を含む。各モジュールは、それぞれネットワーク・インターフェースＮＩを介してネットワークＮに接続される。ネットワーク・インターフェースＮＩは、マスタおよびスレーブ・モジュールＭ、Ｓ１、Ｓ２とネットワークＮの間のインターフェースとして用いられる。ネットワーク・インターフェースＮＩは、それぞれのモジュールとネットワークＮの通信を管理するために設けられる。これらにより、各モジュールは、ネットワークまたは他のモジュールとの通信を扱うことなく、各自の専用動作を実施できる。ネットワーク・インターフェースＮＩは、ネットワークを介して互いの間で、読み出しｒｄおよび書き込みｗｒの要求および動作を送信できる。
【００２９】
図２は、第２の実施形態によるシステム・オン・チップを示す。このシステムは、マスタ・モジュールＭ、２つのスレーブ・モジュールＳ１、Ｓ２、ルータ・ネットワークＲＮ、およびモジュールとルータ・ネットワークＲＮの間の３つのネットワーク・インターフェースＡＮＩＰ、ＰＮＩＰを含む。ネットワーク・インターフェースは、２つのネットワーク・インターフェース・ポートＮＩＰを設けており（１つは要求ポート、１つは応答ポート）、これを通して、各モジュールがルータ・ネットワークＲＮと通信したり、ルータ・ネットワークＲＮを介して他のモジュールと通信したりする。マスタ・モジュールＭに関連付けられたネットワーク・インターフェース・ポートをアクティブ・ネットワーク・インターフェース・ポートＡＮＩＰと呼び、スレーブ・モジュールに関連付けられたネットワーク・インターフェースをパッシブ・ネットワーク・インターフェース・ポートＰＮＩＰと呼ぶ。マスタ・モジュールＭとスレーブ・モジュールＳ１、Ｓ２の間の通信は、要求−応答トランザクションに基づいて行われる。この場合は、マスタＭが、場合に応じて何らかのデータや必要な接続プロパティを含む要求を発行することによってトランザクションを開始する。要求ＲＥＱは、アクティブ・ネットワーク・インターフェース・ポートＡＮＩＰ、ネットワークＲＮ、およびパッシブ・ネットワーク・インターフェース・ポートＰＮＩＰを介して、スレーブ・モジュールＳに配信される。要求がスレーブ・モジュールＴによって実行され、必要または要求に応じて、データが応答ＲＥＳＰとして返される。この応答ＲＥＳＰには、マスタＭに宛てたデータおよび／または肯定応答を含めることができる。マスタＭでの処理では、２つのスレーブＳ１、Ｓ２のメモリに割り当てられたアドレス・マップ０−ＦＦ（すなわち、第１のスレーブＳ１のメモリ内の０−７Ｆと、第２のスレーブＳ２のメモリ内の８０−ＦＦ）を参照できる。宛先モジュールへの経路を見つけるために、アドレスをソース側でデコードできる。したがって、トランザクション・アドレスは、（ａ）宛先識別子と（ｂ）宛先における内部アドレスの２つの部分を有する。
【００３０】
モジュールとネットワーク・インターフェースの接続は、以下のように分類できる。
【００３１】
−単純な接続は、１つのＡＮＩＰと１つのＰＮＩＰの間の接続である。
【００３２】
−マルチキャスト接続は、１つのＡＮＩＰと１つまたは複数のＰＮＩＰの間の接続であって、送信されるメッセージは複製され、各ＰＮＩＰはそれらのメッセージのコピーを受信する。マルチキャスト接続では、現在、返信メッセージが許可されていない。これは、生成されるトラフィックが膨大になるからである（すなわち、宛先ごとに１つの応答が生成されるため）。また、各ＰＮＩＰからの個々の応答を単一のＡＮＩＰ向け応答にまとめなければならない点でも、ＡＮＩＰの複雑さが増すからである。この、まとめる操作だけでも、バッファ領域および／または追加計算が必要になる。
【００３３】
−ナローキャスト接続は、１つのＡＮＩＰと１つまたは複数のＰＮＩＰの間の接続であって、ＡＮＩＰで開始される各トランザクションが必ず１つのＰＮＩＰによって実行される。ナローキャスト接続の一例では、ＡＮＩＰが、２つのメモリ・モジュールにマッピングされたアドレス空間でトランザクションを実施する。トランザクションは、トランザクション・アドレスに応じて、それら２つのメモリのいずれかでのみ実行される。
【００３４】
ナローキャスト接続は、アクティブ・ネットワーク・インターフェース・ポートＡＮＩＰにおいて各トランザクション・アドレスをデコードすることによって実装できる。デコード結果に従って、トランザクションのターゲット・スレーブが識別され、その特定のスレーブにのみトランザクション要求が送信される。すなわち、要求は、そのターゲット・スレーブでのみ認識可能であり、ネットワーク内のすべてのスレーブで認識できるわけではない。
【００３５】
図３は、本発明の第３の実施形態によるシステム・オン・チップを示す。この第３の実施形態によるシステムは、第２の実施形態によるシステムをベースとしている。さらに、アクティブ・ネットワーク・インターフェース・ポートＡＮＩＰは、アドレス・マッピング・テーブルＡＭＴを有するアドレス変換マネージャＡＴを含み、アドレス変換マネージャＡＴは、アドレス・マッピング・テーブルＡＭＴに格納されている情報に基づいてターゲット・スレーブのアドレスをデコードする。前記アドレス・マッピング・テーブルＡＭＴは、静的ベース、プログラマブル・ベース、または動的ベースで実装でき、これには、接続のすべてのチャネルのためのフィールド、接続識別子のためのフィールド、接続のネットワーク・インターフェース・ポートＡＮＩＰ、ＰＮＩＰのためのフィールド、および／またはアドレス指定されたモジュールＳのローカル・アドレスのためのフィールドを含めることができる。
【００３６】
スレーブ内のすべてのアドレスは、グローバル・アドレスとローカル・アドレスを有する。グローバル・アドレスは、マスタＭでの処理で参照されるアドレスに関し、ローカル・アドレスは、スレーブ内のアドレスに関する。グローバル・アドレスのアドレス範囲を００００−ＦＦＦＦとすることができ、スレーブ内の範囲を０００−ＦＦＦとすることができる。
【００３７】
グローバル・アドレスは、様々な方法で構成できる。第１の方法では、ネットワーク・アドレスとローカル・アドレスとで構成する。ネットワーク・アドレスとしては、受信側モジュールのポート識別子、すなわち、パッシブ・ネットワーク・インターフェース・ポートＰＮＩＰのポートＩＤを用いることができる。このような方法には下位互換性がある。
【００３８】
第２の方法では、グローバル・アドレスを、最小限の情報として接続識別子（接続ｉｄ）とローカル・アドレスとで構成するか、あるいは、接続識別子、パッシブ・ネットワーク・インターフェース・ポートＰＮＩＰ、およびローカル・アドレスで構成する。パッシブ・ネットワーク・インターフェース・ポートＰＮＩＰを与えることは、ケースによっては冗長になるが、方法の安全性が向上する。マスタの場合は、接続ｉｄによって複数のスレーブが指定されるので、それらから１つを選択する何らかの手段が必要である。ネットワーク・インターフェース・ポートＮＩＰアドレスか、（パッシブ・ネットワーク・インターフェース・ポートＰＮＩＰ  ｉｄが抽出される）グローバル・アドレスが依然として必要である。いずれの場合でも（すなわち、ネットワーク・インターフェース（ＮＩ）・アドレスの場合でも、グローバル・アドレスの場合でも）、接続にマッピングされるのはネットワーク・インターフェース・ポートＮＩＰのサブセットだけなので、選択手段としてのチェックは可能である。
【００３９】
ａ）アドレス変換は、接続ｉｄ＋グローバル・アドレス（すなわち、パッシブ・ネットワーク・インターフェース・ポートＰＮＩＰ  ｉｄおよびローカル・アドレス）に基づいて実施され、場合によって、接続およびチェックの通信プロパティも用いられる。
【００４０】
ｂ）アドレス変換は、接続ｉｄ、パッシブ・ネットワーク・インターフェース・ポートＰＮＩＰ  ｉｄ＋ローカル・アドレスに基づいて実施され、場合によって、接続およびチェックの通信プロパティも用いられる。
【００４１】
スレーブの場合は、接続ｉｄだけでデータの宛先を十分決定できる。この宛先は、その接続の一意のＡＮＩＰに接続された一意のマスタである。
【００４２】
前述のとおり、アドレス変換は、アクティブ・ネットワーク・インターフェースのアドレス変換マネージャＡＴによって実施され、アドレス変換マネージャＡＴは、自身のアドレス・マッピング・テーブルＡＭＴを含む。このアドレス・マッピング・テーブルＡＭＴには、アドレス変換を実施するために必要なすべての情報が格納される。ただし、アドレス変換マネージャＡＴおよび／またはアドレス・マッピング・テーブルＡＭＴを、ネットワーク・インターフェース内ではなく、ネットワークＮ内で集中配置することもできる。
【００４３】
本発明のさらなる実施形態によれば、ナローキャスト接続の機能性は、単純な接続かマルチキャスト接続によっても達成できる。ただし、コストがかかり、柔軟性は低く、かつ／またはモジュールの再利用性がない。ナローキャスト接続は、各スレーブ・モジュールＳへの複数の単純な接続を用いて実装できる。マスタ・モジュールＭまたはそのアクティブ・ネットワーク・インターフェース・ポートＡＮＩＰは、アドレスに従って、適切な単純接続を選択する。接続の差別的プロパティ、すなわち、接続のそれぞれのチャネルごとに異なる接続プロパティも、スレーブごとに実装できる。ただし、マスタ・モジュールＭは、アドレス・マップの割り当てをあらかじめ知っていなければならず、これが再利用性の妨げになる。単純接続を用いると、複数の接続識別子を管理しなければならないので、マスタ・モジュールのプログラミングがより難しくなる。複数のバッファ、すなわち、単純接続ごとのバッファは、複数の単純接続が用いられる場合に、それぞれの応答に対して割り当てなければならない。ただし、これには、ナローキャスト接続で用いるような単一の大きなバッファを割り当てる場合より、メモリが多く必要になる可能性がある。順序付けされたナローキャスト・トランザクションが必要な場合は、これらをより高いレベルに実装しなければならない。接続をまたいでは、順序付けが保証されないからである。
【００４４】
あるいは、マルチキャスト接続をベースにして、ナローキャスト接続を実装することができる。マルチキャスト接続は、マスタＭを１つまたは複数のスレーブＳ１、Ｓ２に接続する。応答があるトランザクションの場合は、すべてのスレーブが応答するが、マスタに返されるのは、１つの応答だけである。このような応答メッセージのフィルタリングは、マスタに関連付けられたアクティブ・ネットワーク・インターフェースＡＮＩＰが実施できる。あるいは、マルチキャスト接続に基づくナローキャスト接続は、スレーブにトランザクション・フィルタを実装することによって達成できる。すなわち、スレーブに関連付けられたパッシブ・ネットワーク・インターフェースＰＮＩＰがフィルタリングを実施する。ＰＮＩＰは、関連付けられたスレーブにトランザクションを転送するかどうかを、トランザクション・アドレスに応じて決定する。ただし、マルチキャスト接続が各スレーブからの応答を期待しているため、ＰＮＩＰは、空の応答を含めなければならない。これは、ＡＮＩＰまたはモジュールによってフィルタリングできる。この方法では、１つの接続だけが関与するので、マスタのプログラミングを単純にすることができる。それぞれのスレーブのアドレス割り当てを知ることが不要になるので、マスタ・モジュールＭの設計の再利用可能性も向上する。ただし、かなりの量の不要なネットワーク・トラフィック（すなわち、アドレス指定されていないスレーブへのトラフィック、およびそのスレーブからのトラフィック）が発生し、それらに対するバッファリングも必要になる。最後に、要求がすべてのスレーブに送信されるため、スレーブごとの差別的帯域幅割り当ての微調整を実施できる。
【００４５】
応答をしないトランザクション（たとえば、posted write）は、スレーブで実行された時点で完了したとされる。マスタに対する応答メッセージがないため、トランザクションの完了に関する保証を与えることができない。
【００４６】
応答をするトランザクション（たとえば、acknowledged write）は、ＡＮＩＰからのRETSTATメッセージが受信された時点で完了したとされる。データが応答（RETDATA）として受信されるときには、RETSTAT（場合によっては暗黙的）もデータを検証するために受信されることを想起されたい。トランザクションは、正常に実行されて成功RETSTATが返される場合や、スレーブでの実行に失敗して実行エラーRETSTATが返される場合や、フロー制御がない接続でバッファ・オーバーフローのために失敗してオーバーフロー・エラーがレポートされる場合がある。応答を必要とするＣＭＤをスレーブが受け付けた場合、スレーブは必ず応答を生成するものとする。
【００４７】
ネットワーク内では、ルータがデータをドロップしないので、メッセージは常にＮＩに配信されることが保証されている。フロー制御がある接続では、ＮＩもデータをドロップしない。したがって、この場合は、メッセージ配信が自動的に保証され、それによってＩＰへのトランザクションの完了も自動的に保証される。
【００４８】
これに対し、フロー制御がない場合は、バッファ・オーバーフローが起こったときにネットワーク・インターフェースでメッセージがドロップされる可能性がある。CMD、OUTDATA、RETDATAはすべて、ＮＩでドロップされる可能性がある。トランザクションの完了を保証するために、RETSTATはドロップできないようになっている。したがって、すべての未処理トランザクションのRETSTATメッセージを収容するために、ＡＮＩＰに十分なバッファ領域を設けなければならない。これは、未処理トランザクションの数に上限を設定することによって実現される。
【００４９】
次に、単一接続内での異なるトランザクション間の順序付け要件について説明する。トランスポート層の異なる接続間では、トランザクションの順序付けは定義されない。
【００５０】
１つの接続には、トランザクションの順序付けを観察できるポイントがいくつかある。（ａ）マスタ・モジュールＭ、ＩがＣＭＤメッセージをＡＮＩＰに渡す順序、（ｂ）ＣＭＤがＰＮＩＰによってスレーブ・モジュールＴ、Ｓに配信される順序、（ｃ）スレーブ・モジュールＴ、Ｓが応答をＰＮＩＰに渡す順序、（ｄ）応答がＡＮＩＰによってマスタに配信される順序などである。（ｂ）、（ｃ）、（ｄ）は、すべてが常に存在するわけではないことに注意されたい。さらに、スレーブがトランザクションを実行する順序については前提はない。観察できるのは、応答の順序だけである。スレーブによるトランザクション実行の順序は、システム決定であると考えられ、相互接続プロトコルの一部ではない。
【００５１】
ＡＮＩＰとＰＮＩＰの両方において、同一接続上にある、異なるトランザクションに属する送信メッセージをインタリーブすることが可能である。たとえば、２つの書き込みコマンドを、それらのデータの後にのみ、発行できる。ＯＵＴＤＡＴＡメッセージの順序がＣＭＤメッセージの順序と異なる場合は、ＯＵＴＤＡＴＡをそれぞれ対応するＣＭＤに関連付けるためにトランザクション識別子を導入しなければならない。
【００５２】
送信メッセージは、以下のように、ＰＮＩＰによってスレーブ（ｂを参照）に配信できる：
−Unordered（順序付けされない）：異なるトランザクションの送信メッセージのＰＮＩＰでの配信に順序付けが課されない。
【００５３】
−Ordered locally（ローカルに順序付けされる）：トランザクションが送信時の順序（ａ）で各ＰＮＩＰに配信されなければならない。ただし、ＰＮＩＰ間では順序付けは課されない。送信メッセージのローカルに順序付けされた配信は、順序付けされたデータ転送か、ＰＮＩＰでの送信メッセージの再順序付けによって実現できる。
【００５４】
−Ordered globally（グローバルに順序付けされる）：トランザクションが、接続のすべてのＰＮＩＰにわたって、送信時の順序で配信されなければならない。トランザクションの送信部分のグローバルに順序付けされた配信には、コストのかかる同期メカニズムが必要である。
【００５５】
トランザクション応答メッセージは、Orderedとして、スレーブによってＰＮＩＰ（ｃ）に配信できる。このとき、RETDATAメッセージとRETSTATメッセージは、ＣＭＤがスレーブ（ｂ）に配信されたときと同じ順序か、そうでなければUnorderedとして返される。応答が順序付けされない場合は、各応答が属するトランザクションを識別するメカニズムがなければならない。通常、これは、トランザクションの識別のためにメッセージに添付されたタグを用いて行われる（ＶＣＩのタグと同様）。
【００５６】
応答メッセージは、以下のように、ＡＮＩＰによってマスタ（ｄを参照）に配信できる：
−Unordered（順序付けされない）：応答の配信に順序付けが課されない。ここではさらに、タグを用いて、各応答をそれぞれ対応するＣＭＤに関連付けなければならない。
【００５７】
−Ordered locally（ローカルに順序付けされる）：単一のスレーブに向けたトランザクションのRETDATAメッセージとRETSTATメッセージが、元のＣＭＤがマスタによってＡＮＩＰに渡されたときの順序で配信される。同一接続内では、異なるスレーブへのトランザクションに対して順序付けが課されないことに注意されたい。
【００５８】
−Globally ordered（グローバルに順序付けされる）：１つの接続におけるすべての応答が、元のＣＭＤと同じ順序でマスタに配信される。トランザクションが接続上でパイプライン化されている場合、応答のグローバルに順序付けされた配信には、ＡＮＩＰでの再順序付けが必要である。
【００５９】
上記の順序付けの３×２×３＝１８とおりの組合せのすべてが可能である。これらのうち、次の２つを定義して提示する。順序付けされない接続は、トランザクションのどの部分でも順序付けが前提とされていない接続である。したがって、応答にタグを付けて、どのトランザクションに属するかを識別できるようにしなければならない。順序付けされない接続の実装はコストが低いが、使いにくい場合があり、タグ付けのオーバーヘッドがかかる。
【００６０】
順序付けされた接続は、ＰＮＩＰからスレーブへの送信メッセージのローカルな順序付け、ＰＮＩＰでの順序付けされた応答、およびＡＮＩＰでの応答に対するグローバルな順序付けがある接続として定義される。本願発明者らは、グローバルな順序付けはコストがかかりすぎ、用途が少ないという理由で、送信部分のローカルな順序付けを選択する。応答の順序付けは、タグ付けのないシンプルなプログラミング・モデルを可能にするために選択される。ＡＮＩＰでのグローバルな順序付けは、すべての再順序付けがＡＮＩＰでローカルに行われるので、ほどほどのコストで可能である。ユーザは、送信メッセージと返信メッセージのグローバルな順序付けがある接続を、ＰＮＩＰにおいて、パイプライン化されていない肯定応答済みトランザクションを用いてエミュレートできる（ただし、待ち時間が長くかかる）。
【００６１】
ネットワークでは、接続のスループットを、時分割多重アクセス（ＴＤＭＡ）方式で予約できる。この場合、帯域幅は、固定時間フレーム上の固定サイズ・スロットに分割される。帯域幅は、待ち時間およびジッタの上限とともに、スロットの予約時に保証できる。それらはすべて、複数のスロットで定義される。
【００６２】
既述のように、ネットワークは、メッセージがＮＩに配信されることを保証する。１つのＮＩＰから送信されたメッセージは、ネットワークのマルチホップ性のため、他のＮＩＰでは、すぐには認識されない。したがって、ネットワーク上でのハンドシェイクでは、一度に１つのメッセージしか送信することができない。これにより、接続のスループットが制限され、トランザクションに待ち時間が加わる。この問題を解決し、ネットワークの利用度を上げるために、メッセージをパイプライン化しなければならない。この場合、ＰＮＩＰにおいてデータを着信時と同じレートで処理しきれないのであれば、処理者ＮＩでのバッファ領域が限られているために、フロー制御を導入してプロデューサを低速化しなければならない。さもなければ、データが失われるおそれがある。
【００６３】
ＮｏＣサービスのセットは、ネットワークの詳細から抽出されて定義される。ＩＰデザインにおけるこれらのサービスを利用して、計算と通信が分離される。要求−応答トランザクションモデルは、現存するオンチップ相互接続プロトコルに近いものが用いられる。これは、現在のＩＰからＮｏＣへの移行を緩和する。高帯域でトランザクション・同時並行性（transaction concurrency)等のＮｏＣ能力をフルに利用するために、接続指向通信が設けられる。接続は、異なる特性で独立に構成されうる。これらの特性は、トランザクションの完了、種々のトランザクションの指示、帯域幅の下限、待ち時間（latency）およびジッターの上限、フロー制御を含む。
【００６４】
前述のとおり、ＮｏＣは、既存のオフ・チップ・ネットワークとも既存のオン・チップ相互接続とも異なるプロパティを有する。したがって、既存のプロトコルおよびサービス・インターフェースをそのままＮｏＣに採用することはできず、採用するためには、ＮｏＣの特性を考慮しなければならない。たとえば、ＴＣＰ／ＩＰなどのプロトコルは、ネットワークに損失があることを前提としており、信頼できる通信を提供するために多大な複雑さを含んでいる。したがって、そうしたプロトコルは、データ転送の信頼性の問題がより低いレベルで既に解決されていると見なせるＮｏＣでは適切ではない。一方で、VCI、OCP、AMBA、CoreConnectなどの既存のオン・チップ・プロトコルもまた、そのままでは適用できない。たとえば、それらは、データの順序付けされた転送を前提としている。つまり、２つの要求が同じマスタから開始された場合、それらは同じ順序で宛先に着信する。これは、ＮｏＣでは、自動的には維持されない。トランザクションのアトミック・チェーンとエンド・ツー・エンドのフロー制御もまた、ＮｏＣインターフェースにおいては格別の注意を必要とする。
【００６５】
図１および２に示したモジュールを、前記ネットワーク・インターフェースＮＩにおいてネットワークと対話する、いわゆる知的所有権ブロックＩＰ（相互接続モジュールを含む計算素子、メモリ、またはサブシステム）とすることができる。ＮＩは、通信サービスにアクセスするためのＮＩポートＮＩＰを設けている。ＮＩは、１つまたは複数のＩＰを接続できるＮＩＰを複数有することができる。同様に、ＩＰを複数のＮＩおよびＮＩＰに接続できる。
【００６６】
ネットワークを介する通信は、接続上のネットワーク・インターフェースによって実施される。すなわち、イニシエータ・モジュールとターゲット・モジュールは、ネットワークからは見えない。接続は、保証されたスループット、上限のある待ち時間およびジッタ、順序付けられた配信、またはフロー制御などの様々なプロパティを有する通信を記述および識別するために用いられる。たとえば、１Ｍｂｓの通信と２５Ｍｂｓの通信を区別し、別々に保証するために、２つの接続を用いることができる。２つのＮＩＰを、（場合によって、異なるプロパティを有する）複数の接続によって接続することができる。ここで定義する接続は、ＯＣＰやＶＣＩにおけるスレッドおよび接続の概念と同様である。ＯＣＰおよびＶＣＩでは、トランザクションの順序付けを緩和するためにのみ接続を用いるが、本願発明者らは、順序付けプロパティのみから、バッファリングおよびフロー制御の構成、保証されたスループット、および接続ごとに上限のある待ち時間を含むように一般化する。
【００６７】
本発明の実施形態による接続は、所望のプロパティで生成または確立されてから使用されなければならない。このことがネットワーク内でのリソースの予約（たとえば、バッファ領域や、時間単位あたりのリンク利用率）につながっている。要求されたリソースが利用できない場合、ネットワークＲＮはその要求を拒否する。接続は利用後に閉じられ、その接続によって占有されていたリソースが解放される。
【００６８】
接続の構成方法にさらなる柔軟性を持たせ、接続ごとのリソース割り当てをよりよいものにするために、接続の送信部分と返信部分を別々に構成することができる。たとえば、マスタとスレーブとで異なる量のバッファ領域をＮＩＰに割り当てたり、要求と応答とで異なる帯域幅を予約したりできる。
【００６９】
通信は、接続において、要求と、場合によって応答からなるトランザクションによって行われる。要求は、操作（たとえば、read、write、flush、test-and-set、nopなど）をエンコードし、場合によって送信データ（たとえば、書き込みコマンド用）を搬送する。応答は、コマンド（たとえば、ｒｅａｄ）の結果としてのデータおよび／または肯定応答を返す。接続には、少なくとも２つのＮＩＰが関与する。接続におけるトランザクションは、必ず、１つのＮＩＰにおいて開始される。このＮＩＰを、接続のアクティブＮＩＰ（ＡＮＩＰ）と呼ぶ。接続の他のすべてのＮＩＰを、パッシブＮＩＰ（ＰＮＩＰ）と呼ぶ。
【００７０】
１つの接続において、複数のトランザクションが同時にアクティブになる場合がある。これは、スプリット・バスの場合より普通に起こりうる。つまり、接続のＡＮＩＰにおいて、前のトランザクションの応答が保留中の状態でトランザクションを開始することができる。接続に複数のスレーブがあれば、異なるスレーブに対して複数のトランザクションを開始できる。トランザクションは、単一のマスタ−スレーブのペアの間でも、要求と応答の両方についてパイプライン化される。原則として、トランザクションはスレーブ内でもパイプライン化できる（それが可能なスレーブの場合）。
【００７１】
トランザクションは、以下のメッセージから構成できる。
【００７２】
−コマンド・メッセージ（ＣＭＤ）は、ＡＮＩＰによって送信され、ＰＮＩＰに接続されているスレーブにおいて実行されるアクションを記述する。コマンドの例として、read、write、test-and-set、flushなどがある。コマンドだけが、トランザクションにおいて必須のメッセージである。パラメータのない単一のコマンド（たとえば、固定サイズのアドレスなし書き込み）だけを許可するＮＩＰについては、コマンド・メッセージは、たとえ暗黙的でも（つまり、ＩＰによって明示的に送信されなくても）存在すると見なす。
【００７３】
−データ送信メッセージ（OUTDATA）は、データを実行する必要があるコマンド（たとえば、write、multicast、test-and-setなど）に続いて、ＡＮＩＰによって送信される。
【００７４】
−データ返信メッセージ（RETDATA）は、データを生成するトランザクション実行（たとえば、ｒｅａｄやtest-and-setなど）の結果として、ＰＮＩＰによって送信される。
【００７５】
−肯定応答完了メッセージ（RETSTAT）は、コマンドが完了した時点でＰＮＩＰによって返される任意メッセージである。正常完了が伝えられる場合と、エラーが伝えられる場合がある。RETDATAとRETSTATの両方を含むトランザクションの場合、この２つのメッセージを１つのメッセージにまとめて効率化を図ることができる。ただし、概念的には、これらは同時に存在する。RETSTATがデータの存在またはエラーを伝え、RETDATAがデータを搬送するからである。バス・ベースのインターフェースでは、通常、RETDATAとRETSTATは、２つの独立した信号として存在する。
【００７６】
トランザクションを構成するメッセージは、送信メッセージ（ＣＭＤ、OUTDATA）と、応答メッセージ（RETDATA、RETSTAT）とに分かれる。トランザクション内では、ＣＭＤは他のすべてのメッセージに先行し、RETDATAは、RETSTATに先行する（RETSTATがある場合）。これらのルールは、マスタとＡＮＩＰの間、およびＰＮＩＰとスレーブの間の両方にあてはまる。
【００７７】
これまで述べてきた実施形態は本発明を制限するものではなく例示するものであること、および、当業者であれば、添付の請求項の範囲から逸脱することなく様々な代替実施形態を設計できることに注意されたい。請求項においては、括弧で囲まれたどの参照符号も、請求項を制限するものとして解釈されてはならない。「含む（comprising）」という語は、請求項に列挙した要素またはステップ以外の要素またはステップの存在を除外するものではない。要素の前に付く「ａ」または「ａｎ」は、そのような要素が複数存在することを除外するものではない。複数の手段を列挙した装置請求項において、それらの手段のいくつかは、同一アイテムのハードウェアで実施できる。特定の手段が、互いに異なる従属請求項に再び記載されているという単なる事実は、それらの手段の組合せを有利に使用することができないということを示すものではない。
【００７８】
さらに、請求項中のどの参照符号も、請求項の範囲を制限するものとして解釈されてはならない。
【図面の簡単な説明】
【００７９】
【図１】第１の実施形態によるチップ上のシステムを示す図。
【図２】第２の実施形態によるチップ上のシステムを示す図。
【図３】第３の実施形態によるチップ上のシステムを示す図。
【図１】
2006502642.tif 000003
【図２】
2006502642.tif 000004
【図３】
2006502642.tif 000005
【国際調査報告】
2006502642.tif 000006
2006502642.tif 000007
2006502642.tif 000008