以下、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態の並列プロセッサシステム、プロセッサ間通信システムおよびパケット転送装置を示したブロック図である。
図1において、並列プロセッサシステム1は、複数のネットワークプレーン101〜104と、複数のプレーン間クロスバ(プレーン間クロスバスイッチ)105〜112と、複数のプロセッサ113〜144と、を含む。
並列プロセッサシステム1では、プロセッサ113〜144が、相互に協調しあって並列演算を行う。プロセッサ113〜144のそれぞれは、一般的に、第1プロセッサおよび第2プロセッサと呼ぶことができる。
プロセッサ113〜144のそれぞれは、他のプロセッサに送信すべきデータ(以下「送信用データ」と称する)があると、送信用データを分割して、他のプロセッサ宛ての複数のパケットを生成する。
複数のパケットが順序保証を必要とする場合、プロセッサ113〜144のそれぞれは、複数のパケットのそれぞれに、順序保証を必要とする旨の情報を付加する。
順序保証を必要とする複数のパケットは、一般的に所定の複数のパケットと呼ぶことができる。この複数のパケットによって、1つの通信命令が構成される。
プロセッサ113〜144のそれぞれは、1つの通信命令を構成する個々のパケットを、1つずつ順番に、プロセッサ間ネットワーク2に送信する。
プロセッサ間ネットワーク2は、一般的にプロセッサ間通信システムと呼ぶことができる。
プロセッサ間ネットワーク2は、プロセッサ113〜144のそれぞれと接続されている。プロセッサ間ネットワーク2は、複数のネットワークプレーン101〜104と、複数のプレーン間クロスバ105〜112と、を含む。
ネットワークプレーン101〜104は、一般的に複数の通信経路と呼ぶことができる。また、ネットワークプレーン101〜104は、互いに直接接続されていない独立した複数の部分ネットワークと呼ぶことができる。
ネットワークプレーン101〜104のそれぞれは、8入力8出力のネットワークである。ネットワークプレーン101〜104のそれぞれは、8入力8出力の3個のクロスバ(クロスバスイッチ)145〜147を含む。
プレーン間クロスバ105〜112のそれぞれは、一般的にパケット転送装置と呼ぶことができる。
プレーン間クロスバ105〜112のそれぞれは、ネットワークプレーン101〜104と接続されている。
プレーン間クロスバ105は、プロセッサ113〜116とも接続されている。プレーン間クロスバ106は、プロセッサ117〜120とも接続されている。プレーン間クロスバ107は、プロセッサ121〜124とも接続されている。プレーン間クロスバ108は、プロセッサ125〜128とも接続されている。プレーン間クロスバ109は、プロセッサ129〜132とも接続されている。プレーン間クロスバ110は、プロセッサ133〜136とも接続されている。プレーン間クロスバ111は、プロセッサ137〜140とも接続されている。プレーン間クロスバ112は、プロセッサ141〜144とも接続されている。
プレーン間クロスバ105〜112のそれぞれは、8入力8出力のクロスバである。
プレーン間クロスバ105〜112のそれぞれは、自己に接続されているプロセッサ(第1プロセッサ)から1つずつ順番に送信された他のプロセッサ(第2プロセッサ)宛ての複数のパケットを受信し、そのパケットのそれぞれを、ネットワークプレーン101〜104のうち転送先として設定されたネットワークプレーンに転送する。
ネットワークプレーン101〜104のそれぞれは、プレーン間クロスバ105〜112のいずれかからパケットを受信すると、そのパケットに記載されたルーティングに関する情報に基づいて、そのパケットを、プレーン間クロスバ105〜112のいずれかに転送する。
プレーン間クロスバ105〜112のそれぞれは、ネットワークプレーン101〜104のいずれかからパケットを受信すると、そのパケットに記載されたルーティングに関する情報に基づいて、そのパケットを、自己に接続されているプロセッサのいずれかに転送する。
このため、ネットワークプレーン101〜104は、パケットの宛先のプロセッサに通じる複数の通信経路として機能する。
ここでは、並列プロセッサシステム1の一例として、図1に示したような構成を示しているが、部分ネットワークであるネットワークプレーンの数、部分ネットワークのトポロジおよび構成、プレーン間クロスバのポート数および個数、並びに、プロセッサの個数は、任意である。
図2は、プロセッサ間ネットワーク2で通信されるパケット200の形式を説明するための説明図である。
図2において、パケット200は、プロセッサ113〜144のそれぞれによって生成される。本実施形態では、プロセッサ113〜144のそれぞれは、送信用データを分割することによって、複数のパケット200を生成する。プロセッサ113〜144のそれぞれは、個々のパケット200を、1つずつ順番に、プロセッサ間ネットワーク2に送信する。
パケット200は、経路指定情報201、順序保証フラグ202、ラストパケットフラグ203、パケット長204、および、データ205から構成される。
経路指定情報201は、プロセッサ間ネットワーク2でのルーティングに用いられる。経路指定情報201は、第1経路指定情報206と、第2経路指定情報207と、第3経路指定情報208と、を含む。
第1経路指定情報206は、プレーン間クロスバ105〜112のうち、プロセッサ113〜144のいずれかからパケット200を受信したプレーン間クロスバ(以下「受信プレーン間クロスバ」と称する)によって使用される。
第1経路指定情報206は、ネットワークプレーン101〜104のうち、受信プレーン間クロスバからの送信先となるネットワークプレーン(以下「送信先ネットワークプレーン」と称する)を指定するための情報(ルーティングに関する情報)である。
本実施形態では、第1経路指定情報206は、受信プレーン間クロスバの出力ポートのうち、送信先ネットワークプレーンと接続している出力ポート(宛先出力ポート)を指定する。
第2経路指定情報207は、送信先ネットワークプレーンによって使用される。第2経路指定情報207は、プレーン間クロスバ105〜112のうち、送信先ネットワークプレーンからの送信先となるプレーン間クロスバ(以下「送信先プレーン間クロスバ」と称する)を指定するための情報(ルーティングに関する情報)である。
本実施形態では、第2経路指定情報207は、送信先ネットワークプレーンの出力ポートのうち、送信先プレーン間クロスバと接続している出力ポートを指定する。
第3経路指定情報208は、送信先プレーン間クロスバによって使用される。第3経路指定情報208は、プロセッサ113〜144のうち、送信先プレーン間クロスバからの送信先となるプロセッサ(以下「送信先プロセッサ」と称する)を指定するための情報(ルーティングに関する情報)である。
本実施形態では、第3経路指定情報208は、送信先プレーン間クロスバの出力ポートのうち、送信先プロセッサと接続している出力ポートを指定する。
順序保証フラグ202は、パケット200が、プロセッサ間ネットワーク2内で順序保証が必要なパケットかどうかを示す。
本実施形態では、順序保証フラグ202が“1”である場合は、パケット200は、順序保証が必要なパケットであることを示す。一方、順序保証フラグ202が“0”である場合は、パケット200は、順序保証が必要ないパケットであることを示す。
ラストパケットフラグ203は、パケット200が、1つの通信命令の最後のパケットであるかどうかを示す。
本実施形態では、ラストパケットフラグ203が“0”である場合は、パケット200は、1つの通信命令の最後のパケットでないことを示す。一方、ラストパケットフラグ203が“1”である場合は、パケット200は、1つの通信命令の最後のパケットであることを示す。
パケット長204は、データ205の長さを指定する。
図3は、プレーン間クロスバ105の詳細を示した説明図である。図3において、図1に示したものと同一構成のものには同一符号を付してある。
図3では、図1に示したプレーン間クロスバ105を図示しているが、プレーン間クロスバ105〜112は、接続されるプロセッサが変わるだけで、すべて同一構成である。このため、他のプレーン間クロスバについての説明は省略する。
図3では、プレーン間クロスバ105でのネットワークプレーン行き方向のデータパスのみを図示している。なお、プレーン間クロスバ105でのプロセッサ行き方向のデータパスは、図4で説明する。
プレーン間クロスバ105は、ネットワークプレーン行き方向のデータパスについては、4つの入力ポート301〜304と、4つの出力ポート305〜308と、を含む。
出力ポート305に番号「0」が付してある。出力ポート306に番号「1」が付してある。出力ポート307に番号「2」が付してある。出力ポート308に番号「3」が付してある。なお、番号は、一般的に識別情報と呼ぶことができる。
4つの入力ポート301〜304のそれぞれは、プロセッサ113〜116のいずれかに接続されている。本実施形態では、入力ポート301はプロセッサ113と接続されている。入力ポート302はプロセッサ114と接続されている。入力ポート303はプロセッサ115と接続されている。入力ポート304はプロセッサ116と接続されている。
4つの出力ポート305〜308のそれぞれは、ネットワークプレーン101〜104のいずれかに接続されている。本実施形態では、出力ポート305はネットワークプレーン101と接続されている。出力ポート306はネットワークプレーン102と接続されている。出力ポート307はネットワークプレーン103と接続されている。出力ポート308はネットワークプレーン104と接続されている。
プレーン間クロスバ105は、格納部105a〜105dと、制御部105eと、を含む。
格納部105a〜105dのそれぞれは、一般的に格納手段と呼ぶことができる。
格納部105aは、切り替え状態レジスタ309と、切り替え先レジスタ310と、通常宛先レジスタ311と、仕掛中レジスタ312と、を含む。格納部105bは、切り替え状態レジスタ313と、切り替え先レジスタ314と、通常宛先レジスタ315と、仕掛中レジスタ316と、を含む。格納部105cは、切り替え状態レジスタ317と、切り替え先レジスタ318と、通常宛先レジスタ319と、仕掛中レジスタ320と、を含む。格納部105dは、切り替え状態レジスタ321と、切り替え先レジスタ322と、通常宛先レジスタ323と、仕掛中レジスタ324と、を含む。
制御部105eは、一般的に制御手段と呼ぶことができる。
制御部105eは、マルチプレクサ325〜328と、制御回路329〜332と、調停回路333〜336と、を含む。
調停回路333に番号「0」が付してある。調停回路334に番号「1」が付してある。調停回路335に番号「2」が付してある。調停回路336に番号「3」が付してある。
入力ポート301は、格納部105aと、制御回路329と、に対応づけられている。入力ポート302は、格納部105bと、制御回路330と、に対応づけられている。入力ポート303は、格納部105cと、制御回路331と、に対応づけられている。入力ポート304は、格納部105dと、制御回路332と、に対応づけられている。
出力ポート305は、マルチプレクサ325と、調停回路333と、に対応づけられている。出力ポート306は、マルチプレクサ326と、調停回路334と、に対応づけられている。出力ポート307は、マルチプレクサ327と、調停回路335と、に対応づけられている。出力ポート308は、マルチプレクサ328と、調停回路336と、に対応づけられている。
通常宛先レジスタ311、315、319および323のそれぞれは、出力ポート305〜308(番号「0」〜「3」)のそれぞれについて、その出力ポートに対応する調停回路の番号を格納する。
図3では、切り替え状態レジスタ309、313、317および321のそれぞれの上に記載してある0〜3の番号が、出力ポート305〜308の番号「0」〜「3」に対応する。
このため、通常宛先レジスタ311、315、319および323のそれぞれは、切り替え状態レジスタ309、313、317および321のそれぞれの上に記載されている番号0の列に存在する部分(レジスタ)に、出力ポート305に対応する調停回路の番号を格納する。
また、通常宛先レジスタ311、315、319および323のそれぞれは、切り替え状態レジスタ309、313、317および321のそれぞれの上に記載されている番号1の列に存在する部分(レジスタ)に、出力ポート306に対応する調停回路の番号を格納する。
また、通常宛先レジスタ311、315、319および323のそれぞれは、切り替え状態レジスタ309、313、317および321のそれぞれの上に記載されている番号2の列に存在する部分(レジスタ)に、出力ポート307に対応する調停回路の番号を格納する。
また、通常宛先レジスタ311、315、319および323のそれぞれは、切り替え状態レジスタ309、313、317および321のそれぞれの上に記載されている番号3の列に存在する部分(レジスタ)に、出力ポート308に対応する調停回路の番号を格納する。
切り替え先レジスタ310、314、318および322のそれぞれは、出力ポート305〜308(番号「0」〜「3」)のそれぞれについて、その出力ポートから切り替えられる出力ポートに対応する調停回路の番号を格納する。
切り替え先レジスタ310、314、318および322のそれぞれは、切り替え状態レジスタ309、313、317および321のそれぞれの上に記載されている番号0の列に存在する部分(レジスタ)に、出力ポート305の切り替え先の出力ポートに対応する調停回路の番号を格納する。
切り替え先レジスタ310、314、318および322のそれぞれは、切り替え状態レジスタ309、313、317および321のそれぞれの上に記載されている番号1の列に存在する部分(レジスタ)に、出力ポート306の切り替え先の出力ポートに対応する調停回路の番号を格納する。
切り替え先レジスタ310、314、318および322のそれぞれは、切り替え状態レジスタ309、313、317および321のそれぞれの上に記載されている番号2の列に存在する部分(レジスタ)に、出力ポート307の切り替え先の出力ポートに対応する調停回路の番号を格納する。
切り替え先レジスタ310、314、318および322のそれぞれは、切り替え状態レジスタ309、313、317および321のそれぞれの上に記載されている番号3の列に存在する部分(レジスタ)に、出力ポート308の切り替え先の出力ポートに対応する調停回路の番号を格納する。
本実施形態では、切り替え先レジスタ310、314、318および322のそれぞれは、出力ポート305〜308(番号「0」〜「3」)のそれぞれについて、その出力ポートの番号に1を加えてmod4を計算した値を、切り替え先の出力ポートに対応する調停回路の番号として格納している。
切り替え状態レジスタ309、313、317および321のそれぞれは、出力ポート305〜308(番号「0」〜「3」)のそれぞれについて、その出力ポートの切り替えの状態を表す切り替え状態情報(「0」〜「3」のいずれか)を格納する。
切り替え状態レジスタ309、313、317および321のそれぞれは、それぞれの上に記載されている番号0の列に存在する部分(レジスタ)に、出力ポート305についての切り替え状態情報を格納する。
切り替え状態レジスタ309、313、317および321のそれぞれは、それぞれの上に記載されている番号1の列に存在する部分(レジスタ)に、出力ポート306についての切り替え状態情報を格納する。
切り替え状態レジスタ309、313、317および321のそれぞれは、それぞれの上に記載されている番号2の列に存在する部分(レジスタ)に、出力ポート307についての切り替え状態情報を格納する。
切り替え状態レジスタ309、313、317および321のそれぞれは、それぞれの上に記載されている番号3の列に存在する部分(レジスタ)に、出力ポート308についての切り替え状態情報を格納する。
ある出力ポートに接続されているネットワークプレーンに障害が発生していない場合は、その出力ポートを他の出力ポートに切り替える必要がない。出力ポートを切り替えない場合、その出力ポートに対応する切り替え状態情報として「0」が格納される。切り替え状態情報が「0」である場合には、通常宛先レジスタ内の番号が使用される。
ある出力ポートに接続されているネットワークプレーンに障害が発生して他のネットワークプレーンを使用するために、その出力ポートを他の出力ポートに切り替える場合は、切り替え状態情報が、「0」から「1」に変更される。
切り替え状態情報が「1」である場合には、パケット200が、順序保証が必要なパケットかどうか、および、パケット200が、順序保証が必要なパケットの何番目のパケットかによって、通常宛先レジスタ内の番号を使うか、切り替え先レジスタ内の番号を使うかが決まる。
使用する番号の決定方法と切り替え状態情報が「1」から「2」になる場合については、あとで図5を使って説明する。
切り替え状態情報が「2」の場合には、必ず、切り替え先レジスタ内の番号が使用される。
プレーン間クロスバ105〜112の出力ポートのうち、故障が発生したネットワークプレーンに接続されたすべての出力ポートの切り替え状態情報が、「1」から「2」になると、障害が発生したネットワークプレーンは使われなくなる。
この時点で、障害が発生したネットワークプレーンを、並列プロセッサシステム1から切り離すことが可能となる。このため、この時点で、障害が発生したネットワークプレーンについて、保守が行われる。
そして、障害が発生したネットワークプレーンが修理され、再び、並列プロセッサシステム1に組み込まれる。この時点で、障害が発生したネットワークプレーンに接続されていた出力ポートの切り替え状態情報が、「2」から「3」に変更される。
切り替え状態情報が「3」である場合には、パケット200が、順序保証が必要なパケットかどうか、および、パケット200が、順序保証が必要なパケットの何番目のパケットかによって、通常宛先レジスタ内の番号を使うか、切り替え先レジスタ内の番号を使うかが決まる。
使用する番号の決定方法と切り替え状態情報が「3」から「0」になる場合については、あとで図5を使って説明する。
図3に示した例は、まだ、障害が発生していない状態を示している。このため、切り替え状態情報は、すべて「0」である。
仕掛中レジスタ312、316、320および324のそれぞれは、自己に対応する入力ポートに接続されたプロセッサが、順序保証が必要な複数のパケットのうち1個以上のパケットを送信済みであり、かつ、その複数のパケットのすべてを送信していない場合に、通信中である旨の通信中情報「1」を格納する。
順序保証が必要なパケットとは、複数のパケット間のプロセッサ間ネットワーク2内での順序を保証し、送り元プロセッサから送信されたパケットの順序と宛先プロセッサへの到着順序とが同じになることを保証する必要があるパケットである。
プロセッサ間ネットワーク2内でパケットの順序が逆転すると、エラーが発生したり、宛先プロセッサによるメモリ(不図示)へのデータの書込みの順序を保証できなくなるなどの問題が発生する。
制御回路329〜332のそれぞれは、自己に対応する入力ポートから、順序保証が必要な複数のパケットのうち最初に送信されたパケットを受信したら、自己と同じ入力ポートに対応する仕掛中レジスタに、「1」(通信中情報)を格納する。
そして、制御回路329〜332のそれぞれは、自己に対応する入力ポートから、順序保証の必要な複数のパケットのうち最後に送信されたパケットを受信したら、自己と同じ入力ポートに対応する仕掛中レジスタ内の「1」(通信中情報)を削除して「0」を格納する。
制御回路329〜332のそれぞれは、自己に対応する入力ポートから受信したパケット200が、順序保証の必要な複数のパケットのうち最後に送信されたパケットであるかどうかを、図2に示したラストパケットフラグ202の状態を調べて判定する。
ラストパケットフラグ202が“0”である場合、制御回路329〜332のそれぞれは、パケット200が、順序保証の必要な複数のパケットのうち最後に送信されたパケットでないと判定する。
一方、ラストパケットフラグ202が“1”である場合、制御回路329〜332のそれぞれは、パケット200が、順序保証の必要な複数のパケットのうち最後に送信されたパケットであると判定する。
また、制御回路329〜332のそれぞれは、自己と同じ入力ポートに対応する仕掛中レジスタの値が「0」で、かつ、順序保証が必要なパケット200が到着した場合、そのパケット200が、順序保証の必要な複数のパケットのうち最初に送信されたパケットであると判定する。
制御回路329〜332のそれぞれは、パケット200内の第1経路指定情報206、および、自己と同じ入力ポートに対応する格納部内の情報に従ってパケット200を出力ポート305に転送する場合、調停回路333に、送信用のリクエストを送信する。
制御回路329〜332のそれぞれは、パケット200内の第1経路指定情報206、および、自己と同じ入力ポートに対応する格納部内の情報に従ってパケット200を出力ポート306に転送する場合、調停回路334に、送信用のリクエストを送信する。
制御回路329〜332のそれぞれは、パケット200内の第1経路指定情報206、および、自己と同じ入力ポートに対応する格納部内の情報に従ってパケット200を出力ポート307に転送する場合、調停回路335に、送信用のリクエストを送信する。
制御回路329〜332のそれぞれは、パケット200内の第1経路指定情報206、および、自己と同じ入力ポートに対応する格納部内の情報に従ってパケット200を出力ポート308に転送する場合、調停回路336に、送信用のリクエストを送信する。
制御回路329〜332のそれぞれは、自己と同じ入力ポートに対応する仕掛中レジスタの値が「1」で、かつ、順序保証が必要なパケット200が到着した場合、パケット200の宛先(転送先)となる出力ポートの切り替えを行わない。
なぜなら、2つのパケットが異なるネットワークプレーンを通ると、プロセッサ間ネットワーク2内での順序保証ができないからである。
例えば、先に来たパケットが通るネットワークプレーンが混雑していて、後から来たパケットが通るネットワークプレーンが空いていると、宛先となっているプロセッサへの到着順序が逆転してしまう。
マルチプレクサ325〜328のそれぞれは、自己と同じ出力ポートに対応する調停回路からの指示に基づいて、4つの入力ポート301〜304から1つの入力ポートを選択する。マルチプレクサ325〜328のそれぞれは、その選択された入力ポートからのパケット200を、自己に対応する出力ポートに転送する。
調停回路333〜336のそれぞれは、制御回路329〜332のいずれかからのリクエストを受信すると、そのリクエストを送信した制御回路に対応する入力ポートを選択する旨の指示を、自己と同じ出力ポートに対応するマルチプレクサに出力する。
格納部105a〜105bのそれぞれは、自己に対応する入力ポートに接続されているプロセッサが、所定の複数のパケット(例えば、順序保証が必要な複数のパケット)のうち1個以上のパケットを送信済みであり、かつ、その複数のパケットのすべてを送信していない場合に、通信中である旨の通信中情報を格納する。
なお、所定の複数のパケットは、順序保証が必要な複数のパケットであることが望ましいが、順序保証が必要な複数のパケットの他に、他のパケットが含まれてもよい。この場合、他のパケットも含めて、順序を保証することができる。
制御部105eは、ある1つの入力ポートから、所定の複数のパケットを構成する個々のパケットを受信すると、そのパケットを、転送先として設定されたネットワークプレーンへ転送する。
制御部105eは、格納部105a〜105bのうち、ある1つの入力ポートに対応する格納部が、通信中情報を格納している状況で、その入力ポートからのパケットの転送先を切り替える旨の切替え指示を受け付けると、その入力ポートに送信される所定の複数のパケットのすべてを、転送先として設定されたネットワークプレーンへ転送した後、転送先を、複数のネットワークプレーンのうちの他のネットワークプレーンに切り替える。
図4は、プレーン間クロスバ105でのプロセッサ行き方向のデータパスのみを示した説明図である。なお、図4において、図1に示したものと同一構成のものには同一符号を付してある。
図4では、図1に示したプレーン間クロスバ105を図示しているが、プレーン間クロスバ105〜112は、接続されるプロセッサが変わるだけで、すべて同一構成である。このため、他のプレーン間クロスバについての説明は省略する。
プレーン間クロスバ105は、プロセッサ行き方向のデータパスについては、4つの入力ポート401〜404と、4つの出力ポート405〜408と、を含む。
また、プレーン間クロスバ105は、マルチプレクサ409〜412と、制御回路413〜416と、調停回路417〜420と、を含む。
本実施形態では、調停回路417に番号「4」が付してある。調停回路418に番号「5」が付してある。調停回路419に番号「6」が付してある。調停回路420に番号「7」が付してある。
4つの入力ポート401〜404のそれぞれは、ネットワークプレーン101〜104のいずれかに接続されている。本実施形態では、入力ポート401はネットワークプレーン101と接続されている。入力ポート402はネットワークプレーン102と接続されている。入力ポート403はネットワークプレーン103と接続されている。入力ポート404はネットワークプレーン104と接続されている。
入力ポート401は、制御回路413に対応づけられている。入力ポート402は、制御回路414に対応づけられている。入力ポート403は、制御回路415に対応づけられている。入力ポート404は、制御回路416に対応づけられている。
4つの出力ポート405〜408のそれぞれは、プロセッサ113〜116のいずれかに接続されている。本実施形態では、出力ポート405はプロセッサ113と接続されている。出力ポート406はプロセッサ114と接続されている。出力ポート407はプロセッサ115と接続されている。出力ポート408はプロセッサ116と接続されている。
出力ポート405は、マルチプレクサ409と、調停回路417と、に対応づけられている。出力ポート406は、マルチプレクサ410と、調停回路418と、に対応づけられている。出力ポート407は、マルチプレクサ411と、調停回路419と、に対応づけられている。出力ポート408は、マルチプレクサ412と、調停回路420と、に対応づけられている。
制御回路413〜416のそれぞれは、自己に対応する入力ポートからのパケット200を、パケット200内の第3経路指定情報208に従って出力ポート405に転送する場合、調停回路417に、送信用のリクエストを送信する。
制御回路413〜416のそれぞれは、自己に対応する入力ポートからのパケット200を、パケット200内の第3経路指定情報208に従って出力ポート406に転送する場合、調停回路418に、送信用のリクエストを送信する。
制御回路413〜416のそれぞれは、自己に対応する入力ポートからのパケット200を、パケット200内の第3経路指定情報208に従って出力ポート407に転送する場合、調停回路419に、送信用のリクエストを送信する。
制御回路413〜416のそれぞれは、自己に対応する入力ポートからのパケット200を、パケット200内の第3経路指定情報208に従って出力ポート408に転送する場合、調停回路420に、送信用のリクエストを送信する。
マルチプレクサ409〜412のそれぞれは、自己と同じ出力ポートに対応する調停回路からの指示に基づいて、4つの入力ポート401〜404から1つの入力ポートを選択する。マルチプレクサ409〜412のそれぞれは、その選択された入力ポートからのパケット200を、自己に対応する出力ポートに転送する。
調停回路417〜420のそれぞれは、制御回路413〜416のいずれかからのリクエストを受信すると、そのリクエストを送信した制御回路に対応する入力ポートを選択する旨の指示を、自己と同じ出力ポートに対応するマルチプレクサに出力する。
次に、動作を説明する。
図5は、プレーン間クロスバでのネットワークプレーン行き方向のデータパスでの処理を説明するためのフローチャートである。
以下では、プロセッサ113が、入力ポート301に、パケット200を送信した場合を例にとって説明する。なお、他のプロセッサがパケット200を送信した場合では、パケット200が入力される入力ポートと、処理を実行する制御回路と、使用される格納部とが、異なるだけなので、その説明は省略する。
制御回路329は、入力ポート301からパケット200を受信すると、まず、パケット200内の第1経路指定情報206で示された宛先出力ポートを確認し、切り替え状態レジスタ309内の切り替え状態情報のうち、その宛先出力ポートに対応する切り替え状態情報(以下、「対応切り替え状態情報」と称する)を調べる(ステップ501)。
まず、対応切り替え状態情報が「0」か「2」である場合、つまり、ステップ502の場合には、制御回路329は、パケット200が順序保証を必要とするパケットかどうかを調べる(ステップ503)。
パケット200の順序保証フラグ202が“1”の場合、つまり、ステップ504の場合、制御回路329は、仕掛中レジスタ312の値を調べる(ステップ505)。
仕掛中レジスタ312が「1」を格納している場合、つまり、ステップ506の場合には、制御回路329は、パケット200のラストパケットフラグ203を調べる(ステップ507)。
そして、ラストパケットフラグ203が、“1”すなわち最後のパケットであることを示している場合、つまり、ステップ508の場合は、制御回路329は、仕掛中レジスタ312の値を「1」から「0」に変更する(ステップ509)。
ラストパケットフラグ203が、“0”すなわち最後のパケットでないことを示している場合、つまり、ステップ510の場合は、制御回路329は、仕掛中レジスタ312の値を変更しない。
仕掛中レジスタ312が「0」を格納している場合、つまり、ステップ511の場合は、順序保証が必要な複数のパケットの最初のパケットが到着したことを意味する。このため、制御回路329は、仕掛中レジスタ312に「1」を格納する(ステップ512)。
パケット200の順序保証フラグ202が“0”である場合、つまり、ステップ513の場合は、制御回路329は、仕掛中レジスタ312の値を変更しない。
制御回路329は、ステップ509、510、512または513に続いて、対応切り替え状態情報が、「0」なのか「2」なのかを調べる(ステップ514)。
対応切り替え状態情報が「0」である場合、つまり、ステップ515の場合は、制御回路329は、通常宛先レジスタ311内の番号の中から、宛先出力ポートに対応する番号を特定し、その番号が付加された調停回路に対して、リクエストを送る(ステップ516)。
対応切り替え状態情報が「2」である場合、つまり、ステップ517の場合は、制御回路329は、切り替え先レジスタ310内の番号の中から、宛先出力ポートに対応する番号を特定し、その番号が付加された調停回路に対して、リクエストを送る(ステップ518)。
次に、対応切り替え状態情報が「1」である場合、つまり、ステップ519の場合は、宛先出力ポートに接続されたネットワークプレーンに障害が発生し、制御回路329が、転送先の切替え指示を受け付け、対応切り替え状態情報に「1」を格納した状態である。
この場合、制御回路329は、まず、パケット200が順序保証を必要とするパケットかどうかを調べる(ステップ520)。
パケット200の順序保証フラグ202が“1”である場合、つまり、ステップ521の場合、制御回路329は、仕掛中レジスタ312の値を調べる(ステップ522)。
仕掛中レジスタ312が「1」を格納している場合、つまり、ステップ523の場合には、制御回路329は、パケット200のラストパケットフラグ203を調べる(ステップ524)。
そして、ラストパケットフラグ203が、“1”すなわち最後のパケットであることを示している場合、つまり、ステップ525の場合は、制御回路329は、仕掛中レジスタ312の値を「1」から「0」に変更する(ステップ526)。
続いて、制御回路329は、通常宛先レジスタ311内の番号の中から、宛先出力ポートに対応する番号を特定し、その番号が付加された調停回路に対して、リクエストを送る(ステップ527)。
ラストパケットフラグ203が、“0”すなわち最後のパケットでないことを示している場合、つまり、ステップ528の場合は、制御回路329は、仕掛中レジスタ312の値を変更せずに、ステップ527を実行する。
仕掛中レジスタ312が「0」を格納している場合、つまり、ステップ529の場合は、順序保証が必要な複数のパケットの最初のパケットが到着したことを意味する。このため、制御回路329は、順序保証が必要な複数のパケットのすべてを、切り替え先のネットワークプレーンに送ることができる。
したがって、制御回路329は、対応切り替え状態情報を「1」から「2」に変更し(ステップ530)、仕掛中レジスタ312に「1」を格納する(ステップ531)。
続いて、制御回路329は、切り替え先レジスタ310内の番号の中から、宛先出力ポートに対応する番号を特定し、その番号が付加された調停回路に対して、リクエストを送る(ステップ532)。
パケット200の順序保証フラグ202が“0”である場合、つまり、ステップ533の場合は、制御回路329は、ステップ532を実行する。
最後に、対応切り替え状態情報が「3」である場合、つまり、ステップ534の場合は、宛先出力ポートに接続されているネットワークプレーンが復旧され、そのネットワークプレーンが利用できる状態である。
この場合、制御回路329は、まず、パケット200が順序保証を必要とするパケットかどうかを調べる(ステップ535)。
パケット200の順序保証フラグ202が“1”である場合、つまり、ステップ536の場合、制御回路329は、仕掛中レジスタ312の値を調べる(ステップ537)。
仕掛中レジスタ312が「1」を格納している場合、つまり、ステップ538の場合には、制御回路329は、パケット200のラストパケットフラグ203を調べる(ステップ539)。
そして、ラストパケットフラグ203が、“1”すなわち最後のパケットであることを示している場合、つまり、ステップ540の場合は、制御回路329は、仕掛中レジスタ312の値を「1」から「0」に変更する(ステップ541)。
続いて、制御回路329は、切り替え先レジスタ310内の番号の中から、宛先出力ポートに対応する番号を特定し、その番号が付加された調停回路に対して、リクエストを送る(ステップ542)。
ラストパケットフラグ203が、“0”すなわち最後のパケットでないことを示している場合、つまり、ステップ543の場合は、制御回路329は、仕掛中レジスタ312の値を変更せずに、ステップ542を実行する。
仕掛中レジスタ312が「0」を格納している場合、つまり、ステップ544の場合は、順序保証が必要な複数のパケットの最初のパケットが到着したことを意味する。このため、制御回路329は、順序保証が必要な複数のパケットのすべてを、通常の宛先のネットワークプレーンに送ることができる。
したがって、制御回路329は、対応切り替え状態情報を「3」から「0」に変更し(ステップ545)、仕掛中レジスタ312に「1」を格納する(ステップ546)。
続いて、制御回路329は、通常宛先レジスタ311内の番号の中から、宛先出力ポートに対応する番号を特定し、その番号が付加された調停回路に対して、リクエストを送る(ステップ547)。
パケット200の順序保証フラグ202が“0”である場合、つまり、ステップ548の場合は、制御回路329は、ステップ547を実行する。
次に、図6A〜6Eを用いて、本発明の実施の形態のプレーン間クロスバの動作について説明する。図6A〜6Eにおいて、図3に示したものと同一構成のものには同一符号を付してある。
図6Aは、ネットワークプレーン102に障害が発生する直前の状態を示した説明図である。切り替え状態レジスタ309、313、317および321のすべては、切り替え状態情報として、「0」を格納している。
図6Bは、ネットワークプレーン102に障害が発生した直後の状態を示した説明図である。切り替え状態レジスタ309、313、317および321のすべてにおいて、出力ポート306(番号「1」)に対応するレジスタ601〜604が、切り替え状態情報として「1」を格納している。
図6Cは、入力ポート301および303にパケットが到着して処理される状況を示した説明図である。
まず、プロセッサ113から、順序保証が必要な、出力ポート306宛のパケット605が、入力ポート301に到着する。
このとき、入力ポート301に対応する仕掛中レジスタ312は「1」を格納している。このため、切り替え状態レジスタ309内のレジスタ601が「1」を格納していても、制御回路329は、通常宛先レジスタ311内の番号の中から、出力ポート306に対応する番号「1」606を特定し、その番号「1」が付与されている調停回路334にリクエストを送って、ネットワークプレーン102にパケット605を送る。
次に、プロセッサ115から、順序保証が必要な、出力ポート306宛のパケット607が、入力ポート303に到着する。
このとき、入力ポート303に対応する仕掛中レジスタ320は「0」を格納している。このため、制御回路331は、パケット607が、順序保証が必要な複数のパケットの最初のパケットであると判定する。
したがって、制御回路331は、切り替え状態レジスタ317内のレジスタ603の値を「1」から「2」に変更し、仕掛中レジスタ320の値を「0」から「1」に変更し、切り替え先レジスタ318内の番号の中から、出力ポート306に対応する番号「2」608を特定し、その番号「2」が付与されている調停回路335にリクエストを送って、ネットワークプレーン103にパケット607を送る。
図6Dは、障害が発生して切り離されていたネットワークプレーン102が復旧した直後の状態を示した説明図である。切り替え状態レジスタ309、313、317および321のすべてにおいて、出力ポート306(番号「1」)に対応するレジスタ601〜604が、切り替え状態情報として「3」を格納している。
図6Eは、入力ポート301および304にパケットが到着して処理される状況を示した説明図である。
まず、プロセッサ113から、順序保証が必要な、出力ポート306宛のパケット609が、入力ポート301に到着する。
このとき、入力ポート301に対応する仕掛中レジスタ312は「0」を格納している。このため、制御回路329は、パケット609が、順序保証が必要な複数のパケットの最初のパケットであると判定する。
したがって、制御回路329は、切り替え状態レジスタ309内のレジスタ601の値を「3」から「0」に変更し、仕掛中レジスタ312の値を「0」から「1」に変更し、通常宛先レジスタ311内の番号の中から、出力ポート306に対応する番号「1」606を特定し、その番号「1」が付与されている調停回路334にリクエストを送って、ネットワークプレーン102にパケット609を送る。
次に、プロセッサ116から、順序保証が必要な、出力ポート306宛の最後のパケット610が、入力ポート304に到着する。
このとき、入力ポート304に対応する仕掛中レジスタ324は「1」を格納している。このため、制御回路332は、仕掛中レジスタ324の値を「1」から「0」に変更し、切り替え先レジスタ322内の番号の中から、出力ポート306に対応する番号「2」611を特定し、その番号「2」が付与されている調停回路335にリクエストを送って、ネットワークプレーン103にパケット610を送る。
本実施形態によれば、格納部105a〜105bのそれぞれは、自己に対応する入力ポートに接続されているプロセッサが、所定の複数のパケットのうち1個以上のパケットを送信済みであり、かつ、その複数のパケットのすべてを送信していない場合に、通信中である旨の通信中情報を格納する。
制御部105eは、ある1つの入力ポートから、所定の複数のパケットを構成する個々のパケットを受信すると、そのパケットを、転送先として設定されたネットワークプレーンへ転送する。
制御部105eは、格納部105a〜105bのうち、ある1つの入力ポートに対応する格納部が通信中情報を格納している状況で、その入力ポートからのパケットの転送先を切り替える旨の切替え指示を受け付けると、その入力ポートに送信される所定の複数のパケットのすべてが、転送先として設定されたネットワークプレーンへ転送された後、転送先を、複数のネットワークプレーンのうちの他のネットワークプレーンに切り替える。
このため、切替え指示が受け付けられても、1つのプロセッサから送信される所定の複数のパケットのすべてを同一のネットワークプレーンに転送することが可能になる。よって、所定の複数のパケットの順番を保証することが可能になる。
本実施形態では、所定の複数のパケットとして、順序保証が必要な複数のパケットが用いられる。この場合、順序保証が必要な複数のパケットについて、順番を保証することが可能になる。
本実施形態では、制御部105eは、転送先が他のネットワークプレーンに切り替えられており、かつ、格納部105a〜105bのうち、ある1つの入力ポートに対応する格納部が通信中情報を格納している状況で、通信経路を元のネットワークプレーンに切り替える旨の指示を受け付けると、その入力ポートに送信される所定の複数のパケットのすべてが他のネットワークプレーンへ転送された後、転送先を、他のネットワークプレーンから元のネットワークプレーンに切り替える。
この場合、例えば、故障したネットワークプレーンが修理された後に復帰した場合でも、1つのプロセッサから送信される所定の複数のパケットを同一のネットワークプレーンに転送することが可能になる。よって、所定の複数のパケットの順番を保証することが可能になる。
本実施形態では、複数の通信経路として、互いに直接接続されていない独立した複数の部分ネットワーク(ネットワークプレーン)が用いられている。
この場合、複数の通信経路として、複数の部分ネットワークが用いられている場合に、複数のパケットの順番を保証することが可能になる。
本実施形態では、プロセッサ間ネットワーク2は、複数のネットワークプレーン101〜104と、少なくとも1つのプレーン間クロスバと、を含む。この場合、プロセッサ間ネットワーク2において、複数のパケットの順番を保証することが可能になる。
本実施形態では、並列プロセッサシステム1は、複数のプロセッサ113〜144と、プロセッサ間ネットワーク2と、を含む。この場合、並列プロセッサシステム1において、複数のパケットの順番を保証することが可能になる。
(第2の実施の形態)
次に、本発明の第2の実施の形態について図面を参照して説明する。
第2の実施の形態の並列プロセッサシステム1の構成は、各プレーン間クロスバ内の各格納部内のレジスタの構成が簡略化されている点を除いて、第1の実施の形態の図1と同じである。
第2の実施の形態では、各格納部内の各レジスタの構成が簡略化されているプレーン間クロスバ105A〜112Aを、プレーン間クロスバ105〜112の代わりに用いる。
第2の実施の形態では、通常の場合のパケットの出力先は、プレーン間クロスバの各入力ポートに応じて予め決められている。つまり、プロセッサによって、通常時に使用するネットワークプレーンが決まっている。
すべてのネットワークプレーン101〜104は、すべてのプレーン間クロスバ105A〜112Aに接続されている。このため、プレーン間クロスバ105A〜112Aのそれぞれは、どのネットワークプレーンを使っても、送信先のプレーン間クロスバ、さらに言えば、宛先のプロセッサにパケットを送信することができる。
図7は、第2の実施の形態で用いるパケット700の形式を説明するための説明図である。なお、図7において、図2に示したものと同一情報のものには同一符号を付してある。
パケット700は、プロセッサ113〜144のそれぞれによって生成される。本実施形態では、プロセッサ113〜144のそれぞれは、送信用データを分割することによって、複数のパケット700を生成する。プロセッサ113〜144のそれぞれは、個々のパケット700を、1つずつ順番に、プロセッサ間ネットワーク2に送信する。
パケット700は、経路指定情報701、順序保証フラグ202、ラストパケットフラグ203、パケット長204、および、データ205から構成される。
経路指定情報701は、プロセッサ間ネットワーク2でのルーティングに用いられる。経路指定情報701は、第2経路指定情報207と、第3経路指定情報208と、を含む。
本実施形態では、プレーン間クロスバ105A〜112Aでのネットワークプレーン行き方向のルーティングは、すでに決められている。このため、プレーン間クロスバ105A〜112Aでのネットワークプレーン行き方向を指定するルーティング情報は、パケット700には付加されていない。
図8は、プレーン間クロスバ105Aの詳細を示した説明図である。図8において、図3に示したものと同一構成のものには同一符号を付してある。
図8では、プレーン間クロスバ105Aを図示しているが、プレーン間クロスバ105A〜112Aは、接続されるプロセッサが変わるだけで、すべて同一構成である。このため、他のプレーン間クロスバについての説明は省略する。
図8では、プレーン間クロスバ105Aでのネットワークプレーン行き方向のデータパスのみを図示している。なお、プレーン間クロスバ105Aでのプロセッサ行き方向のデータパスは、第1の実施の形態において図4で示した構成と同じである。
以下では、プレーン間クロスバ105Aについて、プレーン間クロスバ105と異なる点を中心に説明を行う。
プレーン間クロスバ105Aは、格納部105aA〜105dAと、制御部105eAと、を含む。
格納部105aA〜105dAのそれぞれは、一般的に格納手段と呼ぶことができる。
格納部105aAは、切り替え状態レジスタ801と、切り替え先レジスタ802と、通常宛先レジスタ803と、仕掛中レジスタ804と、を含む。格納部105bAは、切り替え状態レジスタ805と、切り替え先レジスタ806と、通常宛先レジスタ807と、仕掛中レジスタ808と、を含む。格納部105cAは、切り替え状態レジスタ809と、切り替え先レジスタ810と、通常宛先レジスタ811と、仕掛中レジスタ812と、を含む。格納部105dAは、切り替え状態レジスタ813と、切り替え先レジスタ814と、通常宛先レジスタ815と、仕掛中レジスタ816と、を含む。
制御部105eAは、一般的に制御手段と呼ぶことができる。
制御部105eAは、マルチプレクサ325〜328と、制御回路329A〜332Aと、調停回路333〜336と、を含む。
入力ポート301は、格納部105aAと、制御回路329Aと、に対応づけられている。入力ポート302は、格納部105bAと、制御回路330Aと、に対応づけられている。入力ポート303は、格納部105cAと、制御回路331Aと、に対応づけられている。入力ポート304は、格納部105dAと、制御回路332Aと、に対応づけられている。
通常宛先レジスタ803、807、811および815のそれぞれは、自己に対応する入力ポートにより決定される出力ポート(以下「対応出力ポート」と称する)と対応する調停回路の番号を格納する。
通常宛先レジスタ803は、番号「0」を格納する。通常宛先レジスタ807は、番号「1」を格納する。通常宛先レジスタ811は、番号「2」を格納する。通常宛先レジスタ815は、番号「3」を格納する。
切り替え先レジスタ802、806、810および814のそれぞれは、対応出力ポートから切り替えられる出力ポートの番号を格納する。
切り替え先レジスタ802、806、810および814のそれぞれは、対応出力ポートの番号に1を加えてmod4を計算した値を、切り替え先の出力ポートに対応する調停回路の番号として格納している。
切り替え状態レジスタ801、805、809および813のそれぞれは、対応出力ポートの切り替えの状態を表す切り替え状態情報(「0」〜「3」のいずれか)を格納する。
ある出力ポートに接続されているネットワークプレーンに障害が発生していない場合は、その出力ポートを他の出力ポートに切り替える必要がない。出力ポートを切り替えない場合、その出力ポートに対応する切り替え状態情報として「0」が格納される。切り替え状態情報が「0」である場合には、通常宛先レジスタ内の番号が使用される。
ある出力ポートに接続されているネットワークプレーンに障害が発生して他のネットワークプレーンを使用するために、その出力ポートを他の出力ポートに切り替える場合は、切り替え状態情報が、「0」から「1」に変更される。
切り替え状態情報が「1」である場合には、パケット700が、順序保証が必要なパケットかどうか、および、パケット700が、順序保証が必要なパケットの何番目のパケットかによって、通常宛先レジスタ内の番号を使うか、切り替え先レジスタ内の番号を使うかが決まる。
第2の実施の形態において、使用する番号の決定方法と切り替え状態情報が「1」から「2」になる場合の動作は、図5を用いて説明した第1の実施の形態の動作と同じである。
切り替え状態情報が「2」の場合には、必ず、切り替え先レジスタ内の番号が使用される。
プレーン間クロスバ105A〜112Aの出力ポートのうち、故障が発生したネットワークプレーンに接続されたすべての出力ポートの切り替え状態情報が、「1」から「2」になると、障害が発生したネットワークプレーンは使われなくなる。
この時点で、障害が発生したネットワークプレーンを、並列プロセッサシステム1から切り離すことが可能となる。このため、この時点で、障害が発生したネットワークプレーンについて、保守が行われる。
そして、障害が発生したネットワークプレーンが修理され、再び、並列プロセッサシステム1に組み込まれる。この時点で、障害が発生したネットワークプレーンに接続されていた出力ポートの切り替え状態情報が、「2」から「3」に変更される。
切り替え状態情報が「3」である場合には、パケット700が、順序保証が必要なパケットかどうか、および、パケット700が、順序保証が必要なパケットの何番目のパケットかによって、通常宛先レジスタ内の番号を使うか、切り替え先レジスタ内の番号を使うかが決まる。
第2の実施の形態において、使用する番号の決定方法と切り替え状態情報が「3」から「0」になる場合の動作は、図5を用いて説明した第1の実施の形態の動作と同じである。
図8に示した例は、まだ、障害が発生していない状態を示している。このため、切り替え状態情報は、すべて「0」である。
仕掛中レジスタ804、808、812および816のそれぞれは、自己に対応する入力ポートに接続されたプロセッサが、順序保証が必要な複数のパケットのうち1個以上のパケットを送信済みであり、かつ、その複数のパケットのすべてを送信していない場合に、通信中である旨の通信中情報「1」を格納する。
プロセッサ間ネットワーク2内でパケットの順序が逆転すると、エラーが発生したり、宛先プロセッサによるメモリ(不図示)へのデータの書込みの順序を保証できなくなるなどの問題が発生する。
制御回路329A〜332Aのそれぞれは、自己に対応する入力ポートから、順序保証が必要な複数のパケットのうち最初に送信されたパケットを受信したら、自己と同じ入力ポートに対応する仕掛中レジスタに、「1」(通信中情報)を格納する。
そして、制御回路329A〜332Aのそれぞれは、自己に対応する入力ポートから、順序保証の必要な複数のパケットのうち最後に送信されたパケットを受信したら、自己と同じ入力ポートに対応する仕掛中レジスタ内の「1」(通信中情報)を削除して「0」を格納する。
制御回路329A〜332Aのそれぞれは、自己に対応する入力ポートから受信したパケット700が、順序保証の必要な複数のパケットのうち最後に送信されたパケットであるかどうかを、図7に示したラストパケットフラグ202の状態を調べて判定する。
ラストパケットフラグ202が“0”である場合、制御回路329A〜332Aのそれぞれは、パケット700が、順序保証の必要な複数のパケットのうち最後に送信されたパケットでないと判定する。
一方、ラストパケットフラグ202が“1”である場合、制御回路329A〜332Aのそれぞれは、パケット700が、順序保証の必要な複数のパケットのうち最後に送信されたパケットであると判定する。
また、制御回路329A〜332Aのそれぞれは、自己と同じ入力ポートに対応する仕掛中レジスタの値が「0」で、かつ、順序保証が必要なパケット700が到着した場合、そのパケット700が、順序保証の必要な複数のパケットのうち最初に送信されたパケットであると判定する。
制御回路329A〜332Aのそれぞれは、自己と同じ入力ポートに対応する格納部内の情報に従ってパケット700を出力ポート305に転送する場合、調停回路333に、送信用のリクエストを送信する。
制御回路329A〜332Aのそれぞれは、自己と同じ入力ポートに対応する格納部内の情報に従ってパケット700を出力ポート306に転送する場合、調停回路334に、送信用のリクエストを送信する。
制御回路329A〜332Aのそれぞれは、自己と同じ入力ポートに対応する格納部内の情報に従ってパケット700を出力ポート307に転送する場合、調停回路335に、送信用のリクエストを送信する。
制御回路329A〜332Aのそれぞれは、自己と同じ入力ポートに対応する格納部内の情報に従ってパケット700を出力ポート308に転送する場合、調停回路336に、送信用のリクエストを送信する。
制御回路329A〜332Aのそれぞれは、自己と同じ入力ポートに対応する仕掛中レジスタの値が「1」で、かつ、順序保証が必要なパケット700が到着した場合、パケット700の宛先(転送先)となる出力ポートの切り替えを行わない。
なぜなら、2つのパケットが異なるネットワークプレーンを通ると、プロセッサ間ネットワーク2内での順序保証ができないからである。
例えば、先に来たパケットが通るネットワークプレーンが混雑していて、後から来たパケットが通るネットワークプレーンが空いていると、宛先となっているプロセッサへの到着順序が逆転してしまう。
調停回路333〜336のそれぞれは、制御回路329A〜332Aのいずれかからのリクエストを受信すると、そのリクエストを送信した制御回路に対応する入力ポートを選択する旨の指示を、自己と同じ出力ポートに対応するマルチプレクサに出力する。
格納部105aA〜105bAのそれぞれは、自己に対応する入力ポートに接続されているプロセッサが、所定の複数のパケット(例えば、順序保証が必要な複数のパケット)のうち1個以上のパケットを送信済みであり、かつ、その複数のパケットのすべてを送信していない場合に、通信中である旨の通信中情報を格納する。
なお、所定の複数のパケットは、順序保証が必要な複数のパケットであることが望ましいが、順序保証が必要な複数のパケットの他に、他のパケットが含まれてもよい。この場合、他のパケットも含めて、順序を保証することができる。
制御部105eAは、ある1つの入力ポートから、所定の複数のパケットを構成する個々のパケットを受信すると、そのパケットを、転送先として設定されたネットワークプレーンへ転送する。
制御部105eAは、格納部105aA〜105bAのうち、ある1つの入力ポートに対応する格納部が、通信中情報を格納している状況で、その入力ポートからのパケットの転送先を切り替える旨の切替え指示を受け付けると、その入力ポートに送信される所定の複数のパケットのすべてが、転送先として設定されたネットワークプレーンへ転送された後、転送先を、複数のネットワークプレーンのうちの他のネットワークプレーンに切り替える。
本実施形態によれば、通常時に使用する出力ポート、つまり、ネットワークプレーンが、プレーン間クロスバ105にて決定されている。このため、第1の実施の形態と同様の効果を奏すると共に、パケットに第1経路指定情報206を記載する必要がなくなる。
次に、上記各実施の形態の効果を説明する。
上記各実施の形態によれば、プレーン間クロスバが、プロセッサごとに、プロセッサが、順序保証が必要な複数のパケットのうち1個以上のパケットを通信済みで、かつ、最後のパケットがまだ通信されていないかどうかを記憶しており、最後のパケットが通信されてから、パケットの転送先を、障害が発生した部分ネットワークから予め決められた他の部分ネットワークに切り替える。
このため、パケットの転送先を、障害が発生した部分ネットワークから予め決められた他の部分ネットワークに切り替える際に、順序保証が必要な複数のパケットの順序を保証することができる。
また、障害が発生した部分ネットワークへ送られる予定であったパケットは、予め決められた他の部分ネットワークに送られる。このため、部分ネットワークを切り替えた場合の通信性能への影響を予測することが可能になる。
以上、各実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2008年11月21日に出願された日本出願特願2008−297981を基礎とする優先権を主張し、その開示の全てをここに取り込む。