(57)【特許請求の範囲】
【請求項１】
複数のノードを含むメッシュネットワークを、それぞれが少なくとも１つのノードを含む、非矩形パーティションを含む複数のパーティションに分割する段階と、
前記非矩形パーティションに対応する１のパーティションを複数の矩形領域に分割する段階であって、各々の矩形領域はスーパーノードとして扱われ、スーパーエッジにより前記非矩形パーティションの少なくとも１つの隣接する他の前記矩形領域と接続する段階と、
前記非矩形パーティションにおけるパーティション内通信が前記非矩形パーティションの外にスピルオーバーしないように、前記複数の矩形領域のうちソース領域からデスティネーション領域までのパーティションルートを決定する段階と、
前記複数の矩形領域のうち１つの矩形領域内の領域ソースノードから、同じ矩形領域内の領域デスティネーションノードまでの領域ルートを提供する段階と、
前記パーティションルートおよび前記領域ルートを用いる階層ルーティングにより、前記ソース領域内のソースノードから前記デスティネーション領域内のデスティネーションノードまでパケットをルーティングする段階であって、前記階層ルーティングは、前記非矩形パーティションを示すスーパーグラフのスパニングツリー内の第１のルーティングを用いて第１の仮想ネットワーク上でソースノードの前記スーパーノードからデスティネーションノードの前記スーパーノードへの経路を取り、その後、第２の仮想ネットワーク上の第２のルーティングを用いて前記矩形領域内のパケットをルーティングする段階と
を備える方法。
【請求項２】
前記複数の矩形領域は、複数の隣接する矩形領域を含む請求項１に記載の方法。
【請求項３】
前記複数のパーティションのうち第１のパーティションと、前記複数のパーティションのうち第２のパーティションとの間では性能分離が実現されている請求項１又は２に記載の方法。
【請求項４】
前記メッシュネットワークを分割する場合には、任意の２つのパーティション間で性能分離を実現しつつ、非矩形パーティションに分割させる請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記領域ルートを提供する段階は、前記複数の矩形領域のうちそれぞれの矩形領域内の領域ソースノードから、同じ矩形領域内の領域デスティネーションノードまでの領域ルートを提供する段階を有する請求項１から４のいずれか１項に記載の方法。
【請求項６】
パケットに、パケットデスティネーション領域識別子およびパケットデスティネーションノード領域内識別子の両方を割り当てる段階をさらに備える請求項１から５のいずれか１項に記載の方法。
【請求項７】
ノードに、ノード領域識別子およびノード領域内識別子の両方を割り当てる段階と、
前記パケットデスティネーション領域識別子を前記ノード領域識別子と比較して、前記パケットが前記デスティネーション領域に到達したか否かを判断する段階と
をさらに備える請求項６に記載の方法。
【請求項８】
前記パケットデスティネーションノード領域内識別子を前記ノード領域内識別子と比較して、前記パケットが前記デスティネーション領域内の前記デスティネーションノードに到達したか否かを判断する段階をさらに備える請求項７に記載の方法。
【請求項９】
パケットデスティネーションノード領域内識別子およびパケットデスティネーション領域識別子を検査する段階と、
前記パケットデスティネーション領域識別子をノード領域識別子と比較して、前記パケットが前記デスティネーション領域に到達したか否かを判断する段階と、
前記パケットが前記デスティネーション領域に到達していれば、前記パケットデスティネーションノード領域内識別子をノード領域内識別子と比較して、前記パケットが前記デスティネーションノードに到達したか否かを判断する段階と
をさらに備える請求項１から５のいずれか１項に記載の方法。
【請求項１０】
前記領域ルートを提供する段階は、前記デスティネーション領域内の領域ソースノードから前記デスティネーション領域内の領域デスティネーションノードまでの領域ルートを提供する段階を有する請求項１から９のいずれか１項に記載の方法。
【請求項１１】
前記複数の矩形領域を含むツリーを作成する段階
をさらに備え、
前記決定する段階は、上下ルーティングを用いて、前記複数の矩形領域のうちソース領域からデスティネーション領域までのパーティションルートを決定する段階を有する請求項１から１０のいずれか１項に記載の方法。
【請求項１２】
前記パケットをルーティングする段階は、最初にデッドロックフリーパーティションルートを用いて、その後にデッドロックフリー領域ルートを用いて、前記ソース領域内の前記ソースノードから前記デスティネーション領域内の前記デスティネーションノードまで前記パケットをルーティングすることによって、デッドロックフリーとなる請求項１から１１のいずれか１項に記載の方法。
【請求項１３】
複数のノードを有するメッシュネットワークと、
前記メッシュネットワークに結合されているコントローラと、
前記複数のノードのうち１つのノードに結合されている少なくとも１つのローカルルーティングモジュールと
を備え、
前記コントローラは、前記メッシュネットワークを、それぞれが少なくとも１つのノードを含む、非矩形パーティションを含む複数のパーティションに分割し、且つ、前記非矩形パーティションに対応する１のパーティションを、各々がスーパーノードとして扱われ、スーパーエッジにより前記非矩形パーティションの少なくとも１つの隣接する他の矩形領域と接続する複数の矩形領域に分割するルーティング初期化モジュールを有し、
前記少なくとも１つのローカルルーティングモジュールは、前記非矩形パーティションにおけるパーティション内通信が前記非矩形パーティションの外にスピルオーバーしないように、前記複数の矩形領域のうちソース領域からデスティネーション領域までのパーティションルートを決定し、
前記複数の矩形領域のうち１つの矩形領域内の領域ソースノードから、前記複数の矩形領域のうち前記１つの矩形領域内の領域デスティネーションノードまでの領域ルートを提供し、
前記非矩形パーティションを示すスーパーグラフのスパニングツリー内の第１のルーティングを用いて第１の仮想ネットワーク上でソースノードの前記スーパーノードからデスティネーションノードの前記スーパーノードへの経路を取り、その後、第２の仮想ネットワーク上の第２のルーティングを用いて前記矩形領域内のパケットをルーティングすることにより、前記パーティションルートおよび前記領域ルートを用いて、前記ソース領域内のソースノードから前記デスティネーション領域内のデスティネーションノードまでパケットをルーティングする、
装置。
【請求項１４】
前記ルーティング初期化モジュールは、少なくとも２つのパーティション間で性能分離を実現しつつ、非矩形パーティションへの分割が可能となるように前記メッシュネットワークを分割する請求項１３に記載の装置。
【請求項１５】
前記少なくとも１つのローカルルーティングモジュールは、前記複数の矩形領域のうちそれぞれの矩形領域内の領域ソースノードから、前記複数の矩形領域のうちそれぞれの矩形領域内の領域デスティネーションノードまでの領域ルートを提供することによって、領域ルートを提供する請求項１３又は１４に記載の装置。
【請求項１６】
前記ルーティング初期化モジュールは、パケットに、パケットデスティネーション領域識別子およびパケットデスティネーションノード領域内識別子を割り当て、ノードに、ノード領域識別子およびノード領域内識別子を割り当てる請求項１３から１５のいずれか１項に記載の装置。
【請求項１７】
前記少なくとも１つのローカルルーティングモジュールは、前記パケットデスティネーション領域識別子を前記ノード領域識別子と比較して、前記パケットが前記デスティネーション領域に到達したか否かを判断し、且つ、前記パケットデスティネーションノード領域内識別子を前記ノード領域内識別子と比較して、前記パケットが前記デスティネーション領域内の前記デスティネーションノードに到達したか否かを判断するルーティング比較モジュールを有する請求項１６に記載の装置。
【請求項１８】
前記ルーティング初期化モジュールはさらに、複数のパーティションのそれぞれを、性能分離が実現されている複数の矩形領域に分割する請求項１３から１７のいずれか１項に記載の装置。
【請求項１９】
複数のノードを含むメッシュネットワークを、それぞれが少なくとも１つのノードを含む、非矩形パーティションを含む複数のパーティションに分割し、前記複数のパーティションのうち少なくとも１つのパーティションと、少なくとも１つのほかのパーティションとの間で性能分離が実現されている段階と、
前記非矩形パーティションに対応する１のパーティションを複数の矩形領域に分割する段階であって、各々の矩形領域はスーパーノードとして扱われ、スーパーエッジにより前記非矩形パーティションの少なくとも１つの隣接する他の前記矩形領域と接続する段階と、
前記非矩形パーティションにおけるパーティション内通信が前記非矩形パーティションの外にスピルオーバーしないように、前記複数の矩形領域のうちソース領域からデスティネーション領域までのパーティションルートを決定する段階と、
前記デスティネーション領域内の領域ソースノードから、前記デスティネーション領域内の領域デスティネーションノードまでの領域ルートを提供する段階と、
前記非矩形パーティションを示すスーパーグラフのスパニングツリー内の第１のルーティングを用いて第１の仮想ネットワーク上で前記ソース領域のソースノードの前記スーパーノードから前記デスティネーション領域のデスティネーションノードの前記スーパーノードの前記スーパーノードへの経路を取った後に、パケットデスティネーション領域識別子およびパケットデスティネーションノード領域内識別子を検査する段階と、
前記パケットデスティネーション領域識別子をノード領域識別子と比較して、前記パケットが前記デスティネーション領域に到達したか否かを判断する段階と、
第２の仮想ネットワーク上の第２のルーティングを用いて前記デスティネーション領域内のパケットをルーティングした後で、前記パケットが前記デスティネーション領域に到達していれば、前記パケットデスティネーションノード領域内識別子をノード領域内識別子と比較して、前記パケットが前記デスティネーションノードに到達したか否かを判断する段階と
を備える方法。
【請求項２０】
前記複数のパーティションには、矩形パーティションおよび非矩形パーティションが共に含まれている請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、マルチプロセッサメッシュベースシステムに関する。本開示は特に、メッシュシステムにおいて階層ルーティングを行う方法および装置に関する。
【背景技術】
【０００２】
現在、単一ダイアーキテクチャおよびマルチダイアーキテクチャにおいて、数十個から数百個のプロセッシングコアを備えるプロセッサを将来的に使用することが期待されている。２次元メッシュインターコネクトは、これらのプロセッシングコアと他のオンダイの処理素子および入出力素子との間のスケーラブルオンダイ通信ファブリックの有力な候補として期待されている。このように多数のコアは、複数のサーバ機器、演算機器、またはホスト機器、およびその他の利用モデルについて、パーティション化されて利用されることが期待されている。このような製品アーキテクチャでは、複数のパーティションにおいて性能および障害を分離することも要件または特徴として備えることと期待されている。
【０００３】
性能分離については、矩形パーティション・サブメッシュ構造を利用することができる。２次元メッシュネットワークでは、次元的秩序化ルーティング、ＸＹルーティングとしても知られる方式をルーティングアルゴリズムとして利用することができる。しかし、矩形パーティション構造の要件によれば、パーティション割り当てまたはパーティション管理において制限が非常に多くなる可能性がある。現在のパーティション化方法では、非矩形パーティション構造による性能分離が可能ではない。また、現在のパーティション方法によれば、性能または障害を分離する機能を維持しつつ、パーティションの割り当て／割り当て解除またはサイズ変更に関して選択肢を持つパーティション管理ソフトウェアが実現されていない。
【０００４】
２次元メッシュにおいて１以上のノードを含むノード群等のパーティションを複数形成するには、任意の方法を用いるとしてよい。パーティションが含むノードが隣接または近接するノードに限定されない場合、例えば、論理クラスタまたは論理パーティションにグループ化されている分離または隔離されたノードをパーティションが含む場合、複数のパーティションがインターコネクトファブリックのリンクを共有する可能性がある。この場合、ある１つのパーティション内のノードの性能または障害が他のパーティションのノードの性能または障害に影響を及ぼす危険性がある。性能分離または障害分離を実現するためには、仮想チャネルまたは物理チャネル、および、関連制御ロジック等、非常に多くのインターコネクトリソースを追加する必要がある。先行技術に係るシステムが有する上述およびその他の問題を解決するべく、メッシュシステムにおいて階層ルーティングを行う方法および装置が必要とされている。
【図面の簡単な説明】
【０００５】
本開示の利点および特徴をどのように実現するかを説明するべく、背景技術では簡単に記載したが、添付図面に図示した本開示の具体的な実施形態を参照しつつ、本開示をより具体的に説明する。添付図面は本開示の典型的な実施形態を図示しているに過ぎず、本開示の範囲を限定するものと解釈されるべきではないと理解されたい。本開示は、添付図面を参考にしてさらに具体的且つ詳細に記載および説明する。添付図面は以下の通りである。
【図１】一実施形態に係る装置の一例を示すブロック図である。
【図２】一実施形態に係る非矩形パーティションおよび矩形パーティションの例を示す図である。
【図３】一実施形態に係るＯ型パーティションの階層ルーティングプロセスの一例を示す図である。
【図４】一実施形態に係る階層ルーティングフローの処理の一例を示すフローチャートである。
【図５】別の実施形態に係る階層ルーティングフローの処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００６】
図１は、一実施形態に係るシステムまたは装置１００の一例を示すブロック図である。装置１００は、複数のノードを有するメッシュネットワーク１１０を備えるとしてよい。各ノードは、例えばインターコネクトルータを表すとしてよく、任意でプロセッサ等の演算素子をさらに含むとしてよい。装置１００はさらに、メッシュネットワーク１１０に結合されたコントローラ１４０を備えるとしてよく、コントローラ１４０は、ルーティング初期化モジュール１４５を有する。コントローラ１４０およびルーティング初期化モジュール１４５の機能の一部または全ては、メッシュネットワーク１１０のノードの間で分散されるとしてよい。例えば、各ノードは、ローカルルーティング制御モジュール１４７を含むとしてよい。コントローラ１４０は、各パーティションの性能分離要件に応じて、各パーティションについてルーティングアルゴリズムを初期化することができる。ルーティング初期化モジュール１４５は、メッシュネットワーク１１０を複数のパーティション１２０および１３０に分割することができる。各パーティションは、少なくとも１つのノードを含むものとする。例えば、１つのパーティション１２０は、ノード１、２、３、１１、１２および１３を含むとしてよい。ルーティング初期化モジュール１４５は、１のパーティション１２０を複数の矩形領域１２２、１２４、および１２６に分割することができる。尚、領域１２２がノード１１を含み、領域１２４がノード１および１２を含み、領域１２６がノード２、３、および１３を含むとしてよい。各ノードが含むローカルルーティングモジュール１４７またはルーティング初期化モジュール１４５は、複数の矩形領域１２０のソース領域１２４からデスティネーション領域１２６までのパーティションルートを決定することができる。ルーティング初期化モジュール１４５またはローカルルーティングモジュール１４７は、複数の矩形領域のうち所与の１つの矩形領域に含まれる領域ソースノード２から、複数の矩形領域のうち当該所与の矩形領域に含まれる領域デスティネーションノード３までの領域ルートを提供することができる。ローカルルーティングモジュール１４７またはルーティング初期化モジュール１４５は、ソース領域１２４に含まれるソースノード１からデスティネーション領域１２６に含まれるデスティネーションノード３まで、パーティションルートおよび領域ルートを用いて、パケットをルーティングすることができる。
【０００７】
ルーティング初期化モジュール１４５は、少なくとも２つのパーティション１２０および１３０の間で性能を分離しつつ、メッシュネットワーク１１０を分割して非矩形パーティションを実現することができる。ルーティング初期化モジュール１４５は、複数の矩形領域１２２、１２４、および１２６のそれぞれのソースノードから複数の矩形領域１２２、１２４、および１２６のそれぞれのデスティネーションノードまでの領域ルートを特定することによって、領域ルートを提供することができる。
【０００８】
ルーティング初期化モジュール１４５は、パケットに、パケットデスティネーション領域識別子およびパケットデスティネーションノード領域内識別子を割り当てることができる。ルーティング初期化モジュール１４５は、ノードに、ノード領域識別子およびノード領域内識別子を割り当てることができる。複数のノードのうち１つのノードはルーティング比較モジュールを含むとしてよく、当該ルーティング比較モジュールは、パケットデスティネーション領域識別子とノード領域識別子とを比較して、当該パケットがデスティネーション領域に到達したか否かを判断し、パケットデスティネーションノード領域内識別子とノード領域識別子とを比較して、当該パケットがデスティネーション領域内のデスティネーションノードに到達したか否かを判断する。メッシュネットワーク１１０のそれぞれのノードは、１または複数のダイに設けられている複数のプロセッシングコアであってよい。
【０００９】
例えば、サブメッシュ構造または矩形パーティション構造を性能分離に利用することができる。次元的秩序化ルーティングは、２次元および多次元のメッシュネットワークでルーティングアルゴリズムとして利用することができる。２次元メッシュネットワークにおける次元的秩序化ルーティングは、ＸＹルーティングとも呼ばれる。しかし、矩形パーティション構造の要件によれば、パーティション割り当てまたはパーティション管理において制限が非常に多くなる可能性がある。本明細書で開示する階層ルーティング方式によれば、非矩形パーティション構造にまで性能分離を拡張することができ、パーティション管理ソフトウェアにおいて、性能または障害を分離する機能を維持しつつ、パーティションの割り当て／割り当て解除またはサイズ変更に関する選択肢を増やすことができる。
【００１０】
２次元メッシュにおいて１以上のノードを含むノード群等のパーティションを複数形成するには、任意の方法を用いるとしてよい。パーティションが含むノードが隣接または近接するノードに限定されない場合、例えば、論理クラスタまたは論理パーティションにグループ化されている分離または隔離されたノードをパーティションが含む場合、複数のパーティションがインターコネクトファブリックのリンクを共有する可能性がある。これは、ある１つのパーティション内のノードの性能または障害が他のパーティションのノードの性能または障害に影響を及ぼし得ることを示唆している。性能分離または障害分離を実現するためには、仮想チャネルまたは物理チャネル等、インターコネクトリソースを追加する必要がある場合がある。本開示では、矩形形状のみに限定することなく特定のパーティション形状を要件とすることによって、インターコネクトリンクに仮想チャネルまたは物理チャネルを追加してハードウェアの構成をさらに複雑にすることなく、性能分離を実現することができる。
【００１１】
例えば、矩形パーティションは、パーティション１３０のように、１つの連続したパーティション内に矩形形状に配置されている複数のノードを全て含むノード群であってよい。メッシュ内のノード間通信で利用される最小限ルーティングアルゴリズム、例えば、ＸＹルーティング等の次元的秩序化ルーティングでは、矩形パーティションは、当該パーティションの外部のリンクまたはルータに対する「スピルオーバー」トラフィックを有さない場合がある。装置１００で可能とされるパーティションが矩形パーティションのみである場合、デフォルトルーティングアルゴリズムを用いて全てのパーティションにわたって性能分離を実現することができる。尚、全てのパーティションが矩形形状であれば、デフォルトルーティングアルゴリズムは、最小限のＸＹルーティングまたはその他の任意の最小限ルーティングアルゴリズムであってよい。
【００１２】
所与のパーティションのみに性能分離の要件が課されている場合、性能分離を維持しつつ、パーティション化する際の制約を緩和することが可能であるとしてよい。矩形パーティションは、性能分離を要件としないその他のパーティションと共に形成されるとしてもよい。このように、１以上の矩形パーティション群（ＲＧｏＰ）の一部であるという要件を他のパーティションに課すことで、性能分離をサポートすることができる。
【００１３】
ＲＧｏＰは、パーティションを複数含むパーティション群であり、当該パーティションは、矩形状または連続的という条件を満たしていてもいなくてもよいが、全体としては矩形形状を持つ。装置１００において複数のＲＧｏＰが存在すれば、性能分離を必要としないパーティションは、１つが複数のＲＧｏＰにまたがることはないとしてよい。例えば、１つのＲＧｏＰの中に完全に含まれるとしてよい。ＲＧｏＰに含まれる各パーティションに対する制約は緩和されているので、パーティション内トラフィックは、同じＲＧｏＰ内のほかのパーティションへとスピルオーバーする可能性がある。これは、ＲＧｏＰを構成するパーティションについては性能分離が期待されていないので、容認され得る。しかし、メッシュ全体にわたって利用されているものと同じ最小限ルーティングアルゴリズムを利用する場合、全体としては、ＲＧｏＰを構成するパーティションからのトラフィックは、当該ＲＧｏＰ外にスピルオーバーしてはならない。
【００１４】
図２は、一実施形態に係る非矩形パーティションおよび矩形パーティション２１０、２２０、２３０、および２４０の例を示す図である。非矩形パーティションは、静的または動的なパーティション化に従って厳密に矩形割り当てを行った結果として発生し得る内部フラグメンテーションまたは外部フラグメンテーションに対処する際に、考慮される必要がある。フラグメンテーションの程度は、パーティションサイズの変更幅が大きい場合に、特に高くなる可能性がある。パーティション割り当て方針は、矩形パーティションの方が優先されるとしても非矩形パーティションを可能としている場合の方が、制限は少なくなるとしてよい。矩形パーティションが優先される場合、非矩形パーティションの割り当は、１以上の矩形パーティションを「クッキーの抜き型」で抜くように割り当てた後の残りを元にして行われるとしてよい。このようなパーティションの例として、参照番号２１０、２２０、２３０および２４０で示すように、Ｃ字形、Ｕ字形、Ｅ字形、Ｈ字形、Ｌ字形、Ｔ字形等のパーティションが考えられ得る。
【００１５】
非矩形パーティションが存在する場合に性能分離を実現するには、上述の方法とは異なる解決方法が必要となり得る。パーティション１３０のような矩形パーティションでの性能分離には、単一のグローバルルーティングアルゴリズムまたはメッシュ内ルーティングアルゴリズムを用いれば十分であったが、このようなルーティングアルゴリズムは、パーティション１２０のような非矩形パーティションの場合に確実に分離させる上では、適切でない場合がある。非矩形パーティションにおけるパーティション内通信が各パーティション外に漏れないようにするためには、別のパーティション固有ルーティングアルゴリズムが必要となると考えられる。
【００１６】
本開示によれば、上述したような十分な性能特性を持つ非矩形パーティション用ルーティングアルゴリズムが提供される。本開示によれば、ルーティングデッドロックの発生を確実に防ぐことが可能で、且つ、最悪の場合よりは良好な性能特性を得ることができる。
【００１７】
図３は、一実施形態に係るＯ字型パーティション用の階層ルーティングプロセス３００の一例を示す図である。所与の制約が課された非矩形パーティションを、矩形部等の領域を複数接続して形成することができる。例えば、Ｏ字型パーティション３１０は、４つの矩形３２０を、矩形３０、３１、３２、および３３がそれぞれ２つのほかの矩形に隣接するように並べて、リング状に配置することで形成されていると考えることができる。このように矩形部をどのように並べて接続するかその並べ方および呼び方は、任意の非矩形パーティションについて、いくつか考えられ得る。このような矩形部の並べ方は、ルーティングアルゴリズムが構成される非矩形パーティションのいずれについても決定され得る。別の例を挙げると、Ｏ字型パーティション３１０は、８つの矩形３２５を、矩形４１−４８がそれぞれほかの２つの矩形と隣接するように並べて、リング状に配置することで形成されていると考えることもできる。図示されているように８つの矩形領域が配置されている場合、パケットは、デスティネーション領域までの移動において各領域で一方向にのみ、水平方向または垂直方向にのみ移動する必要があるとしてよい。
【００１８】
所与の非矩形パーティション用のルーティングアルゴリズムを構築するための階層ルーティングについて説明すると、各矩形部３０、３１、３２、および３３は「スーパーノード」として扱われ得る。隣接する矩形部のスーパーノードは、「スーパーエッジ」によって接続され得る。こうして、所与の非矩形パーティションは、接続された状態のスーパーグラフ３３０として表すことができる。このスーパーグラフ３３０から、スパニングツリー３４０が形成され得る。
【００１９】
ソースノードおよびデスティネーションノードから成る所与のノード対における階層ルーティング方法は、２段階で実行され得る。第１の段階では、スーパーグラフのスパニングツリーにおいて上下ルーティングに基づき、ソーススーパーノードからデスティネーションスーパーノードへの経路を取り得る。デスティネーションスーパーノードに到達すれば、デスティネーションノードへのルーティングを一の矩形部内において行い、この場合には任意のデッドロック・フリー・メッシュ・ルーティング・アルゴリズムを利用することができる。デッドロックの発生を防ぐべく、これら２つの階層ルーティング段階は別々の仮想ネットワークで実行され得る。各段階は独立して、デッドロックが発生しないように制御されるとしてよい。また、これら２つの段階は、順序を厳密に守って実行され、第１の段階が例えば上下ルーティングを利用し、第２の段階はデスティネーション矩形部内でのルーティングを利用する。このため、階層ルーティング方法を用いて設計されるルーティングアルゴリズムは、各段階でデッドロックが発生せず別個のネットワークでルーティングされるので、デッドロックの発生を防ぐことができる。当該アルゴリズムは、以下のような擬似コードで表され得る。
【数１】
0005553413.tif 000002
【００２０】
各ルータに完全なルーティングテーブルを準備し、メッセージクラス毎に１つの追加仮想チャネルを用意することによって、階層ルーティングの汎用化ハードウェア実装が可能となる。次元的秩序化ルーティング（ＤＯＲ）、つまり、ＸＹルーティング用に最適化されたルータを用いる場合、階層ルーティングは、各ノードＩＤを２つの別個の部分、つまり、メッシュ／矩形ＩＤ等のノード領域識別子と、メッシュ内ＩＤまたは矩形内ＩＤ等の領域内識別子とに分割することによって実施され得る。矩形ＩＤは、パーティション固有のＩＤであってよい。矩形内ＩＤは、メッセージがデスティネーション矩形部に到達すると、ベースラインＤＯＲルーティングを用いてデスティネーションノードへとルーティングされるように、グローバルノードＩＤと同一とすることができる。これによって、矩形パーティション用のデフォルトＤＯＲルーティングアルゴリズム、および、ノードが実際には矩形ＩＤを持つように拡張されている制限付非矩形パーティション用の階層ルーティングの両方を用いて、性能分離がサポートされ得る。追加ビットを用いて、ルーティングにデフォルトルーティングまたは階層ルーティングのいずれを利用するかを示すとしてよい。完全ルーティングテーブルではなく部分ルーティングテーブルを利用することができる。部分ルーティングテーブルのサイズは、メッシュインターコネクトでサポートされている矩形部の最大数と等しいとしてよい。所与の非矩形パーティション内のルータは、当該パーティション用の階層ルーティングアルゴリズムで適切にプログラミングされ得る。
【００２１】
図４は、一実施形態に係る階層ルーティングフローの処理の一例を示すフローチャート４００である。ブロック４１０において、フローチャート４００が開始される。ブロック４２０において、フローチャート４００は、複数のノードを含むメッシュネットワークを複数のパーティションに分割する。尚、各パーティションは、少なくとも１つのノードを含む。複数のパーティションのうち第１のパーティションと、複数のパーティションのうち第２のパーティションとの間では、性能分離が実現され得る。メッシュネットワークを分割することによって、任意の２つのパーティション間において性能分離を実現しつつ、非矩形パーティションを画定することができる。
【００２２】
ブロック４３０において、フローチャート４００は、１のパーティションを複数の矩形領域に分割するとしてよい。フローチャート４００は、１のパーティションを分割した後、これら複数の矩形領域から成るツリーを形成するとしてよい。複数の矩形領域は、複数の隣り合う矩形領域であってよい。ブロック４４０において、フローチャート４００は、複数の矩形領域のうちソース領域からデスティネーション領域までのパーティションルートを決定するとしてよい。フローチャート４００は、上下ルーティングを利用して、複数の矩形領域のうちソース領域からデスティネーション領域までのパーティションルートを決定するとしてよい。
【００２３】
ブロック４５０において、フローチャート４００は、複数の矩形領域のうち１つの矩形領域内の領域ソースノードから、同じ矩形領域内の領域デスティネーションノードまでの領域ルートを取得するとしてよい。領域ルートを取得することは、複数の矩形領域の各矩形領域内の領域ソースノードから、同じ矩形領域内の領域デスティネーションノードまでの領域ルートを取得することを含むとしてよい。領域ルートを取得することはさらに、デスティネーション領域内のソースノードから、デスティネーション領域内のデスティネーションノードまでの領域ルートを取得することを含むとしてよい。ブロック４６０において、フローチャート４００は、パーティションルートおよび領域ルートを用いて、ソース領域内のソースノードから、デスティネーション領域内のデスティネーションノードまでパケットをルーティングするとしてよい。パケットをルーティングする際には、最初にデッドロックフリーパーティションルートを用いて、その後デッドロックフリー領域ルートを用いて、ソース領域内のソースノードから、デスティネーション領域内のデスティネーションノードまでパケットをルーティングすることによって、デッドロックフリーを実現するとしてよい。ブロック４７０において、フローチャート４００は終了するとしてよい。
【００２４】
図５は、別の実施形態に係る階層ルーティングフローの処理の一例を示すフローチャート５００である。ブロック５１０において、フローチャートが開始される。ブロック５２０において、フローチャート５００は、パケットに対して、パケットデスティネーション領域識別子およびパケットデスティネーションノード領域内識別子を割り当てるとしてよい。ブロック５３０において、フローチャート５００は、ノードに対して、ノード領域識別子および領域内識別子を割り当てるとしてよい。ブロック５４０において、フローチャート５００は、デスティネーションノードまでのパケットの経路上の次のノードにパケットをメッシュ間ルーティングするとしてよい。ブロック５５０において、フローチャート５００は、パケットおよびノードの識別子を検査するとしてよい。ブロック５６０において、フローチャート５００は、パケットデスティネーション領域識別子と、ノード領域識別子とを比較して、識別子同士が一致するか否か、および、パケットがデスティネーション領域に到達したか否かを判断するとしてよい。パケットデスティネーション領域識別子と、ノード領域識別子とが一致しない場合は、フローチャート５００は、ブロック５４０においてパケットを次のノードにルーティングするとしてよい。
【００２５】
パケットデスティネーション領域識別子と、ノード領域識別子とが一致すれば、フローチャート５００は、ブロック５６５において、デスティネーション領域内で次のノードにパケットをメッシュ内ルーティングするとしてよい。ブロック５７０において、フローチャート５００は、パケットおよびノードの識別子を検査するとしてよい。ブロック５７５において、フローチャート５００は、パケットデスティネーションノード領域内識別子と、ノード領域内識別子とを比較して、識別子同士が一致するか否か、および、パケットがデスティネーション領域内のデスティネーションノードに到達したか否かを判断するとしてよい。識別子同士が一致しない場合、フローチャート５００は、ブロック５６５において次のノードにパケットをルーティングするとしてよい。識別子同士が一致する場合、フローチャート５００は、ブロック５８０においてデスティネーションに到達したと判断するとしてよい。ブロック５８５において、フローチャート５００は終了するとしてよい。
【００２６】
このように、本開示は、さまざまな利点の中でも特に、メッシュインターコネクトファブリックにおけるパーティション化方法および性能／障害／信頼性分離という特徴を実現することができる。本開示は、メッシュインターコネクトを利用するマルチノード／マルチソケット・スケーラブル・マルチプロセッサにおけるパーティション化方法および性能分離方法にも応用可能である。本開示では、非矩形パーティションを有する２次元メッシュにおいて性能分離を実現するべく２段階階層ルーティングアルゴリズムを利用するとしてよい。本開示によれば、性能／障害分離を維持しつつ、より制約が多い矩形パーティション限定方法ではなく、非矩形パーティションの利用が可能となる。アーキテクチャ実装には、ＸＹルーティング用に最適化されたルータ設計を利用するとしてよい。分離の要件は、各パーティションが性能分離を要件とするというレベルから、複数のパーティションを含むパーティション群が性能分離を要件とするというレベルまで緩和することができ、同じルーティングアルゴリズムを利用することができる。本開示は、制限が課された非矩形パーティション化でも利用可能である。
【００２７】
本開示はまた、ルーティングアルゴリズム、例えば、インターコネクトネットワークにおける送り手ノードからデスティネーションノードまで、データパケット／メッセージを正しくルーティングする技術を提供する。本開示は、２次元メッシュ（２Ｄメッシュ）および多次元インターコネクトネットワークにおけるルーティングアルゴリズムに関するとしてよい。
【００２８】
本開示はさらに、互いに接続された隣接するノードからなるノードクラスタであるパーティションを２以上有する２次元または多次元のメッシュ用に、パーティション間での分離をサポートするべく設計されているルーティングアルゴリズムを利用することができる。パーティション間での分離とは、ある１つのパーティション内のノード同士の間のみで通信が可能となる必要がある、例えば、データパケット／メッセージの送信が可能となる必要があることを意味しているとしてよい。互いに別個のパーティションに含まれるノード同士は、通信を執り行う必要がない。分離とは、性能、障害、またはセキュアなドメインを１つのパーティション内に限定する機能も意味するとしてよい。各パーティションのサブネットワークの形状またはトポロジーは、矩形またはサブメッシュ形状である必要はない。本開示によれば、メッシュにおけるマルチタスク環境でパーティション化またはタスク割り当てを行う際の制約を低減することができる。このようなメッシュにおけるマルチタスク環境では、タスク割り当てを簡略化することと、ルーティング問題を解決することと、分離を実現することとを目的として、サブメッシュ割り当てまたは矩形割り当てと呼ばれるように、小型メッシュにタスクを割り当てる。本開示はさらに、全てのパーティション内通信をパーティションに含まれるノード間の通信リンクに限定して、別のパーティションの性能、複数種類の障害、および、失われた信頼性から悪影響を受けないようにすることによって、分離を実現するルーティングアルゴリズムを提供することができる。当該ルーティングアルゴリズムによれば、２次元メッシュで非矩形パーティションが形成される場合であっても分離を実現することができる。当該ルーティングアルゴリズムは、デッドロックフリー且つライブロックフリーとすることができ、パーティションについて性能分離および障害分離を実現することができる。
【００２９】
非矩形パーティションはそれぞれ、互いに隣接している小型矩形領域から構成されるとしてよい。ルーティングアルゴリズムは、２段階階層方式を利用するとしてよい。第１の段階において、あるパーティションのソース領域、例えば、小型矩形領域から、デスティネーション領域までのルーティングを行うとしてよい。第２の段階において、デスティネーション矩形領域内で所望のデスティネーションノードに到達するようにルーティングを行うとしてよい。
【００３０】
本開示に係る方法は、プログラミングされたプロセッサで実装されることが好ましい。しかし、本開示に係るコントローラ、フローチャート、およびモジュールは、汎用あるいは特定用途向けのコンピュータ、プログラミングされたマイクロプロセッサあるいはマイクロコントローラおよび周辺集積回路素子、集積回路、ディスクリート素子回路等のハードウェア電子回路あるいは論理回路、プログラム可能ロジックデバイス等で実装されるとしてもよい。概して、有限ステートマシンが設けられており、且つ、添付図面に示したフローチャートを実装することが可能なデバイスであれば、どのようなデバイスであっても本開示に係るプロセッサ機能を実装するべく利用され得る。
【００３１】
本開示は具体的な実施形態を参照しつつ説明してきたが、多くの代替例、変形例、および変更例を含むことが当業者には明らかである。例えば、実施形態に係るさまざまな構成要素については、他の実施形態に係る構成要素との交換、追加、または置換が可能であるとしてよい。また、各図に示した要素は全てが、本明細書に開示した実施形態に係る処理を実行する上で必要なわけではない。例えば、開示した実施形態が属する技術分野における当業者であれば、独立請求項の要素のみを利用することによって、本開示の教示内容を利用することができるであろう。したがって、本明細書に記載する本開示の好ましい実施形態は、本開示を例示するためのものであって、限定するものではない。本開示の精神および範囲を逸脱することなく、さまざまな点で変更するとしてよい。例えば、ＸＹルーティングに代えて、任意の最小限メッシュルーティングアルゴリズムを利用することができる。また、より高次元については、３次元における非立方体パーティションおよびより高次元でのパーティションに対して同様の方法を利用することができる。
【００３２】
本文献では、「第１」、「第２」等の相対的な用語を利用するが、ある実体または動作を他の実体または動作から区別する際に、これらの実体または動作の間に実在する関係または順序を必ずしも必要または示唆することなく区別するためのみに利用する。「備える」という用語は、非排他的に包含することを意味することを意図しており、一連の素子を「備える」プロセス、方法、物品、または装置は、記載した素子のみを含むものではなく、明示的に記載されていない、または、そのようなプロセス、方法、物品、または、装置に内在しないその他の素子をも含むとしてよい。素子の前に「ａ」、「ａｎ」等が付与されている場合、他に制約がない限り、当該素子を「備える」プロセス、方法、物品、または装置において同一の素子がほかにも複数存在することを除外するものではない。また、「別の」という用語は、少なくとも２つ目のもの、または、それ以上のものを指し示すと定義される。「含む」、「有する」等の用語は、本明細書で使用する場合、「備える」と同じ意味を持つと定義される。
【図１】
0005553413.tif 000003
【図２】
0005553413.tif 000004
【図３】
0005553413.tif 000005
【図４】
0005553413.tif 000006
【図５】
0005553413.tif 000007