(57)【要約】【課題】同期ロジックに用いる要素及び／又は非同期ロジックに用いる要素を含むことが可能な、大域的非同期ネットワークオンチップにおける新規データ転送方法、及びそのような方法に使用できるデバイスを開発すること。【解決手段】本発明はネットワークオンチップ（ＮｏＣ）の分野に関し、特に非同期「送信／許可（ｓｅｎｄ／ａｃｃｅｐｔ）」タイプのプロトコルを使用して、ネットワークオンチップ上でデータを転送する方法に関する。本発明はまた、この方法を実行するために使用されるネットワークオンチップに関する。【選択図】図２
2006254449.tif 000002
【特許請求の範囲】
【請求項１】
互いに通信する機能を有する複数の要素により形成されるネットワークオンチップにおけるデータ伝送方法であって、複数の要素は、データを処理する機能を有する複数のリソース、及びこれらのリソースを互いに接続してネットワークにおいてデータを切り替える機能を有する複数のノードを備え、各ノードには複数の入力及び複数の出力が設けられており：
−  非同期通信プロトコルを使用する少なくとも１つの転送ステップを含み、このステップでは、優先順位又は複数の異なる優先チャネル群から選択される優先チャネル情報に関連付けられ、１以上の基本データグループを含む少なくとも１つのデータパケットを、ネットワークの送信要素からネットワークの受信要素に転送し、前記パケットの１以上の基本データグループ又は全ての基本データグループの転送は、第１要素が、第１のタイプの少なくとも１つの信号を前記プロトコルに従って送信することを伴い、第２要素が、第１のタイプの信号に応答して、前記プロトコルに従って少なくとも１つの他の第２タイプの信号を送信することによって承認され、前記非同期通信プロトコルに基づく第１のタイプの信号は、信号の少なくとも一部に、前記パケットが関連付けられる優先順位又は優先チャネル情報を含む、方法。
【請求項２】
ａ）ネットワークのリソースによって、優先データ又は優先チャネルを少なくとも１つの第１データパケットに関連付け、別の優先データ又は別の優先チャネルを少なくとも１つの第２データパケットに関連付けること、及び
ｂ）少なくとも１つの第１ネットワーク要素によって、第１データパケットと第２データパケット間の、出力の第１要素への転送順序を少なくとも１回調停することであって、その際転送順序を、第１データパケット及び第２データパケットが関連付けられている優先チャネルに少なくとも部分的に基づいて決定すること
を更に含む、請求項１記載のネットワークオンチップにおけるデータ伝送方法。
【請求項３】
第１要素は第１ノードであり、第１データパケット及び第２データパケットはそれぞれ、所定の優先順位の第１優先チャネル、及び第１チャネルの優先順位とは異なる優先順位の第２優先チャネルに関連付けられており、第１データパケットの第１データグループ及び第２データパケットの別のデータグループが第１ノードにアクセスして、第１ノードの一の出力又は同じ出力にアクセスする準備を整えているとき、ステップｂ）の間に、第１パケット及び第２パケットの転送順序を、第１チャネルの優先順位及び第２チャネルの優先順位のみに基づいて決定する、請求項２記載のデータ伝送方法。
【請求項４】
第１要素は第１ノードであり、第１データパケット及び第２データパケットはそれぞれ、第１優先チャネル及び第１チャネルよりも低い優先順位の第２優先チャネルに関連付けられており、第１パケットの第１データグループ及び第２パケットの別のデータグループが第１ノードにアクセスして、第１ノードの一の出力又は同じ出力にアクセスする準備を整えているとき、更に、ステップｂ）の後に：
ｃ）第１ノードの出力から第１データパケットを転送すること、及び
ｄ）第１パケット全体を第１ノードの出力から転送した後で、第１ノードの出力から第２データパケットを転送すること
を含む、請求項２又は３記載のデータ伝送方法。
【請求項５】
更に、ステップｂ）の後且つステップｄ）の前に：
−  第２パケットの少なくとも一部を第１ノードにおいて中止すること
を含む、請求項４記載のデータ伝送方法。
【請求項６】
ステップｂ）の前に、第１ノードの出力からの第２パケットの転送が既に始まっており、第２パケットの少なくとも１つの第２データグループが既に第１ノードの出力から転送されている、及び／又は既に第１ノードから送出されており、同時に、第１データパケットのデータが未だに第１ノードの出力に転送されていない、及び／又は未だに第１ノードから出力されていないとき、ステップｂ）の後且つステップｄ）の前に、更に可能であれば第２データパケット転送を部分的に中止している間に：
−  第２パケットの前記他のデータグループを中止すること、及び
−  第２パケットの前記第２データグループをネットワークに移動又は転送すること
を更に含む、請求項４又は５記載のデータ伝送方法。
【請求項７】
ステップｂ）の前に、第２パケットの少なくとも１つの第３データグループが未だ第１ノードにアクセスしていないとき、ステップｂ）の後且つステップｄ）の前に、更には可能であれば第２データパケットを部分的に中止している間に：
−  第２パケットの第３データグループのデータの少なくとも一部を第１ノードの入力に転送すること、
を更に含む、請求項４ないし６のいずれか１項記載のデータ伝送方法。
【請求項８】
ステップｂ）の後且つステップｄ）の前に、第２チャネルよりも優先順位の高いチャネルに関連付けられている少なくとも１つの第３データパケットが第１ノードにアクセスし、第１ノードの前記出力にアクセスする準備を整えているとき、更に：
−  ステップｄ）の前に、前記第３パケット全体を第１ノードの出力から転送すること
を含む、請求項５ないし７のいずれか１項記載のデータ伝送方法。
【請求項９】
第３パケットが第１チャネルの優先順位に等しい優先順位のチャネルに関連付けられているとき、第１ノードの出力からの前記第３パケット全体の前記転送を、ステップｃ）の後且つステップｄ）の前に行なう、請求項８記載のデータ伝送方法。
【請求項１０】
第３パケットが第１チャネルの優先順位よりも高い優先順位のチャネルに関連付けられているとき、第１ノードの出力からの前記第３パケット全体の前記転送を、ステップｃ）の前に行う、請求項８記載のデータ伝送方法。
【請求項１１】
ステップａ）において、第１要素が第１ノードであり、第１データパケット及び第２データパケットは同じ優先チャネルに関連付けられており、転送順序の調停は、第１ノードへの第１パケット及び第２パケットの到達順、及び／又は第１パケット及び第２パケットがこの第１ノードにアクセスする際に通過した第１ノードの入力にも基づいて行われる、請求項２記載のデータ伝送方法。
【請求項１２】
ステップｂ）の前に、第１データパケットの第１データグループ及び第２データパケットの別のデータグループが既に第１ノードにアクセスして、第１ノードの一の出力又は同じ出力にアクセスする準備を整えているとき、並びに、ステップｂ）において、第２データパケットの第２データグループが既に第１ノードの出力に転送されているか、又は既に第１ノードから送出されているとき、ステップｂ）の後に：
ｅ）第１ノードの出力から第２データパケットを転送すること、及び
ｆ）第２パケット全体を第１ノードの出力から転送した後で、第１データパケットを第１ノードの出力から転送すること
を更に含む、請求項１１記載のデータ伝送方法。
【請求項１３】
第１パケット及び第２パケットが関連付けられているチャネルよりも高い優先順位のチャネルに関連付けられている少なくとも１つの第３データパケットが、ステップｂ）の後且つステップｅ）の前に第１ノードにアクセスして、第１ノードの前記出力にアクセスする準備を整えているとき、更に：
−  ステップｅ）の前に、前記第３パケット全体を第１ノードの出力から転送すること
を含む、請求項１１又は１２記載のデータ伝送方法。
【請求項１４】
第３データパケットがステップａ）の前又はステップｃ）の間に第１ノードにアクセスするとき、更に：
−  ステップｆ）の前に、前記第３パケット全体を第１ノードの出力に転送すること、
を含む、請求項１３記載のデータ伝送方法。
【請求項１５】
第１パケット及び第２パケットをネットワークの第１経路及びネットワークの第２経路に沿って伝送する方法であって、更にステップｂ）の前に、
−  第１及び第２経路を決定すること
を含む、請求項２記載のデータ伝送方法。
【請求項１６】
更に、ステップｂ）の前に：
−  ネットワークリソースが第１経路のデータを第１パケットに割り当て、別のネットワークリソースが第２経路のデータを第２パケットに割り当てること、
を含む、請求項１５記載のデータ伝送方法。
【請求項１７】
第１データパケットを１つの優先チャネルに、第２データパケットを１つの優先チャネルに、前記第１及び第２パケットに含まれるデータのタイプに応じて関連付ける、請求項２記載のデータ伝送方法。
【請求項１８】
ネットワークの少なくとも１つの要素を第１クロックによって制御する、請求項１記載のネットワークオンチップにおけるデータ伝送方法。
【請求項１９】
ネットワークの１以上の他の要素を、第１クロックとは異なるか又は第１クロックとは同期しない第２クロックによって制御する、請求項１８記載のネットワークオンチップにおけるデータ伝送方法。
【請求項２０】
１以上の要素をクロックによって制御しないか、又は１以上の要素にはクロックを設けない、請求項１記載のネットワークオンチップにおけるデータ伝送方法。
【請求項２１】
互いに通信する機能を有する複数の要素を備えるネットワークオンチップデバイスであって、複数の要素は、データ処理機能を有する複数のリソースと、１以上の入力及び１以上の出力を備え、ネットワークの少なくとも２つの要素にデータを切り替える機能を有する１以上のノードとを含み、前記デバイスは、
−  優先順位又は優先チャネル情報に関連付けられ、１以上の基本データグループを含むパケットの形式でデータを送信できるデータ送信手段、
−  １以上の基本データグループを含むパケットの形式でデータを受信できるデータ受信手段、
−  非同期通信プロトコルに従って同期信号を送信する手段であって、第１のタイプの少なくとも１つの信号を送信することができ、この送信は基本データグループの送信を伴うか又は付随する、手段、
−  前記非同期通信プロトコルに従って同期信号を受信する手段であって、基本データグループの受信の前に、第２タイプの少なくとも１つの信号を受信できる手段、及び、
−  第２タイプの同期信号の受信の後でパケットの基本データグループの送信を承認し、第１のタイプの同期信号の受信の後でパケットの基本データグループの受信を承認する手段
を備え、パケットの基本データグループの送信に伴うか又は付随する第１のタイプの前記信号は、少なくともその一部に、前記パケットが関連付けられる優先順位又は優先チャネル情報を含む、ネットワークオンチップデバイス。
【請求項２２】
−  少なくとも１つの第１リソースであって、所定の優先チャネル群から選択される少なくとも１つの優先チャネルを、このリソースが送信する少なくとも１つのデータパケットに関連付けることができる優先順位関連付け手段を含む第１リソース、及び
−  少なくとも１つの第１要素
も含み、更に、１つの優先チャネルに関連付けられる少なくとも１つの第１パケット及び１つの優先チャネルに関連付けられる少なくとも１つの第２データパケットの間の、第１ノードの出力からの転送順序を決定する機能を有する調停手段を備え、転送順序は、少なくとも、第１及び第２パケットがネットワークの対応するリソースによって関連付けられたそれぞれの優先チャネル又は優先チャネルに基づいて決定される、請求項２１記載のネットワークオンチップデバイス。
【請求項２３】
第１要素は第１ノードであり、第１パケット及び第２パケットは第１優先チャネル、及び第１チャネルとは異なる第２優先チャネルに関連付けられており、調停手段はまた、第１パケット及び第２パケット間の転送順序を、第１パケット及び第２パケットが関連付けられているそれぞれのチャネルのみに基づいて決定する機能を有する、請求項２２記載のネットワークオンチップデバイス。
【請求項２４】
第１要素は第１ノードであり、第１パケット及び第２パケットは同じ優先チャネルに関連付けられており、調停手段はまた、第１パケット及び第２パケット間の転送順序を、第１及び第２パケットが第１ノードの入力に到達する順番に応じて決定する機能を有する、請求項２２記載のネットワークオンチップデバイス。
【請求項２５】
調停手段はまた、第１パケット及び第２パケット間の転送順序を、第１及び第２パケットが第１ノードに到達したときに通過した第１ノードへの入力に応じて決定する機能を有する、請求項２４記載のネットワークオンチップデバイス。
【請求項２６】
第１リソースは更に、
−  第１リソースが送信する可能性のある少なくとも１つのデータパケットに対し、このパケットがネットワークにおいて辿る経路に関連するデータを割り当てる機能を有する経路データ割り当て手段
を備える、請求項２２記載のネットワークオンチップデバイス。
【請求項２７】
第１要素は第１ノードであり、第１データパケット及び第２データパケットは、対応するネットワークリソースによって、それぞれ第１経路データ及び第２経路データに関連付けられており、第１ノードは更に：
−  ネットワークリソースによって第１パケット及び第２パケットが関連付けられている経路データに少なくとも部分的に又は全面的に基づいて、前記第１パケット及び前記第２パケットをルーティングする機能を有するデータルーティング手段
を備える、請求項２６記載のネットワークオンチップデバイス。
【請求項２８】
第１ノードは更に経路データを保存する手段を備える、請求項２７記載のネットワークオンチップデバイス。
【請求項２９】
優先順位関連付け手段は、パケットに含まれるデータタイプに応じて、所定の優先チャネル群から選択される少なくとも１つの優先チャネルを、この第１リソースが送信する少なくとも１つのデータパケットに関連付けることができる、請求項２２記載のネットワークオンチップデバイス。
【請求項３０】
ネットワークの前記要素の少なくとも１つが第１クロックによって制御される、請求項２１記載のネットワークオンチップデバイス。
【請求項３１】
前記要素のうち少なくとも１つの他の要素が、第１クロックとは異なるか又は第１クロックとは同期しない第２クロックによって制御される、請求項３０記載のネットワークオンチップデバイス。
【請求項３２】
ネットワークの前記要素の内少なくとも１つの要素がクロックによって制御されないか、又は少なくとも１つの要素にはクロックを設けない、請求項２１記載のネットワークオンチップデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワークオンチップ（ＮｏＣ）の分野に関する。本発明は、ネットワークオンチップ上のデータを、特に非同期「送信／許可（send/accept）」プロトコル及び改良型ネットワークオンチップ構造を使用して伝送し、このような伝送を可能にする方法に関する。
【背景技術】
【０００２】
本構造は、この構造が同期ロジックに用いられるユニット又はブロックを含む場合でも、大域的に非同期で動作することができる。本構造は必ずしも特殊ロジックを必要とせず、同期ロジックに用いられる要素、特にノード、及び非同期ロジックに用いられる他の要素、特に他のノードを含むことができる。本構造は、例えば「遅延保証」サービス及び一般に「ベストエフォート」サービスと呼ばれる別のサービスのような異なるタイプのサービスを実行する機能を備える。これらの異なるサービスの実行及びこのような構造で搬送されるデータパケット間の優先順位の管理は、少なくとも部分的に、データパケットに関連付けられる「仮想チャネル」と呼ばれる優先チャネルによって保証される。
現在、ＡＳＩＣ（特定用途向け集積回路）又はチップの異なるモジュールを互いに通信させるために使用される主な方法は、バス型トポロジイを使用している。このタイプのトポロジイでは、互いに通信する必要のあるチップのモジュールは、これらのモジュールが順番に使用する同じ通信媒体に接続され、これによって例えばデータ送信する。「バス調停器」と呼ばれる中心要素が異なるモジュールの媒体手段にアクセス権を付与することにより、バスの予約競合が回避される。
【０００３】
このシステムは、特に、通信スループットが低くなることによって遅延が大きくなるという不具合を有し、特にクロックツリーの観点から、特に容量電荷の問題のために構築が益々困難になっている。また、チップの通信バスによって提供されるスループットをチップ上の全モジュールが実行するアプリケーションに正確に適合させることは難しい。更に、このようなシステムは普通、所定のアプリケーションに非常に特異的であるので、システムが一つのアプリケーション用に設計されてしまうと、通常別のアプリケーションに再使用することができない。
ネットワークオンチップ（ＮｏＣ）は上述した問題を改善するために開発された。
【０００４】
例えば、ネットワークオンチップが非特許文献１に提案された。特にこの文献は、マトリックス又はメッシュタイプのトポロジイを有する通信媒体を備えるネットワークオンチップアーキテクチャについて記載している。この通信媒体は、２つの異なるルーティングタイプの実現に使用できるルーティングノードを含む。第１のルーティングタイプを使用して、「遅延保証」時間と呼ばれる第１のタイプのサービスが提供され、このサービスでは、第１リソースから第２リソースにデータを渡すときに要する時間がほぼ一定である。第２タイプのルーティングを使用して、一般に「ベストエフォート」と呼ばれる第２タイプのサービスが提供され、このサービスでは、ルーティングノードを接続するネットワークリンクの容量の使用が最大になる。このアーキテクチャでは、通信媒体との接続は時間多重を使用するグローバルネットワーククロックが管理する。このようなアーキテクチャの使用は複雑であり、特にアーキテクチャの構成要素の配置ルートの決定及びアーキテクチャのクロックツリーの生成に関して複雑である。また、このようなネットワークの消費電力を制御すること、特にクロックツリーに起因する消費電力を制御することは難しい。また、このようなネットワークの消費電力を制御すること、特にクロックツリーに起因する消費電力を制御することが難しい。
ルーティングノードが互いに非同期で通信する構成のネットワークオンチップが、非特許文献２に提案されている。このようなネットワークにおけるデータ伝送はまた、一般に「ワンホットエンコーディング」と呼ばれるエンコーディング方式を使用してエンコードされる。しかしながら、このネットワークは、作るのが難しい特殊ロジックを使用するという大きな不具合を有する。更に、このようなネットワークは異なるサービスタイプ、例えば遅延「保証」サービス、及び一般に「ベストエフォート」と呼ばれるサービスを使用しない。
非特許文献３及び４は、複数の要素、特に仮想チャネルを使用する非同期ロジックにおいて用いられるルーティングノードを備える非同期ネットワークオンチップにおけるサービス品質の管理方法を開示している。
【非特許文献１】Goossens等による"Trade offs in the design of a router both guaranteed and best-efforts service for networks on chip" Proceedings of DATE conference, 2003, p350-355
【非特許文献２】Brainbridge及びS. Furberによる"Delay Insensitive System on Chip Interconnect, Using 1 of 4 data Encoding", Proceedings of International Symposium on Advanced Research in Asynchronous Circuits and Systems, March 2001, pages 118 - 126
【非特許文献３】"Quality of Service (QoS) for Asynchronous On-Chip Networks", T. Felicijan, S. B. Furber, Formal Methods for Globally Asynchronous Locally Synchronous Architecture (FMGALS 2003) Pisa, Italy, Sept. 2003
【非特許文献４】"An Asynchronous On-Chip Network Router with Quality-of-Service (QoS), T. Felicijan, S. B. Furber Support Proceedings IEEE International SOC Conference, Santa Clara, CA, Sept. 2004, pp 274-277, ISBN: 0-7803-8445-8
【非特許文献５】"The Turn Model for Adaptative Routing, C. J. Glass", L. M. Ni, Association for computing Machinery, 1992
【非特許文献６】"A survey and comparison of wormhole routing technique in Mesh networks", K. M. Al-Tawil等、IEEE network, March-April 1997, pp. 38-45
【非特許文献７】Simon Moore等による、"Point to point GALS Interconnect", Proceedings of ASYNC 2002, p69-75
【発明の開示】
【発明が解決しようとする課題】
【０００５】
同期ロジックに用いる要素及び／又は非同期ロジックに用いる要素を含むことが可能な、大域的非同期ネットワークオンチップにおける新規データ転送方法を開発する必要があるという問題が生じており、また、大域的に非同期に動作する新規ネットワークオンチップ構造であって、構造内部におけるデータ転送を管理するためにグローバルクロックを使用せず、同期ロジックに用いる要素及び／又は非同期ロジックに用いる要素を含むことができ、且つ、例えば複数のリソース又は複数のデータ間の高速データ転送を優先させる必要があるかどうか、又は複数のリソース又は複数のデータ間のスループットを保証する必要があるかどうかによって、異なるタイプのサービスを実行する機能を備えるネットワークオンチップ構造が求められている。
【課題を解決するための手段】
【０００６】
本発明は、改良型のネットワークオンチップ構造、及びこのようなネットワークにおいてデータを転送又は伝送するための改良型の方法を使用する。
【０００７】
本発明はまず、互いに通信できる複数の要素により形成されるネットワークオンチップにおいてデータを伝送する方法に関し、複数の要素は、データを処理する機能を有する複数のリソース、及びこれらのリソースを互いに接続し、且つネットワークにおいてデータを切り替える機能を有する複数のノードを備え、各ノードには複数の入力及び複数の出力が設けられ、本方法は：
−  少なくとも１つの転送ステップを含み、このステップでは、「フリット」と呼ばれる１以上の基本データグループを含む少なくとも１つのデータパケットを、ネットワークの送信要素からネットワークの受信要素に非同期通信プロトコルを使用して転送し、前記パケットの１以上の基本データグループ、又は全ての基本データグループの転送は、第１要素により少なくとも１つの第１のタイプの信号を前記プロトコルに従って送信することを伴うか、又はそのような送信に付随し、前記転送はまた、受信要素が、第１のタイプの信号に応答して少なくとも１つの第２タイプの信号を前記プロトコルに従って送信することによりこの受信要素によって許可される。
ネットワークを伝送される複数のデータパケットはそれぞれ、優先順位、又は異なる優先チャネル群から選択される優先チャネル情報に関連付けられる。
【発明を実施するための最良の形態】
【０００８】
前記データパケットを優先順位又は優先チャネル情報に関連付ける方法に可能な一実施形態によれば、前記非同期通信プロトコルに基づく前記第１のタイプの信号は、少なくともその一部に、このパケットが関連付けられる優先順位又は優先チャネル情報を含む。
本方法の一変形実施形態によれば、基本データグループの送信を伴う第１のタイプの信号及び前記基本データグループは同時に送信することができる。
【０００９】
このような転送を可能にするために使用されるプロトコルは、同期ロジック及び／又は非同期ロジックにおいて用いられる高位プロトコルとすることができる。従って、このプロトコルを使用して少なくとも２つのネットワークブロック間のデータ転送を設定することができ、これらのネットワークブロックの各々は同期するが、例えば第１クロックに関連するネットワークの少なくとも１つの第１ノードと、第１クロックとは、異なるか又は第１クロックから位相シフトした第２クロックに関連するネットワークの少なくとも１つの第２ノードとの間で位相シフトして動作する。
また、このプロトコルを使用して、少なくとも２つのネットワークブロック間のデータ転送を設定することができ、これらのネットワークブロックの各々は、例えばクロックを持たないネットワークの少なくとも１つの第１ノードとクロックを持たない少なくとも１つの第２ノードとの間で、非同期である。
【００１０】
また、このプロトコルを使用してネットワークの少なくとも２つのブロックの間のデータ転送を設定することができ、これらのうち一方のブロックは同期し、且つ他方のブロックは、例えば第１クロックに関連するネットワークの少なくとも１つの第１ノードと、少なくとも１つの他の非同期ノード又はクロックを持たないノードとの間で、非同期である。
このプロトコルは、パケットの所定のフリットに先行する別のフリットが受信要素によって許可されると直ぐに、送信要素が前記データパケットの所定のフリット又は基本データグループを送信することができるように設計できる。
【００１１】
本発明によるデータ転送方法に可能な一実施形態によれば、本方法は更に：
−  ネットワークの少なくとも１つの第１要素、例えばネットワークの第１ノードによって、少なくとも１つの第１データパケットと少なくとも１つの第２データパケットの間の転送順序であって、第１ノードから出力される転送順序を、少なくとも１回調停することを含むことができ、転送順序の決定は、第１パケット及び第２パケットがネットワークリソースによって関連付けられた１以上の優先チャネルに基づいて行う。
リソースは、所定のチャネル群から選択される第１優先チャネルに第１パケットを関連付ける。同じリソース又は異なるリソースが、所定のチャネル群から選択された、第１チャネルとは異なる優先順位を有する第２優先チャネルに、第２パケットを関連付ける。
【００１２】
優先チャネルへのデータパケットの関連付けは、このパケットに含まれるデータタイプに少なくとも部分的に依存する。
例えば、異なるリソースから送出された、第１のタイプのデータ、例えば割り込みデータを含むパケットを、同じ第１優先チャネルに関連付けることができ、一方、異なるリソースから送出された、第２タイプのデータ、例えば計算データ又はプログラミングデータを含むパケットを、第１チャネルの優先順位とは異なる優先順位の第２優先チャネルに関連付けることができる。
【００１３】
リソースがデータパケットを優先チャネルに関連付けるとき、このパケットをサービスタイプにリンクさせることができる。
従って、前記所定チャネル群の異なる優先チャネル又は異なる仮想チャネルを使用して、例えば一般に「ベストエフォート」サービスと呼ばれる少なくとも１つのサービス、及び一般に「遅延保証」サービスと呼ばれる少なくとも１つの他のサービスのような、異なるタイプのデータ転送サービスを実行することもできる。これらの異なるサービスは１つのルーティングシステムによって実行することができる。
【００１４】
調停ステップの間、第１パケット及び第２パケットの転送順序を、第１チャネル及び第２チャネルそれぞれの優先順位のみに応じて決定することができる。例えば、これは、第１パケットと第２パケットが異なるチャネルに関連付けられている場合に該当する。従って、第１パケット及び第２パケットの転送順序は、これらのパケットが第１ノードにアクセスする順番又はそれぞれのソースに無関係に決定することができる。
第１データパケット及び第２データパケットが、第１チャネル及び第１チャネルの優先順位よりも低い優先順位の第２チャネルにそれぞれ関連付けられている、データ伝送方法の第１の変形例によれば、第１パケットの第１データグループ及び第２パケットの別のデータグループが第１ノードにアクセスして第１ノードの一の出力又は同じ出力にアクセスする準備を整えているとき、本方法は、調停ステップの後に：
−  第１ノードの出力から第１データパケットを転送すること、及び
−  第１ノードの出力から第１パケット全体を転送した後で、第１ノードの出力から第２データパケットを転送すること
を更に含むことができる。
【００１５】
可能な一実施形態によれば、本方法は、調停ステップの後で、且つ第２パケット全体を転送するステップの前に：
−  第２パケットの少なくとも一部を第１ノードにおいて中止すること
を更に含むことができる。
調停ステップの前に、第１ノードの出力から第２パケットの転送が既に始まっており、且つ第２パケットの少なくとも１つの第２データグループが既に第１ノードの出力に転送されている、及び／又は既に第１ノードから送出されており、一方で、第１データパケットのデータが未だに第１ノードの出力に転送されていない、及び／又は第１ノードから未だ出力されていない場合、本方法は：
−  第２パケットの前記他のデータグループを中止すること、及び
−  第２パケットの前記第２データグループをネットワークに移動させるか又は転送すること
を更に含むことができる。
【００１６】
従って、可能な一実施形態によれば、第１ノードから既に出力されている第２パケットのデータは、第１ノードの出力からのこの第２パケットの転送を一時的に中止している場合も移動させることができる。
調停ステップの前に、第２パケットの少なくとも１つの第３データグループが未だ第１ノードにアクセスしていない場合、本方法は、調停ステップの後、且つ可能であれば第２データパケットの一部を中止している間に：
−  第２パケットの第３データグループのデータの少なくとも一部を第１ノードの入力に転送すること
を更に含むことが出来る。
【００１７】
従って、可能な一実施形態によれば、第１ノードの出力からの第２パケットの転送が一時的に中止されているとき、未だ第１ノードにアクセスしていない第２パケットのデータは第１ノードにアクセスすることができる。
調停ステップの後で、且つ第２パケットの転送の前に、第２チャネルよりも優先順位の高いチャネルに関連付けられる少なくとも１つの第３データパケットが第１ノードにアクセスし、第１ノードの前記出力にアクセスする準備を整えているとき、本方法は：
−  第２パケット全体を転送する前に、前記第３パケット全体を第１ノードの出力から転送すること
を更に含むことができる。
【００１８】
第３パケットが第１チャネルの優先順位に等しい優先順位のチャネルに関連付けられている場合、第１ノードの出力からの前記第３パケット全体の転送は、第１パケット全体の転送の後で、且つ第２パケット全体の転送の前に行なうことができる。
第３パケットが、第１チャネルの優先順位よりも高い優先順位のチャネルに関連付けられている場合、第１ノードの出力からの前記第３パケット全体の転送は、第１パケットの転送の前に行なうことができる。
【００１９】
ステップａ）において、第１データパケット及び第２データパケットが同じ優先チャネルに関連付けられているデータ伝送方法の第２の変形例によれば、転送順序の調停はまた、第１ノードへの第１パケット及び第２パケットの到達の順番に応じて決定することができる。例えば、「先着順」型の調停を使用することができる。
転送順序の調停はまた、第１パケット及び第２パケットがこの第１ノードにアクセスする際に通過した第１ノードの入力に応じて決定することができる。例えば、ノードが「北」入力、「東」入力、「西」入力、及び「南」入力を有する場合、一つの可能な調停では、「北」入力が「東」入力よりも優先順位が高く、「東」入力が「南」入力よりも優先順位が高く、「南」入力が「西」入力よりも優先順位が高い。
【００２０】
調停ステップの間に、第１データパケットの第１データグループ及び第２データパケットの別のデータグループが既に第１ノードにアクセスしており、第１ノードの一の出力又は同じ出力にアクセスする準備を整えており、更に、第２データパケットの第２データグループが既に第１ノードの出力に転送されているか、又は既に第１ノードから出力されているとき、本方法は、調停ステップの後に：
−  第１ノードの出力から第２データパケットを転送すること、及び
−  第２パケット全体を第１ノードの出力から転送した後で、第１ノードの出力から第１データパケットを転送すること
を含むことができる。
第１パケット及び第２パケットが関連付けられているチャネルよりも優先順位が高いチャネルに関連付けられる少なくとも１つの第３データパケットが、調停ステップの後且つ第２パケット全体の転送の前に第１ノードにアクセスし、第１ノードの前記出力にアクセスする準備を整えている場合、本方法は更に：
−  第１データパケットを第１ノードの出力に転送するステップの前に、前記第３パケット全体を第１ノードの出力に転送すること
を含むことができる。
【００２１】
第３データパケットのアクセスが、第２パケットの転送の前又は第２パケットの転送の間に行なわれる場合、本方法は更に、第１パケット全体を転送するステップの前に、前記第３パケット全体を第１ノードの出力に転送することができる。
ネットワークにおけるデータルーティングは決定論的なものにすることができる。
【００２２】
従って、第１パケット及び第２パケットがネットワークの第１経路及びネットワークの第２経路をそれぞれ辿るように設計される一実施形態によれば、本方法は更に、第１パケット及び第２パケットが送信される前に、第１及び第２経路を決定することができる。
ネットワークにおいて伝送されるデータパケットが使用するルート又は経路は、これらのデータを送信するリソース（群）によって割り当てられたものであってよい。
【００２３】
従って、この変形例の可能な一実施形態によれば、本方法は、ステップｂ）の前に： 
−  リソースが第１経路のデータを第１パケットに割り当て、第２経路のデータを第２パケットに割り当てること
を含むことができる。
パケットに割り当てられるルート又は経路は、ネットワーク内でパケットが辿る方向データの順番付きリストの形式にすることもできる。従って、前記第１経路のデータは、ネットワーク内で第１パケットが辿る方向データの第１の順番付きリストの形にすることができ、前記第２経路のデータは、ネットワーク内で第２パケットが辿る方向データの第２の順番付きリストの形とすることができる。
【００２４】
本方法の可能な一実施形態によれば、本方法は更に：
−  第１パケットを第１ノードの出力に転送する前に、方向データの第１の順番付きリストを第１ノードによって変更し、第２パケットを第１ノードの出力に転送する前に、方向データの第２の順番付きリストを変更する。
ネットワークは大域的に非同期とすることができる。従って、１以上のネットワーク要素、例えば１以上のノードを第１クロックによって制御しながら、１以上のネットワーク要素、例えば１以上のリソース、又は１以上の他のネットワークノードを第１クロックとは異なるクロックによって、又は第１クロックとは同期しないクロックによって管理することができる。従って、本発明は：
−  第１クロックに接続される少なくとも１つのリソース及び／又は少なくとも１つのノードを含む少なくとも１つの第１ネットワークブロックと、第１クロックから独立した第２クロックに接続される少なくとも１つの別のリソース及び／又は少なくとも１つの別のノードを含む少なくとも１つの第２ネットワークブロックと、を別々に製造すること、及び
−  ネットワーク上で第１及び第２ブロックを組み立てる又は接続すること
ことを含む、ネットワークオンチップ設計方法を使用する。
【００２５】
一変形例によれば、ネットワークは大域的に非同期とすることができ、非同期要素、例えば非同期ノードを設けることができる。従って、１以上の要素、例えば１以上のノードが一つのクロックによって制御されないようにすることができる。非同期要素間の同期は局所的に、例えばいわゆる「ハンドシェーク」信号又は「送信／許可」式の信号によって行なうことができる。
本発明によるデータ転送方法の別の可能な実施形態によれば、本方法は更に、
−  少なくとも１つの第１ネットワーク要素、例えば第１ネットワークリソースによって、この第１リソースから出力までの少なくとも１つの第１データパケット及び少なくとも１つの第２データパケット間の転送順序を少なくとも１回調停し、その際の転送順序の決定は、この第１リソースが、少なくとも部分的に、第１パケット及び第２パケットが関連付けられている優先チャネルに基づいて行うこと
を含むことができる。
本発明はまた、ネットワークオンチップを構成する方法を提供し、本方法は、
−  第１クロックに接続される少なくとも１つのリソース及び／又は少なくとも１つのノードを含む少なくとも１つの第１ネットワークブロックと、クロックを持たない少なくとも１つの別のリソース及び／又はクロックを持たない少なくとも１つの別のノードを含む少なくとも１つの第２ネットワークブロックとを別々に設計すること、及び
−  ネットワーク上で第１及び第２クロックを組み立てるか、又は接続すること
を含む。
【００２６】
本発明はまた、互いに通信する機能を有する複数の要素を備えるネットワークオンチップデバイスに関し、本デバイスは、データ処理機能を有する複数のリソースと、１以上の入力及び１以上の出力を備え、ネットワーク内の少なくとも２つの要素にデータを切り替える機能を有する１以上のノードとを含み、更に：
−  １以上の基本データグループを含むパケットの形式でデータを送信する機能を有するデータ送信手段、
−  １以上の基本データグループを含むパケットの形式でデータを受信する機能を有するデータ受信手段、
−  「送信／許可」式等の、非同期通信プロトコルを使用して同期信号を送信する手段であって、基本データグループの送信を伴うか又は送信に付随する少なくとも１つの第１のタイプの信号を送信する機能を有する手段、
−  前記非同期プロトコルに従って同期信号を受信する手段であって、基本データグループの受信の前に、少なくとも１つの第２のタイプの信号を受信する機能を有する手段、及び、
−  第２のタイプの同期信号の受信の後で、パケットの基本データグループの送信を承認し、第１のタイプの同期信号の受信の後で、パケットの基本データグループの受信を承認する手段
を備える。
【００２７】
デバイスの可能な一実施形態によれば、基本データグループの送信に関連付けられる第１のタイプの信号、及びこの基本データグループは、同時に送信することができる。
このようなデバイスの中を伝送されるデータパケットはそれぞれ、優先情報又は優先チャネル情報に関連付けることができる。前記非同期プロトコルは優先情報又は優先チャネル情報を含むことができる。
【００２８】
従って、同期信号送信手段によって送信され、データパケットの基本データグループの送信を伴う、前記非同期プロトコルに従う第１のタイプの信号は、データパケットが関連付けられた優先情報又は優先チャネル情報の少なくとも一部を含むことができる。
本発明によるデバイスの可能な一実施形態によれば、本発明は更に：
−  少なくとも１つの第１リソースであって、所定の優先チャネル群から選択される少なくとも１つの優先チャネルを、例えばこのパケットに含まれるデータのタイプに応じて、このリソースが送信する少なくとも１つのデータパケットに関連付ける機能を有する優先順位関連付け手段を含む第１リソース、
−  少なくとも１つの第１要素、例えば第１ノードを備え、更に、
第１ノードの入力に到達する、１つの優先チャネルに関連付けられる少なくとも１つの第１パケットと、１つの優先チャネルに関連付けられる少なくとも１つの第２データパケットとの間の、第１ノードの出力からの転送順序を決定する機能を有する調停手段を備え、このとき転送順序は、少なくとも、第１及び第２パケットがネットワークの該当するリソースによってそれぞれ関連付けられた優先チャネルに基づいて決定される。
【００２９】
ネットワークは大域的に非同期で動作することができる。
従って、デバイスの可能な一実施形態によれば、第１ノードを第１クロックで制御することができ、ネットワークは、第１クロックとは異なる、又は第１クロックとは同期しない第２クロックによって制御される少なくとも１つの第２ノードを含むことができる。
【００３０】
ネットワークオンチップデバイスには、１以上の非同期ノードを設けることができる。ネットワークオンチップデバイスの可能な一実施形態によれば、デバイスは、クロックによって制御されない１以上の非同期ノード、及びクロックによって制御される１以上の同期ノードを備えることができる。
ネットワークオンチップデバイスの可能な一実施形態によれば、前記第１リソースは更に：
−  第１リソースが送信する少なくとも１つのデータパケットに対し、ネットワーク内でこのパケットが辿る経路に関するデータを割り当てる機能を有する経路データ割り当て手段
を備えることができる。
【００３１】
対応するネットワークリソースによって、第１データパケット及び第２データパケットが、例えばパケットが辿る方向に関する第１の順番付きリストの形式の第１経路データ、及び例えばパケットが辿る方向に関する第２の順番付きリストの形式の第２経路データにそれぞれ関連付けられているネットワークの一実施形態によれば、第１ノードは更に：
−  ネットワークリソースによって第１パケット及び第２パケットが関連付けられている経路データに、少なくとも部分的に又は全面的に応じて、前記第１パケット及び前記第２パケットをルーティングする機能を有するデータルーティング手段
を備えることができる。
ネットワークオンチップデバイスの一実施形態によれば、第１ノードは更に、経路データを記憶する手段を備えることができる。
ネットワークオンチップデバイスの一変形実施形態によれば、第１ノードは更に、経路データを変更する手段、例えばこれらのデータをシフトさせる手段を備えることができる。このシフトを使用して、隣接ノードの経路データを準備することもできる。
【実施例】
【００３２】
本発明の理解を助けるため、純粋に説明を目的とする非限定的実施例について、以下に添付図面を参照しながら説明する。
異なる図面の同様又は均等部品に同じ番号を付することで、異なる図面間の比較を容易にした。
図面の理解を容易にするため、図面の異なる部品は必ずしも同じスケールで示さない。
【００３３】
図１Ａは、本発明に従って使用される、マトリックス又は「メッシュ」型トポロジイを使用する通信又はネットワークオンチップ（ＮｏＣ）アーキテクチャの一実施例を示す。
このアーキテクチャは、データ処理能力、及び特にデータ交換による相互通信能力を有する複数の要素（参照番号１１０）を含む。このようなアーキテクチャに含まれる一群の要素１１０は、マスタとして機能し、特にネットワーク上の通信を開始するために使用される要素１１２を含むことができる。従って、「ネットワーク制御装置」と呼ばれるこの要素１１２は、計算等の基本データの処理、データ保存、又はデータのエンコーディング／デコーディングといったタスクを実行するのに使用される「リソース」と呼ばれる複数の他のネットワーク要素１１４の間における通信をプログラムすることができる。ネットワーク制御装置１１２は、例えばプロセッサ又はマイクロコントローラの形態で実施できる。マイクロコントローラによって実行される特定の機能には、計算及び割り込み管理が含まれる。各リソース１１４は汎用的なもの、例えばプロセッサ又はデジタル信号処理専用プロセッサ（ＤＳＰ）の形態で実施しても、特殊なもの、例えばＳＲＡＭ（Static Random Access Memory）等のメモリの形態で実施しても、例えば高速フーリエ変換（ＦＦＴ）の計算に特化されるモジュールのような、又は例えばＭＰＥＧ（Moving Pictures Expert Group）エンコーダ及び／又はデコーダモジュールのような特殊用途処理モジュールの形態で実施してもよい。ネットワーク構造内の各リソース１１４は、特にデータ処理及び／又は計算専用の「機能コア」と呼ばれる手段又は部品、及び「ネットワークインターフェース」と呼ばれ、ネットワークとの通信にリソース１１４によって使用される他の手段又は別の部品を備える。
【００３４】
ネットワークリソース１１４は互いに接続され、リンク１１５及びノード１２０を介してデータを交換する。また、ネットワークのリソース１１４を使用して、異なるデータアイテム又はこれらのデータアイテム内部の異なるデータストリームの転送順序を調停する。従って、各ネットワークリソースは、リソースが出力として送信する複数のデータパケットから、出力として最初に送信又は転送するデータパケットを決定することができる。
ノード１２０は、例えば１又は複数の着信リンクと１又は複数の発信リンクとの間にマルチプレクサを、及びリソース１１４間に通信切り替えを使用して、物理接続を設定するのに使用される。図１Ａに示すいわゆる「メッシュ」型又はマトリックス型トポロジイでは、各ノード１２０は隣接する他の４つのノードに接続され、リソース１１４の一つに接続されるか又は関連付けられる。
【００３５】
データ切り替えを行なう場合、ノード１２０はデータルーティングに使用することができる。従って、ネットワークノードは、ネットワークノードが受信するデータ又はデータパケットの送信先となるべきネットワークのリンク又は隣接ノードを決定することができる。
ネットワークノード内部で行われるルーティングは決定論的なタイプとすることができる。この場合、ネットワークの各ノードは、ノードが受信するデータパケットに含まれるルーティング情報のみに基づいて、又は主にルーティング情報に基づいて１のデータパケットをルーティングすることができる。このルーティング情報は、データパケットがネットワークにおいて伝送される経路を示し、前記パケットに入力しておくか、又はこのパケットを送信したネットワークリソースによってパケットに割り当てておくことができる。
【００３６】
ネットワークノード１２０はまた、データ間の調停を行なう機能を備える。従って、各ネットワークノードは、ノードが受信する複数のデータパケットの内のいずれのパケットを最初に送信又は転送する必要があるかを決定しなければならない。各ネットワークノードは、ノードに到達するデータ間の全ての競合を管理し、例えば、ノードに到達し、このノードの同じ出力、又はこのノードに接続される同じリンクを使用するように振り向けられる複数のデータ又はデータパケットの内のいずれを前記出力又は前記リンクに最初に伝送するかを決定するように設計することができる。
有利には、各ノードは、ノードの複数の出力において、複数の転送順序又は複数のパケット転送競合を、可能であれば同時に、調停するように設計することができる。
【００３７】
ネットワークにおけるグローバルオペレーションモード又はグローバルデータ伝送モードは非同期とすることができ、これにより、ネットワーク内のデータ伝送又はデータ転送は、必ずしも全ノード及び／又は全ネットワークリソースに共通のグローバルクロックによって制御されることがない。従って、ネットワーク内の少なくとも２つのノード、及び／又は少なくとも１つのノード及び１つのネットワークリソースは、異なるクロックによって管理することができる。ネットワークの第１ブロック内の、１又は複数の要素、例えば１又は複数のノードを別のクロックによって制御しながら、ネットワーク内の１又は複数の他の要素、例えば第２ブロック内の１又は複数のノードを、第１クロックとは異なるクロックによって、又は第１クロックとは同期しないクロックによって管理することができる。一変形例によれば、ネットワーク内の１又は複数のノードは非同期とすることができ、クロックを設けなくてもよい。
本発明に従って使用されるネットワークオンチップアーキテクチャは図１Ａに示すメッシュ型トポロジイに限定されず、ハイパーキューブ（hypercube）、ツリー（tree）、リング（ring）又はトーラス（torus）等、それ以外のあらゆるトポロジイを有することができる。
【００３８】
図１Ｂは、直前に記載したアーキテクチャの変形例を示しており、この場合、図１Ａに示すメッシュには無い追加ノードが設けられている。
これらの追加ノードは、リソースに接続されず、ネットワークにおいて「パイプライン」として機能するリピータノード１２２と呼ばれる複数のノードを含む。これらのノード１２２は、ネットワークスループットを増大させることができる。
【００３９】
この変形ネットワークアーキテクチャは、遅延制限及びフロー制限が予め決められているか、又は予測される特定の用途又は処理群専用に構成されている。ネットワーク設計の段階では、他の補足ノード又は「特殊」ノード１２４を、ネットワークにおいてデータトラフィックが増加する特定の位置又はゾーン（図１Ｂの破線で示す）に加えている。これらの特殊ノード１２４によって、ネットワークは予め決められた、又は予測されるフロー制限及び遅延制限をサポートすることもできる。
図１Ｃは、直前に記載した複数のアーキテクチャの一つの変形例を示し、この場合、非同期ノード１５２又はクロックを持たないノードのセット１５０（図１Ｃの破線で示す）、を含んでおり、他の複数のセット１３２、１３４、１３６（破線で示す）間の分離線又は境界線を形成しており、各セットは同期ノード１４２、１４４、１４６を含むか、又はクロックによって管理される。
【００４０】
このようなネットワークアーキテクチャの変形例は、非同期ノードのみを含むアーキテクチャ、又はクロックを持たないアーキテクチャよりも更に小型化することができ、且つ短い期間で設計することができる。
上記ネットワークアーキテクチャのいずれにおいても、リソース１１４間で交換され、リンク１１５及びノード１２０を介して伝送されるデータは、データパケットの形式とすることができる。パケットは、一般的にフリットと呼ばれるデータグループ、又は複数の連続するデータグループ、或いは同じ経路を伝送される「フリット群」により構成することができる。１つのフリットは、ネットワークにおける基本データ伝送単位である。基本フリット又はデータグループに関連して、一定容量のリンク１１５、又は一つのリンク１１５に含まれる多数の物理接続又は配線接続がある。ネットワークを巡回するデータパケットは普通、パケットのヘッダを示す少なくとも１つのフリット、及びパケットの末尾を示す少なくとも１つのフリット、更には可能であれば、ヘッダフリットと末尾フリットとの間に１以上の中間フリットを含む。１つのデータパケットは、１つの基本データグループ及び１つのフリットにより構成することもできる。この場合、この１つのフリットは、パケットのヘッダ及び末尾の両方を示す。１つの基本データグループ又はフリットは、複数のビット、例えば３４ビットにより構成することができ、特に、このフリットのパケット中の位置を示すために使用される「情報ビット」を含む。
【００４１】
「ｂｏｐ」（begin of packet）ビットと呼ばれる第１の情報ビットを使用して、例えばこの「ｂｏｐ」ビットが属するフリットがパケットのヘッダフリットであるかどうかを示すことができる。
「ｅｏｐ」（end of packet）ビットと呼ばれる第２の情報ビットを使用して、例えばこのビットが属するフリットがパケット末尾のフリットであるかどうかを示すことができる。
【００４２】
パケット先頭を示す「ｂｏｐ」情報及びパケット末尾を示す「ｅｏｐ」情報は、異なるエンコーディング方式により用いることができる。例えば、２ビット符号を使用して、これらの２ビットの値により、フリットがパケット末尾のフリットであるか、パケット先頭のフリットであるか、或いは中間フリットであるかどうかを示すことができる。
データパケットのフリットはまた、情報ビット以外に他の複数のデータビット、例えばデータ処理の計算に関する情報及び／又はアドレス情報、及び／又はリソース１１４の動作を構成するために使用されるプログラミング情報を含む別の３２ビットを含むことができる。
【００４３】
位置情報ビットとは別の、データパケットのヘッダフリットは、「コントロールビット」と呼ばれる複数の特定ビット、例えば１４のコントロールビットを含み、このヘッダフリットを受信するリソースの構成及び／又はリソースに対するコマンド、例えばデータ書き込みコマンド又はデータ読み出しコマンドを示す。
データパケットのヘッダフリットはまた、他の複数の特定「ルーティングビット」、例えば１８のルーティングビットを含む。ヘッダフリットにおいて、ルーティングビットは、このヘッダフリットが属するデータパケットがネットワークにおいて使用する完全な経路となり得る一つの経路を示す。この経路は、各方向データが複数のビットでエンコーディングされた、方向データの順番付きリストの形式で表わされる。
【００４４】
例えば、図１を参照して説明したものと同様のメッシュ型トポロジィを有するネットワークでは、ネットワークノードを「北」隣接ノード、「東」隣接ノード、「南」隣接ノード、及び「西」隣接ノード、及びリソースにそれぞれ接続することができ、方向データアイテムは２ビットでエンコーディングすることができる。次に、２ビットのこの方向データアイテムは、例えばこれらのビットの値が「００」の場合は「北」方向を、「０１」の場合は「東」方向を、「１１」の場合は「南」方向を、「１０」の場合は「西」方向を示すことができる。従って、例えばパケットが１８のルーティングビットを含む場合、それぞれ２ビットでエンコーディングされた９つの方向のリストを提供することができる。２つの同じ方向データ、例えばリスト中の２つの連続する値「１１」及び「１１」、又はリスト中の２つの連続する値「１０」、「１０」が、パケットをリソースにルーティングする必要があることを示すように構成することができる。
データパケットをルーティングするために、ネットワークノードが一つのパケットを受信する場合、各ノードが、順番付き方向リストの所定の位置に位置する方向データ、例えばリストの最後に位置する方向データを読み出すか又はデコーディングし、次に隣接ノードのために順番付きリストの順番を変更するか又はシフトして、シフトの後に前記所定の位置に位置する別の方向データが、前記次の隣接ノードが行なうべきルーティングを表示するように構成することができる。
【００４５】
従って、例えばパケットが１８のルーティングビット、及び各方向が２ビットでエンコーディングされた９つの方向のリストを含む場合、各ネットワークノードは、パケットを受信すると、２つの低次ルーティングビットを読み出すか又はデコーディングし、次いで次のノードのためにルーティングビットの順番を変更することにより、シフト前に２つの低次ビットの前に位置していた２つのルーティングビットが、シフト後に２つの低次ビットとなるように構成することができる。
上述のように、特にパケット内のルーティングビットの数を減らすために、ルーティングビットに特定の符号を使用してノードに通知することによりデータパケットをリソースに向けてルーティングさせることができる。
【００４６】
各ネットワークノードは、パケットを受信すると、このパケットの順番付き方向リストの最後に位置する第１の方向データを読み出すか又はデコーディングし、次いで方向データの順番付きリストの次の方向データを読み出してデコーディングし、次の方向データが第１の方向データと同じ場合にはパケットを該当するリソースに向けてルーティングするように構成することができる。
従って、例えばパケットが１８のルーティングビット及び各方向が２ビットでエンコーディングされた９つの方向のリストを含む場合、ネットワークノードは、パケットを受信すると、２つの低次ルーティングビットを読み出すか又はデコーディングし、次いで２つの低次ルーティングビットに続く２つのルーティングビットを読み出すか又はデコーディングし、２つの低次ルーティングビット及び２つの低次ルーティングビットに続く２つのルーティングビットが同じである場合、パケットをノードの接続先のリソースに向けて転送するように構成することができる。
【００４７】
上述のように、ネットワークにおけるデータパケットのルーティングに関し、ネットワークは決定論的なタイプとすることができる。従って、データパケットの送信の前に、リソースはこのデータパケットが辿ることになる経路を設定することができる。この操作を行なうために、リソース属性によって、例えばリソースが送信するデータパケットのヘッダフリットのルーティングビットに一定の値を割り当てることができる。
時間ｔ１において第１ネットワークリソース１１４ａが第１データパケットを第２ネットワークリソース１１４ｂに送信する場合、第１データパケットは、第１リソース１１４ａによって設定された、第１リソース１１４ａと第２リソース１１４ｂとの間の経路（図１Ｂの破線矢印１１６で示す）を使用することができる。次に、第１データパケットが到達するネットワークノードは、ヘッダフリットのルーティングビットのみに基づいて、又は主にルーティングビットに基づいて、この第１データパケットをルーティングする。第１リソース１１４ａによって、時間ｔ１とは異なる別の時間ｔ２に、第２リソース１１４ｂに対して行われる第２データパケットの別の送信には、異なる経路（図１Ｂの矢印１１７で示す）を設定することができる。
【００４８】
例えばネットワーク制御装置又はネットワーク外部のプロセッサによって事前にルーティング計算を行うことにより、所定のネットワークリソースは、このリソースが送信するパケットに、このパケットがネットワークにおいて辿る経路に関するデータを割り当てることができる。
この計算は、例えば非特許文献５に記載されているような、一般的に「デッドロックフリー」アルゴリズムと呼ばれる適応型ルーティングアルゴリズムを使用して行なうことができる。計算が行われると、ネットワーク制御装置は計算結果を所定のリソースに送信することができる。
【００４９】
この結果に応じて、例えばこのパケットのヘッダフリットのルーティングビットに一定の値を割り当てることにより、所定のリソースはデータパケットに経路を関連付ける。
処理又は適用の間に前述の複数のネットワークの一つを通過するデータストリームは、例えば非特許文献６に記載されているような一般に「ワームホール」と呼ばれるタイプとすることができる。このタイプのデータストリームの場合、ヘッダフリットによってまず、送信リソースが受信リソースに向けて送信するデータパケットにおける、送信リソースと受信リソースとの間の経路が決まり、ヘッダフリットの後には１以上の中間フリットが続くことができ、ヘッダフリットによって以前に使用されたネットワークノード群に分布する。末尾フリットは、データストリームが辿る経路を閉じる。
【００５０】
データ送信ネットワークの要素、例えば第１ノードと、データ受信ネットワークの要素、例えば第２ノード又はリソースとの間の同期メカニズムを図２のタイムチャートに示す。送信要素と受信要素との間のデータ転送は「送信／許可」と呼ばれる同期型プロトコルによって管理され、それによりデータパケットの所定のフリット又は基本データグループが送信要素によって送信され、同時に前記パケットのこの所定のフリットに先行する別のフリットが受信要素によって受信される。
タイムチャートの曲線２００及び２１０は、送信要素と受信要素との間で交換される同期信号を表わす。曲線２２０は送信要素と受信要素との間で交換されるデータを表わす。
【００５１】
このタイムチャートでは、「ｓｅｎｄ」信号と呼ばれる、送信要素から送出される送信信号２００は、時間ｔ０において、例えばこの「ｓｅｎｄ」信号が高い状態に変化するとき、データが送信されることを受信要素に通知する。受信要素から送出される「ａｃｃｅｐｔ」信号と呼ばれる許可信号２１０は、例えばこの時間ｔ０において高い状態になっていることによって、受信要素がこのデータを受信する準備が整っていることを通知する。従って、曲線２２０に示すように、送信要素が第１データグループ又は第１フリットを送信し、受信要素が受信する（第１フリットは曲線２２０の部分２２１によって表わされる）。
「ｂｏｐ」信号を表わすタイムチャートの曲線２５０は、時間ｔ０において高い状態に変化し、第１フリットの間は高い状態を維持する。この「ｂｏｐ」信号は、第１フリットがヘッダフリットであることを示す。次に送信要素は、第２フリット、続いて第３フリットを送信し、受信要素が受信する（送信される第２フリット及び第３フリットは曲線２２０の部分２２２及び２２３によってそれぞれ表わされる）。
【００５２】
時間ｔ１では、受信要素が送出する「ａｃｃｅｐｔ」信号２１０が状態を変え、例えば低い状態になる。次に、受信要素はデータの受信を中止する。送信要素は４番目のフリット（曲線２２０の部分２２４）を送信しようと試みるが、受信要素はこの４番目のフリットに関する許可信号を送信要素に返信しない。例えば受信要素が同期ノードである場合、このノードは４番目のフリットを使用しようと待機しながらこのフリットを受信し、記録することができる。例えば受信要素が非同期ノードである別の場合においては、このノードは４番目のフリットを送信要素に置いたままとすることができ、この４番目のフリットの受信確認を行わない。
このように送信を試行した後、時間ｔ２において送信要素はデータの送信を中止する（曲線２２０の部分２２９）。
【００５３】
受信要素は再度、時間ｔ３においてデータ送信の準備が整う。この様子は、状態を変える、例えば高い状態に変える「ａｃｃｅｐｔ」信号（曲線２１０）により示される。この時間ｔ３から、受信要素は、次に４番目のフリットを受け入れることを通知する。これにより、送信要素はデータを再度送信することができる。時間ｔ４から、要素は４番目のフリットを送信し（曲線２２０の部分２２５）、次に５番目のフリットを送信し（曲線２２０の部分２２６）、これらは受信要素によって受信される。図示のように、「ｅｏｐ」信号を表わす曲線２４０では、時間ｔ５において５番目のフリットがパケット及び送信データの末尾をマークする。
次に、ネットワークを伝送される各データパケットは、少なくとも２つの異なる仮想チャネル、例えば２つの異なる仮想チャネル又は３つの異なる仮想チャネルから成る所定のリストから選択される「仮想チャネル」と呼ばれる優先順位又は優先チャネル情報に関連付けることができる。各仮想チャネルは優先順位又は優先番号に関連し、特にこのパケットがリソースの出力に到達するとき、又はこのパケットがネットワークのノードに到達するときの、パケット転送順序の調停に関して、データパケットが関連付けられる優先度をデータパケットに割り当てる。
【００５４】
データパケットは、このパケットをネットワーク内で送信したリソースによって仮想チャネルに関連付けられる。
データパケットが関連付けられている優先チャネル情報の少なくとも一部を、図２を参照して上述した「送信／許可」タイプの同期プロトコルの同期信号、特に送信されるパケットの基本データグループに伴う「ｓｅｎｄ」タイプの信号に含めることができる。従って、第１優先チャネルに関連付けられる第１パケット、及び第１チャネルとは異なる優先順位を有する第２チャネルに関連付けられる第２パケットには、同期信号、特に異なる「ｓｅｎｄ」タイプの信号を続けることができる。
【００５５】
第１ネットワーク要素、例えば第１リソースでは、この第１リソース内部の、例えば所定の優先順位を有する第１チャネルに関連付けられる第１データパケットを、この第１リソースの出力から転送することができ、その際第１データパケットの転送は、この第１リソースの別のデータパケット、例えば第１チャネルよりも優先順位が低い第２チャネルに関連付けられる別のデータパケットに優先して行われる。
例えば、第１ネットワークノードでは、この第１ノードにアクセスする第１データパケットであって、例えば所定の優先順位を有する第１チャネルに関連付けられる第１データパケットを、特に第１パケット及び他のパケットが第１ノードの同じ出力へアクセスしようとしている場合、例えば第１チャネルよりも優先順位が低い第２チャネルに関連付けられる別のデータパケットに優先して、このノードの出力から転送することができる。
【００５６】
第１チャネルに関連付けられている第１パケットが第１ノードにアクセスするとき、第１ノードの出力から、第２チャネルに関連付けられている他のパケットの転送が既に始まっている場合、第１パケットを他のデータパケットに優先して転送することもできる。
仮想チャネルの可能な一実施形態によれば、３つの異なる仮想チャネル、例えば最高優先順位の第１チャネル、第１チャネルよりも低い優先順位の第２チャネル、及び第１及び第２チャネルよりも低い優先順位の第３チャネルを設けることができる。
【００５７】
データパケットと仮想チャネル又は優先チャネルとの関連付けは、特にこのパケットに含まれるデータのタイプによって決まる。
例えば、第１チャネルを第１のデータタイプ、すなわち割り込みデータを含むデータパケットのために予約することができる。次に、例えば第１データタイプよりも低い優先順位の第２のデータタイプ、例えばリソースに関するプログラミングデータ又は動作コンフィグレーションデータを含むデータパケットのために第２チャネルを予約することができる。第３チャネルは、例えば第１タイプ及び第２タイプよりも低い優先順位の第３データタイプ、例えばリソースにアドレス指定された、これらのリソースが実行する計算又は処理に関連するデータを含むデータパケットのために予約することができる。
【００５８】
データパケットと仮想チャネル又は優先チャネルとの関連付けはまた、特にこのパケットに関連するサービスのタイプによって決まる。
仮想チャネルを使用してネットワークの異なるデータ転送サービス、例えば「ベストエフォート」サービスと呼ばれる、帯域又はネットワーク接続がリソース間でほぼ均等に共有又は分散される少なくとも１つのサービス、及び「遅延保証」サービスと呼ばれ、このサービスに関連するデータがネットワーク内で、例えば第１リソースから第２リソースへ、好適には一定の時間で、又はほぼ一定の時間で転送される少なくとも１つのサービスを提供することができる。
【００５９】
従って、２つの仮想チャネルを備える実施形態の場合、最高優先順位チャネル、例えば第１チャネルを使用して遅延保証サービスを提供し、同時に第１チャネルよりも低い優先順位の第２チャネルを使用して「ベストエフォート」型サービスを提供することができる。
一変形例では、上記の３つの仮想チャネルを有する実施例により、最高の優先チャネル、例えば第１チャネルを使用して、優先データタイプ、例えば割り込みデータを含むデータパケットに関連する遅延保証サービスを提供することができる。第２チャネル及び第３チャネルを使用して、「ベストエフォート」サービスを提供することができ、第２チャネル及び第３チャネルを第１チャネルよりも低い優先順位のデータタイプ、例えばコンフィグレーションデータを含むデータパケットにまず関連付け、次に第１チャネル及び第２チャネルよりも低い優先順位のデータタイプ、例えば計算データを含むデータパケットに関連付けることができる。
【００６０】
特に、複数のパケットがネットワークの同じノードにアクセスするとき、仮想チャネルに関連付けられるデータパケット、例えば第１仮想チャネルに関連付けられる第１データパケットは、相対的に低い優先順位の別の仮想チャネルに関連付けられる別のデータパケット、例えば第１チャネルよりも低い優先順位の第２チャネルに関連付けられる第２データパケットに割り込むことができる。従って、第２チャネルに関連付けられる第２パケットの１以上のフリットがノードを既に通過している場合でも、第２パケット全体がノードを通過する前に、第１チャネルに関連付けられる第１パケットの１以上のフリット、或いは全てのフリットがノードを通過できる場合が生じ得る。
別の可能な構成では、同じ優先チャネルに関連付けられている２つのデータパケット、例えば第１チャネルに関連付けられる第１データパケット、及びやはり第１チャネルに関連付けられている第３データパケットは、特にこれらのパケットがネットワークの同じノードにアクセスするときに、互いに割り込むことがない。
【００６１】
次に、本発明に従って使用される、ネットワークオンチップにおける例示的伝送方法又はデータ転送方法について図３Ａ〜３Ｆを参照しながら説明する。
特に、このデータセットは、ノード３４０、３５０、３６０を含むネットワーク部分を通過し、これらのノードの各々には、複数の入力、例えば４つの入力、及び複数の出力、例えば４つの出力（図３Ａ〜３Ｆでは各ノードの「北」入力及び「東」入力のみを示す）が設けられている。
【００６２】
前記データセットは、特にヘッダフリット３１２とその後に続く第２フリット３１４、次いで第３フリット３１６、及び第４フリット３１８を含む第１データパケット３１０を含む。このデータセットはまた、第２データパケット３２０及び第３データパケット３３０を含み、これらのパケットの各々も、第２データパケット３２０のヘッダフリット３２２及び第３データパケット３３０のヘッダフリット３３２を含み、第２データパケット３２０の場合３２４、３２６、３２８で示す３つの他のフリット、及び第３データパケット３３０の場合３３４、３３６、３３８で示す３つの他のフリットが続いている。
第２パケット３２０及び第３パケット３３０はそれぞれ第１仮想チャネルに関連付けられ、第１パケット３１０は、前記第１仮想チャネルよりも低い優先順位の第２仮想チャネルに関連付けられる。
【００６３】
同じネットワーク部分において第１パケット３１０、第２パケット３２０、及び第３パケット３３０が辿るそれぞれの経路を、図３Ａの矢印線３１１、３２１、３３１でそれぞれ示す。
第１パケット３１０及び第２パケット３２０はネットワークの第１ノード３４０にアクセスする準備をしており、この第１ノード３４０の異なる出力を使用してネットワークの異なるリンクに向かう。
第１パケット３１０は、特に第１ノード３４０に、次に第１ノード３４０に隣接する第２ノード３５０にアクセスするように振り向けられている。第３パケット３３０は、第１ノード３４０に隣接する別のノード３６０にアクセスする準備をし、次いでやはり第１ノード３４０に、次に第２ノード３５０にアクセスするように振り向けられている。
【００６４】
図３Ｂでは、第１パケット３１０及び第３パケット３３０の転送が始まっており、これらのパケットの各々が既に第１ノード３４０にアクセスしている。一方、第２パケット３２０は依然として第１ノード３４０にアクセスする準備をしている。このとき、第１ノード３４０において第１パケット３１０と第３パケット３３０との間の調停を行ってこれらのパケットの各々の転送順序を決定することができる。
第１パケット３１０のヘッダフリット３１２及び第２フリット３１４は既に第１ノード３４０を通過して第２ノード３５０にアクセスしており、同時にこの第１パケット３１０の第３フリット３１６は第１ノード３４０にアクセスし、第２ノード３５０に向かって第１ノード３４０の出力に転送されようとしている。第１パケット３１０の第４フリット３１８は第１ノード３４０にアクセスする準備をしている。
【００６５】
同時に、第３パケット３３０及び特にこのパケットのヘッダフリット３３２も第１ノード３４０にアクセスしている。第１パケット３１０の第３フリット３１６と同じように、このヘッダフリット３３２は第２ノード３５０に向かって第１ノード３４０の出力に転送されようとしている。
第３パケット３３０のヘッダフリット３３２及び第１パケット３１０の第３フリット３１６は第１ノード３４０の同じ出力に向かうので、第１パケット３１０と第３パケット３３０との間に競合が生じる。
【００６６】
第３パケット３３０は、第１パケット３１０が関連付けられている第２チャネルよりも優先順位が高い仮想チャネルに関連付けられているので、第２ノード３５０への第１パケット３１０の転送は中止される。特に、第１パケットの第３フリット３１６を中止する（中止は図３Ｃの×印により示す）。第１ノード３４０では、中止により、図２を参照して上述した「送信／許可」プロトコルに従って許可信号が低い状態に変化する。
同時に（図３Ｃ）、第３パケット３３０の転送が継続するので、第３パケットのヘッダフリット３３２が第２ノード３５０にアクセスし、第３パケット３３０の第２フリット３３４が第１ノード３４０にアクセスする。
【００６７】
また同時に、第１ノード３４０が行なう調停によって、第２パケット３２０の転送も継続されるので（図３Ｃ）、第２パケット３２０のヘッダフリット３２２が第１ノード３４０にアクセスする。
第１パケット３１０の第２ノード３５０への転送は中止されるが、調停の前に第１ノード３４０に未だアクセスしていなかった第１パケット３１０の第４フリット３１８も第１ノードにアクセスすることができる。調停の前に未だ第２ノード３５０にしかアクセスしていなかった第１パケット３１０の第２フリット３１４は移動し、第２ノード３５０から出て行くことができる（図３Ｃのブロック３１４まで続く矢印線で第２フリットの移動を示す）。
【００６８】
従って、第１パケット３１０は、高い優先チャネルに関連付けられる第３パケット３３０によって２つの部分に分離される。従って、第３パケット３３０の一部が第１ノード３４０に位置し、別の部分が別のリンク又は第１ノード３４０に隣接しない別のノード（図３Ｃには示さず）に位置する。
第２パケット３２０及び第３パケット３３０は、第１ノード３４０の出力で異なるノードにアクセスするように振り向けられるので、これらのパケットは競合しない。次に、第２パケット３２０の転送及び第３パケット３３０の転送が、図３Ｄに示すステップの間に継続する。同時に、第１ノード３４０の出力において、第２ノード３５０にアドレス指定された第１パケット３１０の転送は、依然として中止されたままである。
【００６９】
第２パケット３２０の場合、この第２パケット３２０の第２フリット３２４は、このステップの間に第１ノード３４０にアクセスし、ヘッダフリット３２２はこの第１ノード３４０の出力に転送される。
第３パケット３３０の移動に関し、第３パケット３３０のヘッダフリット３３２は第２ノード３５０を既に出ており、第３パケット３３０の第２フリット３３４は第１ノード３４０を既に出て第２ノード３５０にアクセスしており、更に第３フリット３３６は第１ノード３４０にアクセスする（図３Ｄ）。
【００７０】
次に、第３パケット３３０全体が第１ノード３４０から送出され、第２パケット３２０と競合していた出力を解放する。次に、第１ノード３４０の出力からの第２パケット３２０の転送が、図３Ｅに示すステップにおいて再開される。次に、第１パケット３１０のフリット３１６が第２ノード３５０にアクセスする。同時に、第３パケット３３０の移動が継続する。第３パケットの第４フリット３３８、すなわち最後のフリットは、既に第２ノード３５０にアクセスしている。
図３Ｆに示すステップによれば、第１ノード３４０の出力からの第１パケット３１０の転送は、第２パケット３２０及び第３パケット３３０の転送後に完了する。この第１パケット３１０全体は第１ノード３４０の出力から転送され、完全な状態で第２ノード３５０に到達できる。第１ノード３４０の出力からの第２パケット３２０の転送も完了する。第２ノード３５０の出力からの第３パケット３３０の転送も完了する。
【００７１】
次に、本発明に従って使用するネットワークオンチップの例示的ノード４００について、図４Ａ〜４Ｃを参照しながら説明する。このノードには、前記ネットワークの他のノードのクロックとは独立したノード固有のクロック（図示せず）を設けることができる。
このノード４００は、５つの入力／出力ユニット４１０、４２０、４３０、４４０、４５０（図４Ａに示す）を含み、各ユニットは、それぞれ入力／出力モジュール４６０、４７０、４８０、４９０、５００に接続される（図４Ｂに示す）。
【００７２】
これらの入力／出力ユニットは、「北」ユニット４１０、「東」ユニット４２０、「南」ユニット４３０、及び「西」ユニット４４０を含み、各ユニットは、ノード４００に隣接する、ネットワークの別のノードに接続することができ（他のノードは図４Ａ〜４Ｃに示さない）、このような他のノードとデータ交換及び／又は同期信号交換を行なうように構成することができる。
ノード４００のもう１つの入力／出力ユニット４５０は、ネットワークリソース（図４Ａ〜４Ｃには示さない）に接続することができ、このリソースとデータ交換及び／又は同期信号交換を行なうように構成される。
【００７３】
図４Ａに詳細を示す「西」ユニット４４０と同様に、ノード４００の各入力／出力ユニットは：
−  １又は複数の入力、例えば対応する入力モジュール（入力／出力モジュール、特にこの図には示さない「西」入力／出力モジュール）に接続される２つの入力４４１ａ、４４１ｂであって、図２を参照してその動作機構を上記に説明した「送信／許可」タイプのプロトコルに従ってノード４００に隣接するネットワークの別のノード（図示せず）から生じた「ｓｅｎｄ」タイプの同期信号を受信するように設計される入力、
−  対応する入力／出力モジュールに接続された、前記他のノードからデータ又はフリットを受信するように設計される少なくとも１つの入力４４５ａ、
−  １又は複数の出力、例えば対応する入力／出力モジュールに接続される２つの出力４４４ａ、４４４ｂであって、同じ「送信／許可」プロトコルを使用してネットワークの前記他のノード（図示せず）に「ａｃｃｅｐｔ」タイプの同期信号を送信するように設計される出力、
−  １又は複数の出力、例えば対応する入力／出力モジュールに接続される２つの出力４４２ａ、４４２ｂであって、同じ「送信／許可」プロトコルに従ってネットワークの前記他の隣接ノードに「ｓｅｎｄ」タイプの同期信号を送信するように設計される出力、
−  対応する入力／出力モジュールに接続された、データ又はフリットを前記他のノードから受信するように設計される少なくとも１つの出力４４５ｂ、及び
−  １又は複数の入力、例えば対応する出力モジュールに接続された２つの入力４４３ａ、４４３ｂであって、同じ「送信／許可」プロトコルに従ってネットワークの別のノード（図示せず）から送出される「ａｃｃｅｐｔ」タイプの同期信号を受信するように設計される入力
を含むことができる。
【００７４】
図４Ｂには、ノード４００と、このノードの５つの入力／出力モジュール４６０、４７０、４８０、４９０、５００と、及びこれらの入力／出力モジュールの各々が接続される中央モジュール５１０が示されている。この図４Ｂの矢印線は、ノード４００を通過するデータ又はフリットがノード４００内で辿る経路を表わす。
これらの入力／出力モジュールは、「北」入力モジュール４６１と「北」出力モジュール４６８を備える「北」モジュール４６０、「東」入力モジュール４７１と「東」出力モジュール４７８を備える「東」モジュール４７０、「南」入力モジュール４８１と「南」出力モジュール４８８を備える「南」モジュール４８０、「西」モジュール４９０、及び、入力モジュール５０１と出力モジュール５０８を備える別のモジュール５００を含む。５つの入力／出力モジュール４６０、４７０、４８０、４９０、５００は、「北」入力／出力ユニット４１０、「東」入力／出力ユニット４２０、「南」入力／出力ユニット４３０、及び「西」入力／出力ユニット４４０に接続される（これらの入力／出力ユニットは図４Ｂに示さない）。
【００７５】
入力／出力モジュール４６０、４７０、４８０、４９０、５００に接続される中央モジュール５１０は、特にノード４００に隣接する他のノードとやり取りする「ａｃｃｅｐｔ」タイプの同期信号及び／又は「ｓｅｎｄ」タイプの同期信号の生成又は処理に使用される。また、中央モジュール５１０はまた、ノード４００に達するデータパケットをルーティングし、これらのパケットの各々が転送される際に通過するノード４００の対応する出力を決定するのに使用することができる。
ノード４００に到達するデータパケットは、このノード４００により、パケットがネットワーク内で辿る方向データの順番付きリストの形を採ることができるルーティング情報に応じて、上述のようにルーティングすることができる。
【００７６】
このルーティング情報はパケットヘッダにのみ格納することができる。従って、ノード４００は、パケット末尾を表わす「ｅｏｐ」情報又は「ｅｏｐ」信号が未だノードに到達していない場合に限り、パケットルーティング情報を維持することができる。それに関するパケット中の特定のルーティング情報を取り出した後で、ノード４００はこの特定のルーティング情報を消去することができる。
ノード４００を使用して、ノードがデータパケットを受信するとき、何らかのルーティング情報、例えば方向データの順番付きリストの末尾に位置する方向データを読み出すか、又はデコーディングし、次に方向の順番付きリストを変更して、特に前記パケットの経路のノード４００の後ろに位置する隣接ノードに対してルーティングの準備をする。上述のように、この準備は、方向データの順番付きリストをシフトさせることにより行なうことができる。
【００７７】
また、ノード４００の中央モジュール５１０を使用して、ノードに到達する複数のフリット又はパケットの転送順序を決定することにより、データ調停を行なうことができる。
上述のように、複数のデータパケット間の調停は、これらのデータパケットの各々が関連付けられている仮想チャネルに少なくとも部分的に基づいて実行する。中央モジュール５１０は、異なる優先チャネルの差別化を、例えば各仮想チャネルに異なる「ｓｅｎｄ／ａｃｃｅｐｔ」同期信号を関連付けることにより行なうことができる。
【００７８】
複数のデータパケットの転送順序の決定は、これらのパケットが異なる優先順位のチャネルに関連付けられている場合、それぞれの仮想チャネルのみに基づいて行うことができる。
また、複数のデータパケットの転送順序の決定は、これらのパケットの一部が同じ優先順位のチャネルに関連付けられている場合、「動的」調停を使用して行うことができる。このようなタイプの調停の場合、前記パケットがノード４００の入力に到達する順番も考慮に入れる。この動的調停は、例えば「先着順」方式とすることができ、ノード４００が、特に例えば同じ優先チャネルに関連付けられた、ノードに到達する複数のデータパケットの転送順序を決定することができる。
【００７９】
仮想チャネルを使用して行われる調停に加えて、ノード４００は、「静的」タイプの調停を使用する転送順序も使用することができる。このタイプの調停の場合、ノード４００は、どの隣接ノードから前記データパケットが到達するのか、又はノード４００のどの入力にパケットが到達するのかを考慮する。このタイプの静的調停を、特に仮想チャネルを使用して行われる調停に加えて使用し、例えば同じ仮想チャネルに関連付けられ、且つ同時又はほぼ同時にノード４００にアクセスする複数の異なるパケットの転送順序を決定することができる。
例えば、このような静的調停は「北／東／南／西」タイプとすることができ、このタイプでは、ノード４００の「北」入力から送出されるパケットは、ノード４００の「東」入力に第１パケットと同時に到達する同じ仮想チャネルの第２パケットに優先し、第２パケット自体は、ノード４００の「南」入力に第２パケットと同時に到達する同じ仮想チャネルの第３パケットに優先する。
【００８０】
ノード４００の一つの可能な動作は次のように行われる。第１データパケットのヘッダフリットが入力を通ってノード４００に到達すると、このパケットの転送先であるノード４００の出力は、前記第１パケットのヘッダに含まれるルーティング情報に応じて決定される。次いで調停機能が起動される。
前記出力に競合が生じない場合、例えばこの出力を使用する他のパケット又はこの出力を使用する準備の整った他のパケットがない場合、第１パケットはこの出力に送信又は転送される。
【００８１】
前記出力にアクセス競合が生じる場合、例えば第１パケットと同じ仮想チャネル又は第１パケットよりも優先順位の高い仮想チャネルの第２パケットが既にこの出力を使用している場合、ノード４００の出力への第１パケットの転送は遮断又は中止される。「ａｃｃｅｐｔ」タイプの同期信号を低い状態に設定し、第１パケットの送出元であるノード４００の隣接ノードに送信する。第１パケットの転送は、前記第２パケットの全フリットがノード４００を通過したときに再開することができる。
前記出力に競合が生じている別の場合、例えば第１パケットと同じ仮想チャネルに属する第２パケットの別のヘッダフリットが同時にこの出力を使用する準備を整えている場合、例えば「北」、「東」、「南」、「西」タイプの静的調停を、第１パケットと第２パケットとの間で行なう。
【００８２】
前記出力に競合が生じており、且つ第１パケットよりも優先順位の低い仮想チャネルに属する第２パケットが既にこの出力を使用している場合、ノード４００の出力からの第２パケットの転送は遮断される。次に、第１パケット全部をノード４００の出力から送信する。その後、前記第２パケットの転送を必要に応じて再開することができる。
前記第２パケットの全てがノード４００の出力から転送される前に、前記第２パケットのチャネルよりも優先順位の高いチャネルに関連付けられる一つ以上の他のパケットがノード４００の入力にアクセスする場合であって、且つこれら他のパケットが第２パケットと同じ出力を使用する場合、第２パケットに優先して前記他のパケット全体をノード４００の出力に転送する。
前記他のパケットが前記第１パケットのチャネルよりも優先順位の高いチャネルに関連付けられており、前記第１パケットの全てがノード４００の出力に転送されてしまう前に、これら他のパケットがノード４００の入力にアクセスする場合であって、且つこれら他のパケットが第１パケットと同じ出力を使用する場合、第１パケットよりも先に前記他のパケットを全てノード４００の出力に転送する。
【００８３】
ノード４００の中央モジュール５１０、及び入力／出力モジュール、例えばノード４００の「西」モジュール４９０の構造を図４Ｃに示す。
「西」入力／出力モジュール４９０は入力モジュール４９１を含み、このモジュールには、ノード４００に隣接する別のノード（図示せず）から送出される「ｓｅｎｄ」タイプの同期信号を受信するように設計された入力４４１ａ及び４４１ｂが接続される。
【００８４】
入力モジュール４９１はまた、前記他のノードから送出されるフリットを受信するように設計された入力４４５ａに接続される。入力モジュール４９１はまた、前記他の隣接ノードから送出される「ａｃｃｅｐｔ」タイプの同期信号を受信するように設計された出力４４４ａ及び４４４ｂに接続される。非同期の「送信／許可」プロトコルに従って同期信号を受信及び送信するための２つの入力４４１ａ及び４４１ｂと、２つの出力４４４ａ及び４４４ｂとを備える本実施例の場合、２つの異なる仮想チャネルの中から選択される仮想チャネルをパケットに割り当てることができる。
入力モジュール４９１は、マルチプレクサ４９２ａ、４９２ｂと、例えばＦＩＦＯ（先入れ先出し）ユニット４９３ａ、４９３ｂ、及び４９３ｃ、４９３ｄの形態のバッファメモリとを備える。これらのＦＩＦＯ４９３ａ、４９３ｂ及び４９３ｃ、４９３ｄによって、上述した同期機構の動作が、急発進及び急停止すること無く可能になる。上述のように、ユニット４９４を使用してパケットルーティング情報をシフトさせることができ、特にこのルーティング情報に含まれる方向データの順番付きリストをシフトさせることができる。
【００８５】
また、入力モジュール４９０にステートマシンとして機能する手段４９７を設けることにより、ＦＩＦＯ４９３ａ、４９３ｂ及び４９３ｃ、４９３ｄの充填率を使用して、特に入力パケットのスケジューリング及び可能であればこれらのパケットへの割り込みを管理する。
組み合わせ計算手段４９５を設けることにより、ステートマシンに応じて、他の隣接ノードに送信される「ａｃｃｅｐｔ」タイプの信号を生成する。
【００８６】
入力モジュール４９０にはまた、着信データパケットを保存する手段４９６ａ、４９６ｂを設け、特にこれらのパケットのルーティング情報を記憶し、更に手段４９７ａ、４９７ｂ、４９７ｃ、例えばマルチプレクサを設け、「ｓｅｎｄ」タイプの同期信号及びこのパケットに関連付けられたパケット先頭の「ｂｏｐ」ビットに応じて、着信パケットの経路を選択する。
ノード内部の同期信号と、例えば別のノードから送出される「ｓｅｎｄ」タイプ及び／又は「ａｃｃｅｐｔ」タイプの非同期信号との間のインターフェースとなるモジュール（図４Ｃには示さず）も使用することができる。
【００８７】
一実施形態によれば、このようなモジュールには、例えばＦＩＦＯ及び再同期化クロックを設けることができる。
別の実施形態によれば、このようなモジュールは、非特許文献７に記載されているインターフェースと同様のインターフェースを含むことができる。このモジュールによって、ノードに入力されるデータの完全性を保証することができる。
【００８８】
このようなインターフェースモジュールは、ノード４００の接続先であるリソース（図示せず）にも設けることができる。
「西」入力／出力モジュール４９０は出力モジュール４９８も含み、このモジュールには、ノード４００に隣接するノードからの「ａｃｃｅｐｔ」タイプの信号を遅延させるように設計された２つのバッファメモリ４９９等の手段が設けられる。ノード内部の同期信号と、非同期信号との間のインターフェースとなるモジュール（図４Ｃには示さない）も出力モジュール４９８に組み込むことができる。
【００８９】
中央モジュール５１０は調停兼データ切り替え手段５１１を含み、この手段の動作は上述の通りとすることができる。調停兼データ切り替え手段５１１は多重化手段５１３を制御して、ノード４００に到来するデータをこのノードの入力／出力モジュールの一つに振り向ける。
直前に示したノード４００は、例えばＳＴ  Ｍｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ社による「ＨＣＭＯＳ９」技術を使用して、同期ロジックの中で実現することができる。このようなノード４００は、高い動作周波数、例えば約２００ＭＨｚの動作周波数を有することができる。
【００９０】
このようなノードを構成するために必要なメモリレジスタの数は少なくすることができ、例えば入力モジュール４６１、４７１、４８１、４９１、５０１のＦＩＦＯには３２ビットレジスタが２０あればよく、ルーティング情報を記録するためには２ビットレジスタが１０あればよい。このような少数のレジスタによってノード４００の消費電力を減らすことができるので、ノード４００と同じタイプのノードを備えるネットワークの全消費電力は、先行技術によるデバイスを用いる場合よりも小さくなる。
上述したノード４００の一変形実施形態によれば、このノードはクロック無しで構成することができる。
【００９１】
上述したノード４００は非同期で内部動作することができ、例えばＦＵＬＣＲＵＭ社製のＰｉｖｏｔＰｏｉｎｔ（登録商標）を使用して実現することができる。この場合、ノードは、ネットワークの他のノード又はリソースと、４段階式同期プロトコルを使用して交信するように設計することができる。
【図面の簡単な説明】
【００９２】
【図１Ａ】本発明に従って使用されるネットワークオンチップアーキテクチャの一実施例を示す。
【図１Ｂ】本発明に従って使用されるネットワークオンチップアーキテクチャの一実施例を示す。
【図１Ｃ】本発明に従って使用されるネットワークオンチップアーキテクチャの一実施例を示す。
【図２】本発明によるネットワークオンチップにおいて「送信／許可」タイプのプロトコルを使用する同期機構であって、データの送信要素と前記データを受信する要素との間の同期機構を示すタイムチャートの一実施例を示す。
【図３Ａ】データ転送方法の一実施例の一ステップを示す。
【図３Ｂ】データ転送方法の一実施例の別の一ステップを示す。
【図３Ｃ】データ転送方法の一実施例の別の一ステップを示す。
【図３Ｄ】データ転送方法の一実施例の別の一ステップを示す。
【図３Ｅ】データ転送方法の一実施例の別の一ステップを示す。
【図３Ｆ】データ転送方法の一実施例の別の一ステップを示す。
【図４Ａ】本発明に従って使用するネットワークオンチップにおけるデータ切り替えノード構造の一実施例を表わす。
【図４Ｂ】本発明に従って使用するネットワークオンチップにおけるデータ切り替えノード構造の一実施例を表わす。
【図４Ｃ】本発明に従って使用するネットワークオンチップにおけるデータ切り替えノード構造の一実施例を表わす。
【符号の説明】
【００９３】
１１０    ネットワークの要素
１１２    制御装置
１１４    リソース
１１５    リンク
１２０    ノード
１２２    リピータノード
１２４    特殊ノード
１３２、１３４、１３６、１５０    ノードのセット
１５２    非同期ノード
３１０    第１データパケット
３１２、３１４、３１６、３１８    第１データパケットのフリット
３２０    第２データパケット
３２２、３２４、３２６、３２８    第２データパケットのフリット
３３０    第３データパケット
３３２、３３４、３３６、３３８    第３データパケットのフリット
３１１、３２１、３３１    第１、２及び３データパケットの経路
４００    ノード
４１０、４２０、４３０、４４０、４５０    入力／出力ユニット
４６０、４７０、４８０、４９０、５００    入力／出力モジュール
４４１ａ、４４１ｂ、４４３ａ、４４３ｂ、４４５ａ  入力／出力ユニットの入力
４４２ａ、４４２ｂ、４４４ａ、４４４ｂ、４４５ｂ  入力／出力ユニットの出力
５１０    中央モジュール
【図１Ａ】
2006254449.tif 000003
【図１Ｂ】
2006254449.tif 000004
【図１Ｃ】
2006254449.tif 000005
【図２】
2006254449.tif 000006
【図３Ａ】
2006254449.tif 000007
【図３Ｂ】
2006254449.tif 000008
【図３Ｃ】
2006254449.tif 000009
【図３Ｄ】
2006254449.tif 000010
【図３Ｅ】
2006254449.tif 000011
【図３Ｆ】
2006254449.tif 000012
【図４Ａ】
2006254449.tif 000013
【図４Ｂ】
2006254449.tif 000014
【図４Ｃ】
2006254449.tif 000015
【外国語明細書】
2006254449000001.pdf
2006254449000002.pdf
2006254449000003.pdf
2006254449000004.pdf