(57)【要約】  情報処理装置が相互に多次元に接続された情報処理システムにおいて、情報処理装置にデータが送出される次元の宛先と、自装置の同次元の位置とを比較し、当該比較の結果自装置の位置が情報処理装置１台分手前の位置であった場合、当該データが属する仮想チャネルを変更する制御を行う。
2010087002.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置が相互に多次元に接続された情報処理システムであって、
前記複数の情報処理装置の各々は、データを送受信する方向ごとに、第１の仮想チャネルに属するデータを格納する第１の受信格納装置と、第２の仮想チャネルに属するデータを格納する第２の受信格納装置とを有し、
データが送出される次元の宛先と、自装置の同次元の位置とを比較し、当該比較の結果自装置の位置が情報処理装置１台分手前の位置であった場合、当該データが属する仮想チャネルを変更する仮想チャネル制御部と、
前記仮想チャネル制御部による仮想チャネルの制御の後の前記データが属する仮想チャネルに応じ、当該データを前記第１あるいは第２の受信格納装置に格納するデータ格納部と、
データが送出される次元の宛先と自装置の同次元の位置とを比較し、前記自装置の位置が前記宛先と一致した場合、当該データを送出する次元を次の次元へと変更する送出次元制御部と、
前記第１及び第２の受信格納装置に格納されたデータのうちの、各受信格納装置につき一単位のデータ同士の調停を行い、前記調停の結果、データを送出する各方向につき一単位のデータを実際に送出するデータとして決定する調停部とを有することを特徴とする情報処理システム。
【請求項２】
前記仮想チャネル制御部は、前記送出次元制御部による前記比較の結果、宛先の位置と自装置の位置とが一致した際に、すでに当該データを送出する仮想チャネルの変更がなされていれば変更前の仮想チャネルに戻すことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記仮想チャネル制御部は、自装置の位置がデータを送出する次元の仮想チャネル変更位置と一致した場合、当該データを送出する仮想チャネルを変更することを特徴とすることを特徴とする請求項１に記載の情報処理システム。
【請求項４】
前記複数の情報処理装置が多次元トーラス状に接続されていることを特徴とする請求項１に記載の情報処理システム。
【請求項５】
複数の情報処理装置が相互に多次元に接続された情報処理システムにおける各々の情報処理装置であって、
データを送受信する方向ごとに、第１の仮想チャネルに属するデータを格納する第１の受信格納装置と、第２の仮想チャネルに属するデータを格納する第２の受信格納装置とを有し、
データが送出される次元の宛先と、自装置の同次元の位置とを比較し、当該比較の結果自装置の位置が情報処理装置１台分手前の位置であった場合、当該データが属する仮想チャネルを変更する仮想チャネル制御部と、
前記仮想チャネル制御部による仮想チャネル制御の実行後の前記前記データが属する仮想チャネルに応じ、当該データを前記第１あるいは第２の受信格納装置に格納する受信データ格納部と、
データが送出される次元の宛先と自装置の同次元の位置とを比較し、前記自装置の位置が前記宛先と一致した場合、当該データを送出する次元を次の次元へと変更する送出次元制御部と、
前記第１及び第２の受信格納装置に格納されたデータのうちの、各受信格納装置につき一単位のデータ同士の調停を行い、前記調停の結果、データを送出する各方向につき一単位のデータを実際に送出するデータとして決定する調停部とを有することを特徴とする情報処理装置。
【請求項６】
前記仮想チャネル制御部は、前記送出次元制御部による前記比較の結果、宛先の位置と自装置の位置とが一致した際に、当該データを送出する仮想チャネルが既に変更されていれば変更前の仮想チャネルに戻すことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記仮想チャネル制御部は、自装置の位置がデータを送出する次元の仮想チャネル変更位置と一致した場合、当該データを送出する仮想チャネルを変更することを特徴とすることを特徴とする請求項５に記載の情報処理装置。
【請求項８】
前記情報処理システムでは、前記複数の情報処理装置が多次元トーラス状に接続されていることを特徴とする請求項５に記載の情報処理装置。
【請求項９】
複数の情報処理装置が相互に多次元に接続された情報処理システムにおける、各々の情報処理装置の制御方法であって、
データを送受信する方向ごとに、第１の仮想チャネルに属するデータを格納する第１の受信格納装置と、第２の仮想チャネルに属するデータを格納する第２の受信格納装置とを有し、
データが送出される次元の宛先と、自装置の同次元の位置とを比較し、当該比較の結果自装置の位置が情報処理装置１台分手前の位置であった場合、当該データが属する仮想チャネルを変更する仮想チャネル制御段階と、
前記仮想チャネル制御段階の実行後の前記データが属する仮想チャネルに応じ、当該データを前記第１あるいは第２の受信格納装置に格納する受信データ格納段階と、
データが送出される次元の宛先と自装置の同次元の位置とを比較し、前記自装置の位置が前記宛先と一致した場合、当該データを送出する次元を次の次元へと変更する送出次元制御段階と、
前記第１及び第２の受信格納装置に格納されたデータのうちの、各受信格納装置につき一単位のデータ同士の調停を行い、前記調停の結果、データを送出する各方向につき一単位のデータを実際に送出するデータとして決定する調停段階とを実行することを特徴とする情報処理装置の制御方法。
【請求項１０】
前記仮想チャネル制御段階は更に、前記送出次元制御段階で前記比較の結果、宛先の位置と自装置の位置とが一致した際に、当該データを送出する仮想チャネルが既に変更されていれば変更前の仮想チャネルに戻すことを特徴とする請求項９に記載の情報処理装置の制御方法。
【請求項１１】
前記仮想チャネル制御段階は更に、自装置の位置がデータが送出される次元の仮想チャネル変更位置と一致した場合、当該データを送出する仮想チャネルを変更する段階を有することを特徴とすることを特徴とする請求項９に記載の情報処理装置の制御方法。
【請求項１２】
前記情報処理システムでは、前記複数の情報処理装置が多次元トーラス状に接続されていることを特徴とする請求項９に記載の情報処理装置の制御方法。
【請求項１３】
複数の情報処理装置が相互に多次元に接続された情報処理システムにおける各々の情報処理装置であって、データを送受信する方向ごとに、第１の仮想チャネルに属するデータを格納する第１の受信格納装置と、第２の仮想チャネルに属するデータを格納する第２の受信格納装置とを有する情報処理装置の動作を制御するコンピュータを、
データが送出される次元の宛先と、自装置の同次元の位置とを比較し、当該比較の結果自装置の位置が情報処理装置１台分手前の位置であった場合、当該データが属する仮想チャネルを変更する仮想チャネル制御部と、
前記仮想チャネル制御部による仮想チャネル制御の実行後の前記データが属する仮想チャネルに応じ、当該データを前記第１あるいは第２の受信格納装置に格納する受信データ格納部と、
データが送出される次元の宛先と自装置の同次元の位置とを比較し、前記自装置の位置が前記宛先と一致した場合、当該データを送出する次元を次の次元へと変更する送出次元制御部と、
前記第１及び第２の受信格納装置に格納されたデータのうちの、各受信格納装置につき一単位のデータ同士の調停を行い、前記調停の結果、データを送出する各方向につき一単位のデータを実際に送出するデータとして決定する調停部として機能させるための情報処理装置の制御プログラム。
【請求項１４】
前記仮想チャネル制御部は、前記送出次元制御部による前記比較の結果、宛先の位置と自装置の位置とが一致した際に、当該データを送出する仮想チャネルが既に変更されていれば変更前の仮想チャネルに戻すことを特徴とする請求項１３に記載の情報処理装置の制御プログラム。
【請求項１５】
前記仮想チャネル制御部は、自装置の位置がデータが送出される次元の仮想チャネル変更位置と一致した場合、当該データを送出する仮想チャネルを変更することを特徴とすることを特徴とする請求項１３に記載の情報処理装置の制御プログラム。
【請求項１６】
前記情報処理システムでは、前記複数の情報処理装置が多次元トーラス状に接続されていることを特徴とする請求項１３に記載の情報処理装置の制御プログラム。
【請求項１７】
複数の情報処理装置が相互に多次元に接続された情報処理システムにおける各々の情報処理装置であって、データを送受信する方向ごとに、第１の仮想チャネルに属するデータを格納する第１の受信格納装置と、第２の仮想チャネルに属するデータを格納する第２の受信格納装置とを有する情報処理装置を制御するコンピュータを、
データが送出される次元の宛先と、自装置の同次元の位置とを比較し、当該比較の結果自装置の位置が情報処理装置１台分手前の位置であった場合、当該データが属する仮想チャネルを変更する仮想チャネル制御部と、
前記仮想チャネル制御部による仮想チャネル制御の実行後の前記データが属する仮想チャネルに応じ、当該データを前記第１あるいは第２の受信格納装置に格納する受信データ格納部と、
データが送出される次元の宛先と自装置の同次元の位置とを比較し、前記自装置の位置が前記宛先と一致した場合、当該データを送出する次元を次の次元へと変更する送出次元制御部と、
前記第１及び第２の受信格納装置に格納されたデータのうちの、各受信格納装置につき一単位のデータ同士の調停を行い、前記調停の結果、データを送出する各方向につき一単位のデータを実際に送出するデータとして決定する調停部として機能させるための情報処理装置の制御プログラムを格納したコンピュータ読み取り可能な情報記録媒体。
【請求項１８】
前記仮想チャネル制御部は、前記送出次元制御部による前記比較の結果、宛先の位置と自装置の位置とが一致した際に、当該データを送出する仮想チャネルが既に変更されていれば変更前の仮想チャネルに戻すことを特徴とする請求項１７に記載の情報処理装置の制御プログラムを格納したコンピュータ読み取り可能な情報記録媒体。
【請求項１９】
前記仮想チャネル制御部は、自装置の位置がデータが送信される次元の仮想チャネル変更位置と一致した場合、当該データを送出する仮想チャネルを変更することを特徴とすることを特徴とする請求項１７に記載の情報処理装置の制御プログラムを格納したコンピュータ読み取り可能な情報記録媒体。
【請求項２０】
前記情報処理システムでは、前記複数の情報処理装置が多次元トーラス状に接続されていることを特徴とする請求項１７に記載の情報処理装置の制御プログラムを格納したコンピュータ読み取り可能な情報記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理システムに係り、例えば複数の情報処理装置が相互に多次元に接続された情報処理システム、情報処理装置、情報処理装置の制御方法、情報処理装置の制御プログラム及び制御プログラムを格納したコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【０００２】
多数の情報処理装置が相互に接続された情報処理システムは並列計算機システムと称されている。並列計算機システムにおいて多数の情報処理装置を接続するネットワークとして最も理想的なものの１つは、各情報処理装置がシステム上の他のすべての情報処理装置と一対一で接続されるフルコネクションという方式である。しかしながらフルコネクションでは各情報処理装置を接続する際のケーブルのコストが増加し、ケーブル配線が複雑になるという問題が想定される。したがって非常に多数の情報処理装置を含むシステムにフルコネクション方式を適用することは困難と考えられる。【０００３】
その代替策として現在広く用いられているのが、多次元トーラス、多次元メッシュといったトポロジ構造を利用してネットワークを形成する方式である。当該方式では一つの情報処理装置に対して数個の情報処理装置だけを一対一で接続し、当該接続方法を連続して実施する。その結果、システムに含まれる全ての情報処理装置を相互に接続させる。当該方式によれば、情報処理装置間に他の情報処理装置を経由させることにより、任意の情報処理装置から結果的にシステムに含まれる全ての情報処理装置にアクセスすることができる。すなわち原理的にはシステム上のすべての情報処理装置に対し、どの情報処理装置からでもアクセス可能である。【０００４】
しかしながら多次元トーラス、多次元メッシュといったトポロジ構造を利用した方式では、すべての情報処理装置が一対一で接続されてはいない。このため以下の問題が考えられる。すなわち、ある情報処理装置から他の情報処理装置へとデータを転送する最短経路はフルコレクション方式の場合には１通りであったが、多次元トーラス、多次元メッシュといったトポロジ構造を利用する場合、情報処理装置間の最短経路は複数通り存在する。したがって複数通りの経路のうちからどの経路を採用するかを決定するためのルーティングアルゴリズムが必要となる。
【特許文献１】特表２００４−５２７１７６号公報
【特許文献２】特開平０８−１８５３８０号公報
【特許文献３】特開平０７−１９１９４７号公報
【特許文献４】特開平０６−２６６６８４号公報
【特許文献５】特開平１０−０２１２０８号公報
【特許文献６】米国特許第６，６７４，７２０号
【非特許文献１】"Age-based packet arbitration in large radix k-ary and n-cubes", Denis Abts and Deborah Weisser, SC07, 2007
【非特許文献２】"Routing and flow control in systems network algorism", V. Ahuja, IBM journal, 1978
【非特許文献３】"Flexible oblivious router algorism", U. Par et. al., IBM journal, 1995
【非特許文献４】「コンピュータアーキテクチャ  定量的アプローチ  第４版」、著者：John L. Hennessy and David A. Patterson、出版社：株式会社  翔泳社、付録Ｅ、E-3 P22〜  概要、E-4 P30〜  トポロジー関連、E-5 P45〜  ルーティング関連、E-6 P57〜  スイッチのマイクロアーキテクチャ関連
【発明の開示】
【発明が解決しようとする課題】
【０００５】
実施例では、情報処理装置が相互に多次元に接続された情報処理システムにおいて、データの送出待ち時間を短縮することを目的とする。
【課題を解決するための手段】
【０００６】
各情報処理装置は、データが送出される次元における宛先と自装置の同次元の位置とを比較し、宛先比較の結果自装置の位置がデータの前記次元における宛先となる情報処理装置１台分手前の位置であった場合、データの仮想チャネルを変更する。
【発明の効果】
【０００７】
開示によれば、情報処理装置が相互に多次元に接続された情報処理システムにおいて、仮想チャネルの有効利用を可能にしてデータの送出待ち時間を短縮することができる。
【図面の簡単な説明】
【０００８】
【図１】実施例１の情報処理システムの全体構成例を説明するためのブロック図である。
【図２】図１中、各情報処理装置の内部構成例を説明するためのブロック図である。
【図３】図２中、ルーティングコントローラで実施される次元オーダルーティング方式による次元制御方法について説明するための処理フローチャートである。
【図４】図２中、ルーティングコントローラで実施される仮想チャネル制御方法について説明するための処理フローチャートである。
【図５】図２中、ルーティングコントローラの構成例について説明するためのブロック図である。
【図６】図４に示される仮想チャネル制御方法について実例を挙げて説明するための図（その１）である。
【図７】図４に示される仮想チャネル制御方法について実例を挙げて説明するための図（その２）である。
【図８】仮想チャネル制御方法の実施によって得られる作用効果について説明するための図（その１）である。
【図９】仮想チャネル制御方法の実施によって得られる作用効果について説明するための図（その２）である。
【図１０】仮想チャネル制御方法の動作の流れを具体的に説明するための処理フローチャートである。
【図１１】実施例１による情報処理システムにおいて適用可能なデータパケットの構成例について説明するための図である。
【図１２】図２中、ルーティングコントローラに含まれる、クロスバインタフェースの構成例について説明するための図（その１）である。
【図１３】図２中、ルーティングコントローラに含まれる、クロスバインタフェースの構成例について説明するための図（その２）である。
【図１４】図２中、ルーティングコントローラの構成例について説明するための図である。
【図１５】図２中、情報処理部の構成例について説明するためのブロック図である。
【図１６】実施例１を適用した場合の効果を検証するためのシミュレーション結果について説明するための図である。
【符号の説明】
【０００９】
４  ルーティングコントローラ
５  情報処理部
４１  クロスバスイッチ
４２，４３，４４，４５  各方向のクロスバインタフェース
４８  ＣＰＵクロスバインタフェース
４０２  ヘッダ解析部
４０４，４０５  バッファ
４０８  ヘッダ送信部
ＶＣ０，ＶＣ１  仮想チャネル
Ｐ１１、Ｐ１２、Ｐ２１、Ｐ１２  データ送受信ポート
【発明を実施するための最良の形態】
【００１０】
図１は、実施例１による情報処理システムの全体構成図である。図１において、情報処理システムは各ノードＮが二次元トーラス状に接続されたトポロジを有する。すなわち図１中、左右端部に位置するノードはそれぞれ（０）、（１）、...、（５）の同じ数字同士で接続される。同様に上下端部に位置するノードはそれぞれ（１０）、（１１）、...、（１５）の同じ数字同士で接続される。その結果各ノードが２次元トーラス状に接続される。【００１１】
ここでノードＮは、その各々が情報処理装置である。図１の構成例の場合、ノードＮは＋／−ｘ方向（図中横方向）に沿って６個，＋／−ｙ方向（図中縦方向）に沿って６個配列され、計３６個のノードＮが含まれる。なお図１中、右方向が＋ｘ方向、下方向が＋ｙ方向とする。各ノードＮは＋／−ｘ方向、＋／−ｙ方向に相互に隣接するノードＮとの間が物理チャネルによってそれぞれ接続されている。各物理チャネルは双方向のものとなっている。ここで図１に示される如く、３６個のノードＮのうち、−ｘおよび−ｙ方向の隅に位置するノードＮ００（図１中、左上隅のノードＮ００）の座標が原点（０，０）とされている。同様に＋ｘおよび＋ｙ方向の隅に位置するノードＮ５５（図１中、右下隅のノードＮ５５）の座標が（５，５）とされている。同様に＋ｘおよび−ｙ方向の隅に位置するノードＮ５０（図１中、右上隅のノードＮ５０）の座標が（５，０）とされている。同様に−ｘおよび＋ｙ方向の隅に位置するノードＮ０５（図１中、左下隅のノードＮ０５）の座標が（０，５）とされている。すなわち原点に位置するノードＮに対し、＋ｘ方向にｎ番目、＋ｙ方向にｍ番目に位置するノードＮの座標は（ｎ，ｍ）とされる。例えば図１中、原点に位置するノードＮ００に対し、＋ｘ方向に３番目、＋ｙ方向に２番目に位置するノードＮ３２の座標は図示の如く（３，２）とされる。なお図１中、各ノードの座標は当該ノードを示す正方形の右上隅の外側部分に示されている。【００１２】
図２は各ノードＮの内部構成例を説明するためのブロック図である。図２に示される如く、ノードＮは、ルーティングコントローラ４および情報処理部５を備えている。ルーティングコントローラ４は、情報処理部５によって生成されたデータパケット，あるいは隣接ノードから転送されてきたデータパケットの次元制御及び仮想チャネル制御を行う。次元制御及び仮想チャネル制御については後述する。ここでノード間を接続する物理チャネルが、ノードＮ内部においてルーティングコントローラ４に接続されている。また、情報処理部５はＣＰＵ（Central Processing Unit）を有し、図１５とともに後述する。【００１３】
ルーティングコントローラ４は、いわゆる次元オーダルーティングと称されるルーティング方式を実施する。次元オーダルーティングについて以下に説明する。図１のように、複数の情報処理装置、すなわちノードＮが多次元、実施例１の場合２次元に接続された情報処理システムを想定する。次元オーダルーティングとは、ノードが多次元に接続された情報処理システムにおいて、各次元の座標を規則に沿った順番で順次宛先の座標に一致させていくというアルゴリズムである。上記規則に沿った順番は、たとえば上記２次元トーラス状に接続された情報処理システムの場合ｘ、ｙの順となる。ここで複数の情報処理装置が実施例の如く２次元トーラス状に接続された情報処理システムの場合であって、出発点すなわち情報の送信元の座標が(0,0)で、終着点すなわち情報の宛先の座標が(2,1)であった場合を想定する。この場合においては(0,0)→(1,0)→(2,0)→(2,1)の順番でデータパケットを転送する。【００１４】
すなわちまず、ｘ座標上に配置されたノードに沿ってデータパケットを転送する。ここではデータパケットを保持するノードのｘ座標値がデータパケットの宛先のｘ座標と一致するまで、ノード間で順次データパケットを転送する。データパケットを保持するノードのｘ座標値がデータパケットの宛先のｘ座標と一致した場合、そのノードはデータパケットをｙ軸方向に転送する。その後、ｙ軸方向に配置されたノードに沿ってデータパケットを転送する。ここではデータパケットを保持するノードのｙ座標値がデータパケットの宛先のｙ座標と一致するまで、ノード間で順次データパケットを転送する。すなわちある次元において、データパケットを保持するノードの位置が宛先位置に一致するまで、同次元上のノード間でデータパケットを順次転送する。次に、次元を変更し、変更後の次元において、データパケットを保持するノードの位置が同次元の宛先位置に一致するまで、同次元上でデータパケットを順次転送する。この手順によって順次各次元においてデータパケットを保持するノードの位置が宛先位置に一致する。最終的に全ての次元において当該データパケットを保持するノードの位置が宛先位置に一致する。すなわちデータパケットが宛先のノードに到達する。【００１５】
このルーティングアルゴリズムの利点は、後述する日付変更線に係る制御を含めることにより、データの転送経路がループ構造となることにより生じるデッドロックを論理的に引き起こさない、すなわちデッドロックフリーとなる点である。【００１６】
なお図２中、Ｐ１１、Ｐ１２、Ｐ２１、Ｐ２２はそれぞれ、後述する送受信ポートを示す。【００１７】
図３は実施例１による、次元オーダルーティングを行うための次元制御方法を説明するフローチャートである。
図３中、ステップＳ１で、データパケットをｉ次元で送出する場合において、隣接するノードからデータパケットを受信したノードは、データパケットがｉ次元の宛先に到達したか否かを判定する。ｉ次元の宛先に位置するノード以外のノードがデータパケットを受信した場合には、そのノードは、データパケットを受信した次元と同一次元に沿ってデータパケットを送出する。すなわちこの場合、データパケットがｘ軸に沿って転送されてきた場合には、そのデータパケットを受信したノードがデータパケットを送出する次元は、引き続きｘ軸である。
ステップＳ１で、各ノードはデータパケットのｘ軸の宛先座標を受信したデータパケットのヘッダから読み出す。なおデータパケットの構成例については図１１とともに後述する。そして読み出されたデータパケットのｘ軸の宛先座標を自装置のｘ座標と比較する。比較の結果、データパケットの宛先ｘ座標が自装置のｘ座標に一致した場合（ステップＳ１のＹＥＳ）、データパケットは現時点でｘ軸の宛先に到達している。このため、次の次元，（ｉ＋１）次元、例えばｙ軸の宛先に到達するため、データパケットの転送を行う次元を（ｉ＋１）次元、すなわちｙ軸に変更する（ステップＳ２）。他方、ステップＳ１の判定結果がＮＯの場合、データパケットは未だｘ軸の宛先に到達していないため、ｘ軸の宛先に到達すべく、データパケットを受信したノードはそのデータパケットの転送を行う次元として引き続きｘ軸を維持する（ステップＳ３）。【００１８】
ここで次元オーダルーティングのアルゴリズムは上記の如くデッドロックフリーとなるという利点を有する一方、通信効率という観点においては検討の余地があると考えられる。すなわち次元オーダルーティングを適用した場合、実際の運用上、上述の例のようにx軸、y軸など軸を直進する態様の通信が、x軸からy軸へと次元を乗り変える態様の転送に比べて相当多いと考えられる。その結果、受信したデータパケットを一時的に格納するバッファの使用率にノード間で偏りが生じたり、発生数の少ない、軸を乗り換える態様の転送が、直進する態様の転送を阻害する事態が想定される。実施例１ではデッドロックフリーであるという特徴を有する次元オーダルーティングを採用しつつ、システム全体の通信効率を向上させる。【００１９】
図４は実施例１の仮想チャネル制御方法について説明するためのフローチャートである。【００２０】
図４中、ノードはデータパケットを送出する際、送出するデータパケットが日付変更線を超えるか否か判定する（ステップＳ１１）。ここで日付変更線とは次元ごとに決められており、各次元の所定のノード間に設けられる。各次元の所定のノード間とは、例えば図１に示される情報処理システムの場合、（０）、（１），（２），...，（５）で左右端のノードがそれぞれ相互に接続される部分である。更に同様に、（１０）、（１１），（１２），...，（１５）で上下端のノードがそれぞれ相互に接続される部分である。日付変更線とは、図１に示される情報処理システムの如く、トーラス状に接続された情報処理システムにおいて、前記次元オーダルーティングを実施するにあたり、デッドロックフリーを実現するために設けられる。すなわちデータパケットを転送する経路が、次元が変更される機会が少ない経路であったとすると、同一次元をデータパケットが転送される間にデッドロックが生ずる可能性がある。日付変更線は、このようにデータパケットが転送される経路が、次元が変更される機会が少ない経路であった場合、同一次元をデータパケットが転送される間に仮想チャネルの変更を生じさせるために設けられる。その結果、次元オーダルーティングを実施する上でデッドロックフリーを実現し得る。【００２１】
ここで仮想チャネルについて説明する。例えば図１に示される情報処理システムの如くノードがトーラス状に接続された構造において、ノード間は物理的には１チャネルで接続される。実施例１では各ノードに複数のバッファを設け、複数のバッファのそれぞれに仮想チャネルを割り当てる。その結果、ノード間が、前記複数のバッファと同数の複数の仮想チャネルで接続されている如くの効果が得られる。【００２２】
上記デッドロックについて説明する。図１に示される情報処理システムの如くトーラス状に接続された構造においてデータパケットを転送する際、特定の複数のノードがループ構造となる場合がある。特定の複数のノードがループ構造となる場合、各ノードが有する一の仮想チャネルの全てのバッファにデータパケットが格納され、空きがない状態となることがある。各ノードが有する一の仮想チャネルの全てのバッファにデータパケットが格納され、空きがない状態では、各ノードがデータパケットを送出する相手側のノードが有する前記一の仮想チャネルのバッファに空きがない。このため、各ノードは前記一の仮想チャネルのバッファに格納しているデータパケットを送出することができない。このような状態をデッドロックと称する。上記日付変更線の機能により同一次元をデータパケットが転送される間、日付変更線を超えると仮想チャネルの変更が生ずる。仮想チャネルの変更により上記ループ構造に含まれる各ノードが有するバッファのうち、上記空きがないバッファとは別の仮想チャネルのバッファが使用される。このようにして、空きがないバッファとは別の仮想チャネルのバッファが使用されると、当該別の仮想チャネルのバッファは空きを有し、ノードは相手ノードの当該バッファの空きに対しデータパケットを送出することができる。したがって上記デッドロックは生じない。【００２３】
図４の説明に戻り、Ｓ１１では、ノードがデータパケットを受信した際、当該ノードが日付変更線に隣接するノードであり且つデータパケットを送出する方向が日付変更線を超える方向か否かを判断する。判断の結果当該ノードが日付変更線に隣接するノードであり且つデータパケットを送出する方向が日付変更線を超える方向であった場合、ステップＳ１１の判定結果はＹＥＳとなる。ステップＳ１１の判定結果がＹＥＳの場合、データパケットの仮想チャネルを現在の仮想チャネルから他の仮想チャネルに変更する（ステップＳ１２）。例えば一の仮想チャネルから他の仮想チャネルに変更する。ここで仮想チャネルの変更は、データパケットが有するヘッダが有する仮想チャネル情報ＶＣ（図１１とともに後述する）を書き換えることにより行われる。データパケットのヘッダの仮想チャネル情報ＶＣが書き換えられると当該データパケットを受信した相手側のノードでは次の動作がなされる。すなわち相手側のノードでは、受信したデータパケットが有するヘッダの仮想チャネル情報ＶＣが示す仮想チャネルのバッファに、受信したデータパケットを格納する。【００２４】
ステップＳ１１の判定結果がＮＯの場合、ステップＳ１３に移行する。ステップＳ１３では、データパケットを送出する次元の宛先座標に対し、自ノードの同次元の座標がノード１台分手前の座標か否かを判定する。判定の結果、自ノードの座標が宛先座標からノード１台分手前の座標であった場合（ＹＥＳ），データパケットの仮想チャネルを現在の仮想チャネルから他の仮想チャネルに変更する（ステップＳ１４）。例えば一の仮想チャネルから他の仮想チャネルに変更する。【００２５】
ステップＳ１３の判定結果がＮＯの場合、ステップＳ１５に移行する。ステップＳ１５では、データパケットを送出する次元の宛先座標が、自ノードの同次元の座標と一致するか否かを判定する。判定の結果座標が一致した場合（ＹＥＳ），自ノードが当該データパケットの最終的な宛先か否かを判定する（ステップＳ１６）。判定の結果、自ノードが当該データパケットの最終的な宛先であった場合（ＹＥＳ），図４の処理を終了する。他方、ステップＳ１６の判定の結果がＮＯであった場合、データパケットの仮想チャネルが既に上記ステップＳ１１又はステップＳ１３にて変更されていた場合には、データパケットの仮想チャネルを変更前の仮想チャネルに戻す（ステップＳ１７）。例えば上記他の仮想チャネルから一の仮想チャネルに戻す。データパケットの仮想チャネルが上記ステップＳ１１又はステップＳ１３にて変更されていなかった場合にはステップＳ１７では何ら仮想チャネルの変更は行わない。【００２６】
以下に図５〜７とともに、図４とともに上記した仮想チャネル制御方法につき、更に具体的に説明する。【００２７】
仮想チャネル制御方法では上記の如く、各ノードが複数のバッファを持つ。そしてこのような構造をもつ送受信ポートを複数個設ける。仮想チャネル制御方法を適用したノードＮの構成につき、図５とともに以下に説明する。【００２８】
図５は図２とともに上記した各ノードＮの構成を示す。但し図５の場合説明の便宜上、ルーティングコントローラ４の機能に係る構成のみ示している。図５に示される如く、ルーティングコントローラ４はクロスバスイッチ４１を有する。このクロスバスイッチ４１は、クロスバスイッチ４１を有するノードＮが送出するデータパケットが競合した場合に、調停を行う調停部としての機能を有する。【００２９】
ここで図１，２とともに上記した各ノードＮはデータを送受信するポートとして、各方向につき１セットのデータ送受信ポートを有する。ここで１セットのデータ送受信ポートとは、送信ポート１個および受信ポート１個のセットを意味する。送受信ポートとしてノードＮには、＋ｘ方向用の送受信ポートＰ１１、−ｘ方向用の送受信ポートＰ１２、＋ｙ方向用の送受信ポートＰ２１、および−ｙ方向用の送受信ポートＰ２２の計４セットの送受信ポートが設けられている。また各送受信ポートにつき、送出するデータパケットを一時的に格納するバッファが、仮想チャネルの個数分設けられている。実施例１の場合仮想チャネルはＶＣ０，ＶＣ１の計２個であり、ノードＮには送受信ポートが計４セット設けられているため、バッファは図５に示される如く、計８個設けられている。図５中、送受信ポートごとに２個設けられたバッファは、ＶＣ０，ＶＣ１として示されている。送出するデータが競合する場合とは、データパケットを送出する各方向に対し、仮想チャネルが同一の２以上のデータパケットを送出する場合である。【００３０】
またノードＮに受信されたデータパケットは受信された方向ごとに、２個のバッファ（ＶＣ０，ＶＣ１）のうち、当該データパケットの仮想チャネルについて設けられた側のバッファに格納される。各バッファはＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）構造を有し、上記の如く各バッファに格納されたデータパケットのうち先頭のデータパケットから順に送出される。ここで上記計８個のバッファの先頭のデータパケットのうち、仮想チャネルが同一で、その送出する方向が相互に一致する複数のデータパケットが、上記競合するデータパケットとなる。【００３１】
図６は、図４とともに上記した仮想チャネル制御方法を実施した場合のデータパケットの動きを説明するための図である。図６中、データ転送方向Ａとして示される如く、データは右下に位置するノードから左上に位置するノードに対して転送される。つまり、図６中、データはノードＮ１からＮ５まで順次転送される。但し図６の例の場合、ノードＮ５は当該データパケットの最終的な宛先のノードではないものとする。【００３２】
図６中、各ノードが有する２個の長円はそれぞれ仮想チャネルＶＣ０，ＶＣ１のバッファを示す。また上記２個の長円のうち、ハッチングがなされている側の長円は、前記データパケットが格納された側のバッファを示す。【００３３】
図６中、データはまず左方向にノードＮ１からＮ３まで転送され、データが次元の宛先、すなわちノードＮ３の位置に達した後、データを転送する次元が変更される。その後図６中、上方向にノードＮ３からＮ５までデータが転送される。図６の例の場合、データの転送中に日付変更線を超えることはないものとする。したがって図６に示されるデータ転送の間、図４のステップＳ１１の判定結果は常にＮＯである。【００３４】
図６中、データがノードＮ１からＮ２に送出された際、データを受信した次元のノードＮ２の座標は、当該次元の宛先のノードであるＮ３の一台手前の座標である。したがって図４のステップＳ１３の判定結果はＹＥＳとなる。ここでノードＮ２が受信するデータにつき、ＳＤ１として示されるように、各ノードＮ１，Ｎ２において、仮想チャネルＶＣ０のバッファが使用されている。従って、ノードＮ２ではＳ１３の判定結果に基づいてデータの仮想チャネルが変更され、データを転送する際に使用されるバッファが仮想チャネルＶＣ０のものからＶＣ１のものに変更される（ステップＳ１４）。その結果データはノードＮ２から送出された後（ＳＤ２）、ノードＮ３の仮想チャネルＶＣ１のバッファに格納される。【００３５】
ここでノードＮ２からデータを受信した次元のノードＮ３の座標は、当該次元のデータの宛先の座標と一致する。したがって、ノードＮ３における図４のステップＳ１５の判定結果はＹＥＳとなる。またノードＮ３はデータの最終的な宛先のノードではない（ステップＳ１６のＮＯ）。その結果、ノードＮ３からノードＮ４にデータが送出される際（ＳＤ３）、データを転送する仮想チャネルは現在のＶＣ１からＶＣ０に戻される（ステップＳ１７）。すなわちチャネル乗り換え（ＳＤ１）でＶＣ０からＶＣ１へと移動したデータは、再び元の仮想チャネルＶＣ０に戻る（ＳＤ３）。その後データはノードＮ４からノードＮ５に送出される。ノードＮ４からノードＮ５へのデータ送出は図６中、ＳＤ４として示されている。【００３６】
次に図７とともに、図６の例とは異なる仮想チャネル制御方法の例につき説明する。【００３７】
図７は図１とともに上記したノードの配列から、ｘ軸に沿って配列された６個のノードＮ１１〜Ｎ１６を抜き出して示したものである。各ノードＮ１１〜Ｎ１６のｘ座標はそれぞれ０〜５である。説明の便宜上、図７中、データパケットは−ｘ側から＋ｘ側に転送されるものとする。また、図７中、各ノードの上段は仮想チャネルＶＣ０のバッファを示し、下段は仮想チャネルＶＣ１のバッファを示す。また各ノード内に示されている「０＞３」、「０＞２」、「１＞４」，「１＞３」といった事項は、各ノードのバッファに格納されたデータパケットを示す。ここで例えば「０＞３」の「＞」の左側の数字「０」は、データパケットの送信元のｘ座標を示し、右側の数字「３」はデータパケットの宛先のｘ座標を示す。【００３８】
また図７の例では日付変更線が、ｘ座標「０」と「５」との間、つまりノードＮ１１とノードＮ１６との間に設けられている。例えばノードＮ１６のＶＣ０のバッファの最上段に格納のデータ「４＞１」は、送信元のｘ座標が４であり、宛先のｘ座標が１である。つまり、このデータはノードＮ１５からノードＮ１２に転送される。ここで実施例１ではトーラス状の接続、すなわち円環状の接続がなされており、転送方向は一方向、図７の例の場合、ｘ軸の次元におけるデータの転送方向は＋ｘ方向とされている。したがって「４＞１」のデータパケットは、ノードＮ１６の左隣に位置するｘ座標が４のノードＮ１５から＋ｘ方向に送信されてノードＮ１６に受信され、その後ｘ座標が０のノードＮ１１へノードＮ１６から転送された後、ノードＮ１１からｘ座標が１のノードＮ１２へ転送される。すなわちこの場合、円環状の接続により、データパケットがｘ座標の最大値「５」のノードＮ１６に至った後、ｘ座標が最小値「０」を有するノード１１に直接Ｎ１６から送信される。その後データパケットは宛先のｘ座標「１」のノードＮ１２に転送される。ここでデータパケットがノードＮ１６からノードＮ１１へと転送される際、ｘ座標「５」と「０」との間、すなわち日付変更線をデータパケットが通過する。この場合、図４のステップＳ１１の判定結果がＹＥＳとなり、仮想チャネルが現在のＶＣ０からＶＣ１へと変更される。【００３９】
次に図７中、ノードＮ１２の下段の仮想チャネルＶＣ１のバッファの最上段に示されるデータパケット「０＞１」に着目する。当該データパケットは送信元のｘ座標が「０」であり、すなわちそのデータパケットを保持するノードＮ１２のすぐ左隣のノードＮ１１の座標位置である。またデータパケットの宛先ｘ座標が「１」であり、ノードＮ１２自体の座標位置である。したがってデータパケットはノードＮ１１からノードＮ１２に対し、＋ｘ方向、つまり図７中右側に送信されてきたものである。ノードＮ１１からノードＮ１２へのデータパケット送信の前、ノードＮ１１では、データパケットの仮想チャネルはＶＣ０であり、データパケットを送出する次元であるｘ軸の次元の宛先「１」に対し、自己の同次元の座標位置「０」がノード１台分手前であると判定する（図４中、ステップＳ１３のＹＥＳ）。その結果、ノードＮ１１では仮想チャネルがＶＣ０からＶＣ１へと変更される（図４中、ステップＳ１４）。その後、仮想チャネルＶＣ１で当該データパケットはノードＮ１２に受信される。同様の手順により、それぞれのノードのすぐ左隣のノードにおいて、データパケットの仮想チャネルがＶＣ０からＶＣ１へと変更となった上でノードが受信したデータパケットは以下の通りである。すなわち図７中、ノードＮ１３中、下段の「１＞２」、「０＞２」、ノードＮ１４中、下段の「２＞３」、「１＞３」、「０＞３」、ノードＮ１５中、下段の「３＞４」、「２＞４」、「１＞４」である。更にノードＮ１６中、下段の「４＞５」、「３＞５」、「２＞５」である。【００４０】
このように実施例１では、日付変更線を越えるデータの仮想チャネルがＶＣ０からＶＣ１に変更されるというルール、すなわち図４中、ステップＳ１１，Ｓ１２に加え、図４中、ステップＳ１３，Ｓ１４のルールを適用する。すなわち、x軸からy軸への移動というようにデータ転送の次元が変わるノードの１台手前のノードにて、仮想チャネルを変更するというルールを加える。【００４１】
以下に上記実施例１の効果について説明する。【００４２】
実施例１の効果として、クロスバスイッチ４１とのシェイクハンド機会とその成立確率の増大が挙げられる。この点につき図８とともに説明する。各ノードにおいて他のノードにデータを送出するとき以下の動作がなされる。まずクロスバスイッチ４１に対し、各方向の送受信ポートを有するクロスバインタフェース４２〜４５からデータの送信要求が出される。そして送信要求を受けたクロスバスイッチ４１は送信可能な状態になると、クロスバインタフェース４２〜４５に対し送信許可を与える。通常バッファはＦＩＦＯ構造を有し、各バッファの先頭のデータパケットについてのみ送信要求が出される。図８中、仮想チャネルごとのバッファはＶＣ０，ＶＣ１として示されている。【００４３】
実施例１の場合、図４中、ステップＳ１３，Ｓ１４のルールをステップＳ１１，Ｓ１２のルールに追加して設けたため、仮想チャネルＶＣ０，ＶＣ１間のデータパケット移動の機会が飛躍的に増大する。その結果、各方向の送受信ポートにつきデータパケットがＶＣ０，ＶＣ１の２個のバッファに分散されるやすくなる。その結果、図７に示される如く、ノード間を転送されるデータパケットが一方の仮想チャネルのバッファに偏ることなく、ＶＣ０，ＶＣ１の２個のバッファのそれぞれにデータパケットが分散されて格納される。その結果、各バッファの先頭のデータパケットにつきクロスバスイッチ４１に対し送信要求が出せることから、複数個の送信要求を同時に出せる状態になる。その結果、各クロスバインタフェース４２〜４５とクロスバスイッチ４１との間でシェイクハンドが成立する可能性も増大する。ここでシェイクハンドの成立とは、ある方向のクロスバインタフェース４２〜４５がクロスバスイッチ４１に送信要求を出した際に、送信要求に対する送信許可が与えられることを意味する。【００４４】
図８の例では、各クロスバインタフェースの仮想チャネルＶＣ０，ＶＣ１のそれぞれのバッファに格納されているデータパケットの仮想チャネルは変更されないものとする。すなわち仮想チャネルＶＣ０のバッファに格納されたデータパケットの仮想チャネルはＶＣ０であり、同様に仮想チャネルＶＣ０のバッファに格納されたデータパケットの仮想チャネルはＶＣ１であるものとする。【００４５】
また図８の例では以下の場合を想定している。すなわち−ｘのクロスバインタフェース４３の仮想チャネルＶＣ０のバッファの先頭に＋ｘ方向に向かうデータパケットが格納され、仮想チャネルＶＣ１のバッファの先頭に＋ｙ方向に向かうデータパケットが格納されている。同様に−ｙのクロスバインタフェース４５の仮想チャネルＶＣ０のバッファの先頭に＋ｙ方向に向かうデータパケットが格納され、仮想チャネルＶＣ１のバッファの先頭に＋ｘ方向に向かうデータパケットが格納されている。このような場合、クロスバスイッチ４１は以下の如くの動作を行う。【００４６】
クロスバインタフェース４３の仮想チャネルＶＣ０のバッファの＋ｘ方向に向かうデータパケットにつき、クロスバスイッチ４１に対し送信要求が出される（Ｓ２１）。同様にクロスバインタフェース４５から＋ｙ方向に向かう仮想チャネルＶＣ０のバッファのデータパケットにつき、クロスバスイッチ４１に対し送信要求が出される（Ｓ２２）。これらＳ２１，Ｓ２２の送信要求はその方向が＋ｘ、＋ｙと相互に異なる。したがってクロスバインタフェース４３から送信されるデータパケットと、クロスバインタフェース４５から送信されるパケットとは競合しない。したがって両クロスバインタフェース４３，４５からの送信要求Ｓ２１，Ｓ２２に対しクロスバスイッチ４１はそれぞれ送信許可を出す。その結果、両クロスバインタフェース４３，４５の送信要求Ｓ２１，Ｓ２２に係るデータパケットが両方とも送出される。【００４７】
同様にクロスバインタフェース４３から＋ｙ方向に向かう仮想チャネルＶＣ１のバッファのデータパケットにつき、クロスバスイッチ４１に対し送信要求Ｓ２３が出される。同様にクロスバインタフェース４５から＋ｘ方向に向かう仮想チャネルＶＣ１のバッファのデータパケットにつき、クロスバスイッチ４１に対し送信要求が出される（Ｓ２４）。両クロスバインタフェース４３，４５からの送信要求Ｓ２３，Ｓ２４はその方向が＋ｙ、＋ｘと相互に異なる。したがって両クロスバインタフェース４３，４５からの送信要求Ｓ２３，Ｓ２４は競合しない。したがって両クロスバインタフェース４３，４５からの送信要求Ｓ２３，Ｓ２４に対しクロスバスイッチ４１はそれぞれ送信許可を出す。その結果両クロスバインタフェース４３，４５からの送信要求Ｓ２３，Ｓ２４に係るデータパケットが両方とも送出される。【００４８】
このように実施例１によれば、２つのデータパケットが同時に送出され、並列度が高い。すなわち実施例１によれば各送受信ポートですべてのデータパケットが２つの仮想チャネルＶＣ０，ＶＣ１を有効利用して先頭に出るようになる。その結果送信要求が異なる仮想チャネルを用いて同時に並行して多数出される可能性が高まり、データパケットの送出方向が競合しない可能性が増加し、データ送出の効率が増加する。【００４９】
ここで図１に示される如くの構造の情報処理システムの場合、仮想チャネルＶＣ０には同軸通信のデータパケットが存在し、相対的に仮想チャネルＶＣ１には軸移動の通信のデータパケットが存在する頻度が高くなる。ここで同軸通信とは、次元を移動せずに転送されるデータを指し、軸移動の通信とは、次元を移動して転送されるデータを指す。その結果、各クロスバインタフェースからの送信要求が各仮想チャネルを介して同時に並行して多数出される効果と相まって、データパケットを同時に並行に複数方向の送受信ポートから送出し得る機会の頻度が高まる。データパケットを同時に並行に複数方向の送受信ポートから送出し得る機会の頻度が高まる理由は以下の通りである。すなわち上記の如く、各クロスバインタフェースからの送信要求が各仮想チャネルのバッファから同時に並行して多数出されるため、他の送信要求と競合しない送信要求の発生頻度が高まる。他の送信要求と競合しない送信要求はすぐに許可されて送出し得るため、データパケットを同時に並行に複数方向の送受信ポートから送出し得る機会の頻度が高まる。【００５０】
また実施例１では図７に示されるように、仮想チャネルＶＣ０のバッファの使用率と仮想チャネルＶＣ１のバッファの使用率との差が小さい。その結果バッファをすぐに使い切ってしまい、結果的にデータが渋滞してしまうというような事態が生ずる可能性を低下させることができる。すなわち実施例１によれば仮想チャネルＶＣ０，ＶＣ１の計２個のバッファに均等にデータパケットが配分されるようになるため、物理的なバッファの量を増やすことなく、実質的に仮想チャネルＶＣ０のバッファの量を増やしたのと同等の効果が得られる。【００５１】
更に実施例１によれば、クロスバスイッチ４１に対し同時に複数の送信要求を出すことが可能になるため、あるデータパケットが転送できる状態になった際、その転送機会を逃す可能性が減る。このためにクロスバスイッチ４１が行う調停にかかる時間のばらつきが抑制される。一例として、図９に示す参考例では、ステップＳ３２で示される＋ｙ方向の同軸通信が発生し、同時にステップＳ３１で示される他の軸、すなわち＋ｘ方向から＋ｙ方向へと転送方向を変更する軸移動の通信が発生した場合である。この場合、上記同軸通信Ｓ３２と軸移動の通信Ｓ３１との送出方向がそれぞれ＋ｙで相互に一致する。また仮想チャネルもそれぞれＶＣ０で相互に一致するものとする。このためＳ３２、Ｓ３１それぞれの通信に対する送信要求同士が競合する。その結果Ｓ３２、Ｓ３１それぞれの通信を同時に実施することができず、一方の通信につき、通信機会が喪失する。これに対し実施例１によれば、上記した図８に示す例で示されるように、データパケットが２つの仮想チャネルのバッファＶＣ０，ＶＣ１に分散して格納される。その結果ステップＳ２２で示される＋ｙ方向の同軸通信と、ステップＳ２３で示される＋ｘ方向から＋ｙ方向へと転送方向を変更する通信と発生し、送出方向が＋ｙで一致する場合であってもＳ２２、Ｓ２３それぞれの通信を同時に実施できる。【００５２】
すなわち実施例１によれば、クロスバスイッチ４１に対し同時に並行して多数の送信要求を出すことが可能なため、通信機会が喪失する事態の発生頻度を効果的に減らすことができる。すなわち図８に示される実施例１の場合、以下に示される動作がなされる。ステップＳ２２で示される同軸通信のデータパケットとステップＳ２３で示される他の軸からの軸移動の通信のデータパケットとが両方ともが、それぞれ異なる仮想チャネルに対応するバッファＶＣ０，ＶＣ１の先頭に来る。同軸通信のデータパケットと他の軸からの軸移動の通信のデータパケットとが両方とも異なる仮想チャネルに対応するバッファＶＣ０，ＶＣ１の先頭に来ると、同軸通信の送信要求と軸移動の通信の送信要求とが同時に並行に出されるようになる。したがって同軸通信と軸移動の通信とが同時に並行して実施されるようになる。【００５３】
また図９の参考例では、ステップＳ３１，Ｓ３２とも、＋ｙ方向のデータパケットがバッファの先頭にあり、＋ｙ方向に対する送信要求が出されている状態である。他方、Ｓ３１，Ｓ３２の通信に係るデータパケットが格納されているクロスバインタフェース４３，４５のそれぞれのＶＣ０のバッファの各々には、当該＋ｙ方向向けのデータパケットの次に＋ｘ方向向けのデータパケットが格納されている。しかしながら上記＋ｘ方向向けのデータパケットはバッファの先頭にないためクロスバスイッチ４１に対し送信要求を出せず、送出できない。これに対し図８に示す実施例１によれば、＋ｘ方向向けのデータパケットは、クロスバインタフェース４３，４５のそれぞれにおいて、仮想チャネルのバッファＶＣ１に格納されている。当該仮想チャネルＶＣ１のバッファは、＋ｙ方向向けのデータパケットが格納されている仮想チャネルＶＣ０のバッファとは異なる。したがって上記＋ｘ方向向けのデータパケットはそれぞれ仮想チャネルＶＣ１のバッファの先頭にある。したがってステップＳ２１，Ｓ２４に示されるように、上記＋Ｘ方向向けのそれぞれのデータパケットの通信要求を同時に並行してクロスバスイッチ４１に対し出すことができる。【００５４】
このように実施例１によれば図８に示されるように、＋ｘ方向向けのデータパケットと＋ｙ方向向けのデータパケットとが両方ともバッファの先頭に来る可能性が増す。＋ｘ方向向けのデータパケットと＋ｙ方向向けのデータパケットとが両方ともバッファの先頭に来ると、以下の動作がなされる。すなわち、＋ｘ方向向けのデータパケットの送信要求（Ｓ２１，Ｓ２４）と＋ｙ方向向けのデータパケットの送信要求（Ｓ２３，Ｓ２２）とが同時に並行に出されるようになる。したがって図８に示されるように、ｘ軸の通信とｙ軸の通信とが同時に並行して実施されるようになる。実施例１によれば上記効果により並列計算機システム全体の通信効率が向上する。【００５５】
図１０は本実施例の仮想チャネル制御方法につき、より具体的に説明するためのフローチャートである。図１０中、ノードはデータパケットを送出する際、ステップＳ３１でデータパケットの宛先を確認する。ここで確認する宛先は、データパケットを送出する次元における宛先である。データパケットを送出する次元は、上記した次元制御方法の実施により決定される。例えばデータパケットを送出する次元がｘ軸であれば、データパケットのｘ座標の宛先を確認する。次にステップＳ３２にて、確認したデータパケットの宛先と自ノードの位置とを比較する。比較の結果、自ノードの位置がデータパケットの宛先に対しノード１台分手前であれば（Ｓ３２  ＹＥＳ），すなわち現在の位置が宛先の１台手前であれば、ステップＳ３３に移行する。ステップＳ３３にてノードは、データパケットを送出する仮想チャネルを、現在の仮想チャネルから他の仮想チャネルへと変更する。他方、ステップＳ３２の判定結果がＮＯの場合、ノードは当該データパケットにつき、仮想チャネルの変更は行わない（ステップＳ３４）。ステップＳ３３あるいはＳ３４の後、ノードはクロスバスイッチ４１へデータパケットを送信する。【００５６】
図１０等に示す如くの仮想チャネル制御方法を実現する際、データパケットのヘッダに格納されている情報を利用することができる。データパケットの必要最低限の構成は図１１に示す如くである。すなわちヘッダとしてデータパケットの宛先となるノードのｘ座標及びｙ座標が格納される。なおデータパケットのヘッダに格納する情報として、上記の宛先座標に代え、宛先までの相対座標とする方法も可能である。当該方法の場合、宛先までの相対座標をヘッダに格納し、データパケットがノード間を移動するたびに当該相対座標を適宜に書き変える。更にデータパケットのヘッダには仮想チャネル情報ＶＣ（例えば２ビット）が格納される。仮想チャネル情報ＶＣには、当該データパケットの仮想チャネルがＶＣ０で有るのかＶＣ１であるのかを識別するための情報が書き込まれる。各ノードはデータパケットを受信すると当該仮想チャネル情報ＶＣを参照し、仮想チャネル情報ＶＣが示す仮想チャネルのバッファに当該パケットを格納する。【００５７】
図１２は図２に示されるルーティングコントローラ４内の構成例を示すブロック図である。図１２は、図２に示される４方向＋ｘ、−ｘ、＋ｙ、−ｙの各方向の送受信ポートに設けられた４個のクロスバインタフェース４２〜４５、並びに図１４とともに後述するＣＰＵクロスバインタフェース４８の各々の構成例を示す。【００５８】
図１２に示されるクロスバインタフェース４２〜４５およびＣＰＵクロスバインタフェース４８の各々は、パケット入力部４０１，ヘッダ解析部４０２，デマルチプレクサ４０３，仮想チャネルＶＣ０のバッファ４０４、仮想チャネルＶＣ１のバッファ４０５，マルチプレクサ４０６およびパケット出力部４１１を有する。【００５９】
パケット入力部４０１はヘッダ解析部４０２に接続され、送受信ポートを介し、当該ルーティングコントローラが設けられるノードが受信したデータパケットをヘッダ解析部４０２に渡す。ヘッダ解析部４０２では、受信したデータパケットのヘッダに格納された宛先ｘ座標、宛先ｙ座標および仮想チャネル情報ＶＣを確認し、確認結果に応じて図３とともに上記した次元制御方法および図４とともに上記した仮想チャネル制御方法をそれぞれ実行する。【００６０】
ヘッダ解析部４０２は仮想チャネル制御方法を実行した結果、当該データパケットの仮想チャネルを変更するか否かを決定する。ヘッダ解析部４０２は上記決定の結果、仮想チャネルを変更する場合、データパケットの仮想チャネル情報ＶＣを書き換える。ヘッダ解析部４０２は上記決定の結果、仮想チャネルを変更しない場合、データパケットの仮想チャネル情報ＶＣを書き換えない。その後ヘッダ解析部４０２はデータパケットをデマルチプレクサに送出する。又ヘッダ解析部４０２は当該データパケットをマルチプレクサ４０６からクロスバスイッチ４１に送出する際、予め当該データパケットに係る送信要求４０８をクロスバスイッチ４１に送信する。【００６１】
デマルチプレクサ４０３はヘッダ解析部４０２の制御の下、ヘッダ解析部４０２から送出されたデータパケットの、当該ノードに受信された時点の仮想チャネル情報ＶＣが示す仮想チャネルのバッファ４０４あるいは４０５に、当該データパケットを格納する。すなわちヘッダ解析部４０２が上記の如く、仮想チャネル制御方法の実施の結果、仮想チャネル情報ＶＣを書き換えた場合であっても、デマルチプレクサ４０３は、書き換える前の仮想チャネル情報ＶＣが示す仮想チャネルのバッファにデータパケットを格納する。【００６２】
各バッファ４０４，４０５に格納されたデータパケットはヘッダ解析部４０２の制御の下、順次マルチプレク４０６を介し、当該クロスバインタフェースからクロスバスイッチ４１へと送信される。データパケットがクロスバインタフェースからクロスバスイッチ４１に送信される際、上記の如く、予め当該データパケットについての送信要求４０８が、当該クロスバインタフェースのヘッダ解析部４０２からクロスバスイッチ４１に送信される。ヘッダ解析部４０２では、クロスバスイッチ４１から送信許可が出された場合にのみ、バッファ４０４，４０５からデータパケットを取り出し、マルチプレクサ４０６を介してクロスバスイッチ４１に送出する。【００６３】
クロスバスイッチ４１ではこのようにして各クロスバインタフェース４２〜４５、４８から送信された送信要求が競合した場合、送信要求間の調停を行う。なお送信要求が競合する場合とは、複数の送信要求に係るデータパケットの送出方向が相互に一致し、かつ仮想チャネル情報ＶＣが示す仮想チャネルが相互に一致する場合である。４セットの送受信ポートに対する調停の順番は特に限定されないが、例えば４セットの送受信ポートに予め順位を付け、当該順位に従う方法、調停の履歴を加味する方法等が考えられる。【００６４】
クロスバスイッチ４１は、データパケットの送信要求が他のデータパケットの送信要求と競合しない場合、当該データパケットに送信許可を与える。そしてクロスバスイッチ４１は当該送信許可に応じて送信元のクロスバインタフェースから送信されてきたデータパケットを送出方向のクロスバインタフェースへ送信する。他方データパケットの送信要求が他のデータパケットの送信要求と競合した場合、クロスバスイッチ４１は上記の如く調停を行う。調停の結果クロスバスイッチ４１は一のデータパケットに送信許可を与える。そしてクロスバスイッチ４１は当該送信許可に応じて送信元のクロスバインタフェースから送信されてきたデータパケットをを送出方向のクロスバインタフェースへ送信する。データパケットは当該送出方向のロスバインタフェースのパケット出力部４１１から送受信ポートを介しノードの外部に送出される。【００６５】
図１２の例ではクロスバインタフェース４２〜４５、４８の各々の各ブロック４０１、４０２，４０３，４０４，４０５，４０６，４１１は全てハードウェアで実現される。このようにハードウェアで実現することにより、ソフトウェアで実現する場合に比し、データパケットの処理を高速に実行できる利点がある。【００６６】
図１３は図１２に示される各クロスバインタフェース４２〜４５、４８の各々の構成のうち、ヘッダ解析部４０２に代えてヘッダ送信部４０８を設けた例を示す。図１３の例の場合、ヘッダ解析部４０２が行う動作を、クロスバインタフェースの外部に設けられる情報処理部５がソフトウェアを実行することにより実現する。その他の点は図１２の場合と同様であり、重複する説明を省略する。ここで図１３の構成の場合、図３とともに上記した次元制御方法あるいは図４とともに上記した仮想チャネル制御方法を変更するような場合、次元制御方法あるいは仮想チャネル制御方法の具体的な内容を比較的容易に変更することができる。すなわち図１３の構成の場合、情報処理部５にインストールするソフトウェアを変更するのみで次元制御方法あるいは仮想チャネル制御方法の具体的な内容を容易に変更できる。その結果ルーティングの方法を容易に変更できる。【００６７】
図１４はクロスバインタフェース４２〜４５を各方向＋ｘ、−ｘ、＋ｙ、−ｙの送受信ポートＰ１１，Ｐ１２，Ｐ２１，Ｐ２２，に配設したルーティングコントローラ４の構成例を示すブロック図である。図１４に示される如く、ルーティングコントローラ４には各方向ごとのクロスバインタフェース４２〜４５の他に、上記ＣＰＵクロスバインタフェース４８が設けられる。ＣＰＵクロスバインタフェース４８はノードにおいて情報処理部５と接続される。実施例１では、ＣＰＵクロスバインタフェース４８は図１２，図１３とともに上記した各方向のクロスバインタフェース４２〜４５と同様の構成を有する。ＣＰＵクロスバインタフェース４８は情報処理部５からデータパケットを受信すると、図１２中、パケット入力部４０１を介しパケット解析部４０２にデータパケットを渡す。パケット解析部４０２は図３の次元制御方法および図４の仮想チャネル制御方法を実行する。次元制御方法における「データパケットを送出する次元」としては、初期値として例えば第１の次元、ｘ軸とする。また仮想チャネル制御方法における「データパケットの仮想チャネル」としては、初期値として例えば第１の仮想チャネル、すなわち仮想チャネルＶＣ０とする。また、クロスバスイッチ４１は各方向のクロスバインタフェース４２〜４５に加え、ＣＰＵクロスバインタフェース４８からの送信要求をも受信し、ＣＰＵクロスバインタフェース４８からの送信要求も含め、必要に応じ、送信要求間の調停を行う。【００６８】
図１５は情報処理部５の構成例を示す。図１５中、本体部１０１は、大略バス２００により接続されたＣＰＵ２０１、ＲＡＭやＲＯＭ等からなるメモリ部２０２、ディスク１１０用のディスクドライブ２０３およびハードディスクドライブ（ＨＤＤ）２０４を有する。ディスプレイ１０２、キーボード１０３およびマウス１０４も、図示の如くバス２００を介してＣＰＵ２０１に接続されているが、これらは直接ＣＰＵ２０１に接続されていても良い。なお、情報処理部５の構成は図１５に示す構成に限定されるものではなく、代わりに各種周知の構成を使用しても良い。【００６９】
上記の構成の情報処理部５において、図１３の構成を採用する場合、上記次元制御方法及び仮想チャネル制御方法をコンピュータに実行させるためのプログラムがインストールされＣＰＵ２０１で実行される。その結果、図１３とともに上記したように、ソフトウェアによって次元制御方法及び仮想チャネル制御方法が実現される。【００７０】
以下に実施例１の作用効果をシミュレーションにより検証した結果を説明する。シミュレーションの初期条件と設定内容は以下の通りである。
●トポロジとして8ノード×8ノードの配列で２次元トーラス状の接続とした。
●ＣＰＵクロスバインタフェース４８を２個設けた。
●データパケットのパターン：すべてのノードが６４個のデータパケットを持ち、それぞれのノードが他のノードにデータパケットを転送しようとする。６４個のデータパケットのパターンはすべてのノードで「同じ目的地＋長さ」の組み合わせパターンを持つようにした。
●「パケットの長さ」、「データパケットの目的地」は、一様乱数を用いて設定した。「データパケットの長さ」は１〜１２８クロックサイクル相当の範囲で設定した。
●すべてのデータパケットは初期状態ではＣＰＵクロスバインタフェース４８に格納されているものとした。
●ケーブル遅延はないものとした。【００７１】
またシミュレーションにおけるアルゴリズムは以下の通りである。
１）クロスバスイッチ４１は現在の送信状況を確認する。
２）クロスバスイッチ４１はＣＰＵクロスバインタフェース４８と各方向のクロスバインタフェース４２〜４５から送信される送信要求を確認し、送信状況に応じた公平な調停を行う。
３）クロスバスイッチ４１による調停の結果、「送信許可」を受け取ったクロスバインタフェース４２〜４５あるいはＣＰＵクロスバインタフェース４８はデータパケットの送出を開始する。
４）以上のプロセスをすべてのデータパケットが所望のＣＰＵクロスバインタフェース４８に到着するまで各タイムステップで行う。【００７２】
上記シミュレーションの結果を図１６に示す。図１６中、縦軸は未到達データパケット数を示し、横軸は経過時間を表す。実線（normal-all）は通常の次元オーダルーティングの未到達パケット数を示す。細かい破線（onehop-all）は実施例１の方法を実施した場合の未到達データパケット数を示す。次に細かい破線（normal-x）は通常の次元オーダルーティングで現在ｘ軸の送受信ポート上に存在するデータパケット数を示す。粗い破線(onehop-x)は実施例１の方法を実行した場合においてｘ軸上に存在するデータパケット数を示す。一点鎖線（normal-y）は通常の次元オーダルーティングのｙ軸上に存在するデータパケット数を示す。二点差線(onehop-y)線は実施例１の方法を実行した場合においてy軸上の存在するデータパケット数を示す。【００７３】
当該結果から以下の点が理解できる。すなわち、システム全体でｘ軸に存在するデータパケット数のピーク最大数が実施例１の方法を用いると低下し、逆にｙ軸のピーク最大数は増加する。したがって効率よく次元オーダルーティングが行われ、結果的に並列度が向上し、通信時間の１０％程度の削減に成功した。【００７４】
上記シミュレーションは簡単のため２次元トーラス状の接続の場合について行ったが、実施例１の技術的思想はトポロジに関わらず有効であることは言うまでもない。
【図１】
2010087002.tif 000003
【図２】
2010087002.tif 000004
【図３】
2010087002.tif 000005
【図４】
2010087002.tif 000006
【図５】
2010087002.tif 000007
【図６】
2010087002.tif 000008
【図７】
2010087002.tif 000009
【図８】
2010087002.tif 000010
【図９】
2010087002.tif 000011
【図１０】
2010087002.tif 000012
【図１１】
2010087002.tif 000013
【図１２】
2010087002.tif 000014
【図１３】
2010087002.tif 000015
【図１４】
2010087002.tif 000016
【図１５】
2010087002.tif 000017
【図１６】
2010087002.tif 000018
【国際調査報告】
2010087002.tif 000019
2010087002.tif 000020
2010087002.tif 000021