(57)【特許請求の範囲】
【請求項１】
スイッチ装置に接続する通信装置において、
前記スイッチ装置に接続する接続ポートと、
外部装置に送信するデータを取得しパケットを生成する生成部と、
前記生成部により生成された前記パケットを格納する格納部と、
前記パケットの送信指示を受信すると前記スイッチ装置に対して送信要求を送信し、前記送信要求に対する送信許可の通知を前記スイッチ装置から受信すると、前記パケットの送信許可の通知を送出し、前記格納部に格納された前記パケットを取得し、取得した前記パケットを前記接続ポートを介して外部装置に送信する送信部と、
前記送信部に対して前記パケットの送信指示を送信してから、前記送信部が前記パケットの送信許可の通知を送出するまでの所要時間を、前記接続ポートが接続するネットワークの状態として取得し、予め決められたパケット生成時間及び取得した前記ネットワークの状態を基に、前記生成部が生成するパケットの数を制御する制御部と
を備えたことを特徴とする通信装置。
【請求項２】
前記制御部は、前記所要時間が前記パケット生成時間以上の場合、前記生成部が生成するパケットの数を制限することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記制御部は、前記所要時間が前記パケット生成時間よりも短い場合に、前記パケットの送信許可の通知を受信したときに、前記パケットの生成が完了していなければ、前記生成部が生成するパケットの数の制限を解除することを特徴とする請求項２に記載の通信装置。
【請求項４】
スイッチ装置に接続する通信装置において、
前記スイッチ装置に接続する接続ポートと、
外部装置に送信するデータを取得しパケットを生成する生成部と、
前記生成部により生成された前記パケットを格納する格納部と、
前記格納部に格納された前記パケットを取得し、取得した前記パケットを前記接続ポートを介して外部装置に送信する送信部と、
前記スイッチ装置の前記外部装置へ繋がる送信ポートが有する送信バッファの使用率及び前記送信ポートがパケットを前記送信部から受信し前記送信ポートから送出するまでの前記送信ポートの使用時間を、前記接続ポートが接続するネットワークの状態として取得し、予め決められたパケット生成時間及び取得した前記ネットワークの状態を基に、前記生成部が生成するパケットの数を制御する制御部と
を備えたことを特徴とする通信装置。
【請求項５】
前記制御部は、前記使用率が１００％であり、且つ、前記使用時間が前記パケット生成時間以上の場合、前記生成部が生成するパケットの数を制限することを特徴とする請求項４に記載の通信装置。
【請求項６】
演算処理装置、主記憶装置及び通信装置を有する情報処理装置を有するとともに、スイッチ装置に接続する情報処理装置において、
前記通信装置は、
前記スイッチ装置に接続する接続ポートと、
他の情報処理装置に送信するデータを取得しパケットを生成する生成部と、
前記生成部により生成された前記パケットを格納する格納部と、
前記パケットの送信指示を受信すると前記スイッチ装置に対して送信要求を送信し、前記送信要求に対する送信許可の通知を前記スイッチ装置から受信すると、前記パケットの送信許可の通知を送出し、前記格納部に格納された前記パケットを取得し、取得した前記パケットを前記接続ポートを介して外部装置に送信する送信部と、
前記送信部に対して前記パケットの送信指示を送信してから、前記送信部が前記パケットの送信許可の通知を送出するまでの所要時間を、前記接続ポートが接続するネットワークの状態として取得し、予め決められたパケット生成時間及び取得した前記ネットワークの状態を基に、前記生成部が生成するパケットの数を制御する制御部と
を備えたことを特徴とする情報処理装置。
【請求項７】
複数の情報処理装置と前記複数の情報処理装置の各々にそれぞれ接続する複数のスイッチ装置を有する情報処理システムであって、
前記情報処理装置は、演算処理装置、主記憶装置及び通信装置を有し、
前記通信装置は、
前記スイッチ装置に接続する接続ポートと、
他の情報処理装置に送信するデータを取得しパケットを生成する生成部と、
前記生成部により生成された前記パケットを格納する格納部と、
前記パケットの送信指示を受信すると前記スイッチ装置に対して送信要求を送信し、前記送信要求に対する送信許可の通知を前記スイッチ装置から受信すると、前記パケットの送信許可の通知を送出し、前記格納部に格納された前記パケットを取得し、取得した前記パケットを前記接続ポートを介して外部装置に送信する送信部と、
前記送信部に対して前記パケットの送信指示を送信してから、前記送信部が前記パケットの送信許可の通知を送出するまでの所要時間を、前記接続ポートが接続するネットワークの状態として取得し、予め決められたパケット生成時間及び取得した前記ネットワークの状態を基に、前記生成部が生成するパケットの数を制御する制御部とを備えた
ことを特徴とする情報処理システム。
【請求項８】
スイッチ装置に接続する通信装置の制御方法において、
外部装置に送信するデータを取得しパケットを生成し、
生成した前記パケットを格納し、
送信器に対して前記パケットの送信指示を送信し、
前記パケットの送信指示を受信した前記送信器に、前記スイッチ装置に対して送信要求を送信させ、前記送信要求に対する送信許可の通知を前記スイッチ装置から受信させ、前記パケットの送信許可の通知を送出させ、
前記送信器に、格納した前記パケットを取得させ、
前記送信器に、前記スイッチ装置に接続する接続ポートを介して外部装置へ、取得した前記パケットを送信させ、
前記送信器に対して前記パケットの送信指示を送信してから、前記送信器が前記パケットの送信許可の通知を送出するまでの所要時間を、前記接続ポートが接続するネットワークの状態として取得し、
予め決められたパケット生成時間及び取得した前記接続ポートの状態を基に、生成するパケットの数を制御する
ことを特徴とする通信装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、情報処理装置、情報処理システム及び通信装置の制御方法に関する。
【背景技術】
【０００２】
近年、情報処理の高度化や複雑化に伴い、複数の演算処理装置間で通信を行い、処理を実行する情報処理システムが増加する傾向にある。例えば、並列計算機は、計算を行うノード及びノード間のネットワークを構成するスイッチを有する。
【０００３】
このような並列計算機において、ノード間通信を行う場合、ノードはメッセージをパケットに分割し、接続先のスイッチへ送信する。スイッチは、ノードや他のスイッチが接続されている入力ポートを経由して送られてくるパケットを受信すると、パケットの宛先に基づいて、宛先ポートを決定し、決定した宛先ポートを用いてパケットを送信する。
【０００４】
また、スイッチは、複数の入力ポートのそれぞれを介して受信した複数のパケットを同じ宛先ポートへ送信する場合、調停を行い、調停結果異に基づいた順番でパケットを送信する。スイッチは、宛先ポート毎にバッファを持ち、調停により待機させるパケットをバッファに保持する。
【０００５】
例えば、ノードＮ１−Ｎ４がスイッチを介して直列に並んでいる場合を考える。この場合、スイッチは、ポート同士を接続し、ノードをバイパスする経路を有する。ノードＮ１がＮ４にパケットを送信する場合、ノードＮ１のネットワークインタフェースは、ノードＮ４へのパケットを順次生成し送信バッファに格納する。これは、先行するパケットの送信が完了し、後続のパケットが送信できる状態になっても、後続のパケットが生成されていなければ、直ちにパケットを送信することができず、スループットが低下するためである。
【０００６】
このようなスループットの低下を抑えるために、スイッチ又は受信側装置が輻輳状態になった場合に、送信側装置に通知を送り送信レートを抑える従来技術が提案されている。また、スイッチのバッファのデータ蓄積量が閾値を超えた場合に、送信装置からのパケットの送信を禁止する従来技術が提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０９−２７０８２１号公報
【特許文献２】特表２００２−５１９９１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、後続のパケットが送信可能な状態になるのはネットワークの状態に依存する。後続のパケットが送信可能状態になるまでに時間がかかると、他ノードへの通信に影響を与えるおそれがある。
【０００９】
例えば、上述したノードＮ１〜Ｎ４を有する例で、ノードＮ１とともに、ノードＮ２及びＮ３がノードＮ４にパケットを送信する場合を考える。この場合、同時に複数の送信元からのパケットが同じ宛先のノードＮ４に送信されるため、経路上の各スイッチにおいて、調停が行われ送信が保留されるパケットが発生する。この間、パケットはバッファに格納され、保留時間が長ければバッファに格納されるパケットは徐々に蓄積されていく。スイッチのバッファが飽和すると、経路上の他のスイッチのバッファにおいて送信されたパケットが蓄えられ、経路上にはバッファが飽和したスイッチが増えていく。最終的には、送信元のノードＮ１に接続するスイッチまで飽和し、ノードＮ１が送信するパケットは、接続するスイッチのバッファに空きができるまで送信可能な状態にならない。このようにパケットの宛先のポートに接続するスイッチが飽和状態になることを、以下では「宛先ポートの詰まり」という。宛先ポートが詰まった状態で、ノードＮ１からノードＮ０へパケットを送信しようとしても、ノードＮ１のネットワークインタフェースの送信バッファが飽和し十分な空きがなくなり、ノードＮ０へのパケットの生成が行えない。そのため、ノードＮ１のスループットが低下してしまうおそれがある。
【００１０】
このように、従来の情報処理システムでは、宛先ポートの詰まりによる性能の低下を軽減することは困難である。
【００１１】
また、ネット―ワークインタフェースにおいて宛先ポート毎に送信バッファを設けることも考えられるが、宛先が多くなるにつれ物量が必要となり、製造コストの増加や実装面積の増加などから実現することは困難である。
【００１２】
また、輻輳状態になった場合に送信側装置に通知を送り送信レートを低下させる従来技術では、送信レートを低下させるためシステムの性能の低下を軽減することは困難である。さらに、バッファのデータ蓄積量が閾値を超えた場合に送信装置からのパケットの送信を禁止する従来技術でも、パケットの送信が停止してしまうため、システムの性能は低下を軽減することは困難である。
【００１３】
開示の技術は、上記に鑑みてなされたものであって、通信性能の低下を軽減する通信装置、情報処理装置、情報処理システム及び通信装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本願の開示する通信装置、情報処理装置、情報処理システム及び通信装置の制御方法は、一つの態様において、通信装置はスイッチ装置に接続し、且つ、以下の各部を有する。接続ポートは、スイッチ装置に接続する。生成部は、外部装置に送信するデータを取得しパケットを生成する。格納部は、前記生成部により生成された前記パケットを格納する。送信部は、前記パケットの送信指示を受信すると前記スイッチ装置に対して送信要求を送信し、前記送信要求に対する送信許可の通知を前記スイッチ装置から受信すると、前記パケットの送信許可の通知を送出し、前記格納部に格納された前記パケットを取得し、取得した前記パケットを前記接続ポートを介して外部装置に送信する。制御部は、前記送信部に対して前記パケットの送信指示を送信してから、前記送信部が前記パケットの送信許可の通知を送出するまでの所要時間を、前記接続ポートが接続するネットワークの状態として取得し、予め決められたパケット生成時間及び取得した前記ネットワークの状態を基に、前記生成部が生成するパケットの数を制御する。
【発明の効果】
【００１５】
本願の開示する通信装置、情報処理装置、情報処理システム及び通信装置の制御方法の一つの態様によれば、通信性能の低下を軽減することができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、情報処理システムの一例を表すシステム構成図である。
【図２】図２は、実施例１に係る情報処理装置のブロック図である。
【図３】図３は、Ｎ＝１の場合のパケットの生成及び送信を説明するための図である。
【図４】図４は、Ｎ＝２の場合のパケットの生成及び送信を説明するための図である。
【図５】図５は、実施例１に係るネットワークインタフェースによるパケット生成の制御のフローチャートである。
【図６】図６は、パケット送信処理のフローチャートである。
【図７】図７は、実施例２に係る情報処理装置のブロック図である。
【図８】図８は、実施例２に係るネットワークインタフェースによるパケット生成の制御のフローチャートである。
【図９】図９は、情報処理装置のハードウェア構成の一例の図である。
【発明を実施するための形態】
【００１７】
以下に、本願の開示する通信装置、情報処理装置、情報処理システム及び通信装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する通信装置、情報処理装置、情報処理システム及び通信装置の制御方法が限定されるものではない。
【実施例１】
【００１８】
図１は、情報処理システムの一例を表すシステム構成図である。図１に示すように、本実施例に係る情報処理システムは、情報処理装置である複数のノード１０１〜１０４を有する。以下では、ノード１０１〜１０４のそれぞれを区別しない場合、「ノード１０」と呼ぶ。また、本実施例に係る情報処理システムは、複数のスイッチ２１〜２４を有する。以下では、スイッチ２１〜２４のそれぞれを区別しない場合、「スイッチ２０」と呼ぶ。
【００１９】
そして、ノード１０１は、スイッチ２１に接続されており、ノード１０２は、スイッチ２２に接続されており、ノード１０３は、スイッチ２３に接続されており、ノード１０４は、スイッチ２４に接続されている。そして、スイッチ２１〜２４は、直列に接続されている。すなわち、ノード１０１〜１０４は、一次元の直線状に配置された１次元メッシュのネットワークトポロジを有する。ここで、本実施例にでは、説明の都合上、ネットワークトポロジが１元メッシュの場合で説明するが、実際にはネットワークトポロジに特に制限はなく、１次元トーラス、２次元メッシュもしくはトーラス、又は、３次元メッシュもしくはトーラスであってもよい。
【００２０】
各ノード１０は、対応するスイッチ２０に接続するためのポートを有する。さらに、各ノード１０のポートは、パケット格納部１３２を有する。パケット格納部１３２は、送信バッファである。
【００２１】
スイッチ２０は、ノード１０に接続するためのポート及び他のスイッチ２０へ接続するためのポートを有する。さらに、各スイッチ２０の各ポートは、バッファ２０１を有する。
【００２２】
例えば、ノード１０１は、ノード１０４へメッセージを送る場合、メッセージを分割してパケットを生成し、生成したパケットをスイッチ２１〜２４を経由させて、ノード１０４へ送信する。そして、スイッチ２１のスイッチ２２へ繋がるポートのバッファ２０１に空きが無い場合、ノード１０１は、パケットの送信許可をスイッチ２２から受けるまで、パケットをパケット格納部１３２へ格納する。パケットの送信許可をスイッチ２２から受けると、ノード１０１は、パケット格納部１３２に格納されていたパケットをスイッチ２２へ出力する。
【００２３】
次に、図２を参照して、本実施例に係る情報処理装置の詳細について説明する。図２は、実施例１に係る情報処理装置のブロック図である。
【００２４】
ノード１０は、プロセッサ１１、主記憶部１２、通信装置であるネットワークインタフェース１３及びポート１４を有する。プロセッサ１１、主記憶部１２及びネットワークインタフェース１３は、相互にバスで接続されている。ポート１４は、ネットワークインタフェース１３の一部と考えることもできる。
【００２５】
プロセッサ１１は、演算処理装置である。プロセッサ１１は、ネットワークインタフェース１３からＤＭＡ（Direct  Memory  Access）要求を受ける。そして、プロセッサ１１は、データが格納されているアドレスをネットワークインタフェース１３へ送信する。さらに、プロセッサ１１は、バスの使用許可及びメッセージ送信要求をネットワークインタフェース１３へ送信する。そして、プロセッサ１１は、バスの解放を行う。
【００２６】
その後、プロセッサ１１は、ネットワークインタフェース１３からＤＭＡ完了の通知を受けると、バスの使用権を回復する。
【００２７】
主記憶部１２は、格納領域毎にアドレスを有する。そして、主記憶部１２は、各アドレスに対応する格納領域にデータを格納する。
【００２８】
次に、ネットワークインタフェース１３について説明する。ネットワークインタフェース１３は、図２に示すように、ＤＭＡ処理部１３１、パケット格納部１３２、制御部１３３及びパケット送信部１３４を有する。そして、ネットワークインタフェース１３は、ポート１４を介してスイッチ２０と接続される。
【００２９】
ＤＭＡ処理部１３１は、ＤＡＭの対象とするデータの情報とともにＤＭＡ要求をプロセッサ１１へ送信する。その後、ＤＭＡ処理部１３１は、データを送信するための各パケットに格納されるデータのアドレスとデータ長を後述するＤＭＡ管理部３３１から受信する。ここで、データは、複数のパケットに分割されて送信される。そこで、以下では、データが格納されるパケットの先頭のパケットを「先頭パケット」と言い、他の先頭パケットに続くパケットを「後続パケット」という。
【００３０】
そして、ＤＭＡ処理部１３１は、ＤＭＡ管理部３３１から受信したアドレスから始まる指定されたデータ長分のデータを主記憶部１２から順次取得する。そして、ＤＭＡ処理部１３１は、取得したデータを格納したパケットを生成する。その後、ＤＭＡ処理部１３１は、生成したパケットをパケット格納部１３２へ送信する。
【００３１】
ここで、ＤＭＡ処理部１３１は、パケットに格納するデータの開始アドレス及びデータ長がＤＭＡ管理部３３１から送られてくる限り、順次指定されたアドレス及びデータ長を基にパケットを生成し、パケット格納部１３２へ格納する。
【００３２】
ＤＭＡ処理部１３１は、ＤＭＡ管理部３３１からＤＭＡ終了の通知を受けると、ＤＭＡ完了の通知をプロセッサ１１へ送信する。このＤＭＡ処理部１３１が、「生成部」の一例にあたる。
【００３３】
パケット格納部１３２は、ＤＭＡ処理部１３１から送信されたパケットを順次格納し、蓄積する。このパケット格納部１３２が、「格納部」の一例にあたる。
【００３４】
制御部１３３は、ＤＭＡ処理部１３１が実行するＤＭＡ処理を制御する。制御部１３３は、ＤＭＡ管理部３３１及び生成数制御部３３２を有する。
【００３５】
ＤＭＡ管理部３３１は、プロセッサ１１からメッセージ送信要求とともにＤＭＡの対象であるデータのアドレスを受信する。そして、ＤＭＡ管理部３３１は、ＤＭＡの対象であるデータをパケットに格納できるサイズに分割するために、各パケットに格納するデータの先頭のアドレス及びデータ長を求める。
【００３６】
次に、ＤＭＡ管理部３３１は、生成するパケットの数をＮ個に制限する指示を生成数制御部３３２から受けたか否かを判定する。
【００３７】
生成するパケットの数の制限を受けていない場合、ＤＭＡ管理部３３１は、先頭パケットからそれに続く全ての後続パケットのそれぞれに格納するデータの先頭のアドレス及びデータ長を順次ＤＭＡ処理部１３１へ送信する。
【００３８】
これに対して、生成するパケットの数をＮ個に制限する指示を受けた場合、ＤＭＡ管理部３３１は、先頭パケットからそれに続く後続パケットのそれぞれに格納するデータの先頭のアドレス及びデータ長を順次ＤＭＡ処理部１３１へ送信する。そして、ＤＭＡ管理部３３１は、パケット格納部１３２に格納されているパケットの数がＮ個になるとアドレス及びデータ長のＤＭＡ処理部１３１への送信を一次停止する。その後、パケット格納部１３２に格納されているパケットの数がＮ個になるように、ＤＭＡ管理部３３１は、ＤＭＡ処理部１３１にアドレス及びデータ長を順次送る。このように、パケット格納部１３２に格納されているパケットの数がＮ個になるようにＤＭＡ処理部１３１にパケットを生成させている状態を、「パケットの生成数が制限された状態」という。
【００３９】
ここで、パケットの生成数が制限された状態で、生成数制御部３３２から制限の解除の通知を受けると、ＤＭＡ管理部３３１は、パケットの生成数の制限なく各パケットに格納される残りのデータの先頭のアドレス及びデータ長をＤＭＡ処理部１３１へ送信する。ここで、生成数制御部３３２からパケットの生成数をＮ個に制限する指示を再度受けた場合、ＤＭＡ管理部３３１は、パケットの生成数が制限された状態に戻る。
【００４０】
また、ＤＭＡ管理部３３１は、先頭パケットの生成が完了すると、先頭パケットの生成の完了通知をＤＭＡ処理部１３１から受ける。先頭パケットの完了通知を受けると、ＤＭＡ管理部３３１は、先頭パケットの送信指示をパケット送信部１３４に送信する。さらに、ＤＭＡ管理部３３１は、先頭パケットの送信指示の出力を生成数制御部３３２へ通知する。
【００４１】
また、後続パケットの場合、ＤＭＡ管理部３３１は、アドレス及びデータ長をＤＭＡ処理部１３１へ送信するタイミングで、そのパケットの送信指示をパケット送信部１３４へ送信する。さらに、ＤＭＡ管理部３３１は、パケットの送信指示の出力を生成数制御部３３２へ送信する。
【００４２】
そして、ＤＭＡ管理部３３１は、ＤＭＡの対象であるデータを送信するための全パケットの生成が完了したか否かを判定する。全パケットの生成が完了していなければ、ＤＭＡ管理部３３１は、アドレス及びデータ長の送信を継続する。これに対して、全パケットの生成が完了した場合、ＤＭＡ管理部３３１は、ＤＭＡ終了の通知をＤＭＡ処理部１３１へ送信する。
【００４３】
生成数制御部３３２は、パケット生成にかかる時間である「パケット生成時間」と予め記憶する。パケット生成時間は、例えば、以下のように求めることができる。ＤＭＡ処理部１３１が、主記憶部１２へデータを要求してからそのデータを格納したパケットをパケット格納部１３２に格納されるまでの時間を「パケット格納までのレイテンシ」とする。また、データ長を主記憶部１２とネットワークインタフェース１３との間の帯域幅で割った値を「データ転送時間」とする。パケット格納までのレイテンシ及びデータ転送時間は、仕様書から取得してもよいし、実際にパケット作成時の経過時間を計測することで求めてもよい。この場合、パケット生成時間は、パケット格納までのレイテンシとデータ転送時間とを加算した値として求められる。
【００４４】
生成数制御部３３２は、各パケットの送信指示の出力の通知をＤＭＡ管理部３３１から受信する。その後、生成数制御部３３２は、送信指示に対応する送信許可をパケット送信部１３４から受信する。そして、生成数制御部３３２は、送信指示が出力されてから送信許可を受信するまでの時間である「送信許可時間」を算出する。例えば、生成数制御部３３２は、送信許可を受信した時刻からパケットの送信指示がＤＭＡ管理部３３１から出力された時刻を減算することで送信許可時間を算出する。この送信許可時間が、「ネットワークの状態」の一例にあたる。
【００４５】
次に、生成数制御部３３２は、送信許可時間とパケット生成時間とを比較する。送信許可時間がパケット生成時間より長い場合、生成数制御部３３２は、パケットの生成数をＮ個に制限することをＤＭＡ管理部３３１に通知する。
【００４６】
また、パケットの生成数が制限された状態で、送信許可時間がパケット生成時間より短くなった場合、生成数制御部３３２は、送信キャンセルをパケット送信部１３４から受信したか否かを判定する。送信キャンセルを受信した場合、生成数制御部３３２は、パケットの生成数の制限の解除をＤＭＡ管理部３３１に通知する。これに対して、送信キャンセルを受信していない場合、生成数制御部３３２は、パケットの生成数をＮ個に制限した状態を維持する。なぜなら、パケットの送信がキャンセルされていない場合、送信対象のパケットがすでに生成されていない状態である。この場合、既に多数のパケットがパケット格納部１３２に格納されていることが考えられる。そのため、送信許可時間がパケット生成時間より短いとしても、パケットの生成数の制限を解除しパケットを制限なく生成した場合、生成されたパケットがパケット格納部１３２に蓄積していってしまうおそれがある。そこで、送信キャンセルを受けた場合、すなわち、パケットの生成がパケットの送信に追いついていない場合に、生成数制御部３３２は、パケットの生成数をＮ個に制限する。
【００４７】
ここで、パケットの生成数を制限する場合の個数Ｎの決定方法について説明する。スループットの低下を防ぐために、Ｎは、例えば、Ｎ＝パケット生成時間／（パケット送信時間＋送信許可が戻るまでの最短時間）とすることができる。ここで、パケット送信時間は、送信許可を受けてから、スイッチ２０へパケットの送信が完了するまでの時間である。また、送信許可が戻るまでの最短時間とは、ＤＭＡ管理部３３１がパケットの送信指示をパケット送信部１３４へ出力した後、生成数制御部３３２が送信許可をパケット送信部１３４から受信するまでの最短時間である。すなわち、パケット送信時間に送信許可が戻るまでの最短時間を加算した時間が、次のパケットを送るまでの最短時間と考えることができる。
【００４８】
次のパケットを送るまでの最短時間が、パケット生成時間と等しければ、パケットの送信を開始してから後続パケットを生成すればよいので、スループットの低下を防ぐには、生成しておく後続パケット数は高々１となる。すなわち、この場合、Ｎ＝１とすることができる。
【００４９】
図３は、Ｎ＝１の場合のパケットの生成及び送信を説明するための図である。図３は、横軸が時間の経過を表す。ここでは、パケットＡ及びＢを処理する場合で説明する。処理２０１は、パケットＡの送信時間である。また、処理２０２は、パケットＢに対する送信許可時間である。さらに、処理２０３は、パケットＢの生成時間である。Ｎ＝１の場合、時間Ｔ３＝時間Ｔ１＋時間Ｔ２である。すなわち、パケットＢの送信許可を受信したときには、既にパケットＢが生成されており、ネットワークインタフェース１３は、直ぐにパケットＢを送信できる。これにより、ネットワークインタフェース１３は、スループットの低下を防ぐことができる。
【００５０】
しかし、パケット生成時間が次のパケットを送るまでの最短時間の２倍かかるとすると、生成しておく後続パケット数は少なくとも２つ生成しておくことが好ましい。すなわちＮ＝２とすることが好ましい。この場合、Ｎ＝１とすると、パケットを送信しない期間が発生してしまい、スループットの低下を招いてしまう。
【００５１】
図４は、Ｎ＝２の場合のパケットの生成及び送信を説明するための図である。図４は、横軸が時間の経過を表す。ここでは、パケットＡ〜Ｄを処理する場合で説明する。処理２１１は、パケットＡの送信時間である。また、処理２１２は、パケットＢに対する送信許可時間である。また、処理２１３は、パケットＢの送信時間である。また、処理２１４は、パケットＣに対する送信許可時間である。また、処理２１５は、パケットＣの送信時間である。また、処理２１６は、パケットＤに対する送信許可時間である。さらに、処理２１７は、パケットＣの生成時間であり、処理２１８は、パケットＤの生成時間である。ここでは、処理２１１及び２１７の前にパケットＡ及びＢの２つのパケットの生成が完了した場合で説明する。
【００５２】
Ｎ＝２の場合、パケットを３つ送信し、且つ後続のパケットの送信許可を受けるまでの時間が、２つのパケットを生成する時間に等しい。すなわち、時間Ｔ１７＝時間Ｔ１１＋時間Ｔ１２＋時間Ｔ１３＋時間Ｔ１４＋時間Ｔ１５＋時間Ｔ１６である。これにより、パケットＣの送信許可を受信したときには、既にパケットＣが生成されており、ネットワークインタフェース１３は、直ぐにパケットＣを送信できる。さらに、パケットＤの送信許可を受信したときには、既にパケットＤが生成されており、ネットワークインタフェース１３は、直ぐにパケットＤを送信できる。これにより、ネットワークインタフェース１３は、スループットの低下を防ぐことができる。
【００５３】
また、制限の個数であるＮの他の決定方法として、スイッチ２０に接続されるポート数を用いて、Ｎ＝（バッファサイズ／（パケットサイズ×ポート数））としてもよい。
【００５４】
パケット送信部１３４は、パケットの送信指示をＤＭＡ管理部３３１から受信する。そして、パケット送信部１３４は、ポート１４を介して、指定されたパケットの送信要求をスイッチ２０の宛先ポートへ送信する。その後、スイッチ２０の宛先ポートから送信許可を受信すると、パケット送信部１３４は、送信許可を生成数制御部３３２へ送信する。また、パケット送信部１３４は、受信した送信許可に対応するパケットがパケット格納部１３２にあるか否かを判定する。
【００５５】
パケットがパケット格納部１３２にあれば、パケット送信部１３４は、そのパケットをポート１４を介して、スイッチ２０の宛先ポートへ送信する。
【００５６】
これに対して、パケット格納部１３２に送信許可に対応するパケットがない場合、パケット送信部１３４は、送信キャンセルをスイッチ２０へ送信する。さらに、パケット送信部１３４は、送信キャンセルを生成数制御部３３２へ送信する。このパケット送信部１３４が、「送信部」の一例にあたる。
【００５７】
スイッチ２０は、パケットの送信要求をパケット送信部１３４から受信する。そして、スイッチ２０は、送信要求で指定された宛先ポートのバッファ２０１（図１参照）に空きがあるか否かを判定する。バッファ２０１に空きが有る場合、スイッチ２０は、送信許可をパケット送信部１３４へ送信する。
【００５８】
これに対して、バッファ２０１に空きが無ければ、スイッチ２０は、その宛先ポートのバッファ２０１に空きが出るまで待機し、空きができると、スイッチ２０は、送信許可をパケット送信部１３４へ送信する。
【００５９】
次に、図５を参照して、本実施例に係るネットワークインタフェース１３によるパケット生成の制御の流れについて説明する。図５は、実施例１に係るネットワークインタフェースによるパケット生成の制御のフローチャートである。
【００６０】
ＤＭＡ管理部３３１は、メッセージ送信要求をプロセッサ１１から受信する（ステップＳ１０１）。そして、ＤＭＡ管理部３３１は、メッセージ送信要求が指定したデータをパケットに格納できるサイズに分割するために、先頭パケット及びそれに続く各後続パケットに入るデータの先頭アドレス及びデータ長を算出する。
【００６１】
次に、ＤＭＡ管理部３３１は、先頭パケットに入るデータの先頭アドレスとデータ長をＤＭＡ処理部１３１へ送信する（ステップＳ１０２）。
【００６２】
そして、ＤＭＡ管理部３３１は、ＤＭＡ処理部１３１からの通知により、先頭パケットの生成が完了したか否かを判定する（ステップＳ１０３）。先頭パケットの生成が完了していない場合（ステップＳ１０３：否定）、ＤＭＡ管理部３３１は、先頭パケットの生成が完了するまで待機する。
【００６３】
これに対して、先頭パケットの生成が完了した場合（ステップＳ１０３：肯定）、ＤＭＡ管理部３３１は、先頭パケットの送信指示をパケット送信部１３４に送信する（ステップＳ１０４）。さらに、ＤＭＡ管理部３３１は、送信指示の出力を生成数制御部３３２に通知する。
【００６４】
その後、生成数制御部３３２は、送信指示に対応する送信許可の通知をパケット送信部１３４から受信する（ステップＳ１０５）。
【００６５】
次に、生成数制御部３３２は、送信許可時間を算出する。そして、生成数制御部３３２は、算出した送信許可時間が予め決められたパケット生成時間以上か否かを判定する（ステップＳ１０６）。送信許可時間がパケット生成時間以上の場合（ステップＳ１０６：肯定）、生成数制御部３３２は、生成するパケットの数をＮ個に制限することをＤＭＡ管理部３３１に通知する。ＤＭＡ管理部３３１は、通知を受けて、生成するパケットの数をＮ個に制限する（ステップＳ１０７）。
【００６６】
これに対して、送信許可時間がパケット生成時間未満の場合（ステップＳ１０６：否定）、生成数制御部３３２は、送信キャンセルをパケット送信部１３４から受信したか否かを判定する（ステップＳ１０８）。送信キャンセルを受信していない場合（ステップＳ１０８：否定）、パケット生成の処理は、ステップＳ１１０へ進む。
【００６７】
これに対して、送信キャンセルを受信した場合（ステップＳ１０８：肯定）、生成数制御部３３２は、制限の解除をＤＭＡ管理部３３１に通知する。ＤＭＡ管理部３３１は、通知を受けて、生成するパケットの数の制限を解除する（ステップＳ１０９）。その後、パケット生成の処理は、ステップＳ１１１へ進む。
【００６８】
そして、ＤＭＡ管理部３３１は、生成済みのパケットがＮ個未満か否かを判定する（ステップＳ１１０）。生成済みのパケットがＮ個の場合（ステップＳ１１０：否定）、ＤＭＡ管理部３３１は、ステップＳ１１３へ進む。
【００６９】
これに対して、生成済みのパケットがＮ個未満の場合（ステップＳ１１０：肯定）、ＤＭＡ管理部３３１は、後続パケットに入るデータのアドレスとデータ長をＤＭＡ処理部１３１へ送信する（ステップＳ１１１）。
【００７０】
次に、ＤＭＡ管理部３３１は、後続パケットの送信指示をパケット送信部１３４へ送信する（ステップＳ１１２）。さらに、ＤＭＡ管理部３３１は、送信指示の出力を生成数制御部３３２へ通知する。
【００７１】
その後、ＤＭＡ管理部３３１は、パケット送信部１３４に対して全てのパケットの送信指示が完了したか否かを判定する（ステップＳ１１３）。送信指示が完了していないパケットが残っている場合（ステップＳ１１３：否定）、パケット生成の処理はステップＳ１０６へ戻る。これに対して、全てのパケットの送信指示が完了した場合（ステップＳ１１３：肯定）、ＤＭＡ管理部３３１は、パケット生成の処理を終了する。
【００７２】
次に、図６を参照して、パケット送信部１３４によるパケット送信処理の流れについて説明する。図６は、パケット送信処理のフローチャートである。
【００７３】
パケット送信部１３４は、パケットの送信指示をＤＭＡ管理部３３１から受信する（ステップＳ２０１）。
【００７４】
次に、パケット送信部１３４は、スイッチ２０の宛先ポートにパケットの送信要求を送信する（ステップＳ２０２）。
【００７５】
その後、パケット送信部１３４は、送信要求に対する応答として送信許可をスイッチ２０から受信する（ステップＳ２０３）。
【００７６】
そして、パケット送信部１３４は、送信許可の受信を生成数制御部３３２へ通知する（ステップＳ２０４）。
【００７７】
さらに、パケット送信部１３４は、受信した送信許可に対応するパケットの生成が完了したか否かを判定する（ステップＳ２０５）。パケットの生成が完了していない場合（ステップＳ２０５：否定）、パケット送信部１３４は、受信した送信許可に対応するパケットの送信をキャンセルする（ステップＳ２０６）。さらに、パケット送信部１３４は、送信キャンセルを生成数制御部３３２へ送信する。その後、パケット送信部１３４は、ステップＳ２０２へ戻る。
【００７８】
これに対して、パケットの生成が完了た場合（ステップＳ２０５：肯定）、パケット送信部１３４は、創始許可を受けたパケットをスイッチ２０の宛先ポートへ送信する（ステップＳ２０７）。
【００７９】
以上に説明したように、本実施例に係るネットワークインタフェース及びそれを備えた情報処理装置は、スイッチへのパケット送信を開始するまでに時間がかかる場合、生成するパケットの数を制限する。すなわち、宛先ポートの詰りが発生した場合に、生成するパケットの数が制限される。これにより、宛先ポートの詰まりによる性能の低下を軽減することができる。
【実施例２】
【００８０】
図７は、実施例２に係る情報処理装置のブロック図である。本実施例に係るネットワークインタフェース１３は、スイッチ２０のバッファ使用率及びパケット送信時間を基にネットワークの状態を判定することが実施例１と異なる。以下の説明では、各部の実施例１と同様の機能については説明を省略する。
【００８１】
生成数制御部３３２は、送信指示に対応するパケットが送信されるスイッチ２０の宛先ポートのバッファ２０１（図１参照）のバッファ使用率及びパケット送信時間をスイッチ２０から受信する。ここで、パケット送信時間とは、宛先ポートへパケットが送信されてからそのパケットがその宛先ポートから送出されるまでにかかる時間である。このスイッチ２０の宛先ポートのバッファ使用率及びパケット送信時間が、「ネットワークの状態」の一例にあたる。
【００８２】
そして、生成数制御部３３２は、宛先ポートのバッファ２０１の使用率が１００％か否かを判定する。宛先ポートのバッファ２０１の使用率が１００％でなければ、生成数制御部３３２は、生成するパケットの数の制限を行わないと決定する。そして、パケットの生成数が制限された状態であれば、生成数制御部３３２は、制限の解除をＤＭＡ管理部３３１へ通知する。
【００８３】
これに対して、バッファ２０１の使用率が１００％の場合、生成数制御部３３２は、パケットの送信時間が予め決められたパケットの生成時間以上か否かを判定する。パケットの送信時間が予め決められたパケットの生成時間以上の場合、生成数制御部３３２は、生成するパケットの数の制限をＤＭＡ管理部３３１へ通知する。一方、パケットの送信時間が予め決められたパケットの生成時間未満の場合、生成数制御部３３２は、生成するパケットの数の制限を行わないと決定する。そして、パケットの生成数が制限された状態であれば、生成数制御部３３２は、制限の解除をＤＭＡ管理部３３１へ通知する。
【００８４】
スイッチ２０は、自己に備わった各ポートのバッファ２０１の使用率及び各ポートのパケット送信時間を監視する。そして、スイッチ２０は、パケット送信部１３４から送信要求を受信すると、送信要求の対象となる宛先ポートのバッファ２０１の使用率及びパケット送信時間を取得する。その後、スイッチ２０は、取得した宛先ポートのバッファ２０１の使用率及びパケット送信時間を、生成数制御部３３２へ送信する。
【００８５】
次に、図８を参照して、本実施例に係るネットワークインタフェース１３によるパケット生成の制御の流れについて説明する。図８は、実施例２に係るネットワークインタフェースによるパケット生成の制御のフローチャートである。
【００８６】
ＤＭＡ管理部３３１は、メッセージ送信要求をプロセッサ１１から受信する（ステップＳ３０１）。そして、ＤＭＡ管理部３３１は、メッセージ送信要求が指定したデータをパケットに格納できるサイズに分割するために、先頭パケット及びそれに続く各後続パケットに入るデータの先頭アドレス及びデータ長を算出する。
【００８７】
次に、ＤＭＡ管理部３３１は、先頭パケットに入るデータの先頭アドレスとデータ長をＤＭＡ処理部１３１へ送信する（ステップＳ３０２）。
【００８８】
そして、ＤＭＡ管理部３３１は、ＤＭＡ処理部１３１からの通知により、先頭パケットの生成が完了したか否かを判定する（ステップＳ３０３）。先頭パケットの生成が完了していない場合（ステップＳ３０３：否定）、ＤＭＡ管理部３３１は、先頭パケットの生成が完了するまで待機する。
【００８９】
これに対して、先頭パケットの生成が完了した場合（ステップＳ３０３：肯定）、ＤＭＡ管理部３３１は、先頭パケットの送信指示をパケット送信部１３４に送信する（ステップＳ３０４）。
【００９０】
その後、生成数制御部３３２は、送信指示に対応するパケットが送信されるスイッチ２０の宛先ポートのバッファ２０１の使用率及びパケット送信時間をスイッチ２０から受信する（ステップＳ３０５）。
【００９１】
そして、生成数制御部３３２は、宛先ポートのバッファ２０１の使用率が１００％で、且つ、パケット送信時間が予め決められたパケット生成時間以上か否かを判定する（ステップＳ３０６）。宛先ポートのバッファ２０１の使用率が１００％で、且つ、パケット送信時間がパケット生成時間以上の場合（ステップＳ３０６：肯定）、生成数制御部３３２は、生成するパケットの数をＮ個に制限することをＤＭＡ管理部３３１に通知する。ＤＭＡ管理部３３１は、通知を受けて、生成するパケットの数をＮ個に制限する（ステップＳ３０７）。
【００９２】
これに対して、宛先ポートのバッファ２０１の使用率が１００％未満、又は、パケット送信時間がパケット生成時間未満の場合（ステップＳ３０６：否定）、生成数制御部３３２は、送信キャンセルをパケット送信部１３４から受信したか否かを判定する（ステップＳ３０８）。送信キャンセルを受信していない場合（ステップＳ３０８：否定）、パケット生成の処理は、ステップＳ３１０へ進む。
【００９３】
これに対して、送信キャンセルを受信した場合（ステップＳ３０８：肯定）、生成数制御部３３２は、制限の解除をＤＭＡ管理部３３１に通知する。ＤＭＡ管理部３３１は、通知を受けて、生成するパケットの数の制限を解除する（ステップＳ３０９）。その後、パケット生成の処理は、ステップＳ３１１へ進む。
【００９４】
そして、ＤＭＡ管理部３３１は、生成済みのパケットがＮ個未満か否かを判定する（ステップＳ３１０）。生成済みのパケットがＮ個の場合（ステップＳ３１０：否定）、ＤＭＡ管理部３３１は、ステップＳ３１３へ進む。
【００９５】
これに対して、生成済みのパケットがＮ個未満の場合（ステップＳ３１０：肯定）、ＤＭＡ管理部３３１は、後続パケットに入るデータのアドレスとデータ長をＤＭＡ処理部１３１へ送信する（ステップＳ３１１）。
【００９６】
次に、ＤＭＡ管理部３３１は、後続パケットの送信指示をパケット送信部１３４へ送信する（ステップＳ３１２）。さらに、ＤＭＡ管理部３３１は、送信指示の出力を生成数制御部３３２へ通知する。
【００９７】
その後、ＤＭＡ管理部３３１は、パケット送信部１３４に対して全てのパケットの送信指示が完了したか否かを判定する（ステップＳ３１３）。送信指示が完了していないパケットが残っている場合（ステップＳ３１３：否定）、パケット生成の処理はステップＳ３０６へ戻る。これに対して、全てのパケットの送信指示が完了した場合（ステップＳ３１３：肯定）、ＤＭＡ管理部３３１は、パケット生成の処理を終了する。
【００９８】
以上に説明したように、本実施例に係るネットワークインタフェースは、バッファ使用率及びパケット送信時間を基にネットワークの状態を判定し、生成するパケットの数を制限するか否かを決定する。このように、パケットを送信するネットワークインタフェースから送信先までの間のネットワークの状態を判断できる情報であれば、どのような情報を用いても生成するパケット数を制限するか否かを判定することができる。したがって、取得できる情報に応じて、生成するパケット数の制限の判定方法を変更でき、システムに合わせた柔軟な運用を行うことができる。
【００９９】
（ハードウェア構成）
次に、図９を参照して各実施例に係るネットワークインタフェースのハードウェア構成について説明する。図９は、情報処理装置のハードウェア構成の一例の図である。
【０１００】
図９に示すように、ネットワークインタフェース１３は、プロセッサ９１、ＤＭＡコントローラ９２及び送信バッファ９３を有する。
【０１０１】
プロセッサ９１は、ＤＭＡコントローラ９２及び送信バッファ９３とバスで接続されている。また、プロセッサ９１、ＤＭＡコントローラ９２及び送信バッファ９３を結ぶバスは、ノード１０のメインのプロセッサ１１及びメモリ９０を接続するバスと接続されている。さらに、プロセッサ９１、ＤＭＡコントローラ９２及び送信バッファ９３を結ぶバスは、ポート１４に接続されている。
【０１０２】
メモリ９０は、例えば図２に例示した主記憶部１２の機能を実現する。
【０１０３】
また、プロセッサ９１は、図２に例示したＤＭＡ管理部３３１及び生成数制御部３３２を含む制御部１３３、並びに、パケット送信部１３４の機能を実現する。
【０１０４】
また、送信バッファ９３は、図２に例示したパケット格納部１３２の機能を実現する。さらに、ＤＭＡコントローラ９２は、図２に例示したＤＭＡ処理部１３１の機能を実現する。
【符号の説明】
【０１０５】
１０  ノード
１１  プロセッサ
１２  主記憶部
１３  ネットワークインタフェース
１４  ポート
２０  スイッチ
１３１  ＤＭＡ処理部
１３２  パケット格納部
１３３  制御部
１３４  パケット送信部
３３１  ＤＭＡ管理部
３３２  生成数制御部
【図１】
0006402576.tif 000002
【図２】
0006402576.tif 000003
【図３】
0006402576.tif 000004
【図４】
0006402576.tif 000005
【図５】
0006402576.tif 000006
【図６】
0006402576.tif 000007
【図７】
0006402576.tif 000008
【図８】
0006402576.tif 000009
【図９】
0006402576.tif 000010