(57)【特許請求の範囲】
【請求項１】
処理モジュールおよび該処理モジュールにデータを入出力するスイッチ回路がそれぞれに含まれる複数のノードと、当該複数のノード間を接続する複数のリンクとを備え、
前記複数のリンクは、前記複数のノードを用いた全域木構造の基本ネットワークを結ぶ基本リンク群と、当該基本リンク群以外のショートカットリンクとから成り、
前記各スイッチ回路は、
前記基本リンクを稼働させる間に前記ショートカットリンクを間欠的に稼働させる電源制御回路と、
前記基本リンクから前記ショートカットリンクへのデータ転送を禁止し、且つ前記ショートカットリンクから前記基本リンクへのデータ転送を許可する第１のルーティングアルゴリズムと、前記ショートカットリンク間のデータ転送の際に当該データ転送に関与する各ノードの特性を用いてルーティングを行う第２のルーティングアルゴリズムとに基づく最小コストの経路と、前記基本ネットワークに沿った経路とを選択的に用いてデータ転送を行う転送制御部とを有することを特徴とする集積回路。
【請求項２】
前記転送制御部は、前記データ転送を行うときに当該データの宛先に対応する前記最小コストの経路の稼働状態を検知し、当該最小コストの経路が稼働中の場合は該最小コストの経路にデータを出力し、当該最小コストの経路が非稼働の場合は前記宛先に対応する前記基本ネットワークに沿った経路にデータを出力することを特徴とする請求項１記載の集積回路。
【請求項３】
前記複数のノードのそれぞれは、前記基本ネットワークの全域木構造に従って根ノードから降順に設定される優先度を持ち、
前記転送制御部は、ノードの優先度を用いるｕｐ＊／ｄｏｗｎ＊ルーティングアルゴリズムが前記第２のルーティングアルゴリズムに適用された前記最小コストの経路および前記基本ネットワークに沿った経路を宛先別に記述したアドレステーブルと、データ転送の宛先に応じて前記アドレステーブルから前記最小コストの経路または前記基本ネットワークに沿った経路を選択する経路選択回路とを有することを特徴とする請求項１又は２記載の集積回路。
【請求項４】
前記複数のノードのそれぞれは、前記基本ネットワークの全域木構造に従って根ノードから降順に設定される優先度を持ち、
前記転送制御部は、ノードの優先度を用いるｕｐ＊／ｄｏｗｎ＊ルーティングアルゴリズムが前記第２のルーティングアルゴリズムに適用された前記最小コストの経路および前記基本ネットワークに沿った経路を宛先別に記述したアドレステーブルと、データ転送の宛先に応じて前記最小コストの経路の選択を試み、当該最小コストの経路が稼働中である場合は当該最小コストの経路を選択し、当該最小コストの経路が非稼働である場合は最小コストの経路別に記述した別のアドレステーブルから、前記基本ネットワークに沿った経路を選択する経路選択回路とを有することを特徴とする請求項１又は２記載の集積回路。
【請求項５】
前記最小コストの経路のコストは、データ転送の起点から宛先までに経由するノードの数であることを特徴とする請求項１乃至４の何れか１項に記載の集積回路。
【請求項６】
処理モジュールおよび該処理モジュールにデータを入出力するスイッチ回路がそれぞれに含まれる複数のノードと、当該複数のノード間を接続する複数のリンクとを備える集積回路のデータ転送方法であって、
前記複数のノードを用いた全域木構造の基本ネットワークを結ぶ基本リンク群と、当該基本リンク群以外のショートカットリンクとを前記複数のリンクから決定し、
前記基本リンクを稼働させる間に前記ショートカットリンクを間欠的に稼働させ、
前記基本リンクから前記ショートカットリンクへのデータ転送を禁止し、且つ前記ショートカットリンクから前記基本リンクへのデータ転送を許可する第１のルーティングアルゴリズムと、前記ショートカットリンク間のデータ転送の際に当該データ転送に関与する各ノードの特性を用いてルーティングを行う第２のルーティングアルゴリズムとに基づく最小コストの経路と、前記基本ネットワークに沿った経路とを選択的に用いてデータ転送を行うことを特徴とするデータ転送方法。
【請求項７】
前記データ転送を行うとき、当該データの宛先に対応する前記最小コストの経路の稼働状態を検知し、当該最小コストの経路が稼働中の場合は該最小コストの経路にデータを出力し、当該最小コストの経路が非稼働の場合は前記宛先に対応する前記基本ネットワークに沿った経路にデータを出力することを特徴とする請求項６記載のデータ転送方法。
【請求項８】
前記基本リンク群を決定するとき、前記複数のノードのそれぞれに、前記基本ネットワークの全域木構造に従って根ノードから降順に優先度を設定し、
前記データ転送を行うとき、ノードの優先度を用いるｕｐ＊／ｄｏｗｎ＊ルーティングアルゴリズムが前記第２のルーティングアルゴリズムに適用された前記最小コストの経路および前記基本ネットワークに沿った経路を宛先別に記述したアドレステーブルから、データ転送の宛先に応じて前記最小コストの経路または前記基本ネットワークに沿った経路を選択することを特徴とする請求項６又は７記載のデータ転送方法。
【請求項９】
前記基本リンク群を決定するとき、前記複数のノードのそれぞれに、前記基本ネットワークの全域木構造に従って根ノードから降順に優先度を設定し、
前記データ転送を行うとき、ノードの優先度を用いるｕｐ＊／ｄｏｗｎ＊ルーティングアルゴリズムが前記第２のルーティングアルゴリズムに適用された前記最小コストの経路および前記基本ネットワークに沿った経路を宛先別に記述したアドレステーブルから、データ転送の宛先に応じて前記最小コストの経路の選択を試み、当該最小コストの経路が稼働中である場合は当該最小コストの経路を選択し、当該最小コストの経路が非稼働である場合は最小コストの経路別に記述した別のアドレステーブルから、前記基本ネットワークに沿った経路を選択することを特徴とする請求項６又は７記載のデータ転送方法。
【請求項１０】
前記最小コストの経路のコストは、データ転送の起点から宛先までに経由するノードの数であることを特徴とする請求項６乃至９の何れか１項に記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮｏＣ（Network on Chip）技術を用いた集積回路に関する。
【背景技術】
【０００２】
集積回路の多機能化に伴い、回路に搭載する処理モジュールが増加しつつあるが、例えばバス接続による配線では、モジュール増加に対処し難くなっている。この点、バス接続に代わる技術として、通信ネットワークの構造を集積回路に適用するという技術であるＮｏＣがある。ＮｏＣでは、チップ内の処理モジュール間のデータ転送に、ルータと呼ばれるスイッチング回路を使用する。
【０００３】
図１７に、典型的なＮｏＣのネットワーク構造を示す。図示のネットワークにおいて、例えば、処理モジュール１から処理モジュール２へのデータ転送の場合、データは、処理モジュール１から少なくともルータ３及びルータ４を経由して処理モジュール２に転送される。ネットワークの各ルータは、隣接するルータとの間で通信の調停を行う。調停処理のために、ルータの各入力ポートには、受信したデータを一時的に格納するためのバッファが設けられている。バッファリングされたデータは、調停処理にて出力ポートが使用可能になり次第、経路に出力される。
【０００４】
ＮｏＣの構造では、入力ポートのそれぞれにバッファが設けられることから、バス接続と比較して電力消費が大きくなる可能性がある。そして、リーク電流によって消費される電力であるリーク電力は、ルータの利用率に関わらず消費されるため、バッテリーを使用するモバイル機器の集積回路では重大な問題となる。
【０００５】
リーク電力への対処として、バッファへの電力供給を遮断することで、リンクの稼働を停止させるという方法が提案されている。
【０００６】
例えば、非特許文献１には、グリッド型（メッシュ状）の網構成を持つＮｏＣにおいて、一部のルータ間のリンクを停止するという方法が記載されている。この方法では、リンク停止に伴って処理モジュール間の通信が滞ることを防ぐために、アダプティブルーティングアルゴリズム（Adaptive Routing Algorithm）と呼ばれる、動的に経路を選択する転送アルゴリズムを用いる。
【０００７】
アダプティブルーティングに関し、非特許文献１では、Ｔｕｒｎ  Ｍｏｄｅｌと呼ばれるアルゴリズム群が提案されている。このＴｕｒｎ  Ｍｏｄｅｌでは、グリッド型の網構成に東西南北の４方向の概念が与えられる。Ｔｕｒｎ  ＭｏｄｅｌのＷｅｓｔ−Ｌａｓｔルーティングでは、東から西へ転送されたデータを、南および北に方向転換することが禁止される。また、Ｅａｓｔ−Ｌａｓｔルーティングでは、西から東へ転送されたデータを、南および北に方向転換することが禁止される。
【０００８】
ところで、ＮｏＣのネットワークでは、一般の通信ネットワークにもあり得るようなデッドロックが生じ得る。デッドロックは、ネットワークにおいて複数のデータ転送が同時的に滞る現象である。図１８を用いてデッドロックの例を説明する。図示のネットワークにおいて、各ルータは、入力ポートのそれぞれにバッファを持つ。各バッファは、１つのデータしか保持できないものとする。
【０００９】
処理モジュール８５のデータは、ルータ７１、ルータ７２、ルータ７３を経由して処理モジュール８７に転送されるとする。処理モジュール８６のデータは、ルータ７２、ルータ７３、ルータ７４を経由して処理モジュール８８に転送されるとする。処理モジュール８７のデータは、ルータ７３、ルータ７４、ルータ７１を経由して処理モジュール８５に転送されるとする。処理モジュール８８のデータは、ルータ７４、ルータ７１、ルータ７２を経由して処理モジュール８６に転送されるとする。
【００１０】
ここで、処理モジュール８５からのデータがルータ７２内のバッファ８１に到着し、処理モジュール８６からのデータがルータ７３内のバッファ８２に到着し、処理モジュール８７からのデータがルータ７４内のバッファ８３に到着し、処理モジュール８８からのデータがルータ７１内のバッファ８４に到着するということが同時に発生したとする。
【００１１】
上記の状態において、ルータ７２は、バッファ８１のデータをルータ７３に転送しようとしても、このルータ７３のバッファ８２に別のデータが存在するので、転送を行うことができない。同様に、バッファ８２のデータは、バッファ８３に別のデータが存在するために送信されない。バッファ８３のデータは、バッファ８４に別のデータが存在するために送信されない。バッファ８４のデータは、バッファ８１に別のデータが存在するために送信されない。この状態がデッドロックである。このデッドロックを解消するには、バッファ８１、バッファ８２、バッファ８３、バッファ８４のうちの少なくとも１つのバッファ内のデータを消去する必要がある。
【００１２】
上記のようなデッドロックを回避するために、前述のＴｕｒｎ  Ｍｏｄｅｌ、あるいはバーチャルチャネルと呼ばれる仮想的な多重構造のネットワークを用いる。バーチャルチャネルでは、ルータ内の各ポートに２系統のバッファを設ける。このバーチャルチャネルにＴｕｒｎ  Ｍｏｄｅｌを用いる場合、Ｅａｓｔ−ＬａｓｔルーティングとＷｅｓｔ−Ｌａｓｔルーティングとで異なるバッファ系統を使用する。
【００１３】
ＮｏＣの省電力に関する他の手法として、例えば、非特許文献２に記載のものがある。この手法は、ファットツリー（Ｆａｔ−Ｔｒｅｅ）と呼ばれる多重化されたツリー型の網構成に適用される。ファットツリーに関しては、例えば、非特許文献３に記載されている。
【００１４】
図１９に、ファットツリーが適用されたＮｏＣの構成を示す。図示の構成において、ルータ３１とルータ３２、ルータ３３とルータ３４、ルータ３５とルータ３６、ルータ３７とルータ３８は、それぞれ多重化されたルータの組み合わせである。同図において実線で示されたリンクは常時動作する。破線で示されたリンクは、ルータ３２、ルータ３３、ルータ３４、ルータ３６、ルータ３８の動的電源制御によって、動作と停止が切り替えられる。
【先行技術文献】
【非特許文献】
【００１５】
【非特許文献１】V. Soteriou, et al.、“Exploring the Design Space of Self-Regulating Power-Aware On/Off Interconnection Networks”、IEEETransactionsonParallel and Distributed Systems; Vol. 18, No. 3、March 2007、pp. 393-408
【非特許文献２】C. J. Glass, et al.、“The Turn Model for Adaptive Routing”、The19thInternationalSymposium on Computer Architecture; Association for Computing Machinery (ACM)、May 1992、pp. 278-287
【非特許文献３】M. Alonso, et al.、“Dynamic Power Saving in Fat-Tree Interconnection Networks Using On/Off Links”、Proceedings20thInternationalParalleland Distributed Processing Symposium; IEEE、April 2006
【非特許文献４】M. D. Schroeder, et al.、Autonet: A High-Speed, Self-Configuring Local Area Network Using Point-to-Point Links、IEEE JOURNAL ON SELECTED AREAS IN COMMUNICATIONS; Vol. 9, No. 8、October 1991、pp. 1318-1335
【発明の概要】
【発明が解決しようとする課題】
【００１６】
上記非特許文献１〜３に記載の手法は、ＮｏＣの省電力化に有益であるが、これらの手法には次のような課題がある。
【００１７】
その一つは、省電力のための網構成に制約があるという点である。より具体的には、非特許文献１のＴｕｒｎ  Ｍｏｄｅｌはグリッド型の網構成に限定され、非特許文献２及び３の手法はファットツリーに限定される。網構成が制限されると、例えば、異種の処理モジュールが混合するヘテロジニアスマルチコアのような集積回路への適用が困難である。
【００１８】
また、前述のバーチャルチャネルや、非特許文献２及び３のファットツリーのように、デッドロック回避のためには網構成の多重化が必要とされる点も課題に挙げられる。多重化されたネットワークは、多重化されていないネットワークと比較して、より多くの回路面積と消費電力を必要とする。よって、網構成の多重化が必要な手法は、例えばモバイル機器用のチップのように、回路面積や電力供給量が制限される集積回路には不向きである。
【００１９】
本発明の目的は、省電力およびデッドロック回避のための網構成の制限が緩和される集積回路およびその集積回路におけるデータ転送方法を提供することにある。
【課題を解決するための手段】
【００２０】
本発明に係る集積回路は、処理モジュールおよび該処理モジュールにデータを入出力するスイッチ回路がそれぞれに含まれる複数のノードと、当該複数のノード間を接続する複数のリンクとを備え、前記複数のリンクは、前記複数のノードを用いた全域木構造の基本ネットワークを結ぶ基本リンク群と、当該基本リンク群以外のショートカットリンクとから成り、前記各スイッチ回路は、前記基本リンクを稼働させる間に前記ショートカットリンクを間欠的に稼働させる電源制御回路と、前記基本リンクから前記ショートカットリンクへのデータ転送を禁止し、且つ前記ショートカットリンクから前記基本リンクへのデータ転送を許可する第１のルーティングアルゴリズムと、前記ショートカットリンク間のデータ転送の際に当該データ転送に関与する各ノードの特性を用いてルーティングを行う第２のルーティングアルゴリズムとに基づく最小コストの経路と、前記基本ネットワークに沿った経路とを選択的に用いてデータ転送を行う転送制御部とを有する。
【００２１】
本発明に係るデータ転送方法は、処理モジュールおよび該処理モジュールにデータを入出力するスイッチ回路がそれぞれに含まれる複数のノードと、当該複数のノード間を接続する複数のリンクとを備える集積回路のデータ転送方法であって、前記複数のノードを用いた全域木構造の基本ネットワークを結ぶ基本リンク群と、当該基本リンク群以外のショートカットリンクとを前記複数のリンクから決定し、前記基本リンクを稼働させる間に前記ショートカットリンクを間欠的に稼働させ、前記基本リンクから前記ショートカットリンクへのデータ転送を禁止し、且つ前記ショートカットリンクから前記基本リンクへのデータ転送を許可する第１のルーティングアルゴリズムと、前記ショートカットリンク間のデータ転送の際に当該データ転送に関与する各ノードの特性を用いてルーティングを行う第２のルーティングアルゴリズムとに基づく最小コストの経路と、前記基本ネットワークに沿った経路とを選択的に用いてデータ転送を行う。
【発明の効果】
【００２２】
本発明によれば、ＮｏＣの集積回路において省電力およびデッドロック回避のための網構成の制限を緩和することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態における集積回路の構成図である。
【図２】本発明の実施形態における集積回路のルータ間の接続に関する構成図である。
【図３】本発明の第１の実施形態における集積回路のルータの構成図である。
【図４】デッドロック回避のためのｕｐ＊／ｄｏｗｎ＊ルーティングに関する説明図である。
【図５】本発明の実施形態における集積回路に対する経路設定のフローチャートである。
【図６】本発明の実施形態における集積回路のネットワーク構成に関する説明図である。
【図７】本発明の実施形態における順序付き基本ネットワークの作成のフローチャートである。
【図８】本発明の実施形態における基本ネットワークに関する説明図である。
【図９】本発明の実施形態における基本ネットワークに関する説明図である。
【図１０】本発明の実施形態におけるＮｏＣトポロジーに関する説明図である。
【図１１】本発明の第１の実施形態におけるアドレステーブルに関する説明図である。
【図１２】本発明の第１の実施形態における集積回路の動作のフローチャートである。
【図１３】本発明の実施形態における集積回路の動作に関する説明図である。
【図１４】本発明の第２の実施形態における集積回路のルータの構成図である。
【図１５】本発明の第２の実施形態におけるアドレステーブルに関する説明図である。
【図１６】本発明の第２の実施形態における集積回路の動作のフローチャートである。
【図１７】ＮｏＣのネットワークの構成図である。
【図１８】ＮｏＣのネットワークにおけるデッドロックの発生に関する説明図である。
【図１９】ＮｏＣのネットワークにおけるファットツリーに関する説明図である。
【発明を実施するための形態】
【００２４】
図１に、本発明の第１の実施形態における集積回路１０００の構成を示す。集積回路１０００は、複数の処理モジュール６００−６０６と、各処理モジュールに対しデータを入出力するスイッチ回路である複数のルータ１００−１０６とを有する。各ルータ間は、複数のリンク（４００−４０５，５００−５０５）により図示の形態で接続されている。
【００２５】
集積回路１０００内のリンク（４００−４０５，５００−５０５）は、回路設計時に、基本リンクとショートカットリンクとに分類される。基本リンク群は、ＮｏＣの全てのノードを用いた基本ネットワークを結ぶリンク群である。基本ネットワークは、特定の１つのノードを根（Root）とする全域木構造（Spanning Tree）を成す。一方、ショートカットリンクは、集積回路１０００において基本リンク群に含まれないリンクである。ノードの定義やリンクの分類方法については、後に詳細に説明する。
【００２６】
図２は、リンク４０２をショートカットリンクと仮定し、このリンク４０２を介したルータ１００及びルータ１０２間の接続の様子を示したものである。ルータ１００のクロスバー３１６から出力されたデータは、ルータ１０２のバッファ３０４および経路選択回路３００に入力される。データに宛先アドレスが含まれる場合は、経路選択回路３００がデータ転送のための経路を選択する。
【００２７】
図３に、ルータ１０２の内部構成を示す。バッファ（３０４）は、入力リンク毎に設けられている。ショートカットリンク４０２のバッファ３０４は、電源制御回路３０３からの信号によって起動および停止が切り換えられる。
【００２８】
電源制御回路３０３は、基本リンクが稼働する間にショートカットリンク４０２を間欠的に稼働させるよう、バッファ３０４への電源供給を制御する。電源制御回路３０３は、経路選択回路３００による経路の選択状況からショートカットリンク４０２の利用度を判定し、それをもとにバッファ３０４への電源供給を制御する。現在の電力供給の状態は、ショートカットリンク４０２の転送元のルータ（１００）にある経路選択回路（３１０）に伝達される。
【００２９】
転送制御部３３０は、経路選択回路３００及びアドレステーブル３０１から構成される。経路選択回路３００は、データ転送のための経路をアドレステーブル３０１から検索する。アドレステーブル３０１には、本発明に係る最小コストの経路に対応する最適経路と、基本ネットワークに沿った経路に対応する迂回経路との組み合わせが、データ転送の宛先別に登録されている。経路選択回路３００は、最適経路のリンクの稼働状態を、電力制御に関する隣接のルータ（１００）からの信号をもとに判断する。対象のリンクが稼働中の場合は、最適経路の情報を調停回路３０２に供給し、そのリンクが非稼働の場合は、迂回経路の情報を調停回路３０２に供給する。
【００３０】
クロスバー３０６は、調停回路３０２からの指示をもとにデータ転送を行う。アイソレータ３０５は、電源制御回路３０３からアイソレーション信号が入力された時、バッファ３０４から入力されるデータの信号線を遮断する。これにより、クロスバー３０６が、予期しない入力で誤った挙動を起こすことを防止する。調停回路３０２は、当事者にとってよく知られているものであり、説明を省略する。
【００３１】
本実施形態において、各ルータのアドレステーブルに設定される最適経路は、回路設計時などに、後述の２種類のルーティングアルゴリズムを用いて決定される。これらのアルゴリズムに基づく最小コストの経路が、最適経路となる。経路選択の指標であるコストに関し、本実施形態では、転送のホップ数、すなわち起点のノードから宛先ノードまでに経由するノードの数を用いる。一方、迂回経路には、基本リンクのみで構成される基本ネットワークに沿った経路が設定される。
【００３２】
最適経路の探索に用いるルーティングアルゴリズムの一つは、基本リンクからショートカットリンクへのデータ転送を禁止し、且つショートカットリンクから基本リンクへのデータ転送を許可するというルーティングアルゴリズムである。もう一つは、ショートカットリンク間のデータ転送の際にデッドロックを回避するためのルーティングアルゴリズムである。
【００３３】
ショートカットリンク間のデータ転送に適用するルーティングアルゴリズムは、特に限定されないが、本実施形態では、説明のための一例としてノードの優先度に基づくｕｐ＊／ｄｏｗｎ＊ルーティングを用いる。ｕｐ＊／ｄｏｗｎ＊ルーティングは、例えば、非特許文献４に記載されており、任意形のネットワークにおけるデッドロックフリーな経路の探索に好適である。
【００３４】
図４を用いてｕｐ＊／ｄｏｗｎ＊ルーティングの概要を説明する。いま、４つのルータ（９１〜９４）が図示のように接続されている。ルータ９１及びルータ９２には優先度「２」、ルータ９３には優先度「３」、ルータ９４には優先度「１」がそれぞれ設定されている。これらの数値は、大きいものほど優先度が高いことを意味する。
【００３５】
ｕｐ＊／ｄｏｗｎ＊ルーティングでは、優先度が低いルータから優先度が高いルータへの転送を「ｕｐ」、優先度が高いルータから優先度が低いルータへの転送を「ｄｏｗｎ」と表現する。例えば、図４に示すように、ルータ９１からルータ９３へのデータ転送はｕｐ、ルータ９１からルータ９４へのデータ転送はｄｏｗｎに該当する。
【００３６】
このｕｐ＊／ｄｏｗｎ＊ルーティングでは、ｄｏｗｎ転送の後にｕｐ転送することは禁止される。例えば、ルータ９１からルータ９２へのデータ転送の場合、ルータ９３を経由する経路と、ルータ９４を経由する経路とが考えられる。このうち、後者のルータ９４を経由する経路は、起点のルータ９１からルータ９３へのｄｏｗｎ転送の後に、ルータ９３からルータ９２へｕｐ転送する経路であり、上記の禁止事項に該当する。よって、ルータ９１からルータ９２へのデータ転送には、ルータ９３を経由する経路のみが許可される。なお、ｕｐ転送のみの経路、ｄｏｗｎ転送のみの経路、ｕｐ転送後にｄｏｗｎ転送する経路は、いずれも許可される。
【００３７】
最適経路の設定に上記の２種類のルーティングアルゴリズムを用いる理由を挙げる。元来、全域木構造は循環経路を持たない。よって、全域木構造の基本ネットワークに沿った経路（迂回経路）にてデッドロックは発生しないが、ショートカットリンクと基本リンクが混在する経路や、ショートカットリンクのみで構成される経路の場合は、転送データが循環する可能性がある。
【００３８】
そこで、ショートカットリンクと基本リンクとが混在する経路に対しては、基本リンクからショートカットリンクへの転送を禁止し、その逆方向の転送は許可するというルーティングアルゴリズムを適用する。これにより、リンク種別が混在する経路のデッドロックを防ぐことができる。一方、リンク種別が同じショートカットリンクのみの経路に対しては、ノードの特性など、リンク種別とは異なる指標を用いて、デッドロック回避のルーティングを行う。本実施形態では、このルーティングアルゴリズムとして、ノードの優先度をルーティングの指標とする前述のｕｐ＊／ｄｏｗｎ＊アルゴリズムを用いる。
【００３９】
図５に示すフローチャートに沿って、集積回路１０００に対する経路設定の手順について説明する。この設定は、集積回路１０００の設計時にコンピュータにより行う。コンピュータは、まず、図６に示すような形態で、集積回路１０００の全体的なネットワーク構成を認識する（ステップＳ０）。図示の構成は、一対の処理モジュールおよびルータを１つのノードとみなした場合の集積回路１０００の構成を示している。
【００４０】
図６の構成において、ノード７００は、図１におけるルータ１００及び処理モジュール６００の組み合わせに対応する。同様に、ノード７０１はルータ１０１及び処理モジュール６０１の組み合わせ、ノード７０２はルータ１０２及び処理モジュール６０２の組み合わせ、ノード７０３はルータ１０３及び処理モジュール６０３の組み合わせ、ノード７０４はルータ１０４及び処理モジュール６０４の組み合わせ、ノード７０５はルータ１０５及び処理モジュール６０５の組み合わせ、ノード７０６はルータ１０６及び処理モジュール６０６の組み合わせにそれぞれ対応する。
【００４１】
上記のネットワーク構成において、コンピュータは、ある１つのノードが根ノードとして指定されると、この根ノードを最上位層とし、他のノードを下位層とする全域木構造の基本ネットワークを全ノードを用いて作成する。本実施形態では、ｕｐ＊／ｄｏｗｎ＊ルーティングのための優先度を各ノードに設定することで、順序付き基本ネットワークを作成する（図５：ステップＳ１）。この順序付き基本ネットワークの作成手順については後に説明する。
【００４２】
基本ネットワークを作成すると、コンピュータは、その基本ネットワークに含まれないリンクをショートカットリンクとして設定する（ステップＳ２）。そして、前述した２種類のルーティングアルゴリズムを用いて、データ転送の宛先別の最適経路および迂回経路を決定する（ステップＳ３）。決定された経路の情報は、集積回路１０００における各ルータのアドレステーブルに格納される。
【００４３】
図７に示すフローチャートを参照して、上記の順序付き基本ネットワークの作成（図５：Ｓ１）について説明する。コンピュータは、全体のネットワーク構成から指定された根ノード（階層Ｌ１）を認識すると（ステップＳ１１）、その根ノードに最大の優先度Ｐｍａｘを設定する（ステップＳ１２）。
【００４４】
コンピュータは、根ノードと単一のリンクを介して接続されているノードを、その根ノードの次の階層Ｌ２のノードとして検出する（ステップＳ１３、Ｓ１４）。例えば、図６においてノード７０１が階層Ｌ１の根ノードである場合、ノード７００，  ７０２，  ７０３，  ７０４がそれぞれ階層Ｌ２に相当する。コンピュータは、階層Ｌ２のノードのうちの１つに、根ノードの優先度Ｐｍａｘより１つ小さい優先度を設定する（ステップＳ１５）。また、同じ階層Ｌ２のノードが他にも存在する場合は、それらに対して優先度を降順に設定していく（ステップＳ１６：Ｙｅｓ）。
【００４５】
コンピュータは、階層Ｌ２のノードを検出し終えると、次の階層Ｌ３の処理に移行する（ステップＳ１７）。図６を参照する前述の例では、階層Ｌ２のノード７０４に接続されているノード７０５，  ７０６が階層Ｌ３に相当する。このように階層Ｌ３のノードが検出された場合は（ステップＳ１８：Ｙｅｓ）、それらに対し、階層Ｌ２から続く優先度を降順に設定していく（ステップＳ１９）。上記手順により、全てのノードに階層と優先度が順次設定されることで、全域木構造の順序付き基本ネットワークが完成する。
【００４６】
図８に、図６を参照する前述の例により作成された基本ネットワーク１０１０ａを示す。この基本ネットワーク１０１０ａでは、全てのノード７００−７０６が、基本リンクとしてのリンク５００−５０５により全域木構造で接続されている。根ノードのノード７０１には最大の優先度「６」が設定されている。また、根ノードの次の階層Ｌ２のノード７００，７０２，７０３，７０４には、最大の優先度より１つ小さい優先度「５」から降順に優先度「４」，「３」，「２」までが設定されている。そして、最下位の階層Ｌ３のノード７０５，７０６には、階層Ｌ２から続く優先度「１」，「０」が設定されている。
【００４７】
なお、基本ネットワークの構成は、図８のものに限らず、例えば図９に示すような構成であってもよい。この基本ネットワーク１０２０ａでは、上記の基本ネットワーク１０１０ａと同様にノード７０１を根ノードとする一方で、その次の階層Ｌ２にノード７００，  ７０３、さらに次の階層Ｌ３にノード７０２，  ７０４、そして最下位の階層Ｌ４にノード７０５，  ７０６が、それぞれ設定されている。基本ネットワーク１０２０ａでは、リンク４０１，４０２，４０４，５００，５０１，５０３が基本リンクとして用いられている。
【００４８】
基本ネットワークをどのように構成するかは特に限定されないが、事前に想定される各リンクの使用頻度や転送量等を勘案し、例えば転送量に余力のあるリンクを基本リンクとして使用する等、集積回路１０００の利用形態に応じて適宜設定することが望ましい。
【００４９】
図１０に、上記の基本ネットワーク１０１０ａ（図８）を用いた本実施形態のＮｏＣトポロジー１０１０を示す。ＮｏＣトポロジー１０１０では、基本ネットワーク１０１０ａに含まれないリンク４００−４０５が、それぞれショートカットリンクとして設定される。
【００５０】
次に、集積回路１０００のアドレステーブルに設定する経路の決定（図５：Ｓ３）について説明する。本実施形態では、前述したように、２種類のルーティングアルゴリズムを用いて、宛先までの転送ホップ数が最も少ない経路（最小コストの経路）である最適経路と、基本ネットワークに沿った迂回経路とが決定される。決定された経路の情報は、各ノードのアドレステーブルに格納される。
【００５１】
ここで、最適経路の決定に関し、図１０のＮｏＣトポロジー１０１０におけるノード７０５からノード７０３への最適経路を考える。ノード７０５からノード７０４を経由してノード７０３へ至る経路は、基本リンク５０５からショートカットリンク４０４への転送が発生するため、前述したルーティングアルゴリズムの制約に抵触する。また、ノード７０５からノード７０６を経てノード７０３へ至る経路は、ショートカットリンク４０５，４０３間の転送であるが、優先度に基づくｕｐ＊／ｄｏｗｎ＊ルーティングの制約に抵触する。この結果、ノード７０５からノード７０３への最適経路には、ノード７０４及びノード７０１を経由する経路、又は、ノード７０２及びノード７０１を経由する経路が設定されることになる。
【００５２】
一方、迂回経路は、全域木構造の基本ネットワークを利用するものであるから、起点となるノード７０５に対して一意に定まる。すなわち、ノード７０５からノード７０３への迂回経路としては、基本ネットワークに沿ってノード７０４及びノード７０１を経由する経路が設定される。
【００５３】
図１１に、上記ＮｏＣトポロジー１０１０のノード７０２に格納されたアドレステーブル３０１の例を示す。このアドレステーブル３０１には、ノード７０２を起点とした最適経路および迂回経路の組み合わせが宛先ノード別に格納される。図示のテーブルによれば、例えば、宛先がノード７００の場合の最適経路は、ノード７０２からショートカットリンク４０２を通じてノード７００へ至る経路である。一方、迂回経路は、ノード７０２から基本リンク５０２を通じてノード７０１を経由する経路である。また、図示のアドレステーブル３０１はノード７０２のものであるから、転送データの宛先が自ノード（７０２）の場合、そのデータはノード７０２内の処理モジュール６０２に入力される。
【００５４】
次に、アドレステーブル設定後の集積回路１０００における各ノードの動作について説明する。まず、図１２に示すフローチャートに沿って、各ノードの基本的な動作手順を述べる。
【００５５】
ノードは、前述した電源制御回路３０３（図３）によるバッファへの電力制御により、基本リンクを稼働させる間、ショートカットリンクを間欠稼働させる（ステップＳ２１）。そして、他のノードからデータを受信する、あるいは自ノードの処理モジュールからデータを受信することで転送が発生すると（ステップＳ２２）、そのデータの宛先に対応する最適経路および迂回経路をアドレステーブルから検索する（ステップＳ２３）。
【００５６】
ノードは、上記検索により得られた最適経路がショートカットリンクか否かを判別する。その結果、最適経路が基本リンクである場合は（ステップＳ２４：Ｎｏ）、その基本リンクにデータを転送する（ステップＳ２６）。また、最適経路がショートカットリンクの場合は（ステップＳ２４：Ｙｅｓ）、そのリンクの稼働状態を確認する。対象のショートカットリンクが稼働中であれば（ステップＳ２５：Ｙｅｓ）、そのリンクにデータを転送する（ステップＳ２６）。一方、最適経路としてのショートカットリンクが現時点で非稼働の場合は（ステップＳ２５：Ｎｏ）、そのリンクに代えて、迂回経路の基本リンクにデータを転送する（ステップＳ２７）。
【００５７】
図１３を参照して、上記のノード間のデータ転送について具体例を挙げる。本例では、前述した図１０のＮｏＣトポロジー１０１０において、ノード７０５からノード７００にデータを転送することを想定する。アドレステーブル８０５は、ノード７０５のアドレステーブルにおけるノード７００のエントリを表現したものである。ここでは、ノード７０５からノード７００への転送に関し、最適経路のショートカットリンク４０１と、迂回経路の基本リンク５０５との組み合わせが設定されている。
【００５８】
同様に、アドレステーブル８０４はノード７０４からノード７００への転送経路に関するエントリであり、アドレステーブル８０２はノード７０２からノード７００への転送経路に関するエントリであり、アドレステーブル８０１はノード７０１からノード７００への転送経路に関するエントリである。
【００５９】
ノード７０５は、データ転送を行うとき、最適経路としてのショートカットリンク４０１の稼働状態を確認する。現時点でショートカットリンク４０１が非稼働の場合、データは、迂回経路の基本リンク５０５を通じてノード７０４へ転送される。ノード７０４のアドレステーブル８０４によれば、最適経路の出力リンクは、常時稼働の基本リンク５０４である。よって、ノード７０４は、リンクの稼働状態を確認することなく、データを基本リンク５０４に出力する。その後、データは、ノード７０１から基本リンク５０３を通じて宛先のノード７００へ届けられる。
【００６０】
一方、ショートカットリンク４０１が稼働中の場合、ノード７０５は、データをノード７０２へ転送する。ノード７０２は、最適経路としてのショートカットリンク４０２の稼働状態を確認し、稼働中であれば、このリンク４０２を通じて宛先のノード７００へデータを転送する。ショートカットリンク４０２が非稼働の場合、データは、ノード７０２から迂回経路の基本リンク５０２を通じてノード７０１へ転送された後、基本リンク５０３を通じて宛先のノード７００へ届けられる。
【００６１】
以上説明したように、集積回路１０００の各ノードは、基本リンクの稼働中はショートカットリンクが間欠稼働するよう電力制御する。よって、ショートカットリンクの停止期間は電力消費を抑制できる。また、集積回路１０００のＮｏＣトポロジー（１０１０）は、ノードの多重化が不要であり、この点も省電力に寄与する。デッドロックに関し、基本リンクとショートカットリンクとが混在する経路や、ショートカットリンクのみの経路については、それぞれにデッドロック回避のルーティングが適用される。一方で、全域木構造の基本ネットワークに沿った経路では、元来、デッドロックは発生しない。
【００６２】
かかるＮｏＣトポロジーは、集積回路１０００に設けられているリンクを、全域木構造の基本ネットワークを結ぶ基本リンクと、それ以外のショートカットリンクとに分類することで実現される。この分類は、あらゆる網構成に適用できることから、集積回路の網構成に柔軟に対処できる。
【００６３】
したがって、本実施形態によれば、ＮｏＣの集積回路１０００において、省電力およびデッドロック回避のための網構成の制限を緩和することができる。
【００６４】
次に、第１の実施形態を一部変更した、第２の実施形態について説明する。第２の実施形態は、ルータにおける経路の記憶構造と経路選択のフローが異なる。
【００６５】
図１４に第２の実施形態におけるルータ１０２ａの構造を示す。第１の実施形態におけるルータ１０２と、第２の実施形態におけるルータ１０２ａの具体的な相違点は、第１の実施形態におけるルータ１０２のアドレステーブル３０１が、最適経路アドレステーブル３０１ａと迂回経路アドレステーブル３０１ｂに置換されている点である。
【００６６】
図１５に最適経路アドレステーブル３０１ａと迂回経路アドレステーブル３０１ｂのデータ構造を示す。最適経路アドレステーブル３０１ａには、ノード７０２を起点とした最適経路が宛先ノード別に格納されている。これに対し、迂回経路アドレステーブル３０１ｂには、ノード７０２を起点とした迂回経路が最適経路別に格納されている。
【００６７】
図１６に示すフローチャートに沿って最適経路および迂回経路の選択手順を述べる。他のノードからデータを受信する、あるいは自ノードの処理モジュールからデータを受信することで転送が発生すると（ステップＳ３１）、そのデータの宛先に対応する最適経路を最適経路アドレステーブル３０１ａから検索する（ステップＳ３２）。
【００６８】
ノードは、上記検索により得られた最適経路がショートカットリンクか否かを判別する。その結果、最適経路が基本リンクである場合は（ステップＳ３３：Ｎｏ）、その基本リンクにデータを転送する（ステップＳ３４）。一方、最適経路がショートカットリンクの場合は（ステップＳ３３：Ｙｅｓ）、そのリンクの稼働状態を確認する。対象のショートカットリンクが稼働中であれば（ステップＳ３５：Ｙｅｓ）、そのリンクにデータを転送する（ステップＳ３４）。
【００６９】
一方、最適経路としてのショートカットリンクが現時点で非稼働の場合は（ステップＳ３５：Ｎｏ）、検索された最適経路に対応する迂回経路が迂回経路アドレステーブル３０１ｂから検索される（ステップＳ３６）。そして、検索された迂回経路の基本リンクにデータを転送する（ステップＳ３７）。
【００７０】
第２の実施形態は、第１の実施形態と比較して最短経路の記憶容量を小さくできるという効果を奏する。これは、第１及び第２の実施形態において、ノードの数よりもルータの入出力数の方が少なく、記憶する迂回経路の数が少ないためである。そして、第２の実施形態は、記憶容量の小型化に伴い、ルータの面積や動作時の消費電力を削減できるという効果も奏する。
【００７１】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００７２】
（付記１）  処理モジュールおよび該処理モジュールにデータを入出力するスイッチ回路がそれぞれに含まれる複数のノードと、当該複数のノード間を接続する複数のリンクとを備え、
前記複数のリンクは、前記複数のノードを用いた全域木構造の基本ネットワークを結ぶ基本リンク群と、当該基本リンク群以外のショートカットリンクとから成り、
前記各スイッチ回路は、
前記基本リンクを稼働させる間に前記ショートカットリンクを間欠的に稼働させる電源制御回路と、
前記基本リンクから前記ショートカットリンクへのデータ転送を禁止し、且つ前記ショートカットリンクから前記基本リンクへのデータ転送を許可する第１のルーティングアルゴリズムと、前記ショートカットリンク間のデータ転送の際に当該データ転送に関与する各ノードの特性を用いてルーティングを行う第２のルーティングアルゴリズムとに基づく最小コストの経路と、前記基本ネットワークに沿った経路とを選択的に用いてデータ転送を行う転送制御部とを有することを特徴とする集積回路。
【００７３】
（付記２）  前記転送制御部は、前記データ転送を行うときに当該データの宛先に対応する前記最小コストの経路の稼働状態を検知し、当該最小コストの経路が稼働中の場合は該最小コストの経路にデータを出力し、当該最小コストの経路が非稼働の場合は前記宛先に対応する前記基本ネットワークに沿った経路にデータを出力することを特徴とする付記１記載の集積回路。
【００７４】
（付記３）  前記複数のノードのそれぞれは、前記基本ネットワークの全域木構造に従って根ノードから降順に設定される優先度を持ち、
前記転送制御部は、ノードの優先度を用いるｕｐ＊／ｄｏｗｎ＊ルーティングアルゴリズムが前記第２のルーティングアルゴリズムに適用された前記最小コストの経路および前記基本ネットワークに沿った経路を宛先別に記述したアドレステーブルと、データ転送の宛先に応じて前記アドレステーブルから前記最小コストの経路または前記基本ネットワークに沿った経路を選択する経路選択回路とを有することを特徴とする付記１又は２記載の集積回路。
【００７５】
（付記４）  前記複数のノードのそれぞれは、前記基本ネットワークの全域木構造に従って根ノードから降順に設定される優先度を持ち、
前記転送制御部は、ノードの優先度を用いるｕｐ＊／ｄｏｗｎ＊ルーティングアルゴリズムが前記第２のルーティングアルゴリズムに適用された前記最小コストの経路および前記基本ネットワークに沿った経路を宛先別に記述したアドレステーブルと、データ転送の宛先に応じて前記最小コストの経路の選択を試み、当該最小コストの経路が稼働中である場合は当該最小コストの経路を選択し、当該最小コストの経路が非稼働である場合は最小コストの経路別に記述した別のアドレステーブルから、前記基本ネットワークに沿った経路を選択する経路選択回路とを有することを特徴とする付記１又は２記載の集積回路。
【００７６】
（付記５）  前記最小コストの経路のコストは、データ転送の起点から宛先までに経由するノードの数であることを特徴とする付記１乃至４の何れか１項に記載の集積回路。
【００７７】
（付記６）  処理モジュールおよび該処理モジュールにデータを入出力するスイッチ回路がそれぞれに含まれる複数のノードと、当該複数のノード間を接続する複数のリンクとを備える集積回路のデータ転送方法であって、
前記複数のノードを用いた全域木構造の基本ネットワークを結ぶ基本リンク群と、当該基本リンク群以外のショートカットリンクとを前記複数のリンクから決定し、
前記基本リンクを稼働させる間に前記ショートカットリンクを間欠的に稼働させ、
前記基本リンクから前記ショートカットリンクへのデータ転送を禁止し、且つ前記ショートカットリンクから前記基本リンクへのデータ転送を許可する第１のルーティングアルゴリズムと、前記ショートカットリンク間のデータ転送の際に当該データ転送に関与する各ノードの特性を用いてルーティングを行う第２のルーティングアルゴリズムとに基づく最小コストの経路と、前記基本ネットワークに沿った経路とを選択的に用いてデータ転送を行うことを特徴とするデータ転送方法。
【００７８】
（付記７）  前記データ転送を行うとき、当該データの宛先に対応する前記最小コストの経路の稼働状態を検知し、当該最小コストの経路が稼働中の場合は該最小コストの経路にデータを出力し、当該最小コストの経路が非稼働の場合は前記宛先に対応する前記基本ネットワークに沿った経路にデータを出力することを特徴とする付記６記載のデータ転送方法。
【００７９】
（付記８）  前記基本リンク群を決定するとき、前記複数のノードのそれぞれに、前記基本ネットワークの全域木構造に従って根ノードから降順に優先度を設定し、
前記データ転送を行うとき、ノードの優先度を用いるｕｐ＊／ｄｏｗｎ＊ルーティングアルゴリズムが前記第２のルーティングアルゴリズムに適用された前記最小コストの経路および前記基本ネットワークに沿った経路を宛先別に記述したアドレステーブルから、データ転送の宛先に応じて前記最小コストの経路または前記基本ネットワークに沿った経路を選択することを特徴とする付記６又は７記載のデータ転送方法。
【００８０】
（付記９）  前記基本リンク群を決定するとき、前記複数のノードのそれぞれに、前記基本ネットワークの全域木構造に従って根ノードから降順に優先度を設定し、
前記データ転送を行うとき、ノードの優先度を用いるｕｐ＊／ｄｏｗｎ＊ルーティングアルゴリズムが前記第２のルーティングアルゴリズムに適用された前記最小コストの経路および前記基本ネットワークに沿った経路を宛先別に記述したアドレステーブルから、データ転送の宛先に応じて前記最小コストの経路の選択を試み、当該最小コストの経路が稼働中である場合は当該最小コストの経路を選択し、当該最小コストの経路が非稼働である場合は最小コストの経路別に記述した別のアドレステーブルから、前記基本ネットワークに沿った経路を選択することを特徴とする付記６又は７記載のデータ転送方法。
【００８１】
（付記１０）  前記最小コストの経路のコストは、データ転送の起点から宛先までに経由するノードの数であることを特徴とする付記６乃至９の何れか１項に記載のデータ転送方法。
【産業上の利用可能性】
【００８２】
本発明は、集積回路チップ内のネットワークに限らず、例えば、チップ間のネットワークや計算機ネットワークなどへの適用も可能である。
【符号の説明】
【００８３】
１０００  集積回路
１０１０  ＮｏＣトポロジー
１０１０ａ，  １０２０ａ  基本ネットワーク
１００−１０６  ルータ
３００  経路選択回路
３０１  アドレステーブル
３０１ａ  最適経路テーブル
３０１ｂ  迂回経路テーブル
３０２  調停回路
３０３  電源制御回路
３０４  バッファ
３０５  アイソレータ
３０６  クロスバー
４００−４０５，  ５００−５０５  リンク
６００−６０６  処理モジュール
７００−７０６  ノード
【図１】
0005534444.tif 000002
【図２】
0005534444.tif 000003
【図３】
0005534444.tif 000004
【図４】
0005534444.tif 000005
【図５】
0005534444.tif 000006
【図６】
0005534444.tif 000007
【図７】
0005534444.tif 000008
【図８】
0005534444.tif 000009
【図９】
0005534444.tif 000010
【図１０】
0005534444.tif 000011
【図１１】
0005534444.tif 000012
【図１２】
0005534444.tif 000013
【図１３】
0005534444.tif 000014
【図１４】
0005534444.tif 000015
【図１５】
0005534444.tif 000016
【図１６】
0005534444.tif 000017
【図１７】
0005534444.tif 000018
【図１８】
0005534444.tif 000019
【図１９】
0005534444.tif 000020