(57)【要約】【課題】  複数の通信経路を用いて伝送される複数のパケットの伝送効率が低下することを抑止する。【解決手段】  情報処理システムは、複数の通信経路を介して互いに接続される複数の情報処理装置を有する。第１の情報処理装置の第１の制御装置は、メモリ転送要求を出力する第１の演算処理装置からのメモリ転送要求に基づき、第１の主記憶装置からの先頭データに第２の情報処理装置を識別する宛先情報を付加した複数の先頭パケットを生成して複数の通信経路に送信し、第１の主記憶装置からの最終データに宛先情報を付加した複数の最終パケットを生成して複数の通信経路に送信する。第２の情報処理装置の第２の制御装置は、複数の通信経路を介して受信する複数の最終パケットを計数した計数結果と複数の通信経路の数とが一致する場合、最終パケットのいずれかに含まれる最終データを第２の主記憶装置に記憶させる。【選択図】    図１
2016082508.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信経路を介して互いに接続される複数の情報処理装置を有する情報処理システムにおいて、
前記複数の情報処理装置のうち、第１の情報処理装置は、
第１の主記憶装置と、
メモリ転送要求を出力する第１の演算処理装置と、
前記第１の演算処理装置からのメモリ転送要求に基づき、前記第１の主記憶装置からの先頭データに前記複数の情報処理装置のうち送信先となる第２の情報処理装置を識別する宛先情報を付加した複数の先頭パケットを生成し、生成した前記複数の先頭パケットを前記複数の通信経路にそれぞれ送信し、前記第１の主記憶装置からの最終データに前記宛先情報を付加した複数の最終パケットを生成し、生成した前記複数の最終パケットを前記複数の通信経路にそれぞれ送信する第１の制御装置を有し、
前記第２の情報処理装置は、
第２の主記憶装置と、
前記複数の通信経路を介して前記複数の最終パケットをそれぞれ受信するとともに受信した前記複数の最終パケットを計数し、前記計数結果と前記複数の通信経路の数とが一致する場合、受信した前記複数の最終パケットのいずれかに含まれる最終データを前記第２の主記憶装置に記憶させる第２の制御装置を有することを特徴とする情報処理システム。
【請求項２】
前記第１の制御装置はさらに、
前記第１の主記憶装置から入力した前記先頭データと前記最終データの間の中間データに前記第２の情報処理装置を識別する宛先情報を付加した中間パケットを生成し、生成した前記中間パケットを前記複数の通信経路のいずれかに送信することを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記第１の制御装置はさらに、
生成した前記中間パケットを前記複数の通信経路のうち、順次選択したいずれかの通信経路に送信することを特徴とする請求項２記載の情報処理システム。
【請求項４】
前記中間パケットは、前記中間データを格納する前記第２の主記憶装置の格納先アドレスを示すアドレス情報を含み、
前記第２の制御装置は、
前記中間パケットを受信する毎に、前記中間パケットに含まれるアドレス情報が示す格納先アドレスに前記中間データを格納することを特徴とする請求項２または請求項３記載の情報処理システム。
【請求項５】
前記第２の制御装置は、
前記計数結果と前記複数の通信経路の数とが一致する場合、受信した前記複数の最終パケットのうち最も早く受信した最終パケットに含まれる最終データを前記第２の主記憶装置に記憶させることを特徴とする請求項１ないし請求項４のいずれか１項記載の情報処理システム。
【請求項６】
前記第２の制御装置は、
前記計数結果と前記複数の通信経路の数とが一致する場合、複数の通信経路のいずれかを介して前記第１の制御装置に受信確認を送信することを特徴とする請求項１ないし請求項５のいずれか１項記載の情報処理システム。
【請求項７】
前記最終パケットは、前記複数の通信経路に送信した前記中間パケットの数を示す送信数情報を含み、
前記第２の制御装置は、
前記複数の通信経路を介して受信した前記中間パケットの数を計数して計数情報として保持し、
前記計数結果と前記複数の通信経路の数とが一致し、かつ、前記係数情報が示す前記中間パケットの受信数が、前記送信数情報が示す中間パケットの送信数と一致する場合、複数の通信経路のいずれかを介して前記第１の制御装置に受信確認を送信することを特徴とする請求項１ないし請求項５のいずれか１項記載の情報処理システム。
【請求項８】
前記複数の情報処理装置の各々は、
データの送信元の情報処理装置毎に、データの伝送に使用する前記複数の通信経路を示す通信経路情報を格納したルーティングテーブルを有し、
前記第２の制御装置は、
前記ルーティングテーブルを参照することで、前記複数の通信経路の数を得ることを特徴とする請求項５ないし請求項７のいずれか１項記載の情報処理システム。
【請求項９】
前記複数の情報処理装置の各々は、
データの送信先の情報処理装置毎に、データの伝送に使用する前記複数の通信経路を示す通信経路情報を格納したルーティングテーブルを有し、
前記第１の制御装置は、
前記ルーティングテーブルを参照することで、前記先頭パケットおよび前記最終パケットを送信する通信経路を選択することを特徴とする請求項１ないし請求項７のいずれか１項記載の情報処理システム。
【請求項１０】
前記最終パケットは、前記最終データを格納する前記第２の主記憶装置の格納先アドレスを示すアドレス情報を含み、
前記第２の制御装置は、
前記最終パケットのいずれかに含まれるアドレス情報が示す格納先アドレスに前記最終データを格納することを特徴とする請求項１ないし請求項９のいずれか１項記載の情報処理システム。
【請求項１１】
先頭データに送信先となる情報処理装置を識別する宛先情報を付加した複数の先頭パケットを複数の通信経路にそれぞれ送信し、最終データに前記宛先情報を付加した複数の最終パケットを前記複数の通信経路にそれぞれ送信する他の情報処理装置に、前記複数の通信経路を介して接続される情報処理装置において、
主記憶装置と、
前記複数の通信経路を介して前記複数の最終パケットをそれぞれ受信するとともに受信した前記複数の最終パケットを計数し、前記計数結果と前記複数の通信経路の数とが一致する場合、受信した前記複数の最終パケットのいずれかに含まれる最終データを前記主記憶装置に記憶させる制御装置を有することを特徴とする情報処理装置。
【請求項１２】
複数の通信経路を介して互いに接続される複数の情報処理装置を有し、前記複数の情報処理装置のうち、第１の情報処理装置が第１の主記憶装置を有し、第２の情報処理装置が第２の主記憶装置を有する情報処理システムの制御方法において、
前記第１の情報処理装置が有する第１の演算処理装置が、メモリ転送要求を出力し、
前記第１の情報処理装置が有する第１の制御装置が、前記第１の演算処理装置からのメモリ転送要求に基づき、前記第１の主記憶装置からの先頭データに前記第２の情報処理装置を識別する宛先情報を付加した複数の先頭パケットを生成し、生成した前記複数の先頭パケットを前記複数の通信経路にそれぞれ送信し、前記第１の主記憶装置からの最終データに前記宛先情報を付加した複数の最終パケットを生成し、生成した前記複数の最終パケットを前記複数の通信経路にそれぞれ送信し、
前記第２の情報処理装置が有する第２の制御装置が、前記複数の通信経路を介して前記複数の最終パケットをそれぞれ受信するとともに受信した前記複数の最終パケットを計数し、前記計数結果と前記複数の通信経路の数とが一致する場合、受信した前記複数の最終パケットのいずれかに含まれる最終データを前記第２の主記憶装置に記憶させることを特徴とする情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置および情報処理システムの制御方法に関する。
【背景技術】
【０００２】
近年、ＣＰＵ（Central Processing Unit）等の演算処理装置に負荷を掛けることなく、情報処理装置のそれぞれに含まれる記憶装置間でデータを伝送するデータ伝送技術が、情報処理システムに採用されている。この種のデータ伝送技術としてＲＤＭＡ（Remote Direct Memory Access）技術等が知られている。
【０００３】
ＲＤＭＡ技術を採用したデータ処理装置では、複数の通信経路のうち、データの遅延量が最小となる通信経路の組み合わせを選択することで、データの伝送効率は改善される（例えば、特許文献１参照）。
【０００４】
一方、ネットワークを介してパケットを送受信するネットワークシステムにおいて、制御パケットとデータパケットとを互いに異なる処理経路を利用して処理する手法が提案されている（例えば、特許文献２参照）。また、通信網接続装置において、電話交換網から転送されたデータを複数の信号処理部に分配し、信号処理部で処理したデータをインターネットプロトコル網に転送する手法が提案されている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−３０１００２号公報
【特許文献２】特表２００８−５１７５６５号公報
【特許文献３】特開２００１−２９８４９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数の通信経路を用いて複数のパケットを伝送する場合、通信経路の伝送遅延の違いにより、受信装置によるパケットの受信順は、送信装置によるパケットの送信順に対して入れ替わる場合がある。ここで、パケットの順序は、各パケットに格納される連続した番号等により識別される。パケットの受信順が入れ替わることで、パケットに含まれるデータの処理が正常に実行されない場合、受信装置は、パケットの受信順の入れ替わりを検出したことに基づいて伝送エラーを検出し、受信したパケットを廃棄する。廃棄したパケットは、再送処理により、送信装置から受信装置に再度送信される。伝送エラーが複数の通信経路の伝送遅延の違いによって発生する場合、再送処理が繰り返し発生するため、伝送効率は低下する。
【０００７】
本件開示の情報処理システム、情報処理装置および情報処理システムの制御方法は、複数の通信経路を用いて伝送される複数のパケットの伝送効率が低下することを抑止することを目的とする。
【課題を解決するための手段】
【０００８】
一つの観点によれば、複数の通信経路を介して互いに接続される複数の情報処理装置を有する情報処理システムにおいて、複数の情報処理装置のうち、第１の情報処理装置は、第１の主記憶装置と、メモリ転送要求を出力する第１の演算処理装置と、第１の演算処理装置からのメモリ転送要求に基づき、第１の主記憶装置からの先頭データに複数の情報処理装置のうち送信先となる第２の情報処理装置を識別する宛先情報を付加した複数の先頭パケットを生成し、生成した複数の先頭パケットを複数の通信経路にそれぞれ送信し、第１の主記憶装置からの最終データに宛先情報を付加した複数の最終パケットを生成し、生成した複数の最終パケットを複数の通信経路にそれぞれ送信する第１の制御装置を有し、第２の情報処理装置は、第２の主記憶装置と、複数の通信経路を介して複数の最終パケットをそれぞれ受信するとともに受信した複数の最終パケットを計数し、計数結果と複数の通信経路の数とが一致する場合、受信した複数の最終パケットのいずれかに含まれる最終データを第２の主記憶装置に記憶させる第２の制御装置を有する。
【０００９】
別の観点によれば、先頭データに送信先となる情報処理装置を識別する宛先情報を付加した複数の先頭パケットを複数の通信経路にそれぞれ送信し、最終データに宛先情報を付加した複数の最終パケットを複数の通信経路にそれぞれ送信する他の情報処理装置に、複数の通信経路を介して接続される情報処理装置は、主記憶装置と、複数の通信経路を介して複数の最終パケットをそれぞれ受信するとともに受信した複数の最終パケットを計数し、計数結果と複数の通信経路の数とが一致する場合、受信した複数の最終パケットのいずれかに含まれる最終データを主記憶装置に記憶させる制御装置を有する。
【００１０】
さらなる別の観点によれば、複数の通信経路を介して互いに接続される複数の情報処理装置を有し、複数の情報処理装置のうち、第１の情報処理装置が第１の主記憶装置を有し、第２の情報処理装置が第２の主記憶装置を有する情報処理システムの制御方法は、第１の情報処理装置が有する第１の演算処理装置が、メモリ転送要求を出力し、第１の情報処理装置が有する第１の制御装置が、第１の演算処理装置からのメモリ転送要求に基づき、第１の主記憶装置からの先頭データに第２の情報処理装置を識別する宛先情報を付加した複数の先頭パケットを生成し、生成した複数の先頭パケットを複数の通信経路にそれぞれ送信し、第１の主記憶装置からの最終データに宛先情報を付加した複数の最終パケットを生成し、生成した複数の最終パケットを複数の通信経路にそれぞれ送信し、第２の情報処理装置が有する第２の制御装置が、複数の通信経路を介して複数の最終パケットをそれぞれ受信するとともに受信した複数の最終パケットを計数し、計数結果と複数の通信経路の数とが一致する場合、受信した複数の最終パケットのいずれかに含まれる最終データを第２の主記憶装置に記憶させる。
【発明の効果】
【００１１】
本件開示の情報処理システム、情報処理装置および情報処理システムの制御方法は、複数の通信経路を用いて伝送される複数のパケットの伝送効率が低下することを抑止することができる。
【図面の簡単な説明】
【００１２】
【図１】情報処理システム、情報処理装置および情報処理システムの制御方法の一実施形態を示す図である。
【図２】情報処理システム、情報処理装置および情報処理システムの制御方法の別の実施形態を示す図である。
【図３】図２に示すＲＤＭＡモジュールの一例を示す図である。
【図４】図３に示すルーティングテーブルの一例を示す図である。
【図５】図２に示すノード間でのライト処理の一例を示す図である。
【図６】図２に示すノード間でのリード処理の一例を示す図である。
【図７】図５および図６に示すパケットのフォーマットの一例を示す図である。
【図８】図７に示すパケットコードの一例を図である。
【図９】図５に示すライト処理におけるデータの送信元のＲＤＭＡモジュールの動作の一例を示す図である。
【図１０】図５に示すライト処理におけるデータの送信先のＲＤＭＡモジュールの動作の一例を示す図である。
【図１１】図６に示すリード処理におけるデータの送信先のＲＤＭＡモジュールの動作の一例を示す図である。
【図１２】図６に示すリード処理におけるデータの送信元のＲＤＭＡモジュールの動作の一例を示す図である。
【図１３】図９および図１２に示すＳ５００を実行するパケット送信部の動作の一例を示す図である。
【図１４】図１０および図１１に示すＳ６００を実行するパケット受信部の動作の一例を示す図である。
【図１５】図２に示す情報処理システムにおけるデータの転送性能の評価の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を用いて実施形態を説明する。
【００１４】
図１は、情報処理システム、情報処理装置および情報処理システムの制御方法の一実施形態を示す。図１に示す情報処理システムＳＹＳは、複数の通信経路ＣＬ（ＣＬ０、ＣＬ１）を介して互いに接続される複数の情報処理装置１００、２００を有する。情報処理装置１００は、サーバ等であり、主記憶装置１０、演算処理装置１２および制御装置１４を有する。情報処理装置２００は、サーバ等であり、主記憶装置２０、演算処理装置２２および制御装置２４を有する。主記憶装置１０、２０は、ＤＲＡＭ（Dynamic Random Access Memory）を含むメモリモジュール等である。演算処理装置１２、２２は、ＣＰＵ等のプロセッサである。
【００１５】
なお、情報処理装置１００、２００間を接続する通信経路ＣＬの数は、３以上でもよい。複数の通信経路ＣＬを介して互いに接続される情報処理装置の数は、３以上でもよい。この場合、一対の情報処理装置を接続する複数の通信経路ＣＬと、他の一対の情報処理装置を接続する複数の通信経路ＣＬとは、同じでもよく、相違してもよく、一部が相違してもよい。
【００１６】
主記憶装置１０には、情報処理装置２００に送信するデータＦＤ、ＭＤ０、ＭＤ１、ＬＤが格納される。演算処理装置１２は、主記憶装置１０に格納されたデータＦＤ、ＭＤ０、ＭＤ１、ＬＤを含むストリームデータを情報処理装置２００の主記憶装置２０に転送するメモリ転送要求を制御装置１４に出力する。例えば、ストリームデータは、演算処理装置２２で処理するデータの基本単位である。
【００１７】
制御装置１４は、演算処理装置１２からのメモリ転送要求に基づき、主記憶装置１０から読み出される先頭データＦＤに、送信先となる情報処理装置２００を識別する宛先情報ＤＩＤを付加した複数の先頭パケットＦＰを生成する。宛先情報ＤＩＤは、演算処理装置１２が生成するメモリ転送要求に含まれる。制御装置１４は、生成した複数の先頭パケットＦＰを通信経路ＣＬ０、ＣＬ１にそれぞれ送信する。次に、制御装置１４は、主記憶装置１０から読み出される中間データＭＤ（ＭＤ０、ＭＤ１）に宛先情報ＤＩＤをそれぞれ付加した複数の中間パケットＭＰ（ＭＰ０、ＭＰ１）を生成する。そして、制御装置１４は、生成した中間パケットＭＰ０、ＭＰ１を通信経路ＣＬ０、ＣＬ１にそれぞれ送信する。例えば、制御装置１４は、ラウンドロビン手法等を用いて通信経路ＣＬ０、ＣＬ１を順次に選択し、選択した通信経路ＣＬに中間パケットＭＰ０、ＭＰ１を送信する。これにより、複数の中間パケットＭＰを複数の通信経路ＣＬに並列に伝送することが可能になり、単一の通信経路ＣＬを用いて中間パケットＭＰを伝送する場合に比べて伝送効率を向上することができる。
【００１８】
また、制御装置１４は、主記憶装置１０から読み出される最終データＬＤに宛先情報ＤＩＤを付加した複数の最終パケットＬＰを生成し、生成した複数の最終パケットＬＰを通信経路ＣＬ０、ＣＬ１にそれぞれ送信する。
【００１９】
一方、情報処理装置２００の制御装置２４は、複数の先頭パケットＦＰ、複数の中間パケットＭＰ０、ＭＰ１および複数の最終パケットＬＰを、通信経路ＣＬ０、ＣＬ１を介してそれぞれ受信する。制御装置２４は、受信した先頭パケットＦＰのいずれかに含まれる先頭データＦＤを主記憶装置２０に記憶させる。制御装置２４は、受信した中間パケットＭＰ０、ＭＰ１のそれぞれに含まれる中間データＭＤ０、ＭＤ１を主記憶装置２０に記憶させる。
【００２０】
また、制御装置２４は、複数の最終パケットＬＰの数を計数した計数結果（図１では”２”）と通信経路ＣＬ０、ＣＬ１の数とが一致する場合、受信した複数の最終パケットＬＰのいずれかに含まれる最終データＬＤを主記憶装置２０に記憶させる。すなわち、制御装置２４は、制御装置１４が送信した全ての最終パケットＬＰの受信が確認されたことに基づいて、ストリームデータの転送の完了を判定し、最終データＬＤを主記憶装置２０に記憶させる。この後、演算処理装置２２は、主記憶装置２０に記憶された先頭データＦＤ、中間データＭＤ０、ＭＤ１および最終データＬＤを含むストリームデータを用いて演算処理等を実行する。
【００２１】
例えば、通信経路ＣＬ０の伝送遅延が通信経路ＣＬ１の伝送遅延より大きいとする。制御装置２４は、通信経路ＣＬ０を介して中間パケットＭＰ０を受信する前に、通信経路ＣＬ１を介して最終パケットＬＰを受信した場合、最終パケットＬＰに基づいてストリームデータの転送の完了を判定しない。制御装置２４は、中間パケットＭＰ０の受信後に、通信経路ＣＬ０から最終パケットＬＰを受信した場合、ストリームデータの転送の完了を判定する。
【００２２】
したがって、通信経路ＣＬ０の伝送遅延が通信経路ＣＬ１の伝送遅延より大きい場合にも、中間パケットＭＰ０に含まれる中間データＭＤ０が主記憶装置２０に記憶されない不具合を抑止することできる。換言すれば、中間パケットＭＰ０より前に最終パケットＬＰが受信されることによる伝送エラーの発生を抑止することができる。
【００２３】
この結果、複数の通信経路ＣＬの伝送遅延が互いに異なる場合にも、伝送エラーを発生させることなく、複数の通信経路ＣＬを用いて複数の中間パケットＭＰを並列に伝送することが可能になる。すなわち、複数の通信経路ＣＬに複数の先頭パケットＦＰおよび複数の最終パケットＬＰを伝送することで、伝送エラーを発生させることなく、複数の中間パケットＭＰ０−ＭＰ１を複数の通信経路に並列に伝送することが可能になる。これにより、複数の通信経路ＣＬを用いて複数のパケットＦＰ、ＭＰ０、ＭＰ１、ＬＰを伝送する場合にも、伝送エラーの発生を抑止できるため、パケットＦＰ、ＭＰ０、ＭＰ１、ＬＰの伝送効率が低下することを抑止することができる。
【００２４】
なお、図１では、主記憶装置１０から主記憶装置２０にストリームデータが転送される例を示すが、主記憶装置２０から主記憶装置１０にストリームデータが転送されてもよい。この場合、制御装置２４は、パケットＦＰ、ＭＰ０、ＭＰ１、ＬＰを受信する機能だけでなく、パケットＦＰ、ＭＰ０、ＭＰ１、ＬＰを送信する機能（制御装置１４の機能）を含む。制御装置１４は、パケットＦＰ、ＭＰ０、ＭＰ１、ＬＰを送信する機能だけでなく、パケットＦＰ、ＭＰ０、ＭＰ１、ＬＰを受信する機能（制御装置２４の機能）を含む。主記憶装置２０から主記憶装置１０へのストリームデータの転送は、通信経路ＣＬ０、ＣＬ１を用いて実行されてもよく、通信経路ＣＬ０、ＣＬ１と異なる通信経路ＣＬを用いて実行されてもよい。
【００２５】
図２は、情報処理システム、情報処理装置および情報処理システムの制御方法の別の実施形態を示す。図２に示す情報処理システムＳＹＳ１は、ｎ−１個（ｎは、３以上の整数）のノードＮＤ（ＮＤ０、ＮＤ１、...、ＮＤｎ）を有する。ノードＮＤは、情報処理装置の一例である。
【００２６】
ノードＮＤ０は、ｍ−１個（ｍは、３以上の整数）の通信経路ＣＬ（ＣＬ００、ＣＬ０１、...、ＣＬ０ｍ）を介して複数のネットワークスイッチＮＷＳＷにそれぞれ接続される。ノードＮＤ１は、ｍ−１個の通信経路ＣＬ（ＣＬ１０、ＣＬ１１、...、ＣＬ１ｍ）を介して複数のネットワークスイッチＮＷＳＷにそれぞれ接続される。ノードＮＤｎは、ｍ−１個の通信経路ＣＬを介して複数のネットワークスイッチＮＷＳＷにそれぞれ接続される。ノードＮＤ０、ＮＤ１、...、ＮＤｎは、互いに同一または同様の構成のため、以下、ノードＮＤ０の構成が説明される。
【００２７】
ノードＮＤ０は、ＣＰＵ、主記憶装置ＭＥＭおよびネットワークアダプタＮＷＡを有する。ＣＰＵは、演算処理装置の一例である。主記憶装置ＭＥＭは、ＤＲＡＭを含むメモリモジュール等である。ネットワークアダプタＮＷＡは、例えば、ネットワークインタフェースカード（ＮＩＣ）としてノードＮＤ０に搭載される。
【００２８】
ＣＰＵは、演算処理を実行するコアＣＯＲＥと、メモリコントローラＭＣＮＴと、入出力バスブリッジＩＯＢＢとを有する。メモリコントローラＭＣＮＴは、メモリバスＭＢを介して主記憶装置ＭＥＭに接続され、ＣＰＵまたはネットワークアダプタＮＷＡの制御装置ＲＤＭＡからの指示に基づいて、主記憶装置ＭＥＭのアクセスを制御する。なお、ＣＰＵは、主記憶装置ＭＥＭに記憶された情報の一部が格納されるキャッシュメモリを有してもよい。入出力バスブリッジＩＯＢＢは、ネットワークアダプタＮＷＡに接続された入出力バスＩＯＢをコアＣＯＲＥのバスまたはメモリコントローラＭＣＮＴのバスに接続する。
【００２９】
ネットワークアダプタＮＷＡは、制御装置ＲＤＭＡ、ポートインタフェースＰＩＦおよびｍ個のポートＰＴ（ＰＴ０、ＰＴ１、...、ＰＴｍ）を有する。制御装置ＲＤＭＡは、ノードＮＤ０が有する主記憶装置ＭＥＭと他のノードＮＤ（ＮＤ１等）が有する主記憶装置ＭＥＭとの間で、コアＣＯＲＥを介さずにデータを直接転送する機能を有する。以下の説明では、制御装置ＲＤＭＡは、ＲＤＭＡモジュールとも称される。ＲＤＭＡモジュールの一例は、図３に示す。
【００３０】
ポートインタフェースＰＩＦは、ＲＤＭＡモジュールから出力されるパケットをＲＤＭＡモジュールの指示に基づいてポートＰＴ０−ＰＴｍのいずれに出力するとともに、通信経路ＣＬ００−ＣＬ０ｍを介して伝送されるパケットをＲＤＭＡモジュールに出力する。各ポートＰＴは、通信経路ＣＬおよびネットワークスイッチＮＷＳＷを介して、他のノードＮＤのポートＰＴのいずれかに接続される。
【００３１】
図３は、図２に示すＲＤＭＡモジュールの一例を示す。ＲＤＭＡモジュールは、要求受信部ＲＥＱＲＣＶ、要求処理部ＲＥＱＰＲＣ、アドレス変換部ＡＤＣＮＶおよび転送部ＤＭＡを有する。また、ＲＤＭＡモジュールは、パケット生成部ＰＫＴＧＥＮ、パケット送信部ＰＫＴＳＮＤ、パケット受信部ＰＫＴＲＣＶおよびルーティングテーブルＲＴＢＬを有する。
【００３２】
要求受信部ＲＥＱＲＣＶは、入出力バスＩＯＢを介してＣＰＵからライト要求またはリード要求を受信し、受信した要求を要求処理部ＲＥＱＰＲＣに出力する。ライト要求およびリード要求は、メモリ転送要求の一例である。
【００３３】
ライト要求は、自ノードＮＤの主記憶装置ＭＥＭに記憶されているデータを他ノードＮＤの主記憶装置ＭＥＭに転送する場合に、自ノードＮＤのＣＰＵにより発行される。ライト要求は、データのデータ長と、データの送信元である自ノードＮＤを識別する識別情報であるＩＤ（IDentification）と、データの送信先のノードＮＤのＩＤとを含む。また、ライト要求は、データの送信元の主記憶装置ＭＥＭのメモリ領域を識別する識別情報と、データの送信元の先頭仮想メモリアドレスと、データの送信先の主記憶装置ＭＥＭのメモリ領域を識別する識別情報と、データの送信先の先頭仮想メモリアドレスを含む。
【００３４】
リード要求は、他ノードＮＤの主記憶装置ＭＥＭに記憶されているデータを自ノードＮＤの主記憶装置ＭＥＭに転送する場合、自ノードＮＤのＣＰＵにより発行される。リード要求は、データのデータ長と、データの送信元のノードＮＤのＩＤと、データの送信先である自ノードＮＤのＩＤとを含む。また、リード要求は、データの送信元の主記憶装置ＭＥＭのメモリ領域を識別する識別情報と、データの送信元の先頭仮想メモリアドレスと、データの送信先の主記憶装置ＭＥＭのメモリ領域を識別する識別情報と、データの送信先の先頭仮想メモリアドレスを含む。
【００３５】
要求処理部ＲＥＱＰＲＣは、ライト要求およびリード要求を要求受信部ＲＥＱＲＣＶから受信し、受信したライト要求およびリード要求をデコードし、ライト要求およびリード要求に含まれる情報を抽出する。要求処理部ＲＥＱＰＲＣは、ライト要求を受信した場合、データのデータ長と、データの送信元の主記憶装置ＭＥＭのメモリ領域を識別する識別情報と、データの送信元の先頭仮想メモリアドレスとを、アドレス変換部ＡＤＣＮＶに出力する。また、要求処理部ＲＥＱＰＲＣは、データの送信元のノードＮＤのＩＤと、データの送信先のノードＮＤのＩＤと、データのデータ長とを、パケット生成部ＰＫＴＧＥＮに出力する。さらに、要求処理部ＲＥＱＰＲＣは、データの送信先の主記憶装置ＭＥＭのメモリ領域を識別する識別情報と、データの送信先の先頭仮想メモリアドレスとを、パケット生成部ＰＫＴＧＥＮに出力する。
【００３６】
一方、要求処理部ＲＥＱＰＲＣは、リード要求を受信した場合、データの送信元のノードＮＤのＩＤと、データの送信先のノードＮＤのＩＤと、データのデータ長とを、パケット生成部ＰＫＴＧＥＮに出力する。さらに、要求処理部ＲＥＱＰＲＣは、データの送信元の主記憶装置ＭＥＭのメモリ領域を識別する識別情報と、データの送信元の先頭仮想メモリアドレスとを、パケット生成部ＰＫＴＧＥＮに出力する。また、要求処理部ＲＥＱＰＲＣは、データの送信先の主記憶装置ＭＥＭのメモリ領域を識別する識別情報と、データの送信先の先頭仮想メモリアドレスとを、パケット生成部ＰＫＴＧＥＮに出力する。
【００３７】
アドレス変換部ＡＤＣＮＶは、自ノードＮＤのＣＰＵがライト要求を発行した場合、自ノードＮＤの主記憶装置ＭＥＭのメモリ領域を識別する識別情報と、先頭仮想メモリアドレスとに基づいて、データを読み出す主記憶装置ＭＥＭの物理アドレスを生成する。そして、アドレス変換部ＡＤＣＮＶは、生成した物理アドレスとデータのデータ長とを転送部ＤＭＡに出力する。
【００３８】
アドレス変換部ＡＤＣＮＶは、他ノードＮＤのリード要求に基づき、自ノードＮＤの主記憶装置ＭＥＭからデータを読み出す場合、主記憶装置ＭＥＭのメモリ領域を識別する識別情報と、先頭仮想メモリアドレスとを、パケット受信部ＰＫＴＲＣＶから受信する。そして、アドレス変換部ＡＤＣＮＶは、識別情報と先頭仮想メモリアドレスとに基づいて、自ノードＮＤにおいてデータを格納する主記憶装置ＭＥＭの物理アドレスを生成し、生成した物理アドレスを転送部ＤＭＡに出力する。
【００３９】
転送部ＤＭＡは、自ノードＮＤのＣＰＵがライト要求を発行した場合、自ノードＮＤの主記憶装置ＭＥＭからデータを読み出すＤＭＡ（Direct Memory Access）転送を実行し、読み出したデータをパケット生成部ＰＫＴＧＥＮに出力する。また、転送部ＤＭＡは、他ノードＮＤのＣＰＵがリード要求を発行した場合、パケット受信部ＰＫＴＲＣＶで受信したパケットに含まれるデータを自ノードＮＤの主記憶装置ＭＥＭに格納するＤＭＡ転送を実行する。
【００４０】
パケット生成部ＰＫＴＧＥＮは、自ノードＮＤのＣＰＵがライト要求を発行した場合、転送部ＤＭＡから転送されるデータを、データの転送先のノードＮＤに転送するパケットを生成し、生成したパケットをパケット送信部ＰＫＴＳＮＤに出力する。また、パケット生成部ＰＫＴＧＥＮは、自ノードＮＤのＣＰＵがリード要求を発行した場合、データの転送元のノードＮＤからデータを読み出すリード要求パケット（図６のＲＲＥＱ）を生成し、生成したパケットをパケット送信部ＰＫＴＳＮＤに出力する。さらに、パケット生成部ＰＫＴＧＥＮは、自ノードＮＤのＣＰＵがリード要求を発行した場合、パケット受信部ＰＫＴＲＣＶがデータの転送元のノードＮＤからデータを正常に受信したか否かを示す受信確認パケットを生成する。そして、パケット生成部ＰＫＴＧＥＮは、生成したパケットをパケット送信部ＰＫＴＳＮＤに出力する。
【００４１】
パケット送信部ＰＫＴＳＮＤは、パケット生成部ＰＫＴＧＥＮから受信したパケットに含まれる送信先のノードＮＤのＩＤに基づいて、ルーティングテーブルＲＴＢＬを参照し、パケットを送信するポートＰＴ（図２）を決定する。そして、パケット送信部ＰＫＴＳＮＤは、決定したポートＰＴに、ポートインタフェース部ＰＩＦを介してパケットを送信する。送信されたパケットは、図２に示すポートインタフェース部ＰＩＦ、ポートＰＴ、通信経路ＣＬ、ネットワークスイッチＮＷＳＷおよび通信経路ＣＬを介して、送信先のノードＮＤに送信される。パケット送信部ＰＫＴＳＮＤの動作の一例は、図１３に示す。
【００４２】
パケット受信部ＰＫＴＲＣＶは、自ノードＮＤのＣＰＵがリード要求を発行した場合、データの送信元のノードＮＤから受信したパケットを受信する。そして、パケット受信部ＰＫＴＲＣＶは、受信したパケットに含まれるデータの送信先の主記憶装置ＭＥＭのメモリ領域を識別する識別情報と、データの送信先の先頭仮想メモリアドレスとを、アドレス変換部ＡＤＣＮＶに出力する。また、パケット受信部ＰＫＴＲＣＶは、データの送信元のノードＮＤから受信したパケットに含まれるデータを転送部ＤＭＡに出力する。データの送信元のノードＮＤから受信したパケットは、図５および図６に示す先頭パケットＦＰ、中間パケットＭＰまたは最終パケットＬＰのいずれかである。
【００４３】
パケット受信部ＰＫＴＲＣＶは、データの送信元のノードＮＤから最終パケットＬＰを受信した場合、ルーティングテーブルＲＴＢＬを参照し、パケットの受信に用いたポートＰＴの数を求める。そして、パケット受信部ＰＫＴＲＣＶは、ポートＰＴの数と最終パケットＬＰの受信数との比較結果と、中間パケットＭＰの受信数とに基づいて、正常受信（ＡＣＫ）または受信エラー（ＮＡＫ）を示す情報をパケット生成部ＰＫＴＧＥＮに出力する。パケット受信部ＰＫＴＲＣＶの動作の一例は、図１４に示す。
【００４４】
ルーティングテーブルＲＴＢＬは、ネットワークスイッチＮＳＷ（図２）に接続されるノードＮＤ毎に、データの伝送に使用するポートＰＴを示す情報を記憶する。すなわち、ルーティングテーブルＲＴＢＬは、自ノードＮＤと他ノードＮＤとの間でデータ伝送を実行する通信経路ＣＬを示す情報を記憶する。ルーティングテーブルＲＴＢＬの一例は、図４に示す。
【００４５】
図４は、図３に示すルーティングテーブルＲＴＢＬの一例を示す。ルーティングテーブルＲＴＢＬは、情報処理システムＳＹＳ１が有するノードＮＤ０−ＮＤｎのＩＤ毎に、データの伝送に使用するポートＰＴを示す情報を記憶する。ルーティングテーブルＲＴＢＬにおいて、各ポートＰＴに対応する領域の”１”は、ポートＰＴがパケットの伝送に使用される通信経路ＣＬに接続されていることを示す。ルーティングテーブルＲＴＢＬにおいて、各ポートＰＴに対応する領域の”０”は、ポートＰＴが通信経路ＣＬに接続されず、パケットの伝送に使用されないことを示す。図４に示す例では、ノードＮＤ０に対するパケットの送受信は、ポートＰＴ０、ＰＴ１を使用して実行され、ノードＮＤ１に対するパケットの送受信は、ポートＰＴ０、ＰＴ１を使用して実行される。また、ノードＮＤ２に対するパケットの送受信は、ポートＰＴ２、ＰＴ３を使用して実行され、ノードＮＤｎに対するパケットの送受信は、ポートＰＴｍと、ポートＰＴ４からＰＴｍ−１のいずれかを使用して実行される。
【００４６】
例えば、ルーティングテーブルＲＴＢＬは、全てのノードＮＤ０−ＮＤｎに共通である。このため、ノードＮＤ０は、ルーティングテーブルＲＴＢＬにおけるノードＮＤ０に対応する領域を使用せず、ノードＮＤ１は、ルーティングテーブルＲＴＢＬにおけるノードＮＤ１に対応する領域を使用しない。他のノードＮＤ２−ＮＤｎも同様である。なお、ルーティングテーブルＲＴＢＬは、パケット送信部ＰＫＴＳＮＤとパケット受信部ＰＫＴＲＣＶとのそれぞれに対応して設けられてもよい。
【００４７】
図５は、図２に示すノードＮＤ間でのライト処理の一例を示す。図５に示す例では、実線と破線で示す２つの通信経路ＣＬを使用してパケットが送信される。なお、図５に示すノードＮＤの処理は、ＲＤＭＡモジュールにより実行される。
【００４８】
ライト処理は、データの送信元のノードＮＤのＣＰＵがＲＤＭＡモジュールにライト要求を出力することで開始される。ＲＤＭＡモジュールは、ライト要求に含まれる情報に基づいて、送信するデータを自ノードＮＤの主記憶装置ＭＥＭから読み出す。
【００４９】
データの送信元のノードＮＤは、先頭データＦＤを含む先頭パケットＦＰを、２つの通信経路ＣＬを使用してデータの送信先のノードＮＤに送信する（図５（ａ））。次に、データの送信元のノードＮＤは、中間データＭＤ（ＭＤ０−ＭＤ３）を含む中間パケットＭＰ（ＭＰ０−ＭＰ３）を、２つの通信経路ＣＬのそれぞれを使用してデータの送信先のノードＮＤに順次に送信する（図５（ｂ）、（ｃ））。
【００５０】
例えば、データの送信元のＲＤＭＡモジュールのパケット送信部ＰＫＴＳＮＤは、ラウンドロビン手法等を用いて２つの通信経路ＣＬを順次に選択し、選択した通信経路ＣＬに中間パケットＭＰ０−ＭＰ３を順次に送信する。この後、データの送信元のノードＮＤは、最終データＬＤを含む最終パケットＬＰを、２つの通信経路ＣＬを使用してデータの送信先のノードＮＤに送信する（図５（ｄ））。
【００５１】
図５では、破線で示す通信経路ＣＬの伝送遅延は、実線で示す通信経路ＣＬの伝送遅延より大きい。通信経路ＣＬの伝送遅延は、通信経路ＣＬの長さと、通信経路ＣＬ間に介在するネットワークスイッチＮＷＳＷの数およびネットワークスイッチＮＷＳＷの性能等に依存する。
【００５２】
データの送信先のノードＮＤは、実線で示す通信経路ＣＬを介して受信する先頭パケットＦＰを受信し、受信した先頭パケットＦＰに含まれる先頭データＦＤを主記憶装置ＭＥＭに書き込む（図５（ｅ））。データの送信先のノードＮＤは、破線で示す通信経路ＣＬを介して受信した先頭パケットＦＰを破棄する。
【００５３】
次に、データの送信先のノードＮＤは、２つの通信経路ＣＬを介して中間パケットＭＰ０−ＭＰ３を順次に受信し、中間パケットＭＰに含まれる中間データＭＤ０−ＭＤ３を、中間パケットＭＰの受信毎に主記憶装置ＭＥＭに書き込む（図５（ｆ））。中間パケットＭＰ０−ＭＰ３を２つの通信経路ＣＬを用いて並列に伝送することで、単一の通信経路ＣＬを用いて伝送する場合に比べて、中間パケットＭＰの伝送効率を向上することができる。
【００５４】
次に、データの送信先のノードＮＤは、２つの通信経路ＣＬを介して最終パケットＬＰを順次に受信し、先に受信した最終パケットＬＰに含まれる最終データＬＤを主記憶装置ＭＥＭに書き込む（図５（ｇ））。データの送信先のノードＮＤは、破線で示す通信経路ＣＬを介して受信する最終パケットＬＰを破棄する。なお、データの送信先のノードＮＤは、最後に受信した最終パケットＬＰに含まれる最終データＬＤを主記憶装置ＭＥＭに書き込んでもよい。
【００５５】
データの送信先のノードＮＤは、２つの通信経路ＣＬを介した２つの最終パケットＬＰの受信に基づいて、パケットＦＰ、ＭＰ０−ＭＰ３、ＬＰの受信の可否を示す受信確認パケットＡＣＫ（またはＮＡＫ）をデータの送信元のノードＮＤに送信する（図５（ｈ））。図５では、受信確認パケットＡＣＫ（またはＮＡＫ）は、実線で示す通信経路ＣＬを用いて伝送されるが、破線で示す通信経路ＣＬを用いて伝送されてもよい。
【００５６】
受信確認パケットＡＣＫは、パケットＦＰ、ＭＰ０−ＭＰ３、ＬＰが正常に受信されたことを示し、受信確認パケットＮＡＫは、パケットＦＰ、ＭＰ０−ＭＰ３、ＬＰの少なくとも１つが、正常に受信されなかったことを示す。そして、データの送信元のノードＮＤが受信確認パケットＡＣＫ（またはＮＡＫ）を受信したことに基づいて、ライト処理が終了する。
【００５７】
なお、各中間パケットＭＰ０−ＭＰ３は、図７に示すように、データの格納先を示す情報（メモリ領域の識別子および先頭仮想メモリアドレス）を含んでいる。このため、例えば、データの送信先のノードＮＤが、中間パケットＭＰ１より早く中間パケットＭＰ２を受信した場合にも、中間データＭＤ２、ＭＤ１を、主記憶装置ＭＥＭに正常に書き込むことができる。したがって、中間パケットＭＰの受信順序が入れ替わった場合にも、伝送エラーは発生せず、パケットの再送処理等は実行されない。伝送エラーの発生を抑止することができるため、パケットの伝送効率を向上することができる。
【００５８】
図６は、図２に示すノード間でのリード処理の一例を示す。図５と同一または同様の処理については、詳細な説明は省略する。図６に示す例においても、実線と破線で示す２つの通信経路ＣＬを使用してパケットが送信される。なお、図６に示すノードＮＤの処理は、ＲＤＭＡモジュールにより実行される。
【００５９】
リード処理は、データの送信先のノードＮＤのＣＰＵがＲＤＭＡモジュールにリード要求を出力することで開始される。ＲＤＭＡモジュールは、リード要求に含まれる情報に基づいて、リード要求パケットＲＲＥＱを生成し、生成したリード要求パケットＲＲＥＱをデータの送信元のノードＮＤに送信する（図６（ａ））。
【００６０】
データの送信元のノードＮＤは、リード要求パケットＲＲＥＱを受信し、リード要求パケットＲＲＥＱに含まれる情報に基づいて、主記憶装置ＭＥＭからデータを読み出す。この後、図５と同様に、データの送信元のノードＮＤは、先頭パケットＦＰ、中間パケットＭＰ０−ＭＰ３および最終パケットＬＰを、データの送信先のノードＮＤに送信する（図６（ｂ）、（ｃ）、（ｄ）、（ｅ））。データの送信先のノードＮＤは、複数の通信経路ＣＬを介して複数の最終パケットＬＰを受信した後、受信確認パケットＡＣＫ（またはＮＡＫ）をデータの送信元のノードＮＤに送信する（図６（ｆ））。そして、データの送信元のノードＮＤが受信確認パケットＡＣＫ（またはＮＡＫ）を受信したことに基づいて、リード処理が終了する。
【００６１】
図７は、図５および図６に示すパケットのフォーマットの一例を示す。先頭パケットＦＰは、送信先のノードＮＤのＩＤ（１６ビット）、先頭パケットＦＰのパケット長（１６ビット）、パケットの種別を示すパケットコード（８ビット）、および送信元のノードＮＤのＩＤ（１６ビット）を格納する領域を有する。なお、「リザーブ」は、使用されない領域を示す。また、先頭パケットＦＰは、メモリ領域の識別子（３２ビット）、先頭仮想メモリアドレス（６４ビット）、データの転送長（３２ビット）およびペイロード（転送データ；最大１２８バイト）を格納する領域を有する。
【００６２】
中間パケットＭＰは、送信先のノードＮＤのＩＤ、中間パケットＭＰのパケット長、パケットコード、送信元のノードＮＤのＩＤ、メモリ領域の識別子、先頭仮想メモリアドレスおよびペイロードを格納する領域を有する。
【００６３】
最終パケットＬＰは、送信先のノードＮＤのＩＤ、最終パケットＬＰのパケット長、パケットコード、送信元のノードＮＤのＩＤ、メモリ領域の識別子、先頭仮想メモリアドレス、送信した中間パケットＭＰの数およびペイロードを格納する領域を有する。なお、先頭パケットＦＰ、中間パケットＭＰおよび最終パケットＬＰのそれぞれは、図８に示すパケットコードの値に応じて、ライト処理用のパケットとリード処理用のパケットとに区別可能である。
【００６４】
受信確認パケットＡＣＫ、ＮＡＫおよびリード要求パケットＲＲＥＱは、送信先のノードＮＤのＩＤ、各パケットＡＣＫ、ＮＡＫ、ＲＲＥＱのパケット長、パケットコードおよび送信元のノードＮＤのＩＤを格納する領域を有する。また、受信確認パケットＡＣＫ、ＮＡＫおよびリード要求パケットＲＲＥＱは、送信先のメモリ領域の識別子、送信先の先頭仮想メモリアドレス、送信元のメモリ領域の識別子、送信元の先頭仮想メモリアドレスおよびデータの転送長を格納する領域を有する。
【００６５】
送信先のノードＮＤのＩＤにおける「送信先」と、送信元のノードＮＤのＩＤにおける「送信元」は、データの送信先とデータの送信元とのそれぞれを示す。すなわち、主記憶装置ＭＥＭに書き込むデータを受信するノードＮＤは、送信先であり、主記憶装置ＭＥＭから読み出したデータを送信するノードＮＤは、送信元である。
【００６６】
メモリ領域の識別子は、メモリ空間内の複数のメモリ領域のうち、データを書き込むメモリ領域を識別するために格納される。先頭仮想メモリアドレスは、ペイロードに格納されたデータを格納する主記憶装置ＭＥＭ（データの送信先のノードＮＤに含まれる）内の位置を指定するために格納される。先頭仮想メモリアドレスは、パケットＦＰ、ＭＰ、ＬＰに含まれるペイロード毎に指定される。そして、パケットＦＰ、ＭＰ、ＬＰを受信したＲＤＭＡモジュールは、メモリ領域の識別子と先頭仮想メモリアドレスとに基づいて、データを書き込む物理アドレスを求める。
【００６７】
図７に示すパケットのフォーマットを使用することで、パケットＦＰ、ＭＰ、ＬＰ毎に、先頭仮想メモリアドレスを指定することができ、データの書き込み先をパケットＦＰ、ＭＰ、ＬＰ毎に独立に求めることができる。この結果、複数の通信経路ＣＬを用いて複数の中間パケットＭＰを並列に伝送することで中間パケットＭＰの受信順序が入れ替わった場合にも、中間パケットＭＰに含まれるデータを主記憶装置ＭＥＭに正常に書き込むことができる。これに対して、中間パケットＭＰおよび最終パケットＬＰに、先頭パケットＦＰに格納されたデータの書き込み先を示すアドレスの相対値が格納される場合、パケットの受信順が入れ替わると、データは、主記憶装置ＭＥＭの正しい位置に書き込まれない。
【００６８】
なお、先頭パケットＦＰ、受信確認パケットＡＣＫ、ＮＡＫおよびリード要求パケットＲＲＥＱに含まれるデータの転送長の領域には、１つのライト要求または１つのリード要求に基づいて転送されるデータ全体の転送長が格納される。
【００６９】
受信確認パケットＡＣＫ、ＮＡＫでは、送信先のメモリ領域の識別子の領域には、先頭パケットＦＰに格納されたメモリ領域の識別子と同じ値が格納される。また、受信確認パケットＡＣＫ、ＮＡＫでは、送信先の先頭仮想メモリアドレスの領域には、先頭パケットＦＰに格納された先頭仮想メモリアドレスと同じ値が格納される。さらに、受信確認パケットＡＣＫ、ＮＡＫでは、データの転送長の領域には、先頭パケットＦＰに格納されたデータの転送長と同じ値が格納される。なお、受信確認パケットＡＣＫ、ＮＡＫでは、送信元のメモリ領域の識別子および送信元の先頭仮想メモリアドレスの領域は使用されなくてもよい。
【００７０】
送信元のメモリ領域の識別子および送信元の先頭仮想メモリアドレスは、リード要求パケットＲＲＥＱにおいて、データを読み出す主記憶装置ＭＥＭの物理アドレスを求めるために、送信元のノードＮＤにより使用される。
【００７１】
図８は、図７に示すパケットコードの一例を示す。パケットコードの数値の先頭に付けた”０ｘ”は、数値が１６進数であることを示す。図３に示すパケット受信部ＰＫＴＲＣＶは、図７に示すパケットコードの領域に格納される値に応じて、パケットの種別を判定する。そして、ＲＤＭＡモジュールは、パケット受信部ＰＫＴＲＣＶが判定したパケットの種別に基づいて、ライト処理またはリード処理を実行する。
【００７２】
図９は、図５に示すライト処理におけるデータの送信元のＲＤＭＡモジュールの動作の一例を示す。すなわち、図９は、送信元の主記憶装置ＭＥＭから読み出したデータを、送信先のノードＮＤに送信する動作を示す。図９に示す動作は、データの送信元のＲＤＭＡモジュールがＣＰＵからライト要求を受信したことに基づいて開始される。
【００７３】
まず、ステップＳ１００において、図３に示す要求処理部ＲＥＱＲＰＣは、要求受信部ＲＥＱＲＣＶを介してＣＰＵから受信したライト要求をデコードする。要求処理部ＲＥＱＲＰＣは、デコードにより得られた情報をアドレス変換部ＡＤＣＮＶに出力する。次に、ステップＳ１０２において、アドレス変換部ＡＤＣＮＶは、ライト要求に含まれるメモリ領域を識別する識別情報と、データの送信元の先頭仮想メモリアドレス（ＶＡ）とを、物理アドレスＰＡに変換し、変換した物理アドレスＰＡを転送部ＤＭＡに出力する。
【００７４】
次に、ステップＳ１０４において、転送部ＤＭＡは、物理アドレスＰＡを用いて主記憶装置ＭＥＭからデータを読み出し、読み出したデータをパケット生成部ＰＫＴＧＥＮに出力する。次に、ステップＳ１０６において、パケット生成部ＰＫＴＧＥＮは、主記憶装置ＭＥＭから読み出したデータを分割し、分割したデータを含むパケットを生成する。パケット生成部ＰＫＴＧＥＮが生成するパケットは、先頭パケットＦＰ、中間パケットＭＰまたは最終パケットＬＰのいずれかである。パケット生成部ＰＫＴＧＥＮは、生成したパケットをパケット送信部ＰＫＴＳＮＤに出力する。
【００７５】
次に、ステップＳ５００において、パケット送信部ＰＫＴＳＮＤは、ルーティングテーブルＲＴＢＬを参照し、パケットを送信するポートＰＴを決定する。そして、パケット送信部ＰＫＴＳＮＤは、ポートインタフェースＰＩＦを介して、決定したポートＰＴにパケットを送信する。ステップＳ５００においてパケット送信部ＰＫＴＳＮＤが実行する動作の一例は、図１３に示す。
【００７６】
次に、ステップＳ１１０において、ＲＤＭＡモジュールは、ライト要求に応答する全てのデータを送信したか否かを判定する。ＲＤＭＡモジュールは、全てのデータを送信した場合、すなわち、複数の最終パケットＬＰを送信した場合、動作を終了する。一方、ＲＤＭＡモジュールは、送信してないデータがある場合、すなわち、最終パケットＬＰを送信していない場合、動作をステップＳ１０２に移行する。
【００７７】
図１０は、図５に示すライト処理におけるデータの送信先のＲＤＭＡモジュールの動作の一例を示す。すなわち、図１０は、データの送信元のノードＮＤから受信したパケットに含まれるデータを、送信先のノードＮＤの主記憶装置ＭＥＭに書き込む動作を示す。図１０に示す動作は、データの送信先のＲＤＭＡモジュールが、データの送信元のノードＮＤからパケットを受信したことに基づいて開始される。
【００７８】
まず、ステップＳ６００において、パケット受信部ＰＫＴＲＣＶは、受信したパケットに含まれるメモリ領域の識別子および先頭仮想メモリアドレス（ＶＡ）をアドレス変換部ＡＤＣＮＶに出力する。また、パケット受信部ＰＫＴＲＣＶは、受信したパケットに含まれるデータを転送部ＤＭＡに出力する。ステップＳ６００においてパケット受信部ＰＫＴＲＣＶが実行する動作の一例は、図１４に示す。
【００７９】
次に、ステップＳ２１２において、ＲＤＭＡモジュールは、ステップＳ６００で主記憶装置ＭＥＭに書き込むデータを受信した場合、動作をステップＳ２１４に移行し、ステップＳ６００で主記憶装置ＭＥＭに書き込むデータを受信しなかった場合、動作を終了する。
【００８０】
ステップＳ２１４において、アドレス変換部ＡＤＣＮＶは、パケット受信部ＰＫＴＲＣＶから受信したメモリ領域の識別子と先頭仮想メモリアドレス（ＶＡ）とを、物理アドレスＰＡに変換し、変換した物理アドレスＰＡを転送部ＤＭＡに出力する。
【００８１】
次に、ステップＳ２１６において、転送部ＤＭＡは、受信したデータを、物理アドレスＰＡを用いて主記憶装置ＭＥＭに書き込む。次に、ステップＳ２１８において、ＲＤＭＡモジュールは、全ての最終パケットＬＰを受信した場合、動作をステップＳ２２０に移行し、全ての最終パケットＬＰを受信していない場合、動作をステップＳ２２６に移行する。ステップＳ２２６では、ＲＤＭＡモジュールは、次のパケットを受信するまで待ち、次のパケットを受信した場合、動作をステップＳ６００に移行する。
【００８２】
ステップＳ２２０において、ＲＤＭＡモジュールは、先頭パケットＦＰから最終パケットＬＰまでを正常に受信した場合、動作をステップＳ２２２に移行する。また、ＲＤＭＡモジュールは、先頭パケットＦＰから最終パケットＬＰまでを正常に受信しなかった場合、動作をステップＳ２２４に移行する。
【００８３】
ステップＳ２２２において、パケット生成部ＰＫＴＧＥＮは、受信確認パケットＡＣＫを生成し、生成した受信確認パケットＡＣＫをパケット送信部ＰＫＴＳＮＤに出力する。パケット送信部ＰＫＴＳＮＤは、パケット生成部ＰＫＴＧＥＮからの受信確認パケットＡＣＫをデータの送信元のノードＮＤに送信し、動作を終了する。
【００８４】
ステップＳ２２４において、パケット生成部ＰＫＴＧＥＮは、受信確認パケットＮＡＫを生成し、生成した受信確認パケットＮＡＫをパケット送信部ＰＫＴＳＮＤに出力する。パケット送信部ＰＫＴＳＮＤは、パケット生成部ＰＫＴＧＥＮからの受信確認パケットＮＡＫをデータの送信元のノードＮＤに送信し、動作を終了する。
【００８５】
図１１は、図６に示すリード処理におけるデータの送信先のＲＤＭＡモジュールの動作の一例を示す。すなわち、図１１は、データの送信先のノードＮＤがデータの送信元のノードＮＤに対してリード要求パケットＲＲＥＱ（データの転送要求）を発行し、送信元のノードＮＤから送信されるパケットに含まれるデータを主記憶装置ＭＥＭに書き込む動作を示す。図１１に示す動作は、データの送信先のＲＤＭＡモジュールがＣＰＵからリード要求を受信したことに基づいて開始される。
【００８６】
まず、ステップＳ３００において、図３に示す要求処理部ＲＥＱＲＰＣは、要求受信部ＲＥＱＲＣＶを介してＣＰＵから受信したリード要求をデコードし、リード要求に含まれる情報をパケット生成部ＰＫＴＧＥＮに出力する。
【００８７】
次に、ステップＳ３０２において、パケット生成部ＰＫＴＧＥＮは、要求処理部ＲＥＱＰＲＣからの情報に基づいてリード要求パケットＲＲＥＱを生成する。リード要求パケットＲＲＥＱは、図７に示すように、送信元のノードＮＤのＩＤ、送信元のメモリ領域の識別子、送信元の先頭仮想メモリアドレスおよびデータの転送長を含む。パケット生成部ＰＫＴＧＥＮは、生成したリード要求パケットＲＲＥＱをパケット送信部ＰＫＴＳＮＤに出力する。
【００８８】
次に、ステップＳ３０４において、パケット送信部ＰＫＴＳＮＤは、リード要求パケットＲＲＥＱに含まれる送信元のノードＮＤのＩＤに基づいて、ルーティングテーブルＲＴＢＬを参照し、リード要求パケットＲＲＥＱを送信するポートＰＴを決定する。そして、パケット送信部ＰＫＴＳＮＤは、ポートインタフェースＰＩＦを介して、決定したポートＰＴにリード要求パケットＲＲＥＱを送信する。
【００８９】
次に、ステップＳ３０６において、ＲＤＭＡモジュールは、リード要求パケットＲＲＥＱに応答するパケットをパケット受信部ＰＫＴＲＣＶが受信するまで待ち、リード要求パケットＲＲＥＱに応答するパケットを受信した場合、動作をステップＳ６００に移行する。
【００９０】
ステップＳ６００において、パケット受信部ＰＫＴＲＣＶは、受信したパケットに含まれるメモリ領域の識別子および先頭仮想メモリアドレス（ＶＡ）をアドレス変換部ＡＤＣＮＶに出力する。また、パケット受信部ＰＫＴＲＣＶは、受信したパケットに含まれるデータを転送部ＤＭＡに出力する。ステップＳ６００においてパケット受信部ＰＫＴＲＣＶが実行する動作の一例は、図１４に示す。
【００９１】
図１１に示すステップ６００の動作は、図１０に示すステップＳ６００の動作と同一または同様である。図１１に示すステップＳ３１２、Ｓ３１４、Ｓ３１６、Ｓ３１８、Ｓ３２０、Ｓ３２２、Ｓ３２４の動作は、図１０に示すステップＳ２１２、Ｓ２１４、Ｓ２１６、Ｓ２１８、Ｓ２２０、Ｓ２２２、Ｓ２２４の動作と同一または同様である。すなわち、ステップＳ６００およびステップＳ３１２からＳ３２４では、送信元のノードＮＤから送信されるパケットを受信し、受信したパケットに含まれるデータを主記憶装置ＭＥＭに書き込む動作が実行される。なお、ステップＳ３１８において、全ての最終パケットＬＰを受信していない場合、ＲＤＭＡモジュールは、動作をステップＳ３０６に移行する。
【００９２】
図１２は、図６に示すリード処理におけるデータの送信元のＲＤＭＡモジュールの動作の一例を示す。すなわち、図１２は、送信先のノードＮＤから受信するリード要求パケットＲＲＥＱに基づいて、主記憶装置ＭＥＭからデータを読み出し、読み出したデータを送信先のノードＮＤに送信する動作を示す。
【００９３】
まず、ステップＳ４００において、図３に示すパケット受信部ＰＫＴＲＣＶは、受信したリード要求パケットＲＲＥＱをデコードする。パケット受信部ＰＫＴＲＣＶは、デコードにより得られた情報をアドレス変換部ＡＤＣＮＶおよびパケット生成部ＰＫＴＧＥＮに出力する。次に、ステップＳ４０２において、アドレス変換部ＡＤＣＮＶは、リード要求パケットＲＲＥＱに含まれる送信元のメモリ領域の識別子と、送信元の先頭仮想メモリアドレス（ＶＡ）とを、物理アドレスＰＡに変換する。そして、アドレス変換部ＡＤＣＮＶは、変換した物理アドレスＰＡを転送部ＤＭＡに出力する。
【００９４】
次に、ステップＳ４０４において、転送部ＤＭＡは、物理アドレスＰＡを用いて主記憶装置ＭＥＭからデータを読み出し、読み出したデータをパケット生成部ＰＫＴＧＥＮに出力する。主記憶装置ＭＥＭから読み出すデータのサイズは、リード要求パケットＲＲＥＱに含まれるデータの転送長が示すサイズである。
【００９５】
次に、ステップＳ４０６において、パケット生成部ＰＫＴＧＥＮは、主記憶装置ＭＥＭから読み出したデータを分割し、分割したデータを含むパケットを生成する。生成されるパケットは、パケット受信部ＰＫＴＲＣＶからの情報に含まれる送信先のノードＮＤのＩＤ、送信元のノードＮＤのＩＤ、送信先のメモリ領域の識別子、送信先の先頭仮想メモリアドレス（ＶＡ）およびデータの転送長を含む。パケット生成部ＰＫＴＧＥＮが生成するパケットは、先頭パケットＦＰ、中間パケットＭＰまたは最終パケットＬＰのいずれかである。パケット生成部ＰＫＴＧＥＮは、生成したパケットをパケット送信部ＰＫＴＳＮＤに出力する。
【００９６】
次に、ステップＳ５００において、パケット送信部ＰＫＴＳＮＤは、ルーティングテーブルＲＴＢＬを参照し、パケットを送信するポートＰＴを決定する。そして、パケット送信部ＰＫＴＳＮＤは、ポートインタフェースＰＩＦを介して、決定したポートＰＴにパケットを送信する。図１２に示すステップＳ５００の動作は、図９に示すステップＳ５００の動作と同一または同様である。ステップＳ５００においてパケット送信部ＰＫＴＳＮＤが実行する動作の一例は、図１３に示す。
【００９７】
次に、ステップＳ４１０において、ＲＤＭＡモジュールは、リード要求パケットＲＲＥＱに応答する全てのデータを送信したか否かを判定する。ＲＤＭＡモジュールは、全てのデータを送信した場合、すなわち、複数の最終パケットＬＰを送信した場合、動作を終了する。一方、ＲＤＭＡモジュールは、送信してないデータがある場合、すなわち、最終パケットＬＰを送信していない場合、動作をステップＳ４０２に移行する。
【００９８】
図１３は、図９および図１２に示すステップＳ５００を実行するパケット送信部ＰＫＴＳＮＤの動作の一例を示す。
【００９９】
まず、ステップＳ５０２において、パケット送信部ＰＫＴＳＮＤは、パケット生成部ＰＫＴＧＥＮからのパケットに含まれる送信元のノードＮＤのＩＤに基づいて、ルーティングテーブルＲＴＢＬを参照し、パケットを送信可能な複数のポートＰＴを決定する。図４に示すルーティングテーブルＲＴＢＬは、ノードＮＤ毎に、通信経路ＣＬに接続するポートＰＴを示す情報を有する。このため、パケット送信部ＰＫＴＳＮＤは、送信元のノードＮＤのＩＤを指定することで、送信元のノードＮＤに接続したポートＰＴの数を取得することができる。
【０１００】
次に、ステップＳ５０４において、パケット送信部ＰＫＴＳＮＤは、パケット生成部ＰＫＴＧＥＮからのパケットに含まれるパケットコードに基づいて、パケットの種別を判定する。パケットが先頭パケットＦＰまたは最終パケットＬＰの場合、動作はステップＳ５０６に移行され、パケットが中間パケットＭＰである場合、動作はステップＳ５０８に移行される。
【０１０１】
ステップＳ５０６において、パケット送信部ＰＫＴＳＮＤは、ステップＳ５０２で決定した複数のポートＰＴに先頭パケットＦＰまたは最終パケットＬＰを送信し、動作を終了する。一方、ステップＳ５０８において、パケット送信部ＰＫＴＳＮＤは、ステップＳ５０２で決定した複数のポートＰＴのいずれかに中間パケットＭＰを送信し、動作を終了する。
【０１０２】
図１４は、図１０および図１１に示すステップＳ６００を実行するパケット受信部ＰＫＴＲＣＶの動作の一例を示す。
【０１０３】
まず、ステップＳ６０２において、パケット受信部ＰＫＴＲＣＶは、パケットの種別が先頭パケットＦＰの場合、動作をステップＳ６０４に移行し、パケットの種別が先頭パケットＦＰでない場合、動作をステップＳ６１２に移行する。
【０１０４】
ステップＳ６０４において、パケット受信部ＰＫＴＲＣＶは、先頭パケットＦＰの受信済みを示すフラグＦＦＬＧが”０”（未受信）を示す場合、先頭パケットＦＰを受信するために、動作をステップＳ６０６に移行する。一方、フラグＦＦＬＧが”１”（受信済み）を示す場合、受信した先頭パケットＦＰを廃棄するために動作をステップＳ６１０に移行する。なお、フラグＦＦＬＧは、ＲＤＭＡモジュールの起動時に”０”に初期化される。
【０１０５】
ステップＳ６０６において、パケット受信部ＰＫＴＲＣＶは、フラグＦＦＬＧを”１”（受信済み）に設定し、最終パケットＬＰの受信数を示す変数ＬＡＳＴを”０”に初期化し、中間パケットＭＰの受信数を示す変数ＭＩＤＬを”０”に初期化する。次に、ステップＳ６０８において、パケット受信部ＰＫＴＲＣＶは、先頭パケットＦＰに含まれるメモリ領域の識別子および先頭仮想メモリアドレス（ＶＡ）をアドレス変換部ＡＤＣＮＶに出力する。また、パケット受信部ＰＫＴＲＣＶは、先頭パケットＦＰに含まれるデータを転送部ＤＭＡに出力し、動作を終了する。
【０１０６】
ステップＳ６１０において、パケット受信部ＰＫＴＲＣＶは、受信したパケットを廃棄し、動作を終了する。
【０１０７】
ステップＳ６１２において、パケット受信部ＰＫＴＲＣＶは、パケットの種別が中間パケットＭＰの場合、動作をステップＳ６１４に移行し、パケットの種別が中間パケットＭＰでない場合、動作をステップＳ６１８に移行する。
【０１０８】
ステップＳ６１４において、パケット受信部ＰＫＴＲＣＶは、変数ＭＩＤＬを”１”増加させ、動作をステップＳ６１６に移行する。ステップＳ６１６において、パケット受信部ＰＫＴＲＣＶは、中間パケットＭＰに含まれるメモリ領域の識別子および先頭仮想メモリアドレス（ＶＡ）をアドレス変換部ＡＤＣＮＶに出力する。また、パケット受信部ＰＫＴＲＣＶは、中間パケットＭＰに含まれるデータを転送部ＤＭＡに出力し、動作を終了する。
【０１０９】
ステップＳ６１８において、パケット受信部ＰＫＴＲＣＶは、パケットの種別が最終パケットＬＰの場合、動作をステップＳ６２０に移行し、パケットの種別が最終パケットＬＰでない場合、動作をステップＳ６１０に移行する。
【０１１０】
ステップＳ６２０において、パケット受信部ＰＫＴＲＣＶは、ルーティングテーブルＲＴＢＬを参照し、最終パケットＬＰに含まれる送信元のノードＮＤのＩＤに基づいて、送信元のノードＮＤに接続したポートＰＴの数を取得する。すなわち、パケット受信部ＰＫＴＲＣＶは、送信先のノードＮＤから受信する最終パケットＬＰの数を取得する。図４に示すルーティングテーブルＲＴＢＬは、ノードＮＤ毎に、通信経路ＣＬに接続するポートＰＴを示す情報を有する。このため、パケット受信部ＰＫＴＲＣＶは、送信元のノードＮＤのＩＤを指定することで、送信元のノードＮＤに接続したポートＰＴの数を取得することができる。次に、ステップＳ６２２において、パケット受信部ＰＫＴＲＣＶは、変数ＬＡＳＴを”１”増加させ、動作をステップＳ６２４に移行する。
【０１１１】
ステップＳ６２４において、パケット受信部ＰＫＴＲＣＶは、変数ＬＡＳＴがステップＳ６２０で取得したポートＰＴの数と一致するか否かを判定する。変数ＬＡＳＴがポートＰＴの数と一致する場合、パケット受信部ＰＫＴＲＣＶは、送信先のノードＮＤから全ての最終パケットＬＰを受信したと判断し、動作をステップＳ６２６に移行する。一方、変数ＬＡＳＴがポートＰＴの数と一致しない場合（ＬＡＳＴ＜ＰＴの数）、パケット受信部ＰＫＴＲＣＶは、送信先のノードＮＤから全ての最終パケットＬＰを受信していないと判断し、動作をステップＳ６１０に移行する。この場合、ステップＳ６１０において、受信した最終パケットＬＰは破棄される。
【０１１２】
変数ＬＡＳＴとポートＰＴの数とを比較することで、使用する通信経路ＣＬの数に依存することなく、全ての最終パケットＬＰを受信したか否かを判定することができる。また、全ての最終パケットＬＰを受信したことの判定は、複数の通信経路ＣＬに分割して伝送される全ての中間パケットＭＰが受信されたことを示す。この結果、複数の通信経路ＣＬを介して中間パケットＭＰが伝送される場合にも、中間パケットＭＰを失うことなく受信することができ、伝送エラーの発生およびパケットの再送信の発生を抑止することができる。したがって、情報処理システムＳＹＳ１の性能の低下を抑止することができる。
【０１１３】
ステップＳ６２６において、パケット受信部ＰＫＴＲＣＶは、フラグＦＦＬＧを”０”に初期化し、動作をステップＳ６２８に移行する。ステップＳ６２８において、パケット受信部ＰＫＴＲＣＶは、最後に受信した最終パケットＬＰに含まれるメモリ領域の識別子および先頭仮想メモリアドレス（ＶＡ）をアドレス変換部ＡＤＣＮＶに出力する。また、パケット受信部ＰＫＴＲＣＶは、最後に受信した最終パケットＬＰに含まれるデータを転送部ＤＭＡに出力する。
【０１１４】
なお、ステップＳ６２８は、ステップ６２４において、変数ＬＡＳＴがポートＰＴの数と一致しない場合（すなわち、最初に最終パケットＬＰを受信した場合）に、実行されてもよい。この場合、パケット受信部ＰＫＴＲＣＶは、最終パケットＬＰを廃棄するステップＳ６１０を実行することなく、動作は終了する。
【０１１５】
ここで、最終パケットＬＰは、図７に示すように、最終パケットＬＰに含まれるデータの格納先を示す情報（メモリ領域の識別子および先頭仮想メモリアドレス）を含んでいる。このため、通信経路ＣＬの一方を介して伝送される最終パケットＬＰが、通信経路ＣＬの他方を介して伝送される中間パケットＭＰより早く受信される場合にも、最終パケットＬＰに含まれるデータを主記憶装置ＭＥＭに書き込むことができる。最初の最終パケットＬＰを受信した場合に、主記憶装置ＭＥＭにデータを格納することで、ライト要求またはリード要求に対応するデータの格納が完了するまでの時間を短縮することができる。この結果、複数の通信経路ＣＬを介して複数の最終パケットＬＰを受信する場合にも、情報処理システムＳＹＳ１の性能が低下することを抑止することができる。
【０１１６】
次に、ステップＳ６３０において、パケット受信部ＰＫＴＲＣＶは、変数ＭＩＤＬが最終パケットＬＰに含まれる「送信した中間パケットＭＰの数」と一致するかを判定する。変数ＭＩＤＬが「送信した中間パケットＭＰの数」と一致する場合、パケット受信部ＰＫＴＲＣＶは、ライト要求またはリード要求に応答する全てのパケットを受信したと判断し、動作をステップＳ６３２に移行する。一方、変数ＭＩＤＬが「送信した中間パケットＭＰの数」と一致しない場合、パケット受信部ＰＫＴＲＣＶは、受信しなかったパケットがあると判断し、動作をステップＳ６３４に移行する。
【０１１７】
ステップＳ６３２において、パケット受信部ＰＫＴＲＣＶは、全てのパケットを正常に受信したことをパケット生成部ＰＫＴＧＥＮに通知し、動作を終了する。全てのパケットが正常に受信された場合、図１０のステップＳ２２２および図１１のステップＳ３２２に示すように、受信確認パケットＡＣＫが送信元のノードＮＤに送信される。換言すれば、変数ＭＩＤＬと、最終パケットＬＰに含まれる「送信した中間パケットＭＰの数」とを比較することで、全てのパケットの受信を判定することができる。この結果、通信経路ＣＬの一方を介して伝送される中間パケットＭＰが、通信経路ＣＬの他方を介して伝送される最終パケットＬＰより遅く受信される場合にも、中間パケットＭＰを失うことなく受信することができる。すなわち、複数の通信経路ＣＬを介してパケットを伝送する場合にも、伝送エラーの発生およびパケットの再送信の発生を抑止することができ、情報処理システムＳＹＳ１の性能の低下を抑止することができる。
【０１１８】
一方、ステップＳ６３４において、パケット受信部ＰＫＴＲＣＶは、パケットのいずれかを正常に受信しなかったことをパケット生成部ＰＫＴＧＥＮに通知し、動作を終了する。パケットのいずれかが受信されなかった場合、図１０のステップＳ２２４および図１１のステップＳ３２４に示すように、受信確認パケットＮＡＫが送信元のノードＮＤに送信される。
【０１１９】
図１５は、図２に示す情報処理システムＳＹＳ１におけるデータの転送性能の評価の一例を示す。太い実線は、２つの通信経路ＣＬを使用する場合の転送性能のシミュレーション結果を示し、太い破線は、１つの通信経路ＣＬを用いた場合の転送性能のシミュレーション結果を示す。シミュレーションでは、１つの通信経路ＣＬの帯域は２６ＧＢ／ｓ（毎秒２６ギガバイト）とし、通信経路ＣＬの伝送遅延は１００ｎｓ（ナノ秒）とした。
【０１２０】
２つの通信経路ＣＬを用いたデータ転送の性能評価では、互いに同じデータを含む２つの先頭パケットＦＰと、互いに異なるデータを含む複数の中間パケットＭＰと、互いに同じデータを含む２つの最終パケットＬＰとが、２つの通信経路ＣＬに繰り返し転送される。先頭パケットＦＰは、２４バイトのヘッダと、１２８バイトのペイロードを有し、中間パケットＭＰは、２０バイトのヘッダと、１２８バイトのペイロードを有し、最終パケットＬＰは、２４バイトのヘッダと、１２８バイトのペイロードを有する。ここで、ヘッダは、図７に示す先頭パケットＦＰ、中間パケットＭＰおよび最終パケットＬＰにおいて、ペイロードを除く情報を含む。
【０１２１】
１つの通信経路ＣＬを用いたデータの転送評価では、先頭パケットＦＰと中間パケットＭＰと最終パケットＬＰとが、１つの通信経路ＣＬに繰り返し転送される。先頭パケットＦＰは、２４バイトのヘッダと、１２８バイトのペイロードを有し、中間パケットＭＰは、１２バイトのヘッダと、１２８バイトのペイロードを有し、最終パケットＬＰは、１６バイトのヘッダと、１２８バイトのペイロードを有する。
【０１２２】
転送サイズが２．７ＫＢ（キロバイト）より大きい場合、２つの通信経路ＣＬを用いたデータ転送は、１つの通信経路ＣＬを用いたデータ転送より性能が高くなる。なお、２．７ＫＢ以下の転送サイズで、転送性能が逆転する理由は、１つの通信経路ＣＬを用いる場合、受信確認パケットＡＣＫの受信前に次の先頭パケットＦＰを送信するback to back通信が可能なためである。
【０１２３】
例えば、通信経路ＣＬを介して互いに接続される複数のノードＮＤ間で伝送されるデータ量は、ＣＰＵが有するキャッシュメモリのサイズ（例えば、８ＫＢ）を単位とする場合が多い。この場合、転送サイズが２．７ＫＢ以下での転送性能が問題にならない。
【０１２４】
なお、図１５では、２つの通信経路ＣＬを用いた場合の転送性能を評価したが、３つ以上の通信経路ＣＬを用いてパケットを伝送する場合、転送性能をさらに高くすることができる。１つの通信経路ＣＬを用いた従来の手法で伝送するパケットの数をＮ個（Ｎは２以上）とする場合、図１から図１４に示す手法では、通信経路ＣＬを１つ増やす毎に、パケット数は２つずつ増える（先頭パケットＦＰと最終パケットＬＰ）。しかしながら、中間パケットＭＰを複数の通信経路ＣＬを用いて並列に伝送することで、通信経路ＣＬを増やす毎に、伝送効率を向上することができる。通信経路ＣＬの数がＭ個の場合、パケットの伝送効率（スループット）は、Ｎ／（Ｎ＋２）のＭ倍になる。例えば、１つの通信経路ＣＬを用いて４つのパケット（先頭パケットＦＰ、中間パケットＭＰ０、ＭＰ１、最終パケットＬＰ）を転送するとする。これと同じデータ量を、図１に示す手法を用いて２つの通信経路ＣＬを用いて転送する場合、パケット数は、６つ（２つの先頭パケットＦＰ、中間パケットＭＰ０、ＭＰ１、２つの最終パケットＬＰ）になる。この場合、伝送効率は、「４／６の２倍」で１．３倍になる。
【０１２５】
以上、図２から図１５に示す実施形態においても、図１に示す実施形態と同様に、複数の通信経路ＣＬの伝送遅延が互いに異なる場合にも、伝送エラーを発生させることなく、複数の通信経路ＣＬを用いて複数の中間パケットＭＰを並列に伝送することが可能になる。伝送エラーの発生を抑止できるため、パケットの伝送効率が低下することを抑止することができる。
【０１２６】
さらに、図２から図１５に示す実施形態では、中間パケットＭＰは、データの格納先を示すアドレス情報を含むため、中間パケットＭＰの受信順序が入れ替わった場合にも、伝送エラーの発生を抑止することができる。これにより、パケットの再送処理等の実行を抑止することができ、パケットの伝送効率を向上することができる。
【０１２７】
変数ＬＡＳＴとポートＰＴの数とを比較することで、使用する通信経路ＣＬの数に依存することなく、全ての最終パケットＬＰの受信を判定することができ、複数の通信経路ＣＬに分割して伝送される全ての中間パケットＭＰの受信を判定することができる。同様に、変数ＭＩＤＬと、最終パケットＬＰに含まれる「送信した中間パケットＭＰの数」とを比較することで、全てのパケットを受信したことを判定することができる。この結果、複数の通信経路ＣＬを介して中間パケットＭＰが伝送される場合にも、中間パケットＭＰを失うことなく受信することができ、伝送エラーの発生およびパケットの再送信の発生を抑止することができる。
【０１２８】
なお、３以上の通信経路ＣＬのうち、伝送遅延が他より小さい２以上の通信経路ＣＬを選択し、選択した通信経路ＣＬを用いて図１から図１４に示す手法によりパケットを伝送してもよい。
【０１２９】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１３０】
１０…主記憶装置；１２…演算処理装置；１４…制御装置；１００…情報処理装置；２０…主記憶装置；２２…演算処理装置；２４…制御装置；２００…情報処理装置；ＡＤＣＮＶ…アドレス変換部；ＣＬ…通信経路；ＣＯＲＥ…コア；ＤＩＤ…宛先情報；ＤＭＡ…転送部；ＦＤ…先頭データ；Ｐ…先頭パケット；ＩＯＢ…入出力バス；ＩＯＢＢ…入出力バスブリッジ；ＬＤ…最終データ；ＬＰ…最終パケット；ＭＣＮＴ…メモリコントローラ；ＭＤ…中間データ；ＭＥＭ…主記憶装置；ＭＰ…中間パケット；ＮＤ…ノード；ＮＷＡ…ネットワークアダプタ；ＮＷＳＷ…ネットワークスイッチ；ＰＩＦ…ポートインタフェース；ＰＫＴＧＥＮ…パケット生成部；ＰＫＴＲＣＶ…パケット受信部；ＰＫＴＳＮＤ…パケット送信部；ＰＴ…ポート；ＲＤＭＡ…制御装置；ＲＥＱＰＲＣ…要求処理部；ＲＥＱＲＣＶ…要求受信部；ＲＴＢＬ…ルーティングテーブル；ＳＹＳ、ＳＹＳ１…情報処理システム
【図１】
2016082508.tif 000003
【図２】
2016082508.tif 000004
【図３】
2016082508.tif 000005
【図４】
2016082508.tif 000006
【図５】
2016082508.tif 000007
【図６】
2016082508.tif 000008
【図７】
2016082508.tif 000009
【図８】
2016082508.tif 000010
【図９】
2016082508.tif 000011
【図１０】
2016082508.tif 000012
【図１１】
2016082508.tif 000013
【図１２】
2016082508.tif 000014
【図１３】
2016082508.tif 000015
【図１４】
2016082508.tif 000016
【図１５】
2016082508.tif 000017