(57)【特許請求の範囲】
【請求項１】
各ノードがアレイ中において識別されるローカルノードアドレスをそれぞれ備え、各ローカルノードアドレスは、最上位から最下位までのアドレス重要性の順を有する複数の要素を備え、前記各ノードは、
ローカルノードアドレスの要素を、それぞれ、他の１つのノードに向かうルーティング方向にマッピングするマッピング手段と、
送信先ノードを識別する送信先ノードアドレスを有するメッセージを受信するスイッチング手段であって、前記スイッチング手段は：最上位の不一致要素を識別することで、ローカルノードアドレスを送信先ノードアドレスと比較する手段と；ローカルノードアドレスが送信先ノードアドレスと一致しない場合に、マッピング手段により前記ローカルノードアドレスの最上位の不一致要素にマッピングされた方向に、他のノードにメッセージをルーティングする手段とを備える、スイッチング手段と、
を備えるプロセッサノードのアレイ。
【請求項２】
前記要素のそれぞれは１ビットである、請求項１に記載のアレイ。
【請求項３】
前記マッピング手段はルーティングルックアップテーブルを備える、請求項１または２に記載のアレイ。
【請求項４】
前記ルーティングルックアップテーブルはソフトウェアによりプログラマブルである、請求項３に記載のアレイ。
【請求項５】
前記マッピング手段はルーティングアルゴリズムを備える、請求項１または２に記載のアレイ。
【請求項６】
各ノードは、少なくとも１つのローカルプロセッサを備え、前記スイッチング手段は、前記ローカルノードアドレスが前記送信先ノードと一致する場合に、前記ローカルプロセッサの１つに前記メッセージをルーティングするように構成される、請求項１に記載のアレイ。
【請求項７】
前記ローカルノードアドレスを前記送信先ノードアドレスと比較する手段は、１回に１ビット実行され、前記最上位の不一致ビットに遭遇した場合に停止される、請求項２に記載のアレイ。
【請求項８】
前記送信先ノードアドレスは、前記スイッチング手段により受信されるメッセージの最初の部分である、請求項１に記載のアレイ。
【請求項９】
前記送信先ノードアドレスは最上位ビットから最下位ビットの順で前記スイッチング手段により受信される、請求項２に記載のアレイ。
【請求項１０】
前記アレイは少なくとも２次元である、請求項１に記載のアレイ。
【請求項１１】
前記アレイは少なくとも３次元である、請求項１０に記載のアレイ。
【請求項１２】
前記アレイは少なくとも４次元である、請求項１１に記載のアレイ。
【請求項１３】
前記スイッチング手段は、一致を検出した場合に、１つのプロセッサのメッセージをルーティングする前に、前記送信先ノードアドレスを廃棄するように構成される、請求項１に記載のアレイ。
【請求項１４】
少なくとも１つのノードは、複数のプロセッサで構成され、前記メッセージは、ノード中の送信先プロセッサを識別する送信先プロセッサアドレスをさらに備え、前記スイッチング手段は前記送信先ノードアドレスが前記ローカルノードアドレスと一致する場合に前記送信先プロセッサに前記メッセージをルーティングするように構成される、請求項１に記載のアレイ。
【請求項１５】
前記スイッチング手段は、前記メッセージを前記送信先プロセッサにルーティングする前に前記送信先プロセッサアドレスを廃棄するように構成される、請求項１４に記載のアレイ。
【請求項１６】
少なくとも１つのノードにおける少なくとも１つのプロセッサは、複数のI/Oチャネルを備え、前記メッセージは、前記プロセッサ中の送信先チャネルを識別する送信先チャネルアドレスをさらに備え、前記スイッチング手段は前記送信先ノードアドレスが前記ローカルノードアドレスと一致する場合に前記メッセージを前記送信先チャネルにルーティングするように構成される、請求項１に記載のアレイ。
【請求項１７】
前記スイッチング手段は、前記メッセージを前記送信先チャネルにルーティングする前に、前記送信先チャネルアドレスを廃棄するように構成される、請求項１６に記載のアレイ。
【請求項１８】
前記スイッチング手段は、送信先ノードアドレスの１またはそれ以上のビットが前記ローカルノードアドレスと一致すると、前記送信先ノードアドレスからこれらビットを廃棄するように構成される、請求項２に記載のアレイ。
【請求項１９】
プロセッサノードのアレイ中のメッセージをルーティングする方法であって、各ノードはそれぞれアレイ内において識別するためのローカルノードアドレスを有し、各ローカルノードアドレスは最上位から最下位までのアドレス重要性の順を有する複数の要素を備え、前記方法は：
送信先ノードアドレスを備えるメッセージを１つのノードにおいて受信し；
最上位の不一致要素を識別するために前記ローカルノードアドレスを前記送信先ノードアドレスと比較し；
前記ローカルノードアドレスが前記送信先ノードアドレスと一致しない場合に、前記ローカルノードアドレスの各要素を、それぞれ、他の１つのノードに向かうルーティング方向にマッピングするマッピング手段を調査し、前記マッピング手段により前記ローカルノードアドレスの最上位の不一致要素にマッピングされた方向にある他のノードに前記メッセージをルーティングする、方法。
【請求項２０】
前記要素のそれぞれは１ビットである、請求項19に記載の方法。
【請求項２１】
前記マッピング手段はルーティングルックアップテーブルを備える、請求項１９または２０に記載の方法。
【請求項２２】
前記ルーティングルックアップテーブルはソフトウェアによりプログラマブルである、請求項２１に記載の方法。
【請求項２３】
前記マッピング手段はルーティングアルゴリズムでなる、請求項１９または２０に記載の方法。
【請求項２４】
各ノードは少なくとも１つのローカルプロセッサを備え、前記方法は、前記ローカルノードアドレスが前記送信先ノードアドレスと一致する場合に前記ローカルプロセッサの１つに前記メッセージをルーティングすることをさらに含む、請求項１９に記載の方法。
【請求項２５】
前記比較するステップは：１回で１ビットの比較処理を実行し、最上位の不一致ビットに遭遇した場合に比較処理を停止する処理を含む、請求項２０に記載の方法。
【請求項２６】
前記送信先ノードアドレスは、前記ノードによって受信されるメッセージの最初の部分である、請求項１９に記載の方法。
【請求項２７】
前記送信先ノードアドレスは最上位ビットから最下位ビットの順に前記ノードによって受信される、請求項２０に記載の方法。
【請求項２８】
前記アレイは少なくとも２次元である、請求項１９に記載の方法。
【請求項２９】
前記アレイは少なくとも３次元である、請求項２８に記載の方法。
【請求項３０】
前記アレイは少なくとも４次元である、請求項２９に記載の方法。
【請求項３１】
一致を検出された場合に前記メッセージを１つのプロセッサにルーティングする前に、前記送信先ノードアドレスを廃棄することをさらに備える、請求項１９に記載の方法。
【請求項３２】
少なくとも１つのノードは複数のプロセッサを含み、前記メッセージはノード内において送信先プロセッサを識別するための送信先プロセッサアドレスをさらに備え、前記方法は、前記送信先ノードアドレスが前記ローカルノードアドレスに一致している場合に、前記送信先プロセッサに前記メッセージをルーティングすることをさらに含む、請求項１９に記載の方法。
【請求項３３】
前記メッセージを前記送信先プロセッサにルーティングする前に前記送信先プロセッサアドレスを廃棄することをさらに含む、請求項３２に記載の方法。
【請求項３４】
少なくとも１つのノードの少なくとも１つのプロセッサは、複数のI/Oチャネルを含み、前記メッセージは前記プロセッサ中における送信先チャネルを識別するための送信先チャネルアドレスをさらに含み、前記方法は、前記送信先ノードアドレスが前記ローカルノードアドレスと一致する場合に前記送信先チャネルに前記メッセージをルーティングすることを含む、請求項１９に記載の方法。
【請求項３５】
前記メッセージを前記送信先チャネルにルーティングする前に前記送信先チャネルアドレスを廃棄することをさらに含む、請求項３４に記載の方法。
【請求項３６】
前記送信先ノードアドレスの１または複数のビットが前記ローカルノードアドレスと一致する場合に前記送信先ノードアドレスからこれらビットを廃棄する、請求項２０に記載の方法。
【請求項３７】
ｎを整数とするとき、ｎ次元プロセッサアレイのノード間のメッセージをルーティングする方法であって、前記方法は：
アレイ中の次元の数ｎを決定し；
Ｌをノードの数とするとき、次元ｋ＝１〜ｎのそれぞれにおいてアレイの最大範囲Ｌ（ｋ）を決定し；
各次元ｋ＝１〜ｎに沿って、バイナリで連続的に番号が付された座標を定義し、この座標は少なくともＬ（ｋ）の長さをカバーしており、そのようなノードは各ｎ次元中のそれぞれの座標により記述される；
各次元ｋ＝１〜ｎに沿って各ノードをアドレスするために、２ｍ（ｋ）≧Ｌ（ｋ）となるようなｍ（ｋ）ビットのアドレス部分を割り当て、それぞれのｍ（ｋ）ビットアドレス部分中の各次元ｋに沿ったノード座標を格納し；
アレイ中の各ノードの各アドレス部分に対して、値０のビットに、それぞれ、他の１つのノードに向かう第１方向をマッピングし、値１のビットに、それぞれ、別の他の１つのノードに向かう第２方向をマッピングし；
複数の前記アドレス及び前記方向を参照することによってメッセージをルーティングする、方法。
【請求項３８】
ｎを整数とするとき、ｎ次元プロセッサアレイのノードにアドレスを割り当てる処理をコンピュータに実行させるためのプログラムであって、
前記プログラムは、
アレイ中の次元の数ｎを決定するステップ；
Ｌをノードの数とするとき、次元ｋ＝１〜ｎのそれぞれにおいてアレイの最大範囲Ｌ（ｋ）を決定するステップ；
次元ｋ＝１〜ｎのそれぞれに沿って、バイナリで連続的に番号が付された座標を定義し、この座標は少なくともＬ（ｋ）の長さをカバーしており、そのようなノードは各ｎ次元中のそれぞれの座標により記述される；
各次元ｋ＝１〜ｎに沿って各ノードをアドレスするために、２ｍ（ｋ）≧Ｌ（ｋ）となるようなｍ（ｋ）ビットのアドレス部分を割り当て、それぞれのｍ（ｋ）ビットアドレス部分中の各次元ｋに沿って、ノード座標を格納するステップ；
アレイ中の各ノードの各アドレス部分に対して、値０のビットに、それぞれ、他の１つのノードに向かう第１方向をマッピングし、値１のビットに、それぞれ、別の他の１つのノードに向かう第２方向をマッピングするステップ
を前記コンピュータに実行させるためのプログラム。
【請求項３９】
プロセッサノードのアレイであって、各ノードはそれぞれアレイ中において識別するためのローカルノードアドレスを有し、各ローカルノードアドレスは最上位から最下位のアドレス重要性の順を有する複数の要素を備え、各ノードは、
前記ローカルノードアドレスの各要素に、それぞれ、他の１つのノードに向かうルーティング方向をマッピングするマッピング装置と、
送信先ノードを識別するための送信先ノードアドレスを有するメッセージを受信するための配置されるスイッチと、
を備え、前記スイッチは、
最上位の不一致要素を識別することにより、前記ローカルノードアドレスを前記送信先ノードアドレスと比較するための比較部と、
前記ローカルノードアドレスが前記送信先ノードアドレスと一致しなかった場合に、前記マッピング装置により前記ローカルノードアドレスの最上位の不一致要素にマッピングされた方向にある、他のノードに前記メッセージをルーティングするルーティング部と、
を備えるアレイ。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ間のメッセージをルーティングすることに関し、特に、プロセッサアレイのノード間のメッセージをルーティングする構造またはプロトコルに関する。
【背景技術】
【０００２】
図１に示すように、集積回路１はプロセッサタイル２のアレイとして構成することができ、各タイルはそれぞれプロセッサ４、メモリ６、及び通信手段８を含んでいる。タイル２は、チップ１全体にデータ及び制御情報を送信する相互接続10を介して接続されている。チップ上のタイルのいくつかは、外部接続12を介して外部装置に結合されている。これに代えて、あるいは付加的に、他のチップ上のプロセッサが１つの回路を形成するようにともに配列されるように構成できる。
【０００３】
このような構成の利点は、設計段階においてより小さいモジュール化された複数のプロセッサをともにリンクすることにより、製造業者が、特定のコスト、消費電力、地域目標などのような、問題のアプリケーションまたは装置にために、その処理とメモリ必要条件に従って特定のパフィーマンスを持つチップまたは回路を容易に作成することができる。
【０００４】
しかしながら、また、アレイ全体にメッセージをルーティングすることには困難性を有している。メッセージは遅延するおそれがあり、最も効率的な経路によってルーティングされないかもしれず、また、デッドロックしてしまうおそれもある。さらに、大規模アレイにおいてルーティングプロトコルは複雑であり動作が重くなるおそれもある。
【発明の概要】
【０００５】
本願の第１の観点では、プロセッサノードのアレイが提供され、各ノードはそれぞれ前記アレイ中において識別されるローカルノードアドレスを備え、各ローカルノードアドレスは最上位から最下位までのアドレス重要性の順を備える複数の要素を備え、各ノードは：ローカルノードアドレスの各要素にそれぞれのルーティング方向をマッピングするように構成されるマッピング手段と；送信先ノードを識別する送信先ノードアドレスを備えるメッセージを受信するために配置されたスイッチとを備え、前記スイッチは：最上位の不一致要素を識別することによって、ローカルノードアドレスを送信先ノードアドレスと比較する比較手段と；前記ローカルノードアドレスが前記送信先ノードアドレスと一致しない場合に、前記マッピング手段によりローカルノードアドレスの最上位の不一致要素にマッピングされた方向にある、他のノードにメッセージをルーティングする手段とを備える。
【０００６】
必須ではないが、前記要素のそれぞれは１つのビットであることが好ましい。
【０００７】
驚くことに、発明者は、ノードアドレスのビットにルーティング方向をマッピングすることによって、ｎ次元プロセッサアレイの全体にメッセージをルーティングするための効率的で、素早く、容易な方法で、デッドロックすることのないプロトコルの提供が可能であることを発見した。さらなる利点として、どのような次元数をもつどのようなサイズのアレイにもこの同様の簡単な構造が作用する。
【０００８】
実施例において、スイッチは、前記比較の処理を１回に１ビット実行し、最上位の不一致ビットに遭遇した場合に比較処理を停止するように構成することができる。送信先ノードアドレスは、スイッチが受信するメッセージの最初の部分とすることができる。送信先ノードアドレスは、最上位の不一致ビットから最下位のビットの順にスイッチに受信されるように構成できる。
【０００９】
これらの実施例では、多くのノードにおいて、スイッチが他のノードに転送する前にメッセージの最初のいくつかのビットを読み出すことだけを必要とすることから、特に有利である。この技術では、アドレスはメッセージの残りの部分が到着する前に得ることができることから、それによって格別に速いワームホールルーティングを容易にする。これから、スイッチは、最小の遅延でメッセージのルーティングを即座に設定することが可能である。
【００１０】
マッピング手段は、ルーティングルックアップテーブルを含むように構成できる。このルーティングルックアップテーブルは、ソフトウェアによりプログラム可能に構成できる。マッピング手段はルーティングアルゴリズムを含む構成とすることができる。
【００１１】
ノードは、少なくとも２次元、少なくとも３次元、または少なくとも４次元のアレイに配置することができる。
【００１２】
各ノードは、少なくとも１つのローカルプロセッサ、及びローカルノードアドレスが送信先ノードアドレスに一致する場合に、ローカルプロセッサの１つにメッセージをルーティングするように構成されるスイッチを含むように構成できる。スイッチは、プロセッサにメッセージをルーティングする前に一旦一致が検出された送信先ノードアドレスを廃棄するように構成できる。
【００１３】
少なくとも１つのノードは、複数のプロセッサを含み、前記メッセージは前記ノード中の送信先プロセッサを識別する送信先プロセッサアドレスを含み、前記スイッチは、送信先ノードアドレスがローカルノードアドレスに一致する場合に、送信先プロセッサにメッセージをルーティングするように構成される。スイッチは、送信先プロセッサにメッセージをルーティングする前に、送信先プロセッサアドレスを廃棄するように構成することができる。
【００１４】
少なくとも１つのノードにおける少なくとも１つのプロセッサは、複数のI/Oチャネルを含み、前記メッセージはプロセッサ中に送信先チャネルを識別する送信先チャネルアドレスをさらに含み、前記スイッチは送信先ノードアドレスがローカルノードアドレスに一致する場合に、送信先チャネルにメッセージをルーティングするように構成することができる。
【００１５】
前記スイッチは、送信先ノードアドレスのビットがローカルノードアドレスと一致すると、送信先ノードアドレスから１またはそれ以上のビットを廃棄するように構成することができる。たとえば、メッセージの位置がその次元内の特定の座標に絞り込めるように、特定次元に関連するノードアドレス部分が廃棄されるように構成できる。
【００１６】
本発明の他の観点によれば、プロセッサノードのアレイ内におけるメッセージのルーティング方法を提供するものであって、各ノードは、アレイ内においてそれを識別するためのローカルノードアドレスをそれぞれ備えており、各ローカルノードアドレスは最上位から最下位までのアドレス重要性の順を備える複数の要素を備え、前記方法は：ノードにおいて、送信先ノードアドレスを含むメッセージを受信し；最上位の不一致要素を識別するためにローカルノードアドレスを送信先ノードアドレスと比較し；ローカルノードアドレスが送信先ノードアドレスに一致しなかった場合に、それぞれのルーティング方向にローカルノードアドレスの各要素をマッピングするマッピング手段を調査し、前記マッピング手段によりローカルノードアドレスの最上位の不一致要素にマッピングされた方向にある、他のノードにメッセージをルーティングする。
【００１７】
本発明の他の観点によれば、ｎを整数とするとき、ｎ次元プロセッサアレイのノード間においてメッセージをルーティングする方法を提供するものであって、この方法は：アレイ中の次元ｎの数を決定し；Ｌをノードの数とするとき、次元ｋ＝１〜ｎのそれぞれにおいてアレイの最大範囲Ｌ（ｋ）を決定し；各次元ｋ＝１〜ｎに沿って、バイナリで連続的に番号が付された座標を定義し、この座標は少なくともＬ（ｋ）の長さをカバーしており、そのようなノードは各ｎ次元中のそれぞれの座標により記述される；各次元ｋ＝１〜ｎに沿って各ノードをアドレスするために、ｍ（ｋ）ビットのアドレス部分を割り当て、それぞれのｍ（ｋ）ビットアドレス部分中の各次元ｋに沿って、ノード座標を格納し；アレイ中の各ノードの各アドレス部分に対して、値０のビットにそれぞれ第１方向をマッピングし、値１のビットにそれぞれ第２方向をマッピングし、複数の前記アドレス及び前記方向を参照することによってメッセージをルーティングする。
【００１８】
本発明の他の観点によれば、ｎを整数とするとき、ｎ次元プロセッサアレイのノードにアドレスを割り当てるコンピュータプログラム製品を提供するものであって、コンピュータプログラムは以下のステップを実行するコードを含み：Ｌをノードの数とするとき、アレイ中の次元ｎの数を特定し、次元ｋ＝１〜ｎのそれぞれにおいてアレイの最大範囲Ｌ（ｋ）を決定し、次元ｋ＝１〜ｎのそれぞれに沿って、バイナリで連続的に番号が付された座標を定義し、この座標は少なくともＬ（ｋ）の長さをカバーしており、そのようなノードは各ｎ次元中のそれぞれの座標により記述される；各次元ｋ＝１〜ｎに沿って各ノードをアドレスするために、ｍ（ｋ）ビットのアドレス部分を割り当て、それぞれのｍ（ｋ）ビットアドレス部分中の各次元ｋに沿って、ノード座標を格納し；アレイ中の各ノードの各アドレス部分に対して、値０のビットにそれぞれ第１方向をマッピングし、値１のビットにそれぞれ第２方向をマッピングする。
【００１９】
本発明をより理解し、どのようにして上の構成が効果を導出できるのかについて、実施例と対応する図面を用いて説明する。
【図面の簡単な説明】
【００２０】
【図１】図１はプロセッサアレイの一例を示す。
【図２】図２はプロセッサノードの概略的な代表例である。
【図３】図３はルーティングに適したメッセージフォーマットを示す。
【図４】図４は１次元プロセッサアレイを示す
【図５】図５は２次元４×４プロセッサアレイを示す。
【図６】図６は２次元３×３プロセッサアレイを示す。
【図７】図７は３次元３×３×２プロセッサアレイを示す。
【図８】図８は４次元２×２×２×２プロセッサアレイを示す。
【図９】図９はルーティング方法を表すフローチャートである。
【図１０】図１０はアドレスとルーティング方向の割り当て方法を表すフローチャートである。
【発明を実施するための形態】
【００２１】
図２は、本発明の典型的な実施例によるプロセッサタイル２’を概略的に示す。このような複数のタイルは結合された機構またはアレイに一緒に配置され、アレイ中の各タイル２’はシステムスイッチ16及びアレイ中の他のタイルにそれぞれリンクする複数の２方向システムリンク18を備えている。システムリンク18のいくつかまたは全ては、それぞれ他のプロセッサにそれぞれの方向でリンクし、および／またはいくつかのシステムリンク18は同一のプロセッサに同一の方向でリンクすることで、システムリンク18のグループがより大きい容量で１つのリンクとして扱うことができる。システムリンク18は、オンチップまたはインターチップであってもよい。各システムスイッチ16はアレイ中のノードとして定義される。
【００２２】
この例において、タイル２’は４つのプロセッサ４を含んでいる。各プロセッサ４は２方向チャンネルリンク22及びプロセッサスイッチ14を介してアクセス可能な多数の異なるI/Oチャネルを備えている。プロセッサスイッチは、１または複数の２方向プロセッサリンク20によってシステムスイッチに接続される。タイル２’は、後述するように、システムスイッチ16によってアクセス可能なルーティングルックアップテーブルを備えている。タイル２’は、RAM及びROM（図示せず）のようなメモリおよび外部リンクをさらに備えている。
【００２３】
実行中において、システムスイッチ16はローカルプロセッサの１つ（たとえば、同一ノードのプロセッサ）から、または異なるノードのプロセッサから、入ってくるメッセージ26を受信する。各ノードはアレイ中において各ノードを識別するためのアドレスが割り当てられ、各プロセッサはそれぞれのノード中の各プロセッサを識別するためのアドレスが割り当てられ、各チャネルはそれぞれのプロセッサ中における各チャネルを識別するためのアドレスが割り当てられている。アドレスは、多くの場合個々のビットであるアドレスデータの構成要素量子で構成される。図３に概略的に図示するように、メッセージは、送信先ノードアドレスを特定する送信先ノード部分28、送信先プロセッサアドレスを特定する送信先プロセッサ部分30、および送信先チャネルアドレスを特定する送信先チャネル部分32を備えるヘッダ27を含む。また、メッセージはペイロード34を含む。好ましい実施例では、ヘッダは２バイト（16ビット）の長さであり、８ビットの送信先ノード部分、４ビットの送信先プロセッサ部分、４ビットの送信先チャネル部分で構成される。このことは、256ノード、4096プロセッサ、65536チャネル、各ノードは16プロセッサを有し、各プロセッサが16チャネルを有することを許容する。
【００２４】
システムスイッチ16は、ローカルノードアドレス（たとえば、自身のノードアドレス）を、メッセージの送信先ノードアドレスと比較する。これらが一致した場合、システムスイッチはメッセージの送信先プロセッサアドレスを調査し、対応するプロセッサスイッチ14にこれをルーティングする。プロセッサスイッチ14は、その後、メッセージの送信先チャネルアドレスを調査し、対応するチャネルにこれをルーティングする。なお、好ましくは受信ソフトウェアがヘッダを再度見る必要がないように、ヘッダ27はメッセージが最終的にプロセッサ４に送信される前に廃棄されるように構成できる。メッセージがプロセッサスイッチ14にルーティングされる前にノードアドレス部分28及びプロセッサアドレス部分が廃棄され、チャネルアドレス部分32は、メッセージがプロセッサスイッチ14にルーティングされた後であって、メッセージがプロセッサ４にルーティングされる前に廃棄されるように、ヘッダの各部分が廃棄される。
【００２５】
しかしながら、一致しなかった場合、システムスイッチ16は、他のノードを送信先とするメッセージを受信し、これをどの方向に転送するか、たとえば、どのシステムリンク18がメッセージを再送信するか、どのノードが次にこれを受信するか、を決定する必要がある。アレイは、数十、数百、数千のノードで構成され、このためメッセージが送信先に到達するまでに多数のノード間を中継される必要があるかもしれないことに留意してほしい。これから、アレイ全体を通して最も効率的なルートを見つけることは、簡単な仕事ではない。
【００２６】
本発明によれば、ルックアップテーブル24を調査することにより達成される。ルックアップテーブル24は、ローカルノードアドレスのビットに対して表にされた多数の可能なルーティング方向を備え、１つの方向がそれぞれ各ビットにマッピングされている。ノードのローカルアドレスとメッセージの送信先アドレスの間の比較に基づいて、システムスイッチ16は不一致ビットを識別し、そのビットにどの方向がマッピングされているかを特定するためにルックアップテーブル24を参照する。
【００２７】
ルックアップテーブルは、顧客がモジュラーファッションで多くのプロセッサを互いに接続し、必要とされるルーティングをプログラムすることが可能となるように、ソフト−プログラマブルであることが好ましい。これに代えて、アレイが供給者によって予め設計されている場合には、ルックアップテーブルをアレイのために固定的にプログラムされたものに代えることができる。
【００２８】
ルックアップテーブルの一例を図２に示すが、実施例においては、各ノードにこのようなルックアップテーブルが複数提供されるように構成できる。たとえば、システムリンク毎に１つのルックアップテーブルを備えるように構成できる。このことは、ルックアップテーブルリソースのためにメッセージが競合することを防止し、複数のメッセージが同時にルーティングされることを許容することから、メッセージのルーティングを有利に促進する。
【００２９】
特に好ましい実施例では、システムスイッチ16は、たとえば、一度に１ビットにように、ビット対ビットでローカルノードアドレスを送信先ノードアドレスと比較し、最も先に不一致ビットが発見されるとすぐに比較を停止する。このことは、多くのノードにおいてシステムスイッチ16は、他のノードにこれを転送する前にメッセージの送信先アドレスの小さい部分を読み込むことだけを必要とすることから、特にルーティングを速めることとなる。スイッチは、１つのビットを読み込むだけでよい場合もしばしばある。好ましくは、システムスイッチ16は、最上位ビットを比較することで開始し、次のビット、そしてその次と進み、不一致を発見するまで行う。好ましい実施例では、ルーティング方法がしばしばメッセージの最初の数ビットを読み込むだけで決定でき、また最初のビットのみを読み込むことでさえ決定できるように、送信先ノードアドレスの最上位ビットはヘッダ27のまさしく最初に置かれる。
【００３０】
この技術は、メッセージの残りの部分が到着する前にアドレスを得ることができることから、格別に速い「ワームホールルーティング」を容易にする。これから、システムスイッチ16は最小の遅延でメッセージのルーティングを即座に設定することが可能である。
【００３１】
ルーティングルックアップテーブルの使用は、本発明の１実施例に関する簡単な１次アレイを概略的に表す図４の例を参照してさらに詳細に説明される。
【００３２】
この例では、各タイル２’は単一のプロセッサ４のみを含み、プロセッサアドレスは実質的にノードアドレスと同じである。また、各タイルは、ルーティングルックアップテーブル24よびシステムスイッチ16を備えている。さらに、アレイが１次元であることから、各タイル２’は最高でも２つのシステムリンク18と接続される。簡潔化のために、プロセッサスイッチ14、プロセッサリンク20及びチャネルリンク22の詳細は含まない。
【００３３】
８個のノードに適用するために、各ノードは３ビットアドレスに割り当てられる。したがって、各ルックアップテーブル24はノードアドレスの各アドレスに対して１つ、合計３つのエントリを有している。各エントリは、アップ（Ｕ）及びダウン（Ｄ）の２つの可能なルーティング方向のうちの１つの特定するように構成できる。ルックアップテーブルは次にように表される：
ノード      ノードアドレス      ルックアップテーブル
Ｎ１        ０００              ＤＤＤ
Ｎ２        ００１              ＤＤＵ
Ｎ３        ０１０              ＤＵＤ
Ｎ４        ０１１              ＤＵＵ
Ｎ５        １００              ＵＤＤ
Ｎ６        １０１              ＵＤＵ
Ｎ７        １１０              ＵＵＤ
Ｎ８        １１１              ＵＵＵ
この例のように、最上位ビットはアレイの特定の半分を識別する。所定の半分の中で、２番目の上位ビットは、アレイの特定の４分の１を識別し；所定の４分の１の中で、最下位ビットは特定のノードまで狭められる。これから、メッセージが誤った半分の中から始まった場合には、関連するシステムスイッチ16は、送信先とローカルアドレスの最上位ビット間の単一の比較だけで発見することができる。ルックアップテーブル24を参照すると、システムスイッチが最上位ビットにどの方向をマッピングするかを特定し、これから、正しい半分に向けてこれを移動するためにメッセージをどの方向にルーティングするかを特定する。メッセージが正しい半分であれば、関連するシステムスイッチ16は少なくとも２つの比較を実行する必要があり、１つは最上位ビット間の比較であり、１つは２番目に上位のビット間の比較である。２番目に上位のビット間の比較は、メッセージが誤った４分の１にあるか否かをシステムスイッチ16に教え、そうであるならば、正しい４分の１に向けてこれを移動するためにメッセージをどの方向にルーティングする必要があるかを教える。メッセージが正しい４分の１にルーティングされるのであれば、最下位ビットを用いて最終的な送信先ノードを見つけるために同様の原理が適用される。
【００３４】
説明を目的として、ノードN7からノードN2にメッセージをルーティングする場合を考える。ノードN7、N6及びN5のそれぞれにおいて、システムスイッチは最上位ビットのみを比較する。なぜなら、それらが一致しておらず、ルックアップテーブル24を参照して、メッセージは上方にルーティングされるべきと決定されるからである。したがって、ノードN7-N5において、受信したメッセージの単一のビットのみを調査することで速やかにメッセージをルーティングすることができる。ノードN4及びN3において、システムスイッチ16は、送信先ノードN2に到着するまで、メッセージをさらに上方に向けてルーティングする必要があると決定するために、２番目の上位ビットを比較することに頼らなければならない。
【００３５】
なお、もちろん、最上位から最下位ビットの順をどのように名付けるかは、通常、慣例の問題だけである。しかしながら、この発明の目的のために、「重要性」の意味はノードのアレイ中における位置とリンクしており、これから最上位ビットはアレイを２つの部分に分割し、次の上位ビットはこれら部分のそれぞれを２つのサブ部分にサブ分割する、以下同様である。すなわち、最上位ビットから最下位ビットまでのアドレスビットの重要度の順が、アレイのより狭い空間的領域に対応する。重要性の順は、メッセージのアドレス部分中にどのビットが配列されるかの順を意味するものではなく、メモリやその他のものにどのように配列されるかの順でもない。このような要因は発明の要点ではない（とはいえ、上述したように、好ましい実施例では、最上位ビットがヘッダ27の最初に位置している）。本文を単純にする目的で、最上位から最下位までのビットは左から右に読むようにする。
【００３６】
この構造の速さと単純さは、より複雑な複数次元のアレイにおいて特に有利である。図５は、４×４の２次元アレイに拡張した本願発明の一例を概略的に図示したものである。便宜上、各タイル２’は、それぞれのシステムリンク18とそれぞれのノードアドレス0000〜1111のみで示している。
【００３７】
各ノードアドレスは、２つの異なる部分を含むことを考慮することができる：左−右方向の座標を特定する部分、上−下方向のアドレスを特定する座標。この例では、最上位２ビットはアレイの左から右に00,01,10,11が割り当てられ、最下位２ビットはアレイの上から下に00,01,10,11が割り当てられている。ルーティングルックアップテーブルはノードアドレスに対して、２つの付加的方向である左（Ｌ）及び右（Ｒ）をマッピングしている。各ノードのルックアップテーブルは以下の通りである：
ノード      ノードアドレス            ルックアップテーブル
Ｎ１        ００００                  ＲＲＤＤ
Ｎ２        ０００１                  ＲＲＤＵ
Ｎ３        ００１０                  ＲＲＵＤ
Ｎ４        ００１１                  ＲＲＵＵ
Ｎ５        ０１００                  ＲＬＤＤ
Ｎ６        ０１０１                  ＲＬＤＵ
Ｎ７        ０１１０                  ＲＬＵＤ
Ｎ８        ０１１１                  ＲＬＵＵ
Ｎ９        １０００                  ＬＲＤＤ
Ｎ１０      １００１                  ＬＲＤＵ
Ｎ１１      １０１０                  ＬＲＵＤ
Ｎ１２      １０１１                  ＬＲＵＵ
Ｎ１３      １１００                  ＬＬＤＤ
Ｎ１４      １１０１                  ＬＬＤＵ
Ｎ１５      １１１０                  ＬＬＵＤ
Ｎ１６      １１１１                  ＬＬＵＵ
この場合、システムスイッチ16は最初にメッセージを受信し、その送信先ノードアドレスの最上位ビットをローカルノードアドレスの最上位ビットを比較する。最上位が一致しているか否かを特定することにより、メッセージが左−右方向におけるアレイの正しい半分にあるか否か、例えば、それが最も左の２つの縦列に位置するか、あるいは最も右の２つの縦列に位置するかをスイッチ16に教える。もし、そうでない場合、ルックアップテーブルは、最上位ビットにマッピングされるルーティング方向によって、正しい半分に向けてメッセージを転送するためにどの方向にルーティングするかをスイッチに教える。正しい半分であれば、２番目の上位ビットが正しい縦列に絞り込む。正しい縦列であれば、上−下方向において、最下位ビットについて同様の工程を適用する。
【００３８】
どの次元のアドレスビットを最上位ビットおよび最下位ビットとするかは用語上の問題だけである。つまり、発明は、メッセージのための正しい横列を見出すために最初に上−下方向を特定するビットを読み、その後続いて、正しい縦列に絞り込むために左−右方向におけるペアを読み込むことを同等とすることができる。この適用の目的のために、最上位の次元は、単に使用される最初のアドレス部分のそれとして考えられ、最下位の次元は使用される最後の部分のそれである。異なる次元の部分からのビットは、インターリーブ形式で使用されるか、および／または配列することができる。これら及びバリエーションは、基本的な原理を害するものではなく、実質的に、最上位から最下位までのアドレスビットの重要性の順はアレイの空間的領域をより狭める順を意味する。
【００３９】
図６は、３×３の２次元アレイの例を概略的に示す。再度便宜上、各タイル２’はシステムリンク18とそれぞれのノードアドレス0000〜1010のみを示す。この例は、不規則なアレイまたは都合のよいサイズである２ｎ（ｎは整数であるとき）のサイズを有していないアレイにおけるルーティングを提供するために、本発明がどのように用いられるかを示す。説明を単純化することを目的として、余分なノードアドレスである架空の位置２”を示している。３×３アレイのためのルックアップテーブルは以下の通りである：
ノード      ノードアドレス            ルックアップテーブル
Ｎ１        ００００                  ＲＲＤＤ
Ｎ２        ０００１                  ＲＲＤＵ
Ｎ３        ００１０                  ＲＲＵｘ
Ｎ４        ０１００                  ＲＬＤＤ
Ｎ５        ０１０１                  ＲＬＤＵ
Ｎ６        ０１１０                  ＲＬＵｘ
Ｎ７        １０００                  ＬｘＤＤ
Ｎ８        １００１                  ＬｘＤＵ
Ｎ９        １０１０                  ＬｘＵｘ
存在するノード２’のアドレス及びルックアップテーブルは、図５の４×４アレイ中の対応するノードと、余分なノードアドレスのためのそれを除いて同一であり、ルックアップテーブル中のいくつかのエントリは、それらが調査されることができる状況にないことから、実質的に「気にしない」（ｘ）となっている。これから、どのようにして３×３アレイを４×４グリッドから実質的に「切り抜く」ことができるかを見せることができる。同様の原理は、不規則な形状のアレイのアドレスに使用することが可能である。
【００４０】
図７は、３×３×２の３次元アレイに拡張した本発明の一例を示す。これは、前方（Ｆ）及び後方（Ｂ）の２つの新たな方向を生成する。後方−前方方向においてノード位置を特定するためにノードアドレスに余分なビットを追加することで、発明の原理は全く同一である。ルックアップテーブルは以下の通りである：
ノード      ノードアドレス            ルックアップテーブル
Ｎ１        ０００００                ＲＲＤＤＢ
Ｎ２        ０００１０                ＲＲＤＵＢ
Ｎ３        ００１００                ＲＲＵｘＢ
Ｎ４        ０１０００                ＲＬＤＤＢ
Ｎ５        ０１０１０                ＲＬＤＵＢ
Ｎ６        ０１１００                ＲＬＵｘＢ
Ｎ７        １００００                ＬｘＤＤＢ
Ｎ８        １００１０                ＬｘＤＵＢ
Ｎ９        １０１００                ＬｘＵｘＢ
Ｎ１０      ００００１                ＲＲＤＤＦ
Ｎ１１      ０００１１                ＲＲＤＵＦ
Ｎ１２      ００１０１                ＲＲＵｘＦ
Ｎ１３      ０１００１                ＲＬＤＤＦ
Ｎ１４      ０１０１１                ＲＬＤＵＦ
Ｎ１５      ０１１０１                ＲＬＵｘＦ
Ｎ１６      １０００１                ＬｘＤＤＦ
Ｎ１７      １００１１                ＬｘＤＵＦ
Ｎ１８      １０１０１                ＬｘＵｘＦ
この場合、図５，６に関連して記載したように、メッセージは、まず正しい縦列及び横列にルーティングされる。次に、システムスイッチ16は、ローカルアドレス及び送信先アドレスの最下位ビットを比較することに頼る。このことは、メッセージが正しい平面（たとえば、前方または後方）にあるか否かをスイッチ16に教える。もしそうでなければ、スイッチ16は、正しい平面を得るためにメッセージをどの方向にルーティングするかを決定するためにルーティングテーブルを参照する。
【００４１】
発明の１つの実施例によれば、メッセージの位置がこの次元内の特定の座標に絞り込むように、特定の次元に関連するノードアドレス部分が廃棄されるように構成できる。図７のアレイを例として示すように、正しい縦列にメッセージがルーティングされてしまうと、第１及び第２の最上位ビットは必要がなくなり廃棄されるように構成できる。同様に、メッセージが正しい横列にルーティングされると、第３及び第４の最上位ビットは必要がなくなり廃棄されるように構成できる。
【００４２】
メッセージがルーティングされると個々のビットすら廃棄されるように構成でき、たとえば、一致した最上位ビットを廃棄し、その後一意した第２上位ビットを廃棄し、以下同様にすることができる。
【００４３】
要求されるビット比較の回数を減少させることから、部分または個々のビットを送信先アドレスから廃棄することはルーティング速度を改善する。しかし、このような部分またはビットを廃棄することを許容するために、短くされたアドレスに基づくメッセージのルーティングのために、ある方法を実行しなければならない。これを達成する１つの方法は、所定のリンクのルックアップテーブルから取り去られたビットを有する各システムリンク18のために分離されたルックアップテーブル24を提供することである。たとえば、図７の例を再度参照すると、メッセージがまず左−右方向にルーティングされると、上−下方向及び前方−後方方向におけるリンク18が原アドレスの最初の２つの最上位ビットを比較するためのいずれのビットにも必要ではない。同様に、このメッセージは続いて上−下方向にルーティングされると、前方−後方リンク18のルックアップテーブルは単一ビットを含むことだけが必要となる。このことは、ルックアップテーブルのいくつかのサイズを減少させ、リソースを節約する。
【００４４】
この発明は４またはそれ以上の次元に拡張することができる。もちろん、アレイは３つの空間的次元に依然として存在し−この「次元」という語はここでは単に「自由度」を意味する。ここまでアレイは４またはそれ以上の次元をもち、アレイ中の少なくとも１つのノードは４つまたはそれ以上の他のノードとリンクしている。これは４またはそれ以上のメッセージをルーティングすることが可能な方向があることを意味している。
【００４５】
図８は、正八胞体として知られる、２×２×２×２の４次元のハイパーキューブに拡張した本発明の一例を示している。各ノードN1〜N16は４つの他のノードに接続され、いずれのノードもメッセージをルーティングする際に４つの自由度を持っている。
【００４６】
図７の例のように、左−右、上−下及び前−後の３つの自由度を有している。図８の例は、メッセージのルーティングのために４番目の自由度を追加するための付加的リンク18を提供する。任意の用語の問題として、２つの新たに作成した方向をここではイエロー（Ｙ）及びグリーン（Ｇ）とし、イエローはグリーンの反対方向とする。各ノードにおけるルーティングテーブルは以下の通りである：
ノード      ノードアドレス            ルックアップテーブル
１          ００００                  ＲＤＢＹ
２          ０００１                  ＲＤＢＧ
３          ００１０                  ＲＤＦＹ
４          ００１１                  ＲＤＦＧ
５          ０１００                  ＲＵＢＹ
６          ０１０１                  ＲＵＢＧ
７          ０１１０                  ＲＵＦＹ
８          ０１１１                  ＲＵＦＧ
９          １０００                  ＬＤＢＹ
１０        １００１                  ＬＤＢＧ
１１        １０１０                  ＬＤＦＹ
１２        １０１１                  ＬＤＦＧ
１３        １１００                  ＬＵＢＹ
１４        １１０１                  ＬＵＢＧ
１５        １１１０                  ＬＵＦＹ
１６        １１１１                  ＬＵＦＧ
図９は、本発明に係る方法を示すフローチャートである。この方法は、ステップ100において、１つのノードのシステムスイッチ16がメッセージの送信先ノードアドレスの第１ビットを受信した場合に開始する。記述のために、いずれの時間においても考慮されるアドレスビットは、ここではビット番号ｉとしている。ステップ102において、送信先ノードアドレスのｉ番目のビットはローカルノードアドレスのｉ番目のビットと比較される。ステップ104において、送信先アドレスとローカルアドレスのｉ番目のビットが一致したか否かに基づいてこの方法は分岐する。それらが一致しない場合には、この方法は、ｉ番目のビットに対してマッピングする方向を決定するためにルックアップテーブルを調査するステップ106に移行する。ステップ108において、メッセージはその方向にルーティングされる。送信先とローカルアドレスのｉ番目のビットが一致した場合には、この方法はノードアドレスが到達する最後のビットであるか否かを特定するステップ110に移行する。そうであれば、メッセージはその送信先に到着し、この方法は、メッセージがローカルプロセッサにルーティングされるステップ112に分岐する。最後のビットが到達してない場合には、この方法は次のアドレスビットを考慮するステップ114に移行し、ステップ102からの方法を繰り返す。
【００４７】
上の記述から、ノードにアドレスを付け、対応するルックアップテーブルに割り当てる好ましい方法としてパターンがまた出現する。これは、図10のフローチャートを参照して説明する。ステップ200において、アレイにおける次元の数ｎを決定する。ステップ202において、Ｌをノードの数とする場合に、アレイの最大範囲Ｌ（ｋ）は各次元ｋ＝１〜ｎに対して決定される。ステップ204において、座標は次元ｋ＝１〜ｎのそれぞれにおいて定義される。その座標はバイナリで連続しており、少なくともＬ（ｋ）の長さをカバーしなければならない。各ノードの位置は、ｎ次元のそれぞれにおけるそれぞれの座標によって記述されることができる。ステップ206において、ｍ（ｋ）ビットのアドレス部分は、各次元ｋ＝１〜ｎに沿って各ノードに対して制約２ｍ（ｋ）≧Ｌ（ｋ）が割り当てられ、次元ｋに沿ったノードの座標はそれぞれのｍ（ｋ）ビットのアドレス部分に格納されるように構成できる。ステップ208において、ノードアドレスビットに方向をマッピングすることにより、各ノードのためのルックアップテーブルが引き出される。アレイ中の各ノードの各アドレス部分に対して、これは、値０のビットにそれぞれの第１方向にマッピングし（例えば、右、下、後方、イエロー）、値１のビットにそれぞれ第２方向（例えば、左、上、前方、グリーン）をマッピングすることを意味する。
【００４８】
たとえば、図７を再び参照すると、アドレスとこれに対応するルックアップテーブルは、以下のように割り当てられる。まず、アレイは３次元であり、３×３×２ノードの最大に拡張されている。２１＜３＜２２であることから、３つのノードの方は２ビットアドレス部分を必要とする。２つのノードの方は１ビットアドレス部分を必要とするだけである。これから、アレイはノードにアドレスを付与するために５ビットアドレスを用いるものであって、左−右方向においてノードにアドレスを付与するために２つの最上位ビットを用い、上−下方向においてノードにアドレスを付与するために３番目及び４番目の上位ビットを用い、前方−後方方向においては最下位ビットを用いる。ルックアップテーブルを引き出すために、２つの最上位ビットにおける右及び左、３番目及び４番目の上位ビットにおける下及び上、最下位ビットにおける後方及び前方に対してそれぞれ０及び１がマッピングされる。
【００４９】
上記実施例は単なる例証として記載したものであることはいうまでもない。他の実施例として、他のアドレスパターンは当業者にとって自明である。さらに、最上位から最下位ビットの順は、メッセージが平面の次に横列、その次に縦列の順でルーティングされるか、横列の次に平面、その次に縦列の順にルーティングされるかなどのように変更することが可能である。さらに、ルーティングルックアップテーブルは、ルーティングアルゴリズムのようなより好ましくないオプションによって置き換えることも可能である。たとえば、扱いやすい幾何学形状を形成しない不規則アレイやまたツリータイプ構造を有するアレイを含む、異なるサイズ、異なる形状、異なる次元数のアレイの例に対する他の構成は、当業者により実行可能である。本発明の観点は記述した実施例によって限定されるものではなく、以下のクレームによってのみ限定される。
【図１】
0005398552.tif 000002
【図２】
0005398552.tif 000003
【図３】
0005398552.tif 000004
【図４】
0005398552.tif 000005
【図５】
0005398552.tif 000006
【図６】
0005398552.tif 000007
【図７】
0005398552.tif 000008
【図８】
0005398552.tif 000009
【図９】
0005398552.tif 000010
【図１０】
0005398552.tif 000011