(57)【要約】【課題】複数の通信ノードから構成される通信ネットワークを、これまでより効率よく構成する。【解決手段】複数の通信ノードと、複数の通信ノードのそれぞれを、３次元の直方体をなす格子空間の予め定められた格子点に配置した場合において、隣接する格子点に配置される通信ノードを相互に接続する通信リンクと、隣接する何れかの格子点に通信ノードが配置されていない通信ノードにより構成される面のうち、格子空間の端面ではない少なくとも２つの面について、一方の面を構成する信ノードと、他方の面を構成する通信ノードとを接続するショートカットリンクとを備える通信システム。【選択図】図２
2007156850.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信ノードと、
前記複数の通信ノードのそれぞれを、３次元の直方体をなす格子空間の予め定められた格子点に配置した場合において、隣接する格子点に配置される通信ノードを相互に接続する通信リンクと、
隣接する何れかの格子点に通信ノードが配置されていない通信ノードにより構成される面のうち、前記格子空間の端面ではない少なくとも２つの面について、一方の面を構成する通信ノードと、他方の面を構成する通信ノードとを接続するショートカットリンクと
を備える通信システム。
【請求項２】
前記ショートカットリンクは、前記少なくとも２つの面を相対させた場合に隣接することとなる通信ノードを互いに接続する、
請求項１に記載の通信システム。
【請求項３】
前記３次元の直方体は、各座標軸上の格子点の数が互いに等しい３次元の立方体である請求項１に記載の通信システム。
【請求項４】
前記格子空間の対向する端面を相対させた場合に隣接することとなる通信ノードを互いに接続するループリンクと、
前記格子空間の第１端面と前記第１端面に対向する第２端面とを相対させた場合に、相対させた相手側の端面に通信ノードが配置されていない第１端面および第２端面の何れかの端面における通信ノードと、前記格子空間の第３端面と前記第３端面に対向する第４端面とを相対させた場合に、相対させた相手側の端面に通信ノードが配置されていない前記第３端面および前記第４端面の何れかの端面における通信ノードとを接続するループリンクと
を更に備える請求項１に記載の通信システム。
【請求項５】
前記複数の通信ノードのそれぞれは、
前記格子空間を分割した予め定められた複数のブロックのそれぞれに対応付けて、当該ブロックに含まれる通信ノードを宛先とする場合に当該通信ノードの座標を変換する変換規則を記憶している記憶部と、
通信パケットに対応付けて、前記通信パケットの宛先として、前記格子空間に宛先の前記通信ノードを配置した場合の座標値であるグローバルアドレスを受信する受信部と、
受信した前記グローバルアドレスが属する前記ブロックに対応する変換規則により前記グローバルアドレスをローカルアドレスに変換し、当該通信ノードから、前記ローカルアドレスに至る通信経路上で当該通信ノードの次に前記通信パケットを転送する転送先の通信ノードを選択する選択部と、
前記通信リンクまたは前記ショートカットリンクを経由して、選択された前記通信ノードに前記通信パケットを送信する送信部と
を有する請求項１に記載の通信システム。
【請求項６】
前記通信リンクは、前記複数の通信ノードのそれぞれを、前記格子空間のうち正方形をなす格子平面の予め定められた格子点に配置した場合において、隣接する格子点に配置される通信ノードを相互に接続し、
前記ショートカットリンクは、隣接する何れかの格子点に通信ノードが配置されていない通信ノードにより構成される前記格子平面内の少なくとも２つの線分について、一方の線分を構成するそれぞれの通信ノードと、他方の線分を構成するそれぞれの通信ノードとを接続する、
請求項１に記載の通信システム。
【請求項７】
複数の通信ノードと、
前記複数の通信ノードのそれぞれを、複数の端面に囲まれた多次元の格子空間の予め定められた格子点に配置した場合において、隣接する格子点に配置される通信ノードを相互に接続する通信リンクと、
隣接する何れかの格子点に通信ノードが配置されていない通信ノードにより構成される面のうち、前記格子空間の端面ではない少なくとも２つの面について、一方の面を構成する通信ノードと、他方の面を構成する通信ノードとを接続するショートカットリンクと
を備える通信システム。
【請求項８】
通信システムにより通信ノードを接続するサービスを提供する方法であって、
複数の通信ノードを配置するステップと、
前記複数の通信ノードのそれぞれを、３次元の直方体をなす格子空間の予め定められた格子点に配置した場合において、隣接する格子点に配置される通信ノードを相互に接続するステップと、
隣接する何れかの格子点に他の通信ノードが配置されていない通信ノードにより構成される面のうち、前記格子空間の端面ではない少なくとも２つの面について、一方の面を構成する通信ノードと、他方の面を構成する通信ノードとを接続するステップと
を備える方法。
【請求項９】
通信システムにおける通信方法であって、
前記通信システムは、
複数の通信ノードと、
前記複数の通信ノードのそれぞれを、３次元の直方体をなす格子空間の予め定められた格子点に配置した場合において、隣接する格子点に配置される通信ノードを相互に接続する通信リンクと、
隣接する何れかの格子点に通信ノードが配置されていない通信ノードにより構成される面のうち、前記格子空間の端面ではない少なくとも２つの面について、一方の面を構成する通信ノードと、他方の面を構成する通信ノードとを接続するショートカットリンクと
を有し、
それぞれの前記通信ノードにおいて、
前記格子空間を分割した予め定められた複数のブロックのそれぞれに対応付けて、当該ブロックに含まれる通信ノードを宛先とする場合に当該通信ノードの座標を変換する変換規則を予め記憶するステップと、
通信パケットに対応付けて、前記通信パケットの宛先として、前記格子空間に宛先の前記通信ノードを配置した場合の座標値であるグローバルアドレスを受信するステップと、
受信した前記グローバルアドレスが属する前記ブロックに対応する変換規則により前記グローバルアドレスをローカルアドレスに変換し、当該通信ノードから、前記ローカルアドレスに至る通信経路上で当該通信ノードの次に前記通信パケットを転送する転送先の通信ノードを選択するステップと、
前記通信リンクまたは前記ショートカットリンクを経由して、選択された前記通信ノードに前記通信パケットを送信するステップと
を備える方法。
【請求項１０】
複数の通信ノードと、
前記複数の通信ノードのそれぞれを、３次元の直方体をなす格子空間の予め定められた格子点に配置した場合において、隣接する格子点に配置される通信ノードを相互に接続する通信リンクと、
隣接する何れかの格子点に通信ノードが配置されていない通信ノードにより構成される面のうち、前記格子空間の端面ではない少なくとも２つの面について、一方の面を構成する通信ノードと、他方の面を構成する通信ノードとを接続するショートカットリンクと
を有する通信システムにおいて、複数の情報処理装置のそれぞれを、前記複数の通信ノードのそれぞれとして機能させるプログラムであって、
前記複数の情報処理装置のそれぞれを、
前記格子空間を分割した予め定められた複数のブロックのそれぞれに対応付けて、当該ブロックに含まれる通信ノードを宛先とする場合に当該通信ノードの座標を変換する変換規則を記憶している記憶部と、
通信パケットに対応付けて、前記通信パケットの宛先として、前記格子空間に宛先の前記通信ノードを配置した場合の座標値であるグローバルアドレスを受信する受信部と、
受信した前記グローバルアドレスが属する前記ブロックに対応する変換規則により前記グローバルアドレスをローカルアドレスに変換し、当該通信ノードから、前記ローカルアドレスに至る通信経路上で当該通信ノードの次に前記通信パケットを転送する転送先の通信ノードを選択する選択部と、
前記通信リンクまたは前記ショートカットリンクを経由して、選択された前記通信ノードに前記通信パケットを送信する送信部と
して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムに関する。特に、本発明は、複数の通信ノードの相互通信を制御する通信システムに関する。
【背景技術】
【０００２】
従来、大規模な並列計算システムにおいて、トーラス・ネットワークが用いられている。トーラス・ネットワークは、ある立体形状をなす格子空間の各格子点に通信ノードを配置した場合において互いに隣接して配置される通信ノードを接続し、更に、その立体の対向する端面上の通信ノードを互いに接続した通信ネットワークをいう。従来、トーラス・ネットワークは、多次元正方体の格子空間に構成した時に最も効率が高いことが知られている。即ち、２次元トーラスであれば正方形、３次元トーラスであれば立方体に構成することが最も望ましい。
現時点で先行公知文献の存在を把握していないので、その記載を省略する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
通信ネットワークを多次元正方体の格子空間に構成するためには、通信ノードの数が予め定められた数に限定される。即ち、通信ノードの数は、３次元であれば６４ノード（４×４×４）、または、５１２ノード（８×８×８）などである。しかしながら、製品設計上の都合や、予算や設置面積の都合によっては、このような望ましい数の通信ノードを揃えて準備することはできない。このため、通信ノードを多次元正方体の格子空間に配置した場合と比較して、通信スループットが低下したり、通信リンクの使用率が低下して費用対効果が低下する場合があった。
【０００４】
そこで本発明は、上記の課題を解決することのできる通信システム、通信方法およびプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明においては、複数の通信ノードと、複数の通信ノードのそれぞれを、３次元の直方体をなす格子空間の予め定められた格子点に配置した場合において、隣接する格子点に配置される通信ノードを相互に接続する通信リンクと、隣接する何れかの格子点に通信ノードが配置されていない通信ノードにより構成される面のうち、格子空間の端面ではない少なくとも２つの面について、一方の面を構成する通信ノードと、他方の面を構成する通信ノードとを接続するショートカットリンクとを備える通信システムを提供する。
【０００６】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【０００７】
本発明によれば、複数の通信ノードから構成される通信ネットワークを、これまでより効率よく構成することができる。
【発明を実施するための最良の形態】
【０００８】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【０００９】
図１は、通信システム１０および情報処理装置２０の全体構成を示す。通信システム１０は、複数の通信ノード（後述の例では通信ノード１００−１〜１２）を有する。そして、通信システム１０は、複数の通信ノードのそれぞれにおいて、例えば数値計算等のためのプログラムを実行させている。情報処理装置２０は、通信システム１０中の各通信ノードに対し、プログラムの実行要求を送信する。この実行要求には、実行すべき処理内容のみならず、他の何れの通信ノードから受け取った実行結果を用いてプログラムを実行するか、または、実行結果を他の何れの通信ノードに対して実行するか等の指示が含まれる。即ち、通信システム１０は、情報処理装置２０からの要求に応じてプログラムを並列実行して、その実行結果を情報処理装置２０に返信する。これにより、単一の通信ノードによってプログラムを実行するよりも極めて効率的にプログラムを実行することができる。
【００１０】
図２は、通信システム１０の構成を示す。通信システム１０は、通信ノード１００−１〜１２と、通信リンク１１０−１〜１６と、ループリンク１２０−１〜６と、ショートカットリンク１３０−１〜２とを有する。通信ノード１００−１〜１２のそれぞれは、他のそれぞれの通信ノードと並列にプログラムを実行する。通信ノード１００−１〜１２のそれぞれは、典型的には、プロセッサ（ＣＰＵ、ＭＰＵまたは中央処理装置）である。これに代えて、通信ノード１００−１〜１２のそれぞれは、ハードディスクドライブなどの記憶装置であってもよいし、各種のセンサーであってもよい。
【００１１】
通信リンク１１０−１〜１６のそれぞれは、通信ノード１００−１〜１２のそれぞれを、複数の端面に囲まれた多次元の格子空間の予め定められた格子点に配置した場合において、隣接する格子点に配置される通信ノードを相互に接続する。更に具体的には、この格子平面は、４格子×４格子の正方形であり、通信リンク１１０−１〜１６のそれぞれは、通信ノード１００−１〜１２のそれぞれを、合計１６個の格子点のうち１２個の格子点のそれぞれに仮想的に配置した場合について、互いに隣接する格子点に配置された通信ノードを相互に接続する。なお、本発明に係る格子空間は、図２の格子平面に限定されるものではなく、複数の端面によって囲まれた空間、または、複数の線分によって囲まれた平面であればよい。例えば、格子空間は、２次元の長方形をなす格子平面でもよいし、３次元の直方体をなす格子空間でもよいし、３次元の立方体をなす格子空間でもよい。
【００１２】
通信ノード１００−１〜１２のそれぞれは、ｘ座標が３または４、かつ、ｙ座標が３または４とする４つの格子点（格子点１５０−１〜４）を除いたそれぞれの格子点に配置される。そして、通信リンク１１０−１は、互いに隣接する格子点に配置される通信ノード１００−１および通信ノード１００−２を相互に接続する。通信リンク１１０−２は、互いに隣接する格子点に配置される通信ノード１００−１および通信ノード１００−３を相互に接続する。以降同様に、通信リンク１１０−３〜１６のそれぞれは、２つの通信ノードを１対１に接続する。
【００１３】
ループリンク１２０−１〜４のそれぞれは、格子空間の対向する端面を相対させた場合に隣接することとなる通信ノードを互いに接続する。本図の例においてより具体的には、ループリンク１２０−１〜４のそれぞれは、正方形の対向する辺を相対させた場合に隣接することとなる通信ノードを互いに接続する。即ち、ループリンク１２０−１は、通信ノード１００−１および通信ノード１００−９を接続し、ループリンク１２０−２は、通信ノード１００−２および通信ノード１００−１０を接続する。また、ループリンク１２０−３は、通信ノード１００−５および通信ノード１００−８を接続し、ループリンク１２０−４は、通信ノード１００−９および通信ノード１００−１２を接続する。
【００１４】
ループリンク１２０−５〜６のそれぞれは、通信ノード１００−１および通信ノード１００−３のそれぞれを、通信ノード１００−１１および通信ノード１００−１２のそれぞれに接続する。通信ノード１００−１および通信ノード１００−３は、格子空間の第１端面と第１端面に対向する第２端面とを相対させた場合に、相対させた相手側の端面に通信ノードが配置されていない当該第１端面および当該第２端面の何れかにおける通信ノードである。また、通信ノード１００−１１および通信ノード１００−１２は、格子空間の第３端面と第３端面に対向する第４端面とを相対させた場合に、相対させた相手側の端面に通信ノードが配置されていない当該第３端面および当該第４端面の何れかにおける通信ノードである。
【００１５】
ショートカットリンク１３０−１およびショートカットリンク１３０−２のそれぞれは、通信ノード１００−２および通信ノード１００−４により構成される面、および、通信ノード１００−７および通信ノード１００−８により構成される面について、一方の面を構成するそれぞれの通信ノードと、他方の面を構成するそれぞれの通信ノードとを接続する。なお、本図の例の場合、２次元の格子平面を用いるのであるから、通信ノード１００−２および通信ノード１００−４により構成される面とは、通信ノード１００−２および通信ノード１００−４により構成される線分を意味する。また、通信ノード１００−７および通信ノード１００−８により構成される面とは、通信ノード１００−７および通信ノード１００−８により構成される線分を意味する。
【００１６】
また、ショートカットリンク１３０−１およびショートカットリンク１３０−２のそれぞれは、これら２つの線分を相対させた場合に隣接することとなる通信ノードを接続する。即ちショートカットリンク１３０−１は、通信ノード１００−２を通信ノード１００−８に接続し、ショートカットリンク１３０−２は、通信ノード１００−４を通信ノード１００−７に接続する。これらの線分は、隣接する何れかの格子点に通信ノードが配置されていない通信ノードにより構成される。即ち例えば、通信ノード１００−２を中心としてｘ座標の正の方向に隣接する格子点には通信ノードが配置されていない。また、通信ノード１００−４を中心としてｘ座標の正の方向に隣接する格子点には通信ノードが配置されていない。このため、通信ノード１００−２および通信ノード１００−４は、この線分を構成する。また、通信ノード１００−７を中心としてｙ座標の正の方向に隣接する格子点には通信ノードが配置されていない。また、通信ノード１００−８を中心としてｙ座標の正の方向に隣接する格子点には通信ノードが配置されていない。このため、通信ノード１００−７および通信ノード１００−８は、この線分を構成する。
【００１７】
以上の構成によれば、通信リンク、ショートカットリンク、および／または、ループリンクにより構成される、リング状の通信回線は、何れも、４つの通信ノードを経由することとなる。これにより、各通信ノードによる通信量が均等であると仮定すれば、何れの通信回線も均等のネットワーク・トラフィックとなる。この結果、正方形や立方体の格子空間の各格子点に配置する充分な通信ノードが準備できない場合であっても、それぞれのリンクに流れるネットワーク・トラフィックを略同一とすることができる。これにより、各リンクの使用率を高め、リンクの数に対する平均スループットを高めることができる。
【００１８】
なお、本図に示す構造は一例であり、通信ノードの接続形態には様々なバリエーションが考えられる。例えば、各通信ノードは、正方形に代えて長方形をなす格子平面の格子点に配置されてもよい。また、本図に示すトーラス状の構造に代えて、各通信ノードは、ループリンクを除外したメッシュ状の通信リンクによって接続されてもよい。このような構成であっても、従来提案されていた接続形態よりも効率的かつ高速な通信を実現することができる。
【００１９】
図３は、通信ノード１００−１の機能構成を示す。なお、通信ノード１００−２〜１２のそれぞれは、通信パケットの受信元および送信先、並びに、記憶部３００の内容の他は、通信ノード１００−１と略同一の構成を採るので、以下相違点を除き説明を省略する。通信ノード１００−１は、記憶部３００と、受信部３１０と、選択部３２０と、送信部３３０とを有する。記憶部３００は、通信ノード１００−１から、通信リンク１１０−１〜１６、ループリンク１２０−１〜６、および／または、ショートカットリンク１３０−１〜２を経由して、他のそれぞれの通信ノードに至る通信経路のトポロジーを示す情報を記憶している。更に詳細な例を図４に示す。
【００２０】
図４は、記憶部３００のデータ構造の一例を示す。記憶部３００は、格子空間を分割した予め定められた複数のブロックのそれぞれに対応付けて、そのブロックに含まれる通信ノードを宛先とする場合にその通信ノードを変換する変換規則を記憶している。本図の例において、記憶部３００は、各ブロックを示す情報として、宛先ノードの座標のレンジを記憶している。即ち例えば、ｘ座標を１から２、かつ、ｙ座標を３から４とする通信ノードの集合が、１つのブロックを意味する。また、本図の例において、記憶部３００は、変換規則として座標の変換式を記憶している。この変換式において、ｘおよびｙは変換前の座標を示し、ｘ'およびｙ'は変換後の座標を示す。変換前の座標は、情報処理装置２０その他の外部のアプリケーションプログラムによって指定される座標であるので、この座標をグローバルアドレスと呼ぶ。また、変換後の座標は、変換によって通信ノード１００−１により一時的に用いられる座標であるので、この座標をローカルアドレスと呼ぶ。
【００２１】
具体例として、ｘ座標を１から２、かつ、ｙ座標を３から４とする通信ノードを宛先とする場合には、ｘ座標およびｙ座標は変換されない。また、ｘ座標を１から２、かつ、ｙ座標を１から２とする通信ノードを宛先とする場合には、ｘ座標およびｙ座標は変換されない。一方で、ｘ座標を３から４、かつ、ｙ座標を１から２とする通信ノードを宛先とする場合には、ｙ座標は元のｘ座標と同じ値に変換され、ｘ座標は元のｙ座標を整数５から減じた値に変換される。
【００２２】
なお、本図の構造は一例であり、記憶部３００のデータ構造には様々なバリエーションが考えられる。例えば、記憶部３００は、変換が必要な座標についてのみ変換規則を記憶していてもよい。即ち、記憶部３００は、図４の３行目にあたる、ｘ座標を３から４とし、ｙ座標を１から２とする座標についてのみ変換規則を記憶していてもよい。この場合、後述する受信部３１０は、この座標についてのみ変換規則を適用し、その他の座標については変換規則を適用しない。更に他の例として、記憶部３００は、各座標を１対１に変換する変換テーブルを記憶していてもよい。
【００２３】
図３に戻る。受信部３１０は、通信パケットを通信パケットの宛先に対応付けて受信する。受信部３１０は、通信パケットの宛先として、格子空間に宛先の通信ノードを配置した場合の座標値であるグローバルアドレスを受信する。即ち例えば、宛先が通信ノード１００−５であれば、受信部３１０は、座標（１，２）をグローバルアドレスとして受信する。なお、受信部３１０は、他の通信ノード（例えば、通信ノード１００−２、−３、−９、１２）から通信パケットを受信してもよいし、情報処理装置２０などの外部の装置から通信パケットを受信してもよい。選択部３２０は、記憶部３００に記憶されている情報に基づいて、受信した宛先に至る通信経路上で通信ノード１００−１の次に通信パケットを転送する転送先の通信ノードを選択する。具体的には、選択部３２０は、受信したグローバルアドレスが属するブロックに対応する変換規則によりグローバルアドレスをローカルアドレスに変換する。そして、選択部３２０は、通信ノード１００−１から、ローカルアドレスに至る通信経路上で通信ノード１００−１の次に通信パケットを転送する転送先の通信ノードを選択する。
【００２４】
具体例として、宛先が通信ノード１００−８である場合において、選択部３２０は、グローバルアドレス（４，２）を、ローカルアドレス（３，４）に変換する。そして、選択部３２０は、通信ノード１００−１の座標である（１，４）からローカルアドレス（３，４）に至る通信経路上で通信ノード１００−１の次に通信パケットを転送する転送先の通信ノードとして、通信ノード１００−２を選択する。通信ノード１００−１から通信ノード１００−８に通信パケットを送信するには、通信ノード１００−１、通信ノード１００−２、および、通信ノード１００−８によって通信パケットを順次転送するのが最短経路となるからである。トーラス・ネットワークにおいて送信元と宛先とが与えられた場合に通信経路を特定する技術は、従来公知であるので説明を省略する。
【００２５】
送信部３３０は、通信リンク、ショートカットリンク、または、ループリンクを経由して、選択部３２０により選択された通信ノードに通信パケットを送信する。
【００２６】
図５は、通信ノード１００−１によって通信パケットが転送される処理の流れを示す。受信部３１０は、通信パケットを通信パケットの宛先に対応付けて受信する（Ｓ５００）。受信部３１０は、通信パケットの宛先として、格子空間に宛先の通信ノードを配置した場合の座標値であるグローバルアドレスを受信してもよい。選択部３２０は、受信したグローバルアドレスが属するブロックを選択する（Ｓ５１０）。そして、選択部３２０は、そのブロックに対応する変換規則によりグローバルアドレスをローカルアドレスに変換する（Ｓ５２０）。この変換規則の適用は、図４で例示したように、例えば、一次関数による単純な計算によって実現される。即ち、この部分のオーバヘッドは、無視できる程度に極めて小さい。次に、選択部３２０は、通信ノード１００−１から、そのローカルアドレスに至る通信経路上で通信ノード１００−１の次に通信パケットを転送する転送先の通信ノードを選択する（Ｓ５３０）。そして、送信部３３０は、選択部３２０により選択された通信ノードに通信パケットを送信する（Ｓ５４０）。
【００２７】
図６は、グローバルアドレスをローカルアドレスに変換する変換規則の概念図を示す。（ａ）は、通信ノード１００−１〜４の記憶部３００に記憶された変換規則の概念図を示し、（ｂ）は、通信ノード１００−５〜６および通信ノード１００−９〜１０に記憶された変換規則の概念図を示し、（ｃ）は、通信ノード１００−７〜８および通信ノード１００−１１〜１２に記憶された変換規則の概念図を示す。これらの図において、自然数のＮは、通信ノード１００−Ｎを示す。即ち、数字の１は通信ノード１００−１を示し、数字の２は通信ノード１００−２を示し、数字の３以降も同様である。
【００２８】
詳細には、通信ノード１００−１〜４がある通信ノードを宛先とする通信パケットを受信した場合において、選択部３２０は、宛先であるその通信ノードのグローバルアドレスを、図６（ａ）に図示するローカルアドレスに変換する。同様に、通信ノード１００−５〜６または通信ノード１００−９〜１０が、ある通信ノードを宛先とする通信パケットを受信した場合において、選択部３２０は、宛先であるその通信ノードのグローバルアドレスを、図６（ｂ）に図示するローカルアドレスに変換する。実際には、図６（ｂ）に示すローカルアドレスは、図２に示すグローバルアドレスと同一であるから、通信ノード１００−５〜６および通信ノード１００−９〜１０において変換は行われない。同様に、通信ノード１００−７〜８または通信ノード１００−１１〜１２がある通信ノードを宛先とする通信パケットを受信した場合において、選択部３２０は、宛先であるその通信ノードのグローバルアドレスを、図６（ｃ）に図示するローカルアドレスに変換する。
【００２９】
本図を用いて、通信パケットが通信ノードにより順次転送されて宛先に到達する処理の一例を説明する。この例において、通信ノード１００−１が通信ノード１００−７を宛先として通信パケットを送信するものとする。宛先である通信ノード１００−７について、グローバルアドレスは図２に図示したように（ｘ，ｙ）＝（３，２）である。まず、通信ノード１００−１の選択部３２０は、このグローバルアドレスを、図６（ａ）に示すローカルアドレスである（ｘ、ｙ）＝（３，３）に変換する。
【００３０】
選択部３２０は、通信ノード１００−１からそのローカルアドレス（３，３）に向かう通信経路上で、通信ノード１００−１の次に通信パケットを転送する通信ノードを選択する。具体的な処理としては、例えば、選択部３２０は、通信ノード１００−１のグローバルアドレス（１，４）に対する、通信ノード１００−７のローカルアドレス（３，３）の差分値を算出する。即ち、差分値（Δｘ，Δｙ）＝（２，−１）となる。
【００３１】
通信ノード１００−１が通信パケットを転送する転送先は、ｘ座標およびｙ座標のそれぞれの正負の方向に位置する通信ノード、すなわち、通信ノード１００−９、−１２、−２、−３の４つである。選択部３２０は、これらの通信ノードのうち、この差分値の絶対値を減少させる方向の通信ノードを選択する。例えば、ｘ座標の差分値を減少させるために、選択部３２０は、ｘ軸方向の正の方向に位置する通信ノード１００−２を転送先として選択する。これに代えて、選択部３２０は、ｙ軸方向の負の方向に位置する通信ノード１００−３を転送先として選択してもよい。そして、送信部３３０は、選択された通信ノード１００−２に対して通信パケットを送信する。
【００３２】
通信パケットを受信した通信ノード１００−２は、通信ノード１００−２のグローバルアドレスである（２，４）と、通信ノード１００−７のローカルアドレスである（３，３）との差分値を算出する。即ち、差分値（Δｘ，Δｙ）＝（１，−１）となる。選択部３２０は、ｘ座標およびｙ座標のそれぞれの正負の方向に位置する通信ノードのうち、この差分値の絶対値を減少させる方向の通信ノードを選択する。例えば、ｙ座標の差分値を減少させるために、選択部３２０は、ｙ軸方向の負の方向に位置する通信ノード１００−４を転送先として選択する。そして、送信部３３０は、選択された通信ノード１００−４に対して通信パケットを送信する。
【００３３】
通信パケットを受信した通信ノード１００−４は、通信ノード１００−４のグローバルアドレスである（２，３）と、通信ノード１００−７のローカルアドレスである（３，３）との差分値を算出する。即ち、差分値（Δｘ，Δｙ）＝（１，０）となる。選択部３２０は、ｘ座標およびｙ座標のそれぞれの正負の方向に位置する通信ノードのうち、この差分値の絶対値を減少させる方向の通信ノードを選択する。例えば、ｘ座標の差分値を減少させるために、選択部３２０は、ｘ軸方向の正の方向に位置する通信ノード１００−７を選択する。そして、送信部３３０は、ｘ軸方向の正の向きに接続されたショートカットリンク１３０−２を経由して、選択された通信ノード１００−７に対して通信パケットを送信する。
【００３４】
以上、図６において説明したように、各通信ノードの記憶部３００は、格子空間を分割した予め定められた複数のブロックのそれぞれに対応付けて、当該ブロックに含まれる通信ノードを宛先とする場合に当該通信ノードの座標を変換する変換規則を記憶している。それぞれの通信ノードは、この変換規則によって、通信パケットを最短経路で到達させるために次に転送するべき通信ノードを適切に選択することができる。
【００３５】
図７は、本実施例の変形例である通信システム４０の構成を示す。この変形例に示す通信システム４０は、３次元トーラスを構成する。図８は、変形例において通信ノード４００−１〜４が配置される格子空間を示す。通信システム４０は、通信ノード４００−１〜４と、通信リンク４１０−１〜３と、ループリンク４２０−１〜３と、ショートカットリンク４３０−１〜３と、ループリンク４４０−１〜３と、ループリンク４４０−１〜３とを有する。通信ノード４００−１〜４のそれぞれは、他の通信ノードと相互に通信する。通信リンク４１０−１〜３のそれぞれは、通信ノード４００−１〜４のそれぞれを、立方体をなす格子空間の予め定められた格子点に配置した場合において、隣接する格子点に配置される通信ノードを相互に接続する。本変形例においては、ループリンク４４０−１は格子点４５０−１に配置され、ループリンク４４０−２は格子点４５０−５に配置され、ループリンク４４０−３は格子点４５０−６に配置され、ループリンク４４０−４は格子点４５０−７に配置されたものと仮定する。なお、格子点４５０−２〜４および格子点４５０−８には通信ノードが配置されていない。
【００３６】
通信リンク４１０−１は、通信ノード４００−１および通信ノード４００−２を接続し、通信リンク４１０−２は、通信ノード４００−２および通信ノード４００−４を接続し、通信リンク４１０−３は、通信ノード４００−２および通信ノード４００−３を接続する。ループリンク４２０−１〜３のそれぞれは、その格子空間の対向する端面を相対させた場合に隣接することとなる通信ノードを互いに接続する。具体的には、ループリンク４２０−１は、通信ノード４００−１および通信ノード４００−２を接続し、ループリンク４２０−２は、通信ノード４００−２および通信ノード４００−３を接続し、ループリンク４２０−３は、通信ノード４００−２および通信ノード４００−４を接続する。
【００３７】
ショートカットリンク４３０−１〜３のそれぞれは、隣接する何れかの格子点に通信ノードが配置されていない通信ノードにより構成される面のうち、その格子空間の端面ではない少なくとも２つの面について、一方の面を構成するそれぞれの通信ノードと、他方の面を構成するそれぞれの通信ノードとを接続する。具体的には、通信ノード４００−１に隣接する格子点４５０−３には通信ノードが配置されていない。また、通信ノード４００−４に隣接する格子点４５０−３には通信ノードが配置されていない。このため、ショートカットリンク４３０−２は、通信ノード４００−１により構成される面と、通信ノード４００−４により構成される面について、一方の面を構成するそれぞれの通信ノード（この場合、通信ノード４００−１のみ）と、他方の面を構成するそれぞれの通信ノード（この場合、通信ノード４００−４のみ）とを接続する。同様に、ショートカットリンク４３０−１は、格子点４５０−２に隣接する通信ノード４００−１および通信ノード４００−４を接続する。また、ショートカットリンク４３０−３は、格子点４５０−８に隣接する通信ノード４００−４および通信ノード４００−３を接続する。
【００３８】
ループリンク４４０−１〜３のそれぞれは、この格子空間の第１端面とその第１端面に対向する第２端面とを相対させた場合に、相対させた相手側の端面に通信ノードが配置されていない第１端面および第２端面の何れかの端面における通信ノードと、その格子空間の第３端面とその第３端面に対向する第４端面とを相対させた場合に、相対させた相手側の端面に通信ノードが配置されていない第３端面および第４端面の何れかの端面における通信ノードとを接続する。例えば、この格子空間の第１端面とその第１端面に対向する第２端面とを相対させた場合に、通信ノード４００−１は、格子点４５０−３と対向することとなり、この格子点４５０−３には通信ノードが配置されない。また、この格子空間の第３端面とその第３端面に対向する第４端面とを相対させた場合に、通信ノード４００−４は、格子点４５０−３と対向することとなり、この格子点４５０−３には通信ノードが配置されない。このため、ループリンク４４０−２は、通信ノード４００−１および通信ノード４００−４を接続する。以降同様に、ループリンク４４０−１は、通信ノード４００−１および通信ノード４００−３を接続し、ループリンク４４０−３は、通信ノード４００−３および通信ノード４００−４を接続する。
【００３９】
以上、本図の３次元構造においても、通信リンク、ショートカットリンク、および／または、ループリンクにより構成される、リング状の通信回線は、何れも、２つの通信ノードを経由することとなる。これにより、各通信ノードによる通信量が均等であると仮定すれば、何れの通信回線も均等のネットワーク・トラフィックとなる。これにより、多次元正方空間の各格子点に配置する充分な通信ノードが準備できない場合であっても、それぞれのリンクに流れるネットワーク・トラフィックを略同一とすることができる。
【００４０】
なお、本図においては、説明の便宜上簡略な構成として、縦・横・高さの各軸に配置される格子点の数を２とする３次元の格子空間について説明したが、各軸に配置される格子点は２つに限定されるものではない。例えば、縦・横・高さの各軸に３つ以上の格子点を配置してもよいし、各軸に配置する格子点の数は異なっていてもよい。また、本図の示す各通信ノードが、更に複数の通信ノードを内部に有していてもよい。例えば、本図の各通信ノードは、４×４×４のメッシュ型ネットワークを構成していてもよい。この場合には、各通信リンクは、各通信ノードの面上に配置された４×４の通信ノードを相互に接続する。このような多様な形態の何れの場合であっても、各通信ノードを他の通信ノードと効率的に通信させ、これまでよりも通信スループットを高めることができる。
【００４１】
また、本変形例において、通信ノード４００−１〜４のそれぞれは、図３に示す通信ノード１００−１と略同一の構成を採る。即ち、通信ノード４００−１〜４のそれぞれは、記憶部３００と、受信部３１０と、選択部３２０と、送信部３３０とを有する。記憶部３００は、図４の例とは異なり、３次元座標空間中のグローバルアドレスを、３次元空間中のローカルアドレスに変換する変換規則を格納している。また、受信部３１０は、通信ノード４００−１〜４のうち隣接して配置される通信ノード、または、ショートカットリンクやループリンクにより接続される通信ノードから通信パケットを受信する。また、選択部３２０は、通信ノード４００−１〜４のうち隣接して配置される通信ノード、または、ショートカットリンクやループリンクにより接続される通信ノードの中から、送信先の通信ノードを選択する。通信ノード４００−１〜４のその他の構成については、図２から図５に示す実施例と略同一であるので説明を省略する。
【００４２】
図９は、情報処理装置２０のハードウェア構成の一例を示す。情報処理装置２０は、ホストコントローラ１０８２により相互に接続されるＣＰＵ１０００、ＲＡＭ１０２０、及びグラフィックコントローラ１０７５を有するＣＰＵ周辺部と、入出力コントローラ１０８４によりホストコントローラ１０８２に接続される通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を有する入出力部と、入出力コントローラ１０８４に接続されるＲＯＭ１０１０、フレキシブルディスクドライブ１０５０、及び入出力チップ１０７０を有するレガシー入出力部とを備える。
【００４３】
ホストコントローラ１０８２は、ＲＡＭ１０２０と、高い転送レートでＲＡＭ１０２０をアクセスするＣＰＵ１０００及びグラフィックコントローラ１０７５とを接続する。ＣＰＵ１０００は、ＲＯＭ１０１０及びＲＡＭ１０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ１０７５は、ＣＰＵ１０００等がＲＡＭ１０２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置１０８０上に表示させる。これに代えて、グラフィックコントローラ１０７５は、ＣＰＵ１０００等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
【００４４】
入出力コントローラ１０８４は、ホストコントローラ１０８２と、比較的高速な入出力装置である通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を接続する。通信インターフェイス１０３０は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ１０４０は、情報処理装置２０が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ１０６０は、ＣＤ−ＲＯＭ１０９５からプログラム又はデータを読み取り、ＲＡＭ１０２０又はハードディスクドライブ１０４０に提供する。
【００４５】
また、入出力コントローラ１０８４には、ＲＯＭ１０１０と、フレキシブルディスクドライブ１０５０や入出力チップ１０７０等の比較的低速な入出力装置とが接続される。ＲＯＭ１０１０は、情報処理装置２０の起動時にＣＰＵ１０００が実行するブートプログラムや、情報処理装置２０のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ１０５０は、フレキシブルディスク１０９０からプログラム又はデータを読み取り、入出力チップ１０７０を介してＲＡＭ１０２０またはハードディスクドライブ１０４０に提供する。入出力チップ１０７０は、フレキシブルディスク１０９０や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【００４６】
情報処理装置２０に提供されるプログラムは、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ１０７０及び/又は入出力コントローラ１０８４を介して、記録媒体から読み出され、通信インターフェイス１０３０を介して通信システム１０または通信システム４０にインストールされて実行される。プログラムが通信システム１０または通信システム４０等に働きかけて行わせる動作は、図１から図８において説明した通信システム１０または通信システム４０における動作と同一であるから、説明を省略する。
【００４７】
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置２０に提供してもよい。
【００４８】
図１０は、通信システム１０または通信システム４０を実装する処理の流れの一例を示す。通信システム１０または通信システム４０を実装するエンジニアは、複数の通信ノード（例えば、通信ノード１００−１や通信ノード４００−１）を配置する（Ｓ１０００）。次に、エンジニアは、通信リンクを各通信ノードに接続する（Ｓ１０１０）。具体的には、エンジニアは、複数の通信ノードのそれぞれを、多次元直方体をなす格子空間の予め定められた格子点に配置した場合において、隣接する格子点に配置される通信ノードを相互に接続する。
【００４９】
また、エンジニアは、ショートカットリンクを各通信ノードに接続する（Ｓ１０２０）。具体的には、エンジニアは、隣接する何れかの格子点に他の通信ノードが配置されていない通信ノードにより構成される面のうち、その格子空間の端面ではない少なくとも２つの面について、一方の面を構成する通信ノードと、他方の面を構成する通信ノードとを接続する。次に、エンジニアは、ループリンクを各通信ノードに接続する（Ｓ１０３０）。具体的には、エンジニアは、格子空間の対向する端面を相対させた場合に隣接することとなる通信ノードを互いに接続する。また、エンジニアは、格子空間の第１端面と第１端面に対向する第２端面とを相対させた場合に他の通信ノードに隣接しない通信ノードを、その格子空間の第３端面と第３端面に対向する第４端面とを相対させた場合に他の通信ノードに隣接しない通信ノードに接続する。
【００５０】
以上、本実施例および変形例によれば、直方体や立方体を構成する充分な数の通信ノードが準備できない場合であっても、それぞれの通信ノードを適切に接続することで、通信リンクの無駄を省き、通信スループットを向上させることができる。また、正方形や立方体などの多次元正方空間の格子空間に通信ノードを配置した場合においては、リング状の通信回線上に配置される通信ノードの数を均等とし、各通信リンクのネットワーク・トラフィックを均等とすることができる。この場合には、正方空間の全ての格子点に通信ノードを配置した場合と同様に、各通信リンクの性能を最大限に生かした理想的な通信環境を提供することができる。
【００５１】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００５２】
【図１】図１は、通信システム１０および情報処理装置２０の全体構成を示す。
【図２】図２は、通信システム１０の構成を示す。
【図３】図３は、通信ノード１００−１の機能構成を示す。
【図４】図４は、記憶部３００のデータ構造の一例を示す。
【図５】図５は、通信ノード１００−１によって通信パケットが転送される処理の流れを示す。
【図６】図６は、グローバルアドレスをローカルアドレスに変換する変換規則の概念図を示す。
【図７】図７は、本実施例の変形例である通信システム４０の構成を示す。
【図８】図８は、変形例において通信ノード４００−１〜４が配置される格子空間を示す。
【図９】図９は、情報処理装置２０のハードウェア構成の一例を示す。
【図１０】図１０は、通信システム１０または通信システム４０を実装する処理の流れの一例を示す。
【符号の説明】
【００５３】
１０  通信システム
２０  情報処理装置
４０  通信システム
１００  通信ノード
１１０  通信リンク
１２０  ループリンク
１３０  ショートカットリンク
１５０  格子点
３００  記憶部
３１０  受信部
３２０  選択部
３３０  送信部
４００  通信ノード
４１０  通信リンク
４２０  ループリンク
４３０  ショートカットリンク
４４０  ループリンク
４５０  格子点
【図１】
2007156850.tif 000003
【図２】
2007156850.tif 000004
【図３】
2007156850.tif 000005
【図４】
2007156850.tif 000006
【図５】
2007156850.tif 000007
【図６】
2007156850.tif 000008
【図７】
2007156850.tif 000009
【図８】
2007156850.tif 000010
【図９】
2007156850.tif 000011
【図１０】
2007156850.tif 000012