(57)【要約】【課題】  転送対象データを分割した各分割データをそれぞれ含む複数のパケットを複数の経路を介して転送する場合に、最終の分割データの受信順序にかかわりなく全ての分割データを受信したことを保証する。【解決手段】  情報処理装置が有する通信装置の受信部は、分割データのいずれかと、分割データの数を示す分割数情報と、最終分割データを含むかを示す最終データ情報とをそれぞれ含む複数のパケットを他の情報処理装置からそれぞれ受信する。通信装置の処理部は、受信部が受信したパケットに含まれる分割データを記憶装置に格納するとともに、受信部が受信したパケットに含まれる分割数情報と最終データ情報とに基づいて、最終分割データを他の分割データのいずれかより先に受信したことを判定した場合、分割数情報が示す数の分割データを受信部が受信するまで最終分割データの記憶装置への格納を抑止する。【選択図】    図１
2018182688.tif 000002
【特許請求の範囲】
【請求項１】
演算処理を実行する演算処理装置と、データを記憶する記憶装置と、複数の経路を介して接続される他の情報処理装置との間でパケットを転送する通信装置とを有する情報処理装置において、
前記通信装置は、
転送の対象である転送対象データを分割した分割データのいずれかと、前記複数の分割データの数を示す分割数情報と、前記複数の分割データのうち最後に分割された最終分割データを含むかを示す最終データ情報とをそれぞれ含む複数のパケットを前記他の情報処理装置からそれぞれ受信する受信部と、
前記受信部がそれぞれ受信したパケットに含まれる分割データを前記記憶装置にそれぞれ格納するとともに、前記受信部がそれぞれ受信したパケットに含まれる前記分割数情報と前記最終データ情報とに基づいて、前記最終分割データを他の分割データのいずれかより先に受信したことを判定した場合、前記分割数情報が示す数の分割データを前記受信部が受信するまで前記最終分割データの前記記憶装置への格納を抑止する処理部とを有することを特徴とする情報処理装置。
【請求項２】
前記処理部は、前記最終分割データが他の分割データのいずれかより先に受信された場合、前記分割数情報が示す数の分割データを前記受信部が受信するまで待ち、前記最終分割データを受信後に前記受信部が受信した分割データを前記記憶装置に格納した後、前記最終分割データを前記記憶装置に格納し、
前記演算処理装置は、前記最終分割データが前記記憶装置に格納されたことを検出した場合、前記記憶装置に格納された前記複数の分割データを使用して演算処理を実行することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記処理部は、前記最終分割データが他の分割データのいずれかより先に受信された場合、分割データを前記受信部が受信する毎に、受信した分割データを前記記憶装置に格納し、全ての分割データのうち、前記最終分割データを除いた分割データを前記記憶装置に格納した後、前記最終分割データを前記記憶装置に格納し、
前記演算処理装置は、前記最終分割データが前記記憶装置に格納されたことを検出した場合、前記記憶装置に格納された前記複数の分割データを使用して演算処理を実行することを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記処理部は、
前記受信部による分割データの受信数をカウントし、カウントした計数値が、パケットに含まれる前記分割数情報が示す数より小さい場合、受信していない分割データの存在を検出することを特徴とする請求項１ないし請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
前記処理部は、パケットに含まれるデータ識別情報に基づいて前記転送対象データを識別し、識別した転送対象データ毎に分割データの前記記憶装置への格納を制御することを特徴とする請求項１ないし請求項４のいずれか１項に記載の情報処理装置。
【請求項６】
演算処理を実行する演算処理装置と、データを記憶する記憶装置と、複数の経路を介して接続される他の情報処理装置との間でパケットを転送する通信装置とをそれぞれ有する複数の情報処理装置を含む情報処理システムにおいて、
前記複数の情報処理装置のうち、パケットの送信元の第１の情報処理装置の前記通信装置は、
転送の対象である転送対象データを分割した分割データのいずれかと、前記複数の分割データの数を示す分割数情報と、前記複数の分割データのうち最後に分割された最終分割データを含むかを示す最終データ情報とをそれぞれ含む複数のパケットを生成するパケット生成部と、
前記パケット生成部がそれぞれ生成した複数のパケットを、パケットの送信先の情報処理装置である第２の情報処理装置にそれぞれ送信する送信部とを有し、
前記第２の情報処理装置の前記通信装置は、
送信された前記複数のパケットを前記第１の情報処理装置からそれぞれ受信する受信部と、
前記受信部がそれぞれ受信したパケットに含まれる分割データを前記第２の情報処理装置が有する前記記憶装置にそれぞれ格納するとともに、前記受信部がそれぞれ受信したパケットに含まれる前記分割数情報と前記最終データ情報とに基づいて、前記最終分割データを他の分割データのいずれかより先に受信したことを判定した場合、前記分割数情報が示す数の分割データを前記受信部が受信するまで前記最終分割データの前記第２の情報処理装置が有する前記記憶装置への格納を抑止する処理部とを有することを特徴とする情報処理システム。
【請求項７】
演算処理を実行する演算処理装置と、データを記憶する記憶装置と、複数の経路を介して接続される他の情報処理装置との間でパケットを転送する通信装置とをそれぞれ有する複数の情報処理装置を含む情報処理システムの制御方法において、
前記複数の情報処理装置のうち、パケットの送信元の第１の情報処理装置の前記通信装置が有するパケット生成部が、転送の対象である転送対象データを分割した分割データのいずれかと、前記複数の分割データの数を示す分割数情報と、前記複数の分割データのうち最後に分割された最終分割データを含むかを示す最終データ情報とをそれぞれ含む複数のパケットを生成し、
前記第１の情報処理装置の前記通信装置が有する送信部が、前記パケット生成部がそれぞれ生成した複数のパケットを、パケットの送信先の情報処理装置である第２の情報処理装置にそれぞれ送信し、
前記第２の情報処理装置の前記通信装置が有する受信部が、送信された前記複数のパケットを前記第１の情報処理装置からそれぞれ受信し、
前記第２の情報処理装置の前記通信装置が有する処理部が、前記受信部がそれぞれ受信したパケットに含まれる分割データを前記第２の情報処理装置が有する前記記憶装置にそれぞれ格納するとともに、前記受信部がそれぞれ受信したパケットに含まれる前記分割数情報と前記最終データ情報とに基づいて、前記最終分割データを他の分割データのいずれかより先に受信したことを判定した場合、前記分割数情報が示す数の分割データを前記受信部が受信するまで前記最終分割データの前記第２の情報処理装置が有する前記記憶装置への格納を抑止することを特徴とする情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システムおよび情報処理システムの制御方法に関する。
【背景技術】
【０００２】
パケットを使用した通信において、送信するデータのサイズが１つのパケットに格納可能なサイズを超える場合、データは、複数のパケットに分割されて送信される。複数に分割された分割後の各分割データをそれぞれ含む複数のパケットの各々は、データ毎に共通の値と、パケットの順序を示す情報と、最後のパケットであるかを示す情報とを含む（例えば、特許文献１参照）。
【０００３】
また、データを複数のパケットに分割して送信する場合、パケットを送信する送信ノードは、パケットを受信する受信ノードで正常な受信を確認するための確認情報を各パケットに付加して送信する。受信ノードは、確認情報に基づいてパケットを正常に受信したかを確認する（例えば、特許文献２参照）。
【０００４】
一方、複数の経路を介してパケットを転送する場合、パケットの到着順を保証するインオーダ方式による転送と、パケットの到着順を保証しないアウトオブオーダ方式による転送とを識別するフラグをパケットに付加することで、インオーダ方式とアウトオブオーダ方式とによる通信が実行可能になる。例えば、インオーダ方式による通信では、シーケンス番号を順次インクリメントしてパケットが送信され、アウトオブオーダ方式による通信では、シーケンス番号を固定してパケットが送信される（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−３４１２４７号公報
【特許文献２】特開２００１−２０２３４５号公報
【特許文献３】米国特許第６，４９３，３４３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
データを複数の分割データに分割し、分割された各分割データをそれぞれ含むパケットを複数の経路を介して受信ノードに向けて送信する場合、受信ノードでのパケットの到着順は保証されない。このため、受信ノードは、最終の分割データを含むパケットを受信した後に他の分割データを含むパケットを受信する場合がある。受信ノードが、最終の分割データの受信に基づいて全ての分割データの受信を判断し、分割データを使用してデータ処理等を開始する場合、未受信の分割データが存在すると、データ処理は正常に実行できない。
【０００７】
１つの側面では、本発明は、転送対象データを分割した各分割データをそれぞれ含む複数のパケットを、複数の経路を介してそれぞれ転送する場合に、最終の分割データの受信順序にかかわりなく全ての分割データを受信したことを保証することを目的とする。
【課題を解決するための手段】
【０００８】
一つの実施態様では、演算処理を実行する演算処理装置と、データを記憶する記憶装置と、複数の経路を介して接続される他の情報処理装置との間でパケットを転送する通信装置とを有する情報処理装置において、通信装置は、転送の対象である転送対象データを分割した分割データのいずれかと、複数の分割データの数を示す分割数情報と、複数の分割データのうち最後に分割された最終分割データを含むかを示す最終データ情報とをそれぞれ含む複数のパケットを他の情報処理装置からそれぞれ受信する受信部と、受信部がそれぞれ受信したパケットに含まれる分割データを記憶装置にそれぞれ格納するとともに、受信部がそれぞれ受信したパケットに含まれる分割数情報と最終データ情報とに基づいて、最終分割データを他の分割データのいずれかより先に受信したことを判定した場合、分割数情報が示す数の分割データを受信部が受信するまで最終分割データの記憶装置への格納を抑止する処理部とを有する。
【発明の効果】
【０００９】
１つの側面では、本発明は、転送対象データを分割した各分割データをそれぞれ含む複数のパケットを、複数の経路を介してそれぞれ転送する場合に、最終の分割データの受信順序にかかわりなく全ての分割データを受信したことを保証することができる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置、情報処理システムおよび情報処理システムの制御方法の一実施形態を示す図である。
【図２】図１に示す情報処理システムにおけるネットワーク構成の一例を示す図である。
【図３】図１に示す情報処理システムで使用されるパケットのフォーマットの一例を示す図である。
【図４】図１に示す情報処理システムにおけるパケットの送信動作の一例を示す図である。
【図５】図１に示す情報処理システムにおけるパケットの受信動作の一例を示す図である。
【図６】図５に示すパケットの受信動作の続きを示す図である。
【図７】図１に示す情報処理システムの動作の一例を示す図である。
【図８】図１に示す各ノードにおけるパケットの受信フローの一例を示す図である。
【図９】情報処理システムの別の実施形態における動作の一例を示す図である。
【図１０】図９に示すノードＮＤ２におけるパケットの受信フローの一例を示す図である。
【図１１】情報処理装置、情報処理システムおよび情報処理システムの制御方法の別の実施形態を示す図である。
【図１２】図１１に示す情報処理システムで使用されるパケットのフォーマットの一例を示す図である。
【図１３】図１１に示す情報処理システムにおけるパケットの送信動作の一例を示す図である。
【図１４】図１１に示す情報処理システムにおけるパケットの受信動作の一例を示す図である。
【図１５】図１４に示すパケットの受信動作の続きを示す図である。
【図１６】図１１に示す情報処理システムの動作の一例を示す図である。
【図１７】図１１に示す各ノードにおけるパケットの受信フローの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を用いて実施形態を説明する。
【００１２】
図１は、情報処理装置、情報処理システムおよび情報処理システムの制御方法の一実施形態を示す。図１に示す情報処理システム１００は、複数の経路ＮＰを介して互いに接続される複数の情報処理装置１０を有する。各情報処理装置１０は、ＣＰＵ（Central Processing Unit）等のプロセッサ２０、主記憶装置３０およびネットワークインタフェース４０を有する。プロセッサ２０、主記憶装置３０およびネットワークインタフェース４０は、バスＢＵＳを介して相互に接続される。
【００１３】
プロセッサ２０は、例えば、主記憶装置３０に保持されたプログラムを実行することで動作し、主記憶装置３０に保持されたデータを使用して演算処理等を実行する。主記憶装置３０は、データおよびプログラム等を記憶する。なお、プロセッサ２０の代わりに、プロセッサコアが配置されてもよい。
【００１４】
ネットワークインタフェース４０は、複数の経路ＮＰを介して接続される他の情報処理装置１０との間でパケットＰＫＴを転送する。以下の説明では、情報処理装置１０は、ノードＮＤ（ＮＤ１、ＮＤ２）とも称される。プロセッサ２０は、演算処理を実行する演算処理装置の一例であり、主記憶装置３０は、データを記憶する記憶装置の一例であり、ネットワークインタフェース４０は、通信装置の一例である。
【００１５】
ネットワークインタフェース４０は、パケット生成部５０、送信部６０、受信部７０および受信処理部８０を有する。受信処理部８０は、処理部の一例である。パケット生成部５０は、パケットＰＫＴを生成し、生成したパケットＰＫＴを送信部６０に出力する。パケット生成部５０は、転送の対象である転送対象データのサイズが、パケットＰＫＴに格納可能なサイズを超える場合、転送対象データを分割した複数の分割データの各々を含むパケットＰＫＴを生成し、生成したパケットＰＫＴを送信部６０に出力する。
【００１６】
送信部６０は、パケット生成部５０から出力される複数のパケットＰＫＴの各々を保持する複数の送信バッファ６２を有し、送信バッファ６２に保持したパケットＰＫＴを、パケットＰＫＴの送信先のノードＮＤに送信する。パケット生成部５０および送信部６０の動作の詳細は、図４に示される。
【００１７】
受信部７０は、複数の受信バッファ７２を有し、他のノードＮＤが送信するパケットＰＫＴを受信し、受信したパケットＰＫＴに含まれる分割データおよび各種情報を受信バッファ７２に格納する。受信処理部８０は、受信バッファ７２に保持された分割データを主記憶装置３０に格納する。受信部７０および受信処理部８０の動作の詳細は、図５から図８に示される。
【００１８】
なお、ネットワークインタフェース４０は、受信したパケットＰＫＴの宛先が自ノードＮＤでない場合、パケットＰＫＴを宛先のノードＮＤに向けて転送する中継ノードとして機能する。パケットＰＫＴの中継処理は、図示しないインタコネクト部により実行される。
【００１９】
図２は、図１に示す情報処理システム１００におけるネットワーク構成の一例を示す。図１に示す情報処理システム１００は、メッシュ型の２次元ネットワークにより相互に接続された複数のノードＮＤを有し、例えば、並列計算機として動作する。なお、ネットワークの次元数、ネットワークのトポロジ（メッシュ、トーラス等）およびネットワークに接続されるノードＮＤの数は、図２に限定されない。例えば、図１に示すノードＮＤ１、ＮＤ２は、図２の左下のノードＮＤと図２の右上のノードＮＤであり、ノードＮＤ１、ＮＤ２は、複数の経路ＮＰを経路を介して接続される。
【００２０】
図３は、図１に示す情報処理システム１００で使用されるパケットＰＫＴのフォーマットの一例を示す。パケットＰＫＴは、パケットヘッダＰＨＥＡＤとデータが格納されるペイロードＰＹＬＤとを含む。パケットヘッダＰＨＥＡＤは、パケットタイプＴＹＰＥと、分割数情報Ｄｎと、最終データ情報Ｌとを格納する領域を含む。
【００２１】
パケットタイプＴＹＰＥの領域には、例えば、要求パケットまたは応答パケット等のパケットの種別を識別する情報が格納される。分割数情報Ｄｎの領域には、転送対象データを複数の分割データに分割して転送する場合の分割数（すなわち、分割データの数）が格納される。最終データ情報Ｌの領域には、最終の分割データである最終分割データを含む場合に”１”に設定され、最終分割データ以外の分割データを含む場合に”０”に設定される。転送対象データを分割せずに転送する場合、分割数情報Ｄｎは”１”に設定され、最終データ情報Ｌは”１”に設定される。なお、最終分割データは、最後に分割される分割データである。
【００２２】
なお、パケットヘッダＰＨＥＡＤは、図３に示す以外にも、パケットＰＫＴの送信元を識別する送信元情報を格納する領域と、パケットＰＫＴの送信先を識別する送信先情報を格納する領域とを有する。また、パケットＰＫＴがデータを含む場合、パケットヘッダＰＨＥＡＤは、データのサイズを格納する領域と、データの転送先のアドレスを格納する領域とを有する。データの転送先のアドレスは、パケットＰＫＴの転送先のノードＮＤの主記憶装置３０においてデータを格納する記憶領域３２のアドレス（先頭アドレス）である。
【００２３】
図４は、図１に示す情報処理システム１００におけるパケットＰＫＴの送信動作の一例を示す。以下では、転送対象データは、メッセージＭＳＧとも称される。図４に示す例では、メッセージＭＳＧは、６つの分割データＤＤＴ（ＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃ、ＤＤＴ−Ｄ、ＤＤＴ−Ｅ、ＤＤＴ−Ｆ）に分けて、ノードＮＤ１からノードＮＤ２に転送される。ノードＮＤ１は、パケットの送信元の第１の情報処理装置の一例であり、ノードＮＤ２は、パケットの送信先の第２の情報処理装置の一例である。
【００２４】
まず、ノードＮＤ１のパケット生成部５０は、主記憶装置３０に保持された分割データＤＤＴを順次読み出す。パケット生成部５０は、読み出した分割データＤＤＴと、分割数情報Ｄｎと、最終データ情報Ｌとを含むパケットＰＫＴ（ＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃ、ＰＫＴ−Ｄ、ＰＫＴ−Ｅ、ＰＫＴ−Ｆ）を順次生成する。
【００２５】
メッセージＭＳＧは、６つに分割されて転送されるため、各パケットＰＫＴの分割数情報Ｄｎは、”６”に設定される。また、最終分割データＤＤＴ−Ｆを含むパケットＰＫＴ−Ｆの最終データ情報Ｌは、”１”に設定され、最終分割データＤＤＴ−Ｆ以外の分割データＤＤＴを含むパケットＰＫＴの最終データ情報Ｌは、”０”に設定される。そして、パケット生成部５０は、生成したパケットＰＫＴを送信部６０の送信バッファ６２に順次格納する。
【００２６】
送信部６０は、送信バッファ６２に格納されたパケットＰＫＴを複数の経路ＮＰを介して、ノードＮＤ２に向けて順次送信する。複数のパケットＰＫＴの各々を複数の経路ＮＰのいずれに送信するかは、例えば、プロセッサ２０により決められる。なお、図２に示すネットワーク内でのパケットＰＫＴの転送経路は、ネットワークの混み具合または故障個所に基づいて、パケットＰＫＴを中継するノードＮＤのネットワークインタフェース４０により決められてもよい。
【００２７】
図５および図６は、図１に示す情報処理システム１００におけるパケットＰＫＴの受信動作の一例を示す。まず、ノードＮＤ２の受信部７０は、パケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃを順次受信する。受信部７０は、受信したパケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃの各々に含まれる分割データＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃと、分割数情報Ｄｎおよび最終データ情報Ｌ等の各種情報とを受信バッファ７２に格納する（図示せず）。
【００２８】
パケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃに含まれる最終データ情報Ｌは、”０”である。このため、受信処理部８０は、パケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃに含まれる分割データＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃを受信した順次に主記憶装置３０に格納する（図５（ａ））。
【００２９】
また、受信処理部８０は、パケットＰＫＴに含まれる分割数情報Ｄｎが、”２”以上の分割数を示すため、受信部７０によるパケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃの受信数（＝”３”）をカウントする。カウントした計数値で示される受信数は、各パケットＰＫＴに含まれる分割数情報Ｄｎが示す分割数（＝”６”）より少ない。このため、受信処理部８０は、メッセージＭＳＧを分割した６つの分割データＤＤＴのうち、３つの分割データＤＤＴを含む３つのパケットＰＫＴを受信していないと判断する。このように、パケットＰＫＴの受信数をカウントした計数値を、各パケットＰＫＴに含まれる分割数情報Ｄｎが示す分割数と比較することで、メッセージＭＳＧが様々な数に分割される場合にも、受信していない分割データＤＤＴの有無を判定することができる。
【００３０】
次に、受信部７０は、パケットＰＫＴ−Ｆを受信し、パケットＰＫＴ−Ｆに含まれる分割データＤＤＴ−Ｆと各種情報とを受信バッファ７２に格納する。受信処理部８０は、パケットＰＫＴ−Ｆに含まれる最終データ情報Ｌが”１”であるため、パケットＰＫＴ−Ｄに含まれる分割データＤＤＴ−Ｄが、メッセージＭＳＧ中の最終分割データであると判断する。また、受信処理部８０は、受信部７０によるパケットＰＫＴ−Ｆの受信に基づいて、パケットＰＫＴの受信数をカウントアップして”４”に設定する。
【００３１】
受信処理部８０は、パケットＰＫＴの受信数（＝”４”）が、分割数情報Ｄｎが示す分割数”６”より少ないため、メッセージＭＳＧを分割した分割データＤＤＴを含む２つのパケットＰＫＴを受信していないと判断する。このため、受信処理部８０は、受信したパケットＰＫＴ−Ｆに含まれる分割データＤＤＴ−Ｆを主記憶装置３０に格納せずに、受信バッファ７２に保持させる。すなわち、受信処理部８０は、未受信の分割データＤＤＴがある場合、受信した最終分割データＤＤＴ−Ｆの主記憶装置３０への格納を抑止する（図５（ｂ））。
【００３２】
このように、受信処理部８０は、最終データ情報Ｌと分割数情報Ｄｎとに基づいて、メッセージＭＳＧに対応する分割データＤＤＴの主記憶装置３０への格納を制御する。したがって、複数の経路ＮＰを介して転送される複数のパケットＰＫＴの到着順が保証されない場合にも、最終分割データＤＤＴ−Ｆが他の分割データＤＤＴのいずれかより先に主記憶装置３０に格納されることを抑止することができる。
【００３３】
次に、図６において、受信部７０は、パケットＰＫＴ−Ｄ、ＰＫＴ−Ｅを順次受信し、受信したパケットＰＫＴ−Ｄ、ＰＫＴ−Ｅのそれぞれに含まれる分割データＤＤＴ−Ｄ、ＤＤＴ−Ｅと各種情報とを受信バッファ７２に格納する。受信処理部８０は、受信部７０によるパケットＰＫＴ−Ｄ、ＰＫＴ−Ｅの受信に基づいて、パケットＰＫＴの受信数をカウントアップして”６”に設定する。
【００３４】
受信処理部８０は、パケットＰＫＴの受信数（＝”６”）が、分割数情報Ｄｎが示す分割数”６”と一致するため、メッセージＭＳＧを分割した分割データＤＤＴを全て受信したと判断する（図６（ａ））。このため、受信処理部８０は、まず、パケットＰＫＴ−Ｄ、ＰＫＴ−Ｅに含まれる分割データＤＤＴ−Ｄ、ＤＤＴ−Ｅを主記憶装置３０に順次格納する（図６（ｂ））。次に、受信処理部８０は、パケットＰＫＴ−Ｆに含まれる最終分割データＤＤＴ−Ｆを主記憶装置３０に格納し、メッセージＭＳＧの受信処理を完了する。
【００３５】
以上により、複数の分割データＤＤＴを複数の経路ＮＰを介して転送することで分割データＤＤＴの到着順序が保証されない場合にも、最終分割データＤＤＴ−Ｆを他の分割データＤＤＴより後に主記憶装置３０に格納することができる。したがって、最終分割データＤＤＴ−Ｆの主記憶装置３０への格納によって、全ての分割データＤＤＴが受信済みであることを保証することができる。換言すれば、複数の分割データＤＤＴの各々をそれぞれ含む複数のパケットＰＫＴを、複数の経路ＮＰを介して転送する場合に、最終分割データＤＤＴ−Ｆの受信順序にかかわりなく全ての分割データＤＤＴを受信したことを保証することができる。
【００３６】
ノードＮＤ２のプロセッサ２０は、例えば、最終分割データＤＤＴ−Ｆが格納される主記憶装置３０の記憶領域をモニタし、分割データＤＤＴ−Ｆが主記憶装置３０に保持されたことを検出した場合、メッセージＭＳＧを主記憶装置３０から読み出す。すなわち、プロセッサ２０は、最終分割データＤＤＴ−Ｆが主記憶装置３０に保持されたことを検出することで、メッセージＭＳＧの全体が受信されたことを確認することができる。そして、プロセッサ２０は、読み出したメッセージＭＳＧを使用してデータ処理を開始する。
【００３７】
例えば、受信処理部８０が、受信部７０で受信した順に分割データＤＤＴを主記憶装置３０に格納する場合、最終分割データＤＤＴ−Ｆは、分割データＤＤＴ−Ｄ、ＤＤＴ−Ｅが主記憶装置３０に格納される前に、主記憶装置３０に格納される。この場合、プロセッサ２０は、最終分割データＤＤＴ−Ｆが主記憶装置３０に格納されたことに基づいて、分割データＤＤＴ−Ｄ、ＤＤＴ−Ｅが格納される記憶領域から誤ったデータを読み出し、データ処理を開始してしまう。
【００３８】
換言すれば、最終分割データＤＤＴ−Ｆの主記憶装置３０への格納を、他の全ての分割データＤＤＴの受信が完了するまで抑止することで、プロセッサ２０が誤ったデータを使用してデータ処理を実行することを抑止することができる。この結果、情報処理装置１０および情報処理システム１００の誤動作を抑止することができる。
【００３９】
図７は、図１に示す情報処理システム１００の動作の一例を示す。まず、ノードＮＤ１のパケット生成部５０は、分割データＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃ、ＤＤＴ−Ｄ、ＤＤＴ−Ｅ、ＤＤＴ−Ｆと、分割数情報Ｄｎと、最終データ情報Ｌとを含む６つのパケットＰＫＴを順次生成する（図７（ａ））。最終分割データＤＤＴ−Ｆを含むパケットＰＫＴ−Ｆは、最終データ情報Ｌ（＝”１”）を含み、それ以外のパケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃ、ＰＫＴ−Ｄ、ＰＫＴ−Ｅは、最終データ情報Ｌ（＝”０”）を含む。また、全てのパケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃ、ＰＫＴ−Ｄ、ＰＫＴ−Ｅ、ＰＫＴ−Ｆは、分割数情報Ｄｎ（＝”６”）を含む。送信部６０は、パケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃ、ＰＫＴ−Ｄ、ＰＫＴ−Ｅ、ＰＫＴ−Ｆを、複数の経路ＮＰを介して、ノードＮＤ２に向けて順次送信する（図７（ｂ））。
【００４０】
ノードＮＤ２の受信部７０は、最終データ情報Ｌ（＝”０”）を含むパケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃを順次受信する（図７（ｃ））。受信処理部８０は、最終データ情報Ｌ（＝”０”）に基づいて、パケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃが最終分割データＤＤＴ−Ｆを含まないと判断する。このため、受信処理部８０は、パケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃに含まれる分割データＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃを主記憶装置３０に順次格納する（図７（ｄ））。
【００４１】
次に、受信部７０は、最終データ情報Ｌ（＝”１”）を含むパケットＰＫＴ−Ｆを受信する（図７（ｅ））。受信処理部８０は、最終データ情報Ｌ（＝”１”）に基づいてパケットＰＫＴ−Ｆが最終分割データＤＤＴ−Ｆを含むと判断し、パケットＰＫＴ−Ｆに含まれる分割数情報Ｄｎ（＝”６”）に基づいて、未受信のパケットＰＫＴが２つあると判断する。このため、受信処理部８０は、受信したパケットＰＫＴ−Ｆに含まれる分割データＤＤＴ−Ｆの主記憶装置３０への格納を抑止する（図７（ｆ））。
【００４２】
この後、受信部７０は、パケットＰＫＴ−Ｄを受信する（図７（ｇ））。パケットＰＫＴ−Ｄの受信は、パケットＰＫＴ−Ｄに含まれる分割数情報Ｄｎ（＝”６”）より小さい５番目であるため、受信処理部８０は、受信バッファ７２に保持された分割データＤＤＴ−Ｆ、ＤＤＴ−Ｄの主記憶装置３０への格納を抑止する（図７（ｈ））。
【００４３】
次に、受信部７０は、パケットＰＫＴ−Ｅを受信する（図７（ｉ））。パケットＰＫＴ−Ｅの受信は、パケットＰＫＴ−Ｅに含まれる分割数情報Ｄｎ（＝”６”）と等しい６番目である。このため、受信処理部８０は、メッセージＭＳＧを分割した全ての分割データＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃ、ＤＤＴ−Ｄ、ＤＤＴ−Ｅ、ＤＤＴ−Ｆを受信したと判断する。そして、受信処理部８０は、パケットＰＫＴ−Ｄに含まれる分割データＤＤＴ−Ｄと、パケットＰＫＴ−Ｅに含まれる分割データＤＤＴ−Ｅとを主記憶装置３０に格納する（図７（ｊ））。次に、受信処理部８０は、パケットＰＫＴ−Ｆに含まれる最終分割データＤＤＴ−Ｆを主記憶装置３０に順次格納する（図７（ｋ））。この後、プロセッサ２０は、最終分割データＤＤＴ−Ｆが主記憶装置３０に保持されたことを検出することで、メッセージＭＳＧの全体が受信されたことを確認する。そして、プロセッサ２０は、分割データＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃ、ＤＤＴ−Ｄ、ＤＤＴ−Ｅ、ＤＤＴ−Ｆを使用して演算を実行することでデータ処理を開始する（図７（ｌ））。
【００４４】
なお、受信部７０が、送信部６０が送信した順序でパケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃ、ＰＫＴ−Ｄ、ＰＫＴ−Ｅ、ＰＫＴ−Ｆを受信したとする。この場合、受信処理部８０は、各パケットＰＫＴに含まれる分割データＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃ、ＤＤＴ−Ｄ、ＤＤＴ−Ｅ、ＤＤＴ−Ｆを順次に主記憶装置３０に格納する。すなわち、受信処理部８０は、分割数情報Ｄｎ（＝”６”）と等しい６番目に最終分割データＤＤＴ−Ｆを含むパケットＰＫＴ−Ｆを受信した場合、未受信のパケットＰＫＴが存在しないと判断し、最終のデータＤＤＴ−Ｆを主記憶装置３０に格納する。
【００４５】
図８は、図１に示す各ノードＮＤにおけるパケットＰＫＴの受信フローの一例を示す。図８に示すフローは、メッセージＭＳＧ単位で実行される。
【００４６】
まず、ステップＳ１０において、受信処理部８０は、パケットＰＫＴの受信数を示す変数Ｉを”０”にリセットする。変数Ｉは、カウンタの計数値として保持されてもよく、レジスタにより保持されてもよい。次に、ステップＳ１２において、受信部７０は、パケットＰＫＴを受信するまで待ち、パケットＰＫＴを受信した場合、動作をステップＳ１４に移行する。
【００４７】
ステップＳ１４において、受信部７０は、受信したパケットを受信バッファ７２に格納する。次に、ステップＳ１６において、受信処理部８０は、変数Ｉを”１”増加する。次に、ステップＳ１８において、受信処理部８０は、受信したパケットＰＫＴに含まれる最終データ情報Ｌが”１”の場合、動作をステップＳ２４に移行し、受信したパケットＰＫＴに含まれる最終データ情報Ｌが”０”の場合、動作をステップＳ２０に移行する。
【００４８】
ステップＳ２０において、受信処理部８０は、最終データ情報Ｌが”１”のパケットＰＫＴを受信済みの場合、動作をステップＳ２４に移行し、最終データ情報Ｌが”１”のパケットＰＫＴを受信していない場合、動作をステップＳ２２に移行する。すなわち、最終分割データＤＤＴを受信済みの場合、動作はステップＳ２４に移行され、最終分割データＤＤＴを受信していない場合、動作はステップＳ２２に移行される。
【００４９】
ステップＳ２２において、受信処理部８０は、受信バッファ７２に保持された分割データＤＤＴを主記憶装置３０に格納し、動作をステップＳ１２に戻す。一方、ステップＳ２４において、受信処理部８０は、変数Ｉが、受信したパケットＰＫＴに含まれる分割数情報Ｄｎに等しいか否かを判定する。変数Ｉが、受信したパケットＰＫＴに含まれる分割数情報Ｄｎに等しい場合、全ての分割データＤＤＴが受信されたため、動作はステップＳ２６に移行される。変数Ｉが、受信したパケットＰＫＴに含まれる分割数情報Ｄｎが示す数より小さい場合、未受信の分割データＤＤＴがあるため、パケットＰＫＴの受信動作を継続するために動作はステップＳ１２に戻される。ステップＳ２６において、受信処理部８０は、受信バッファ７２に保持された分割データＤＤＴを主記憶装置３０に格納し、メッセージＭＳＧの受信動作を終了する。
【００５０】
以上、図１から図８に示す実施形態では、複数のパケットＰＫＴの到着順が保証されない場合にも、最終分割データＤＤＴの主記憶装置３０への格納によって、全ての分割データＤＤＴが受信済みであることを保証することができる。換言すれば、メッセージＭＳＧを分割した複数の分割データＤＤＴのいずれかをそれぞれ含む複数のパケットＰＫＴを、複数の経路ＮＰを介して転送する場合に、最終分割データＤＤＴの受信順序にかかわりなく全ての分割データＤＤＴを受信したことを保証することができる。したがって、メッセージＭＳＧを処理するプロセッサ２０は、最終分割データＤＤＴが主記憶装置３０に保持されたことを検出することで、メッセージＭＳＧの全体が受信されたことを確認することができる。
【００５１】
最終分割データＤＤＴの主記憶装置３０への格納を、他の全ての分割データＤＤＴの受信が完了するまで抑止することで、プロセッサ２０が誤ったデータを使用してデータ処理を実行することを抑止することができる。この結果、情報処理装置１０および情報処理システム１００の誤動作を抑止することができる。
【００５２】
図９は、情報処理システムの別の実施形態における動作の一例を示す。すなわち、図９は、情報処理システムの制御方法の一例を示す。図７に示す動作と同一または同様の動作については、詳細な説明は省略する。図９に示す動作を実現する情報処理システム１００Ａの構成は、図１に示す情報処理システム１００の構成と同様である。
【００５３】
すなわち、情報処理システム１００Ａは、複数の経路ＮＰを介して互いに接続される複数の情報処理装置１０（ノードＮＤ）を有し、各情報処理装置１０は、プロセッサ２０、主記憶装置３０およびネットワークインタフェース４０を有する。ネットワークインタフェース４０は、パケット生成部５０、送信部６０、受信部７０および受信処理部８０を有する。情報処理システム１００Ａの動作は、受信処理部８０の動作の一部が、図７と異なることを除き、図７に示す情報処理システム１００の動作と同様である。例えば、情報処理システム１００Ａは、図２と同様に、メッシュ型の２次元ネットワークにより相互に接続された複数のノードＮＤを有し、並列計算機として動作する。
【００５４】
図９（ａ）から図９（ｇ）までの動作は、図７（ａ）から図７（ｇ）までの動作と同じである。受信部７０は、パケットＰＫＴ−Ｄ、ＰＫＴ−Ｅを順次受信する（図７（ｇ））。受信処理部８０は、最終分割データＤＤＴが他の分割データＤＤＴのいずれかより先に受信された場合、分割データＤＤＴを受信部７０が受信する毎に、受信した分割データＤＤＴを主記憶装置３０に格納する（図９（ｈ））。
【００５５】
パケットＰＫＴ−Ｅの受信は、パケットＰＫＴ−Ｅに含まれる分割数情報Ｄｎ（＝”６”）と等しい６番目である。このため、受信処理部８０は、メッセージＭＳＧを分割した全ての分割データＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃ、ＤＤＴ−Ｄ、ＤＤＴ−Ｅ、ＤＤＴ−Ｆを受信したと判断する。そして、受信処理部８０は、パケットＰＫＴ−Ｆに含まれる最終分割データＤＤＴ−Ｆを主記憶装置３０に格納する（図９（ｉ））。この後、プロセッサ２０は、分割データＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃ、ＤＤＴ−Ｄ、ＤＤＴ−Ｅ、ＤＤＴ−Ｆを使用してデータ処理を開始する（図９（ｊ））。
【００５６】
図９に示す動作では、最終分割データＤＤＴの受信後、パケットＰＫＴを受信する毎に、受信したパケットＰＫＴに含まれる分割データＤＤＴを主記憶装置３０に格納する。これにより、全ての分割データＤＤＴを受信した後に、受信した分割データＤＤＴ（最終分割データＤＤＴを含む）を主記憶装置３０に格納する場合に比べて、主記憶装置３０への分割データＤＤＴの格納を早く完了することができる。この結果、プロセッサ２０は、図７に比べて、データ処理を早く開始することができ、情報処理システム１００Ａの処理性能を、情報処理システム１００の処理性能に比べて向上することができる。
【００５７】
図１０は、図９に示すノードＮＤ２におけるパケットの受信フローの一例を示す。図８に示す動作と同じ動作については、同じステップ番号を付し、詳細な説明は省略する。図１０に示すフローは、図８のステップＳ２４の代わりにステップＳ２４Ａ、Ｓ２４Ｂを設けたことを除き、図８に示すフローと同様である。
【００５８】
ステップＳ１８において、受信処理部８０は、受信したパケットＰＫＴに含まれる最終データ情報Ｌが”１”の場合、動作をステップＳ２４Ａに移行し、受信したパケットＰＫＴに含まれる最終データ情報Ｌが”０”の場合、動作をステップＳ２０に移行する。ステップＳ２０において、受信処理部８０は、最終データ情報Ｌが”１”のパケットＰＫＴを受信済みの場合、動作をステップＳ２４Ｂに移行し、最終データ情報Ｌが”１”のパケットＰＫＴを受信していない場合、動作をステップＳ２２に移行する。
【００５９】
ステップＳ２４Ａにおいて、受信処理部８０は、変数Ｉが、受信したパケットＰＫＴに含まれる分割数情報Ｄｎに等しい場合、全ての分割データＤＤＴが受信されたため、動作をステップＳ２６に移行する。一方、受信処理部８０は、変数Ｉが、受信したパケットＰＫＴに含まれる分割数情報Ｄｎが示す数より小さい場合、未受信の分割データＤＤＴがあるため、動作をステップＳ１２に戻す。
【００６０】
ステップＳ２４Ｂにおいて、受信処理部８０は、変数Ｉが、受信したパケットＰＫＴに含まれる分割数情報Ｄｎに等しい場合、全ての分割データＤＤＴが受信されたため、動作をステップＳ２６に移行する。一方、受信処理部８０は、変数Ｉが、受信したパケットＰＫＴに含まれる分割数情報Ｄｎが示す数より小さい場合、未受信の分割データＤＤＴがあるため、動作をステップＳ２２に移行する。
【００６１】
ステップＳ２２では、受信処理部８０は、受信バッファ７２に保持された分割データＤＤＴを主記憶装置３０に格納する。ステップＳ２６の動作は、図８に示すステップＳ２６の動作と同じである。すなわち、図１０では、最終分割データＤＤＴを受信した後、パケットＰＫＴを受信する毎に、パケットＰＫＴに含まれる分割データＤＤＴを主記憶装置３０に格納する。
【００６２】
以上、図９および図１０に示す実施形態においても、図１から図８に示す実施形態と同様の効果を得ることができる。例えば、メッセージＭＳＧを分割した複数の分割データＤＤＴのいずれかをそれぞれ含む複数のパケットＰＫＴを、複数の経路ＮＰを介して転送する場合に、最終分割データＤＤＴの受信順序にかかわりなく全ての分割データＤＤＴを受信したことを保証することができる。また、プロセッサ２０が誤ったデータを使用してデータ処理を実行することを抑止することができ、情報処理装置１０および情報処理システム１００Ａの誤動作を抑止することができる。
【００６３】
さらに、図９および図１０に示す実施形態では、全ての分割データＤＤＴを受信した後に、受信した分割データＤＤＴを主記憶装置３０に格納する場合に比べて、主記憶装置３０への分割データＤＤＴの格納を早く完了することができる。この結果、プロセッサ２０は、図７に比べて、データ処理を早く開始することができ、情報処理システム１００Ａの処理性能を、情報処理システム１００の処理性能に比べて向上することができる。
【００６４】
図１１は、情報処理装置、情報処理システムおよび情報処理システムの制御方法の別の実施形態を示す。図１と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図１１に示す情報処理システム１００Ｂは、図１に示す情報処理システム１００のパケット生成部５０および受信処理部８０の代わりに、パケット生成部５０Ｂおよび受信処理部８０Ｂを有する。情報処理システム１００Ｂのその他の構成は、図１に示す情報処理システム１００と同様である。情報処理システム１００Ｂは、図２と同様に、例えば、メッシュ型の２次元ネットワークにより相互に接続された複数のノードＮＤを有し、並列計算機として動作する。
【００６５】
パケット生成部５０Ｂは、図１に示すパケット生成部５０の機能に加えて、複数のメッセージＭＳＧを識別するデータ識別情報ＭＩＤをパケットＰＫＴに付加する機能を有する。受信処理部８０Ｂは、図１に示す受信処理部８０の機能に加えて、データ識別情報ＭＩＤに基づいてメッセージＭＳＧを識別し、識別したメッセージＭＳＧ毎に主記憶装置３０への格納を制御する機能を有する。
【００６６】
図１２は、図１１に示す情報処理システム１００Ｂで使用されるパケットＰＫＴのフォーマットの一例を示す。図３と同じ要素については、詳細な説明は省略する。図１２に示すパケットＰＫＴのフォーマットは、データ識別情報ＭＩＤを格納する領域を追加したことを除き、図３に示すパケットＰＫＴのフォーマットと同様である。
【００６７】
図１３は、図１１に示す情報処理システム１００ＢにおけるパケットＰＫＴの送信動作の一例を示す。図４と同一または同様の動作については、詳細な説明は省略する。図１３に示す例では、２つのメッセージＭＳＧ１、ＭＳＧ２の各々が、３つの分割データＤＤＴ（ＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−ＣとＤＤＴ−Ｘ、ＤＤＴ−Ｙ、ＤＤＴ−Ｚ）に分けて、ノードＮＤ１からノードＮＤ２に転送される。
【００６８】
まず、ノードＮＤ１のパケット生成部５０Ｂは、主記憶装置３０から分割データＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃと、分割データＤＤＴ−Ｘ、ＤＤＴ−Ｙ、ＤＤＴ−Ｚとを読み出す。分割データＤＤＴ−Ｃ、ＤＤＴ−Ｚは、それぞれ最終分割データである。
【００６９】
パケット生成部５０Ｂは、分割データＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃを含むパケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃをそれぞれ生成する。パケット生成部５０Ｂは、パケットＰＫＴ−Ａ、ＰＫＴ−Ｂに、メッセージＭＳＧ１を示すデータ識別情報ＭＩＤ（＝”１”）と、分割数情報Ｄｎ（＝”３”）と、最終データ情報Ｌ（＝”０”）とを付加する。パケット生成部５０Ｂは、パケットＰＫＴ−Ｃに、メッセージＭＳＧ１を示すデータ識別情報ＭＩＤ（＝”１”）と、分割数情報Ｄｎ（＝”３”）と、最終データ情報Ｌ（＝”１”）とを付加する。
【００７０】
また、パケット生成部５０Ｂは、分割データＤＤＴ−Ｘ、ＤＤＴ−Ｙ、ＤＤＴ−Ｚを含むパケットＰＫＴ−Ｘ、ＰＫＴ−Ｙ、ＰＫＴ−Ｚをそれぞれ生成する。パケット生成部５０Ｂは、パケットＰＫＴ−Ｘ、ＰＫＴ−Ｙに、メッセージＭＳＧ２を示すデータ識別情報ＭＩＤ（＝”２”）と、分割数情報Ｄｎ（＝”３”）と、最終データ情報Ｌ（＝”０”）とを付加する。パケット生成部５０Ｂは、パケットＰＫＴ−Ｚに、メッセージＭＳＧ２を示すデータ識別情報ＭＩＤ（＝”２”）と、分割数情報Ｄｎ（＝”３”）と、最終データ情報Ｌ（＝”１”）とを付加する。
【００７１】
パケット生成部５０Ｂは、生成したパケットＰＫＴを送信部６０の送信バッファ６２に順次格納する。この後、送信部６０は、図４と同様に、送信バッファ６２に格納されたパケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃ、ＰＫＴ−Ｘ、ＰＫＴ−Ｙ、ＰＫＴ−Ｚを複数の経路ＮＰを介して、ノードＮＤ２に向けて順次送信する。
【００７２】
図１４および図１５は、図１１に示す情報処理システム１００ＢにおけるパケットＰＫＴの受信動作の一例を示す。図５および図６と同一または同様の動作については、詳細な説明は省略する。まず、ノードＮＤ２の受信部７０は、パケットＰＫＴ−Ａ、ＰＫＴ−Ｘ、ＰＫＴ−Ｃ、ＰＫＴ−Ｚを順次受信する。受信部７０は、受信したパケットＰＫＴ−Ａ、ＰＫＴ−Ｘ、ＰＫＴ−Ｃ、ＰＫＴ−Ｚの各々に含まれる分割データＤＤＴ−Ａ、ＤＤＴ−Ｘ、ＤＤＴ−Ｃ、ＤＤＴ−Ｚと各種情報とを受信バッファ７２に格納する。
【００７３】
受信処理部８０Ｂは、各パケットＰＫＴに含まれるデータ識別情報ＭＩＤに基づいて、分割データＤＤＴ−Ａ、ＤＤＴ−Ｃと分割データＤＤＴ−Ｘ、ＤＤＴ−Ｚとがそれぞれ異なるメッセージＭＳＧ１、ＭＳＧ２に対応することを検出する。受信処理部８０Ｂは、パケットＰＫＴ−Ａ、ＰＫＴ−Ｘに含まれる最終データ情報Ｌが”０”であるため、分割データＤＤＴ−Ａ、ＤＤＴ−Ｘを主記憶装置３０に格納する。
【００７４】
また、受信処理部８０Ｂは、受信部７０によるメッセージＭＳＧ１、ＭＳＧ２毎のパケットＰＫＴの受信数をカウントする。受信処理部８０Ｂは、各メッセージＭＳＧ１、ＭＳＧ２の受信数（＝”２”）が対応するパケットＰＫＴに含まれる分割数情報Ｄｎが示す分割数（＝”３”）より少ないため、未受信のパケットＰＫＴが存在すると判断する。受信処理部８０Ｂは、未受信のパケットＰＫＴが存在し、かつ、パケットＰＫＴ−Ｃ、ＰＫＴ−Ｚに含まれる最終データ情報Ｌが”１”であるため、分割データＤＤＴ−Ｃ、ＤＤＴ−Ｚの主記憶装置３０への格納を抑止する（図１４（ａ））。
【００７５】
次に、受信部７０は、パケットＰＫＴ−Ｂを受信し、パケットＰＫＴ−Ｂに含まれる分割データＤＤＴ−Ｂと各種情報とを受信バッファ７２に格納する。受信処理部８０Ｂは、データ識別情報ＭＩＤが”１”のパケットＰＫＴの受信数（＝”３”）と、データ識別情報ＭＩＤが”１”のパケットＰＫＴ−Ｂに含まれる分割数情報Ｄｎが示す分割数（＝”３”）との一致を検出する。このため、受信処理部８０Ｂは、メッセージＭＳＧ１に対応する全ての分割データＤＤＴを受信したと判定する（図１４（ｂ））。
【００７６】
次に、図１５において、受信処理部８０Ｂは、受信バッファ７２に保持された分割データＤＤＴ−Ｂ、ＤＤＴ−Ｃを主記憶装置３０に順次格納する。プロセッサ２０は、分割データＤＤＴ−Ｃが主記憶装置３０に保持されたことを検出した場合、メッセージＭＳＧ１を主記憶装置３０から読み出し、読み出したメッセージＭＳＧ１を使用してデータ処理を開始する。
【００７７】
また、受信部７０は、パケットＰＫＴ−Ｙを受信し、パケットＰＫＴ−Ｙに含まれる分割データＤＤＴ−Ｙと各種情報とを受信バッファ７２に格納する。受信処理部８０Ｂは、データ識別情報ＭＩＤが”２”のパケットＰＫＴの受信数（＝”３”）と、データ識別情報ＭＩＤが”２”のパケットＰＫＴ−Ｙに含まれる分割数情報Ｄｎが示す分割数（＝”３”）との一致を検出する。このため、受信処理部８０Ｂは、メッセージＭＳＧ２に対応する全ての分割データＤＤＴを受信したと判定する（図１５（ａ））。
【００７８】
次に、受信処理部８０Ｂは、受信バッファ７２に保持された分割データＤＤＴ−Ｙ、ＤＤＴ−Ｚを主記憶装置３０に順次格納する。プロセッサ２０は、分割データＤＤＴ−Ｚが主記憶装置３０に保持されたことを検出した場合、メッセージＭＳＧ２を主記憶装置３０から読み出し、読み出したメッセージＭＳＧ２を使用してデータ処理を開始する（図１５（ｂ））。このように、プロセッサ２０は、メッセージＭＳＧ毎に、最終分割データＤＤＴが主記憶装置３０に保持されたことを検出することで、各メッセージＭＳＧの全体が受信されたことを確認することができる。
【００７９】
図１４および図１５に示すように、メッセージＭＳＧを識別するデータ識別情報ＭＩＤをパケットＰＫＴに付加することで、受信処理部８０Ｂは、分割データＤＤＴの主記憶装置３０への格納処理を、メッセージＭＳＧ毎に実行することができる。これにより、複数のメッセージＭＳＧの分割データＤＤＴを混在させてノードＮＤ１からノードＮＤ２に送信する場合にも、メッセージＭＳＧ毎に全ての分割データＤＤＴを受信したことを保証することができる。
【００８０】
図１６は、図１１に示す情報処理システム１００Ｂの動作の一例を示す。図７と同一または同様の動作については、詳細な説明は省略する。
【００８１】
まず、ノードＮＤ１のパケット生成部５０Ｂは、メッセージＭＳＧ１に対応する分割データＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃを主記憶装置３０から読み出し、パケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃを生成して送信部６０に格納する（図１６（ａ））。ノードＮＤ１の送信部６０は、パケット生成部５０Ｂが生成したパケットＰＫＴ−Ａ、ＰＫＴ−Ｂ、ＰＫＴ−Ｃを、複数の経路ＮＰを介して、ノードＮＤ２に向けて順次送信する（図１６（ｂ））。
【００８２】
また、ノードＮＤ１のパケット生成部５０Ｂは、メッセージＭＳＧ２に対応する分割データＤＤＴ−Ｘ、ＤＤＴ−Ｙ、ＤＤＴ−Ｚを主記憶装置３０から読み出し、パケットＰＫＴ−Ｘ、ＰＫＴ−Ｙ、ＰＫＴ−Ｚを生成して送信部６０に格納する（図１６（ｃ））。ノードＮＤ１の送信部６０は、パケット生成部５０Ｂが生成したパケットＰＫＴ−Ｘ、ＰＫＴ−Ｙ、ＰＫＴ−Ｚを、複数の経路ＮＰを介して、ノードＮＤ２に向けて順次送信する（図１６（ｄ））。なお、各パケットＰＫＴに含まれるデータ識別情報ＭＩＤ、分割数情報Ｄｎおよび最終データ情報Ｌは、図１３に示すパケットＰＫＴに含まれる情報と同じである。
【００８３】
ノードＮＤ２の受信部７０は、最終データ情報Ｌ（＝”０”）を含むパケットＰＫＴ−Ａ、ＰＫＴ−Ｘを順次受信する（図１６（ｅ））。受信処理部８０Ｂは、パケットＰＫＴ−Ａ、ＰＫＴ−Ｘに含まれる最終データ情報Ｌが”０”であるため、受信部７０が受信した分割データＤＤＴ−Ａ、ＤＤＴ−Ｘを主記憶装置３０に格納する（図１６（ｆ））。
【００８４】
次に、受信部７０は、最終データ情報Ｌ（＝”１”）を含むパケットＰＫＴ−Ｃ、ＰＫＴ−Ｚを順次受信する（図１６（ｇ））。受信処理部８０Ｂは、最終データ情報Ｌ（＝”１”）に基づいて、パケットＰＫＴ−Ｃ、ＰＫＴ−Ｚのそれぞれが最終分割データＤＤＴ−Ｃ、ＤＤＴ−Ｚを含むと判断する。また、受信処理部８０Ｂは、分割数情報Ｄｎ（＝”３”）に基づいて、メッセージＭＳＧ１、ＭＳＧ２のそれぞれに、未受信のパケットＰＫＴがあると判断する。このため、受信処理部８０Ｂは、分割データＤＤＴ−Ｃ、ＤＤＴ−Ｚの主記憶装置３０への格納を抑止する（図１６（ｈ））。
【００８５】
この後、受信部７０は、パケットＰＫＴ−Ｂ、ＰＫＴ−Ｙを順次受信する（図１６（ｉ））。受信処理部８０Ｂは、パケットＰＫＴ−Ｂに含まれるデータ識別情報ＭＩＤおよび分割数情報Ｄｎに基づいて、メッセージＭＳＧ１に対応する全ての分割データＤＤＴを受信したと判断する。そして、受信処理部８０Ｂは、受信部７０の受信バッファ７２に保持された分割データＤＤＴ−Ｂ、ＤＤＴ−Ｃを主記憶装置３０に順次格納する（図１６（ｊ））。最終分割データＤＤＴ−Ｃが主記憶装置３０に保持されたことを検出したプロセッサ２０は、分割データＤＤＴ−Ａ、ＤＤＴ−Ｂ、ＤＤＴ−Ｃを使用してデータ処理を開始する（図１６（ｋ））。
【００８６】
また、受信処理部８０Ｂは、パケットＰＫＴ−Ｙに含まれるデータ識別情報ＭＩＤおよび分割数情報Ｄｎに基づいて、メッセージＭＳＧ２に対応する全ての分割データＤＤＴを受信したと判断する。そして、受信処理部８０Ｂは、受信部７０の受信バッファ７２に保持された分割データＤＤＴ−Ｙ、ＤＤＴ−Ｚを主記憶装置３０に順次格納する（図１６（ｌ））。最終分割データＤＤＴ−Ｚが主記憶装置３０に保持されたことを検出したプロセッサ２０は、分割データＤＤＴ−Ｘ、ＤＤＴ−Ｙ、ＤＤＴ−Ｚを使用してデータ処理を開始する（図１６（ｍ））。
【００８７】
図１７は、図１１に示す各ノードＮＤにおけるパケットＰＫＴの受信フローの一例を示す。図８に示す動作と同じ動作については、同じステップ番号を付し、詳細な説明は省略する。図１７に示すフローは、図８のステップＳ１２とステップＳ１４の間にステップＳ１３を追加したことを除き、図８に示すフローと同様である。
【００８８】
ステップＳ１３では、受信処理部８０Ｂは、受信部７０が受信したパケットＰＫＴに含まれるデータ識別情報ＭＩＤに基づいて、受信対象のパケットＰＫＴか否かを判定する。受信対象のパケットＰＫＴの場合、動作はステップＳ１４に移行される。すなわち、データ識別情報ＭＩＤが、既に受信したパケットＰＫＴに含まれるデータ識別情報ＭＩＤと同じ場合、または、データ識別情報ＭＩＤを含むパケットＰＫＴを初めて受信した場合、動作はステップＳ１４に移行される。
【００８９】
一方、受信対象のパケットＰＫＴでない場合、すなわち、データ識別情報ＭＩＤが、既に受信したパケットＰＫＴに含まれるデータ識別情報ＭＩＤと異なる場合、動作は他のメッセージＭＳＧの受信フローのステップＳ１４に移行される。他のメッセージＭＳＧの受信フローは、図１７と同じである。すなわち、受信処理部８０Ｂは、複数のメッセージＭＳＧに対する受信処理を並列に実行可能である。
【００９０】
なお、受信処理部８０Ｂは、図９および図１０に示すように、最終分割データＤＤＴの受信後、パケットＰＫＴを受信する毎に、受信したパケットＰＫＴに含まれる分割データＤＤＴを主記憶装置３０に格納してもよい。この場合、図１７に示す受信フローは、図１０と同様に、ステップＳ２４の代わりにステップＳ２４Ａ、Ｓ２４Ｂが設けられる。最終分割データＤＤＴの受信後、メッセージＭＳＧ毎に２つ以上の未受信の分割データＤＤＴがある場合、分割データＤＤＴをまとめて主記憶装置３０に格納する場合に比べて、プロセッサ２０は、データ処理を早く開始することができる。
【００９１】
以上、図１１から図１７に示す実施形態においても、図１から図８に示す実施形態と同様の効果を得ることができる。例えば、メッセージＭＳＧを分割した複数の分割データＤＤＴのいずれかをそれぞれ含む複数のパケットＰＫＴを、複数の経路ＮＰを介して転送する場合に、最終分割データＤＤＴの受信順序にかかわりなく全ての分割データＤＤＴを受信したことを保証することができる。また、プロセッサ２０が誤ったデータを使用してデータ処理を実行することを抑止することができ、情報処理装置１０および情報処理システム１００Ｂの誤動作を抑止することができる。
【００９２】
さらに、図１１から図１７に示す実施形態では、メッセージＭＳＧを識別するデータ識別情報ＭＩＤをパケットＰＫＴに付加することで、受信処理部８０Ｂは、分割データＤＤＴの主記憶装置３０への格納処理を、メッセージＭＳＧ毎に実行することができる。これにより、複数のメッセージＭＳＧの分割データＤＤＴを混在させてノードＮＤ１からノードＮＤ２に送信する場合にも、メッセージＭＳＧ毎に全ての分割データＤＤＴを受信したことを保証することができる。したがって、プロセッサ２０は、メッセージＭＳＧ毎に最終分割データＤＤＴが主記憶装置３０に保持されたことを検出することで、各メッセージＭＳＧの全体が受信されたことを確認することができる。
【００９３】
以上の図１から図１７に示す実施形態に関し、さらに以下の付記を開示する。
（付記１）
演算処理を実行する演算処理装置と、データを記憶する記憶装置と、複数の経路を介して接続される他の情報処理装置との間でパケットを転送する通信装置とを有する情報処理装置において、
前記通信装置は、
転送の対象である転送対象データを分割した分割データのいずれかと、前記複数の分割データの数を示す分割数情報と、前記複数の分割データのうち最後に分割された最終分割データを含むかを示す最終データ情報とをそれぞれ含む複数のパケットを前記他の情報処理装置からそれぞれ受信する受信部と、
前記受信部がそれぞれ受信したパケットに含まれる分割データを前記記憶装置にそれぞれ格納するとともに、前記受信部がそれぞれ受信したパケットに含まれる前記分割数情報と前記最終データ情報とに基づいて、前記最終分割データを他の分割データのいずれかより先に受信したことを判定した場合、前記分割数情報が示す数の分割データを前記受信部が受信するまで前記最終分割データの前記記憶装置への格納を抑止する処理部とを有することを特徴とする情報処理装置。
（付記２）
前記処理部は、前記最終分割データが他の分割データのいずれかより先に受信された場合、前記分割数情報が示す数の分割データを前記受信部が受信するまで待ち、前記最終分割データを受信後に前記受信部が受信した分割データを前記記憶装置に格納した後、前記最終分割データを前記記憶装置に格納し、
前記演算処理装置は、前記最終分割データが前記記憶装置に格納されたことを検出した場合、前記記憶装置に格納された前記複数の分割データを使用して演算処理を実行することを特徴とする付記１記載の情報処理装置。
（付記３）
前記処理部は、前記最終分割データが他の分割データのいずれかより先に受信された場合、分割データを前記受信部が受信する毎に、受信した分割データを前記記憶装置に格納し、全ての分割データのうち、前記最終分割データを除いた分割データを前記記憶装置に格納した後、前記最終分割データを前記記憶装置に格納し、
前記演算処理装置は、前記最終分割データが前記記憶装置に格納されたことを検出した場合、前記記憶装置に格納された前記複数の分割データを使用して演算処理を実行することを特徴とする付記１記載の情報処理装置。
（付記４）
前記処理部は、
前記受信部による分割データの受信数をカウントし、カウントした計数値が、パケットに含まれる前記分割数情報が示す数より小さい場合、受信していない分割データの存在を検出することを特徴とする付記１ないし付記３のいずれか１項に記載の情報処理装置。
（付記５）
前記処理部は、パケットに含まれるデータ識別情報に基づいて前記転送対象データを識別し、識別した転送対象データ毎に分割データの前記記憶装置への格納を制御することを特徴とする付記１ないし付記４のいずれか１項に記載の情報処理装置。
（付記６）
前記通信装置は、
前記複数の分割データの各々と、前記分割数情報と、前記最終データ情報とを含むパケットを生成するパケット生成部と、
前記パケット生成部が生成したパケットを、パケットの送信先の情報処理装置に送信する送信部とを有することを特徴とする付記１ないし付記５のいずれか１項に記載の情報処理装置。
（付記７）
前記処理部は、パケットに含まれるアドレスが示す前記記憶装置の記憶領域に、パケットに含まれる分割データを格納し、
前記複数の分割データがそれぞれ格納される前記記憶装置の記憶領域は、互いに異なるアドレスが割り当てられることを特徴とする付記１ないし付記６のいずれか１項に記載の情報処理装置。
（付記８）
演算処理を実行する演算処理装置と、データを記憶する記憶装置と、複数の経路を介して接続される他の情報処理装置との間でパケットを転送する通信装置とをそれぞれ有する複数の情報処理装置を含む情報処理システムにおいて、
前記複数の情報処理装置のうち、パケットの送信元の第１の情報処理装置の前記通信装置は、
転送の対象である転送対象データを分割した分割データのいずれかと、前記複数の分割データの数を示す分割数情報と、前記複数の分割データのうち最後に分割された最終分割データを含むかを示す最終データ情報とをそれぞれ含む複数のパケットを生成するパケット生成部と、
前記パケット生成部がそれぞれ生成した複数のパケットを、パケットの送信先の情報処理装置である第２の情報処理装置にそれぞれ送信する送信部とを有し、
前記第２の情報処理装置の前記通信装置は、
送信された前記複数のパケットを前記第１の情報処理装置からそれぞれ受信する受信部と、
前記受信部がそれぞれ受信したパケットに含まれる
分割データを前記第２の情報処理装置が有する前記記憶装置にそれぞれ格納するとともに、前記受信部がそれぞれ受信したパケットに含まれる前記分割数情報と前記最終データ情報とに基づいて、前記最終分割データを他の分割データのいずれかより先に受信したことを判定した場合、前記分割数情報が示す数の分割データを前記受信部が受信するまで前記最終分割データの前記第２の情報処理装置が有する前記記憶装置への格納を抑止する処理部とを有することを特徴とする情報処理システム。
（付記９）
演算処理を実行する演算処理装置と、データを記憶する記憶装置と、複数の経路を介して接続される他の情報処理装置との間でパケットを転送する通信装置とをそれぞれ有する複数の情報処理装置を含む情報処理システムの制御方法において、
前記複数の情報処理装置のうち、パケットの送信元の第１の情報処理装置の前記通信装置が有するパケット生成部が、転送の対象である転送対象データを分割した分割データのいずれかと、前記複数の分割データの数を示す分割数情報と、前記複数の分割データのうち最後に分割された最終分割データを含むかを示す最終データ情報とをそれぞれ含む複数のパケットを生成し、
前記第１の情報処理装置の前記通信装置が有する送信部が、前記パケット生成部がそれぞれ生成した複数のパケットを、パケットの送信先の情報処理装置である第２の情報処理装置にそれぞれ送信し、
前記第２の情報処理装置の前記通信装置が有する受信部が、送信された前記複数のパケットを前記第１の情報処理装置からそれぞれ受信し、
前記第２の情報処理装置の前記通信装置が有する処理部が、前記受信部がそれぞれ受信したパケットに含まれる分割データを前記第２の情報処理装置が有する前記記憶装置にそれぞれ格納するとともに、前記受信部がそれぞれ受信したパケットに含まれる前記分割数情報と前記最終データ情報とに基づいて、前記最終分割データを他の分割データのいずれかより先に受信したことを判定した場合、前記分割数情報が示す数の分割データを前記受信部が受信するまで前記最終分割データの前記第２の情報処理装置が有する前記記憶装置への格納を抑止することを特徴とする情報処理システムの制御方法。
【００９４】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【００９５】
１０…情報処理装置；２０…プロセッサ；３０…主記憶装置；４０…ネットワークインタフェース；５０、５０Ｂ…パケット生成部；６０…送信部；７０…受信部；８０、８０Ｂ…受信処理部；１００、１００Ａ、１００Ｂ…情報処理システム；ＢＵＳ…バス；Ｄｎ…分割数情報；ＤＴ…データ；ＤＤＴ…分割データ；Ｌ…最終データ情報；ＭＩＤ…データ識別情報；ＭＳＧ…メッセージ；ＮＤ…ノード；ＮＰ…経路；ＰＫＴ…パケット；ＰＹＬＤ…ペイロード；ＴＹＰＥ…パケットタイプ
【図１】
2018182688.tif 000003
【図２】
2018182688.tif 000004
【図３】
2018182688.tif 000005
【図４】
2018182688.tif 000006
【図５】
2018182688.tif 000007
【図６】
2018182688.tif 000008
【図７】
2018182688.tif 000009
【図８】
2018182688.tif 000010
【図９】
2018182688.tif 000011
【図１０】
2018182688.tif 000012
【図１１】
2018182688.tif 000013
【図１２】
2018182688.tif 000014
【図１３】
2018182688.tif 000015
【図１４】
2018182688.tif 000016
【図１５】
2018182688.tif 000017
【図１６】
2018182688.tif 000018
【図１７】
2018182688.tif 000019