(57)【要約】【課題】メッセージ交換方式の通信をネットワークインタフェースによって実現する際の通信遅延が短い情報処理装置、情報処理方法および情報処理プログラムを提供することを目的とする。【解決手段】ネットワークを介して外部と通信を行う情報処理装置１０であって、ネットワークを介して外部装置から受信メッセージを受信するデータ受信手段１１０と、受信メッセージを、受信メッセージの送信先となるホスト装置２０における受信処理においてはじめに利用すべきデータを含む第１メッセージと、受信処理において前記第１メッセージよりも後に利用すべきデータを含む第２メッセージとに分割する分割手段１２０と、第１メッセージを格納する第１メモリ１６０と、第１メモリに比べてアクセス遅延の大きいメモリであって、対応する第１メッセージを識別可能に第２メッセージを格納する第２メモリ２００とを備えた。【選択図】        図１
2008035202.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して外部と通信を行う情報処理装置であって、
前記ネットワークを介して外部装置から受信メッセージを受信するデータ受信手段と、
前記受信メッセージを、前記受信メッセージの送信先となるホスト装置における受信処理においてはじめに利用すべきデータを含む第１メッセージと、前記受信処理において前記第１メッセージよりも後に利用すべきデータを含む第２メッセージとに分割する分割手段と、
前記分割手段により得られた前記第１メッセージを格納する第１メモリと、
前記第１メモリに比べてアクセス遅延の大きいメモリであって、対応する前記第１メッセージを識別可能に前記第２メッセージを格納する第２メモリと
を備えたことを特徴とする情報処理装置。
【請求項２】
前記第２メモリの容量は、前記第１メモリの容量に比べて大きいことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１メッセージは、前記受信メッセージの選択を制御するための情報である制御情報を含むことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記第１メッセージは、前記受信メッセージのうち先頭から所定の位置までのデータであって、
前記第２メッセージは、前記受信メッセージのうち前記第１メッセージ以外のデータであることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第１メモリは、前記第１メッセージに対応付けて前記第２メモリにおける前記第２メッセージの格納先を示すポインタをさらに格納することを特徴とする請求項１から４のいずれか一項に記載の情報処理装置。
【請求項６】
前記第１メモリは、固定長の複数のエントリを有し、
各エントリは、前記第１メッセージと、予め定められたデータサイズの前記ポインタとを格納し、
前記エントリのデータサイズと前記ポインタのデータサイズにより定まる分割位置を示す分割位置情報を保持する分割位置情報保持手段をさらに備え、
前記分割手段は、前記分割位置情報が示す前記分割位置で前記受信メッセージを分割することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
外部からの指示により分割位置情報を前記分割位置情報保持手段に設定する分割位置情報設定手段をさらに備えたことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記受信メッセージのデータサイズを特定するデータサイズ特定手段と、
前記エントリのデータサイズを保持するエントリサイズ保持手段と、
前記受信メッセージの前記データサイズと、前記エントリのデータサイズとを比較する第１データサイズ比較手段と、
前記受信メッセージの前記データサイズが前記エントリの前記データサイズよりも大きい場合に、前記分割手段に対し前記受信メッセージの分割を指示する分割制御手段と
をさらに備えたことを特徴とする請求項６または７に記載の情報処理装置。
【請求項９】
前記受信メッセージのうち前記データサイズが格納される位置を示すサイズ位置情報を保持するサイズ位置情報保持手段をさらに備え、
前記データサイズ特定手段は、前記サイズ位置情報保持手段が保持する前記サイズ位置情報に基づいて、前記データサイズを特定することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
外部からの指示により前記サイズ位置情報を前記サイズ位置情報保持手段に設定するサイズ位置情報設定手段をさらに備えたことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記分割制御手段は、前記受信メッセージの前記データサイズが前記エントリの前記データサイズよりも小さい場合に、前記分割手段に対し前記受信メッセージの分割を行わないことを指示し、前記第１メモリの前記エントリに前記受信メッセージ全体を格納することを特徴とする請求項８から１０のいずれか一項に記載の情報処理装置。
【請求項１２】
前記ホスト装置から前記受信メッセージの提供を指示する受信メッセージ提供要求を受信する受信メッセージ要求受信手段と、
前記受信メッセージ要求を受信した場合に、前記ホスト装置に前記受信メッセージ要求が示す前記受信メッセージに対応する前記第１メッセージを前記第１メモリから抽出する前半メッセージ抽出手段と、
前記第１メッセージを前記ホスト装置に送信する第１メッセージ送信手段と、
前記受信メッセージ要求を受信した場合に、前記第２メモリから前記第１メッセージに対応する前記第２メッセージを抽出する第２メッセージ抽出手段と、
前記第２メッセージ抽出手段が抽出した前記第２メッセージを保持する第３メモリと、
前記ホスト装置から前記第２メッセージの提供を指示する第２メッセージ要求を受信する第２メッセージ要求受信手段と、
前記第２メッセージ要求を受信した場合に、前記第３メモリに保持されている前記第２メッセージを前記ホスト装置に送信する第２メッセージ送信手段と
を備えたことを特徴とする請求項１から１１のいずれか一項に記載の情報処理装置。
【請求項１３】
前記第２メッセージのデータサイズと予め定められた基準データサイズとを比較する第２データサイズ比較手段と、
前記第２メッセージのデータサイズが前記基準データサイズよりも小さい場合に、前記第２メッセージの前記第３メモリへのプリフェッチを開始するプリフェッチ制御手段と
をさらに備えたことを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
前記第１メモリは、前記第２メモリを退避先とするキャッシュメモリであることを特徴とする請求項１から１３のいずれか一項に記載の情報処理装置。
【請求項１５】
前記データ受信手段が前記受信メッセージを受信するごとに、当該受信メッセージに対応する前記第１メッセージを前記第１メモリに格納し、前記第１メモリに前記第１メッセージを格納する容量がない場合には、前記第１メモリに既に格納されている既存第１メッセージのうち、対応する受信メッセージ全体のデータサイズが最も大きい前記既存第１メッセージのエントリをリプレースする第１メモリ制御手段をさらに備えたことを特徴とする請求項１４に記載の情報処理装置。
【請求項１６】
前記データ受信手段が前記受信メッセージを受信するごとに、当該受信メッセージに対応する前記第１メッセージを前記第１メモリに格納し、前記第１メモリに前記第１メッセージを格納する容量がない場合には、前記第１メモリに既に格納されている既存第１メッセージのうち、最後に書き込まれた前記既存第１メッセージのエントリをリプレースする第１メモリ制御手段をさらに備えたことを特徴とする請求項１４に記載の情報処理装置。
【請求項１７】
ネットワークインタフェースを介して外部からメッセージを受信する情報処理装置であって、
前記ネットワークインタフェースにメッセージの提供を要求する受信メッセージ要求手段と、
前記ネットワークインタフェースの第１メモリに保持されている前記メッセージを前記ネットワークインタフェースから受信するメッセージ受信手段と、
前記受信メッセージ受信手段が受信した受信メッセージに含まれる制御情報に基づいて、当該受信メッセージを受信するか否かを検査する検査手段と、
前記検査手段が前記受信メッセージを受信すると判断した場合に、前記受信メッセージの実際のデータサイズと当該受信メッセージに記載されている当該受信メッセージのデータサイズとを比較するデータサイズ比較手段と、
前記受信メッセージの実際のデータサイズが当該受信メッセージに記載されているデータサイズに比べて大きい場合に、前記受信メッセージに続く第２メッセージの提供を要求する第２メッセージ要求手段と、
前記ネットワークインタフェースのメモリであって、前記第１メモリに比べてアクセス遅延の大きい第２メモリに保持されている第２メッセージを前記ネットワークインタフェースから受信する第２メッセージ受信手段と
を備えたことを特徴とする情報処理装置。
【請求項１８】
ネットワークを介して外部と通信を行う情報処理方法であって、
前記ネットワークを介して外部装置から受信メッセージを受信するデータ受信ステップと、
前記受信メッセージを、前記受信メッセージの送信先となるホスト装置における受信処理においてはじめに利用すべきデータを含む第１メッセージと、前記受信処理において前記第１メッセージよりも後に利用すべきデータを含む第２メッセージとに分割する分割ステップと、
前記分割ステップにおいて得られた前記第１メッセージを第１メモリに格納する第１格納ステップと、
前記第１メモリに比べてアクセス遅延の大きいメモリであって、対応する前記第１メッセージを識別可能に前記第２メッセージを第２メモリに格納する第２格納ステップと
を有することを特徴とする情報処理方法。
【請求項１９】
ネットワークインタフェースを介して外部からメッセージを受信する情報処理方法であって、
前記ネットワークインタフェースにメッセージの提供を要求する受信メッセージ要求ステップと、
前記ネットワークインタフェースの第１メモリに保持されている前記メッセージを前記ネットワークインタフェースから受信するメッセージ受信ステップと、
前記受信メッセージ受信ステップにおいて受信した受信メッセージに含まれる制御情報に基づいて、当該受信メッセージを受信するか否かを検査する検査ステップと、
前記検査ステップにおいて前記受信メッセージを受信すると判断した場合に、前記受信メッセージの実際のデータサイズと当該受信メッセージに記載されている当該受信メッセージのデータサイズとを比較するデータサイズ比較ステップと、
前記受信メッセージの実際のデータサイズが当該受信メッセージに記載されているデータサイズに比べて大きい場合に、前記受信メッセージに続く第２メッセージの提供を要求する第２メッセージ要求ステップと、
前記ネットワークインタフェースのメモリであって、前記第１メモリに比べてアクセス遅延の大きい第２メモリに保持されている第２メッセージを前記ネットワークインタフェースから受信する第２メッセージ受信ステップと
を有することを特徴とする情報処理方法。
【請求項２０】
ネットワークを介して外部と通信を行う情報処理をコンピュータに実行させる情報処理プログラムであって、
前記ネットワークを介して外部装置から受信メッセージを受信するデータ受信ステップと、
前記受信メッセージを、前記受信メッセージの送信先となるホスト装置における受信処理においてはじめに利用すべきデータを含む第１メッセージと、前記受信処理において前記第１メッセージよりも後に利用すべきデータを含む第２メッセージとに分割する分割ステップと、
前記分割ステップにおいて得られた前記第１メッセージを第１メモリに格納する第１格納ステップと、
前記第１メモリに比べてアクセス遅延の大きいメモリであって、対応する前記第１メッセージを識別可能に前記第２メッセージを第２メモリに格納する第２格納ステップと
を有することを特徴とする情報処理方法。
【請求項２１】
ネットワークインタフェースを介して外部からメッセージを受信する情報処理をコンピュータに実行させる情報処理プログラムであって、
前記ネットワークインタフェースにメッセージの提供を要求する受信メッセージ要求ステップと、
前記ネットワークインタフェースの第１メモリに保持されている前記メッセージを前記ネットワークインタフェースから受信するメッセージ受信ステップと、
前記受信メッセージ受信ステップにおいて受信した受信メッセージに含まれる制御情報に基づいて、当該受信メッセージを受信するか否かを検査する検査ステップと、
前記検査ステップにおいて前記受信メッセージを受信すると判断した場合に、前記受信メッセージの実際のデータサイズと当該受信メッセージに記載されている当該受信メッセージのデータサイズとを比較するデータサイズ比較ステップと、
前記受信メッセージの実際のデータサイズが当該受信メッセージに記載されているデータサイズに比べて大きい場合に、前記受信メッセージに続く第２メッセージの提供を要求する第２メッセージ要求ステップと、
前記ネットワークインタフェースのメモリであって、前記第１メモリに比べてアクセス遅延の大きい第２メモリに保持されている第２メッセージを前記ネットワークインタフェースから受信する第２メッセージ受信ステップと
を有することを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して外部と通信を行う情報処理装置、情報処理方法および情報処理プログラムに関するものである。
【背景技術】
【０００２】
従来から、ＰＣクラスタや並列計算機において、メッセージ交換方式の通信が用いられている。特に並列アプリケーションにおいては、ＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を代表とするメッセージ交換ライブラリを用いた通信が多用されている。
【０００３】
従来からＰＣクラスタ用のネットワークインタフェースとしては、Ｍｅｌｌａｎｏｘ  Ｔｅｃｈｎｏｌｏｇｉｅｓ社のＩｎｆｉｎｉｂａｎｄ ＨＣＡやＭｙｒｉｃｏｍ社のＭｙｒｉｎｅｔやＱｕａｄｒｉｃｓ社のＱｓＮＥＴ  ＩＩなどが、多くの利用形態でＭＰＩと組み合わせて用いられている（例えば「非特許文献１」参照）。
【０００４】
国内においては、試作レベルの例として、ＲＨｉＮＥＴ−２上にＭＰＩを実装した例が報告されている（例えば「非特許文献２」参照）。また、メモリスロットに装着されるＤＩＭＭｎｅｔ−２上にＭＰＩを実装したものが報告されている（例えば「非特許文献３」参照）。
【０００５】
これらはネットワーク側から受信するデータを、いったんネットワークインタフェース基板上のメモリや、ホストコンピュータ上の主記憶上に設けられたスワップアウト対象外に予約された領域に形成されるバッファに蓄えられるような構造になっている。
【０００６】
並列システムにおいては必ずしも受信側がメッセージ到着前に対応する受信関数を起動するという保証はない。また、複数の相手からネットワーク越しに到着するメッセージが必ずしも受信側が望んだ到着順序で受信側に届く保証はない。このため、上述のＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）などのメッセージ交換ライブラリでは、受信用関数を実行すると、まず上記のバッファの中から必要なメッセージを探しに行く必要がある。そして、受信キーに一致するメッセージを見つけるまで一致しなかったメッセージを別のバッファに退避する。
【０００７】
ＤＩＭＭｎｅｔ−２上にはＩＰＵＳＨ機構というハード的に制御されるポインタによりＦＩＦＯ動作を行う。また、送信元グループで分類された受信バッファに書き込む。このような動作により、受信側でのファームウェアの介在を防止している。また、バッファ検索成功確率向上によりＭＰＩの通信遅延の短縮を図っている（例えば、「非特許文献４」参照）。
【０００８】
【非特許文献１】“Ｐｅｒｆｏｒｍａｎｃｅ  ｃｏｍｐａｒｉｓｏｎｓ  ｏｆ  ＭＰＩ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎｓ  ｏｖｅｒ  ＩｎｆｉｎｉＢａｎｄ，  Ｍｙｒｉｎｅｔ  ａｎｄ  Ｑｕａｄｒｉｃｓ”, ＩＥＥＥ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＳＣ‘０３， （２００３年１１月）
【非特許文献２】“分散並列処理用ネットワークＲＨｉＮＥＴ−２の性能評価”, 先進的計算基盤システムシンポジウムＳＡＣＳＩＳ２００３, ＩＳＳＮ１３４４−０６４０  （２００３年５月）
【非特許文献３】“ＤＩＭＭｎｅｔ−２における通信ライブラリＭＰＩ−２の実現”，情報処理学会計算機アーキテクチャ研究会研究報告ＩＳＳＮ０９１９−６０７２  （２００６年２月）
【非特許文献４】“メッセージパッシングモデルを支援するパケット受信機構の実装”，情報処理学会計算機アーキテクチャ研究会研究報告ＩＳＳＮ０９１９−６０７２  （２００５年１１月）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述のバッファ検索操作は、ソフトウェアによる大容量のメモリ間のコピーを伴う。したがって、受信側が望んだ順番に所望のメッセージが届かない限りメッセージ受信にかかる遅延時間が大きくなってしまう。
【００１０】
例えば、Ｍｙｒｉｎｅｔ等のようにネットワークインタフェース基板上のメモリ容量が小さい場合は、ＭＰＩの受信バッファ全部をそこに搭載できるだけの容量がない。このため、ネットワークから流入するメッセージは速やかにＰＣＩバスなどの入出力バスを経由してホストの主記憶上に吐き出す必要がある。メッセージがネットワークインタフェース基板上に滞っているとネットワーク側が詰まり、輻輳の原因となるためである。
【００１１】
このためメッセージは、ＰＣＩバス等を経由して数回のＤＭＡを繰り返してホストの主記憶に設けられたＭＰＩの受信バッファに常時運ばれる。このため、通信遅延時間が大きくなってしまうという問題がある。
【００１２】
また、ＤＩＭＭｎｅｔ−２のようにネットワークインタフェース基板上のメモリがＤＲＡＭベースになっていてホストの主記憶並みに容量が大きい場合は、ネットワーク側からリモートアクセスさせるデータをネットワークインタフェース基板上のメモリに配置することができる。さらに、ＭＰＩの受信バッファ全部をネットワークインタフェース基板上のメモリに配置することができる。
【００１３】
このため、受信側がメッセージ到着前に対応する受信関数を起動していない場合はネットワークインタフェース基板上のメモリ上に設けられたＭＰＩバッファに受信メッセージを格納できる。しかし、ネットワークインタフェース基板上のメモリはホストの主記憶よりもホストからのアクセスに時間がかかる。このため、受信キーに一致するメッセージの検索に時間がかかってしまう。したがって、必ずしもＭＰＩの受信遅延が短くならないという問題がある。
【００１４】
本発明は上記に鑑みてなされたものであって、メッセージ交換方式の通信をネットワークインタフェースによって実現する際の通信遅延が短いネットワークインタフェースまたはホスト装置としての情報処理装置、情報処理方法および情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するために、本発明は、ネットワークを介して外部と通信を行う情報処理装置であって、前記ネットワークを介して外部装置から受信メッセージを受信するデータ受信手段と、前記受信メッセージを、前記受信メッセージの送信先となるホスト装置における受信処理においてはじめに利用すべきデータを含む第１メッセージと、前記受信処理において前記第１メッセージよりも後に利用すべきデータを含む第２メッセージとに分割する分割手段と、前記分割手段により得られた前記第１メッセージを格納する第１メモリと、前記第１メモリに比べてアクセス遅延の大きいメモリであって、対応する前記第１メッセージを識別可能に前記第２メッセージを格納する第２メモリとを備えたことを特徴とする。
【００１６】
また、本発明の他の形態は、ネットワークインタフェースを介して外部からメッセージを受信する情報処理装置であって、前記ネットワークインタフェースにメッセージの提供を要求する受信メッセージ要求手段と、前記ネットワークインタフェースの第１メモリに保持されている前記メッセージを前記ネットワークインタフェースから受信するメッセージ受信手段と、前記受信メッセージ受信手段が受信した受信メッセージに含まれる制御情報に基づいて、当該受信メッセージを受信するか否かを検査する検査手段と、前記検査手段が前記受信メッセージを受信すると判断した場合に、前記受信メッセージの実際のデータサイズと当該受信メッセージに記載されている当該受信メッセージのデータサイズとを比較するデータサイズ比較手段と、前記受信メッセージの実際のデータサイズが当該受信メッセージに記載されているデータサイズに比べて大きい場合に、前記受信メッセージに続く第２メッセージの提供を要求する第２メッセージ要求手段と、前記ネットワークインタフェースのメモリであって、前記第１メモリに比べてアクセス遅延の大きい第２メモリに保持されている第２メッセージを前記ネットワークインタフェースから受信する第２メッセージ受信手段とを備えたことを特徴とする。
【００１７】
また、本発明の他の形態は、ネットワークを介して外部と通信を行う情報処理方法であって、前記ネットワークを介して外部装置から受信メッセージを受信するデータ受信ステップと、前記受信メッセージを、前記受信メッセージの送信先となるホスト装置における受信処理においてはじめに利用すべきデータを含む第１メッセージと、前記受信処理において前記第１メッセージよりも後に利用すべきデータを含む第２メッセージとに分割する分割ステップと、前記分割ステップにおいて得られた前記第１メッセージを第１メモリに格納する第１格納ステップと、前記第１メモリに比べてアクセス遅延の大きいメモリであって、対応する前記第１メッセージを識別可能に前記第２メッセージを第２メモリに格納する第２格納ステップとを有することを特徴とする。
【００１８】
また、本発明の他の形態は、ネットワークインタフェースを介して外部からメッセージを受信する情報処理方法であって、前記ネットワークインタフェースにメッセージの提供を要求する受信メッセージ要求ステップと、前記ネットワークインタフェースの第１メモリに保持されている前記メッセージを前記ネットワークインタフェースから受信するメッセージ受信ステップと、前記受信メッセージ受信ステップにおいて受信した受信メッセージに含まれる制御情報に基づいて、当該受信メッセージを受信するか否かを検査する検査ステップと、前記検査ステップにおいて前記受信メッセージを受信すると判断した場合に、前記受信メッセージの実際のデータサイズと当該受信メッセージに記載されている当該受信メッセージのデータサイズとを比較するデータサイズ比較ステップと、前記受信メッセージの実際のデータサイズが当該受信メッセージに記載されているデータサイズに比べて大きい場合に、前記受信メッセージに続く第２メッセージの提供を要求する第２メッセージ要求ステップと、前記ネットワークインタフェースのメモリであって、前記第１メモリに比べてアクセス遅延の大きい第２メモリに保持されている第２メッセージを前記ネットワークインタフェースから受信する第２メッセージ受信ステップとを有することを特徴とする。
【００１９】
また、本発明の他の形態は、ネットワークを介して外部と通信を行う情報処理をコンピュータに実行させる情報処理プログラムであって、前記ネットワークを介して外部装置から受信メッセージを受信するデータ受信ステップと、前記受信メッセージを、前記受信メッセージの送信先となるホスト装置における受信処理においてはじめに利用すべきデータを含む第１メッセージと、前記受信処理において前記第１メッセージよりも後に利用すべきデータを含む第２メッセージとに分割する分割ステップと、前記分割ステップにおいて得られた前記第１メッセージを第１メモリに格納する第１格納ステップと、前記第１メモリに比べてアクセス遅延の大きいメモリであって、対応する前記第１メッセージを識別可能に前記第２メッセージを第２メモリに格納する第２格納ステップとを有することを特徴とする。
【００２０】
また、本発明の他の形態は、ネットワークインタフェースを介して外部からメッセージを受信する情報処理をコンピュータに実行させる情報処理プログラムであって、前記ネットワークインタフェースにメッセージの提供を要求する受信メッセージ要求ステップと、前記ネットワークインタフェースの第１メモリに保持されている前記メッセージを前記ネットワークインタフェースから受信するメッセージ受信ステップと、前記受信メッセージ受信ステップにおいて受信した受信メッセージに含まれる制御情報に基づいて、当該受信メッセージを受信するか否かを検査する検査ステップと、前記検査ステップにおいて前記受信メッセージを受信すると判断した場合に、前記受信メッセージの実際のデータサイズと当該受信メッセージに記載されている当該受信メッセージのデータサイズとを比較するデータサイズ比較ステップと、前記受信メッセージの実際のデータサイズが当該受信メッセージに記載されているデータサイズに比べて大きい場合に、前記受信メッセージに続く第２メッセージの提供を要求する第２メッセージ要求ステップと、前記ネットワークインタフェースのメモリであって、前記第１メモリに比べてアクセス遅延の大きい第２メモリに保持されている第２メッセージを前記ネットワークインタフェースから受信する第２メッセージ受信ステップとを有することを特徴とする。
【発明の効果】
【００２１】
本発明にかかる情報処理装置によれば、データ受信手段が、ネットワークを介して外部装置から受信メッセージを受信し、分割手段が、受信メッセージを、受信メッセージの送信先となるホスト装置における受信処理においてはじめに利用すべきデータを含む第１メッセージと、受信処理において第１メッセージよりも後に利用すべきデータを含む第２メッセージとに分割し、第１メモリが、分割手段により得られた第１メッセージを格納し、第２メモリが、第１メモリに比べてアクセス遅延の大きいメモリであって、対応する第１メッセージを識別可能に第２メッセージを格納するので、ホスト装置においてはじめに利用すべきデータを比較的低遅延でホスト装置に提供することができるという効果を奏する。
【００２２】
また、本発明の他の形態にかかる情報処理装置によれば、受信メッセージ要求手段が、ネットワークインタフェースにメッセージの提供を要求し、メッセージ受信手段が、ネットワークインタフェースの第１メモリに保持されているメッセージをネットワークインタフェースから受信し、検査手段が、受信メッセージ受信手段が受信した受信メッセージに含まれる制御情報に基づいて、当該受信メッセージを受信するか否かを検査し、データサイズ比較手段が、検査手段が受信メッセージを受信すると判断した場合に、受信メッセージの実際のデータサイズと当該受信メッセージに記載されている当該受信メッセージのデータサイズとを比較し、第２メッセージ要求手段が、受信メッセージの実際のデータサイズが当該受信メッセージに記載されているデータサイズに比べて大きい場合に、受信メッセージに続く第２メッセージの提供を要求し、第２メッセージ受信手段が、ネットワークインタフェースのメモリであって、第１メモリに比べてアクセス遅延の大きい第２メモリに保持されている第２メッセージをネットワークインタフェースから受信するので、制御情報のみ比較的低遅延で取得することができるという効果を奏する。
【００２３】
また、本発明の他の形態にかかる情報処理方法によれば、データ受信ステップにおいて、ネットワークを介して外部装置から受信メッセージを受信し、分割ステップにおいて、受信メッセージを、受信メッセージの送信先となるホスト装置における受信処理においてはじめに利用すべきデータを含む第１メッセージと、受信処理において第１メッセージよりも後に利用すべきデータを含む第２メッセージとに分割し、第１格納ステップにおいて、分割ステップにおいて得られた第１メッセージを第１メモリに格納し、第２格納ステップにおいて、第１メモリに比べてアクセス遅延の大きいメモリであって、対応する第１メッセージを識別可能に第２メッセージを第２メモリに格納するので、ホスト装置においてはじめに利用すべきデータを比較的低遅延でホスト装置に提供することができるという効果を奏する。
【００２４】
また、本発明の他の形態にかかる情報処理方法によれば、受信メッセージ要求ステップにおいて、ネットワークインタフェースにメッセージの提供を要求し、メッセージ受信ステップにおいて、ネットワークインタフェースの第１メモリに保持されているメッセージを前記ネットワークインタフェースから受信し、検査ステップにおいて、受信メッセージ受信ステップにおいて受信した受信メッセージに含まれる制御情報に基づいて、当該受信メッセージを受信するか否かを検査し、データサイズ比較ステップにおいて、検査ステップにおいてが受信メッセージを受信すると判断した場合に、受信メッセージの実際のデータサイズと当該受信メッセージに記載されている当該受信メッセージのデータサイズとを比較し、第２メッセージ要求ステップにおいて、受信メッセージの実際のデータサイズが当該受信メッセージに記載されているデータサイズに比べて大きい場合に、受信メッセージに続く第２メッセージの提供を要求し、第２メッセージ受信ステップにおいて、ネットワークインタフェースのメモリであって、第１メモリに比べてアクセス遅延の大きい第２メモリに保持されている第２メッセージをネットワークインタフェースから受信するので、制御情報のみ比較的低遅延で取得することができるという効果を奏する。
【００２５】
また、本発明の他の形態にかかる情報処理プログラムによれば、データ受信ステップにおいて、ネットワークを介して外部装置から受信メッセージを受信し、分割ステップにおいて、受信メッセージを、受信メッセージの送信先となるホスト装置における受信処理においてはじめに利用すべきデータを含む第１メッセージと、受信処理において第１メッセージよりも後に利用すべきデータを含む第２メッセージとに分割し、第１格納ステップにおいて、分割ステップにおいて得られた第１メッセージを第１メモリに格納し、第２格納ステップにおいて、第１メモリに比べてアクセス遅延の大きいメモリであって、対応する第１メッセージを識別可能に第２メッセージを第２メモリに格納するので、ホスト装置においてはじめに利用すべきデータを比較的低遅延でホスト装置に提供することができるという効果を奏する。
【００２６】
また、本発明の他の形態にかかる情報処理プログラムによれば、受信メッセージ要求ステップにおいて、ネットワークインタフェースにメッセージの提供を要求し、メッセージ受信ステップにおいて、ネットワークインタフェースの第１メモリに保持されているメッセージを前記ネットワークインタフェースから受信し、検査ステップにおいて、受信メッセージ受信ステップにおいて受信した受信メッセージに含まれる制御情報に基づいて、当該受信メッセージを受信するか否かを検査し、データサイズ比較ステップにおいて、検査ステップにおいて受信メッセージを受信すると判断した場合に、受信メッセージの実際のデータサイズと当該受信メッセージに記載されている当該受信メッセージのデータサイズとを比較し、第２メッセージ要求ステップにおいて、受信メッセージの実際のデータサイズが当該受信メッセージに記載されているデータサイズに比べて大きい場合に、受信メッセージに続く第２メッセージの提供を要求し、第２メッセージ受信ステップにおいて、ネットワークインタフェースのメモリであって、第１メモリに比べてアクセス遅延の大きい第２メモリに保持されている第２メッセージをネットワークインタフェースから受信するので、制御情報のみ比較的低遅延で取得することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２７】
以下に、本発明にかかる情報処理装置、情報処理方法および情報処理プログラムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００２８】
図１は、実施の形態にかかる情報処理装置１０を含む情報処理システム１の全体構成を示す図である。情報処理システム１は、ネットワークインターフェース（ＮＩＣ）としての情報処理装置１０の他、ホスト装置２０を備えている。情報処理装置１０は、ネットワークを介して外部からデータを受信する。そして、ホスト装置２０からの要求に応じて受信したデータをホスト装置２０に渡す。
【００２９】
情報処理装置１０は、ＬＳＩ１００と高遅延メモリ２００とを備えている。高遅延メモリ２００は、ＤＲＡＭベースのメモリである。高遅延メモリ２００は、ＮＩＣ上のＬＳＩの外部に設置されている。
【００３０】
なお、他の例としては、高遅延メモリ２００はＬＳＩ内部に設けられてもよい。また、高遅延メモリ２００は、ＮＩＣの外部に設けられてもよい。また、ホスト装置２０の主記憶上に形成されてよい。さらに、高遅延メモリ２００は、ＤＲＡＭベース以外の構成であってもよい。
【００３１】
ＬＳＩ１００は、ネットワーク制御部１１０と、分割制御部１２０と、設定部１３０と、低遅延メモリ制御部１４０と、高遅延メモリ制御部１５０と、低遅延メモリ１６０と、ホストインタフェース部１７０と、プリフェッチバッファ１８０と、後半プリフェッチ制御部１９０とを備えている。
【００３２】
ネットワーク制御部１１０は、フロー制御や再送制御などのＯＳＩ参照モデルにおけるトランスポート層以下の層での処理を行う。ネットワーク制御部１１０は、ネットワークからメッセージを受信する。すなわち、本実施の形態にかかるネットワーク制御部１１０は、データ受信手段として機能する。そして、受信したメッセージ、すなわち受信メッセージの誤りを検出、訂正し誤りのない受信メッセージを分割制御部１２０に渡す。
【００３３】
分割制御部１２０は、分割位置レジスタ１２２と、サイズ位置レジスタ１２４とを有している。分割位置レジスタ１２２は、分割位置情報を保持している。分割位置情報とは、受信メッセージを分割する場合の分割位置を示す情報である。分割位置情報は、具体的には、先頭から何バイトの位置という情報である。サイズ位置レジスタ１２４は、サイズ位置情報を保持している。サイズ位置情報とは、受信メッセージにおいて、当該受信メッセージのデータサイズを示すサイズ情報が格納されている位置を示す情報である。
【００３４】
分割制御部１２０は、分割位置レジスタ１２２に保持されている分割位置情報およびサイズ位置レジスタ１２４に保持されているサイズ位置情報を利用して、適宜受信メッセージを前半メッセージと後半メッセージとに分割する。本実施の形態にかかる分割制御部１２０は、分割手段、分割制御手段、データサイズ特定手段、第１データサイズ比較手段およびエントリサイズ保持手段として機能する。
【００３５】
分割制御部１２０は、さらに前半メッセージを低遅延メモリ制御部１４０に渡し、後半メッセージを高遅延メモリ制御部１５０に渡す。なお、比較的容量の小さい受信メッセージ、すなわち小受信メッセージは、低遅延メモリ制御部１４０に渡す。
【００３６】
ここで、前半メッセージは、ホスト装置２０が受信処理において初めに利用すべきデータを含んでいる。ここで、受信処理とは、情報処理装置１０から受信メッセージを取得した際に行う処理である。例えばＭＰＩにおいては、受信処理においてはじめに受信関数によって指定されたキーとエンベロープ（ｅｎｖｅｌｏｐｅ）とが一致するか否かが判定される。すなわち、エンベロープは、受信処理においてはじめに利用される情報である。前半メッセージは、初めに利用すべきデータとしてこのエンベロープを含んでいる。後半メッセージは、受信メッセージのうち前半メッセージ以外の部分である。なお、本実施の形態にかかる前半メッセージおよび後半メッセージは、それぞれ第１メッセージおよび第２メッセージに対応する。
【００３７】
設定部１３０は、ユーザからの指示等により分割位置情報を分割位置レジスタ１２２に設定する。これにより、分割位置を調整することができる。また、サイズ位置情報をサイズ位置レジスタ１２４に設定する。これにより、受信可能なメッセージのフォーマットを柔軟に変更することができる。すなわち、多様なフォーマットのメッセージを処理対象とすることができる。すなわち、設定部１３０は、分割位置情報設定手段およびサイズ位置情報設定手段として機能する。
【００３８】
なお、分割位置レジスタ１２２、サイズ位置レジスタ１２４および設定部１３０は、必ずしも必須の構成ではない。他の例としては、分割位置情報およびサイズ位置情報として、適切な固定値を予め設定しておくこととしてもよい。
【００３９】
低遅延メモリ制御部１４０は、低遅延メモリ１６０を制御する。具体的には、分割制御部１２０から受け取った前半メッセージまたは小受信メッセージの全体を低遅延メモリ１６０に格納する。また、低遅延メモリ１６０に格納されているデータを読み出し、ホストインタフェース部１７０に渡す。本実施の形態にかかる低遅延メモリ制御部１４０は、前半データ抽出手段として機能する。
【００４０】
このように、前半メッセージや小受信メッセージを低遅延メモリ１６０に格納することにより、高遅延メモリ２００に格納する場合に比べて少ない遅延で前半メッセージや小受信メッセージをホスト装置２０に提供することができる。
【００４１】
高遅延メモリ制御部１５０は、高遅延メモリ２００を制御する。具体的には、分割制御部１２０から受け取った後半メッセージを高遅延メモリ２００に格納する。また、高遅延メモリ２００に格納されているデータを読み出し、ホストインタフェース部１７０またはプリフェッチバッファ１８０に渡す。本実施の形態にかかる高遅延メモリ制御部１５０は、第２メッセージ抽出手段として機能する。
【００４２】
図２は、低遅延メモリ１６０および高遅延メモリ２００のデータ構成を示す図である。低遅延メモリ１６０は、典型的にはＬＳＩに内蔵される高速ＳＲＡＭである。なお、本実施の形態にかかる低遅延メモリ１６０および高遅延メモリ２００は、それぞれ第１メモリおよび第２メモリとして機能する。
【００４３】
低遅延メモリ１６０は、複数のエントリを有している。各エントリは、各前半メッセージまたは受信メッセージの全体を格納する。前半メッセージは、ポインタとともに同一のエントリに格納される。ここで、ポインタとは、前半メッセージに続く後半メッセージのアドレスを示す情報である。
【００４４】
低遅延メモリ１６０の複数エントリからなるバッファは、低遅延メモリ制御部１４０によりリング状に管理される。すなわち、複数のエントリは、先入れ先出しバッファとして機能するリングバッファである。
【００４５】
リングバッファに受信メッセージ等を書き込む処理は、例えば、ＩＰＵＳＨ機構を用いることによりハードウェアで実現することができる。ＩＰＵＳＨ機構については、非特許文献４に記載されている。
【００４６】
各エントリのデータサイズは予め定められている。例えば、エントリのデータサイズは、３２バイトである。エントリのデータサイズは、ホスト装置２０のＣＰＵのラインサイズに対応して決定される。ホスト装置２０にできるだけ早くデータを送る観点からは、低遅延メモリ１６０になるべく多くのデータを格納することが望ましい。しかし、各エントリのデータサイズを大きくした場合には、空きが問題となる。このようなトレードオフに伴う実行性能最適点をエントリのデータサイズとするのが望ましい。
【００４７】
また、エンベロープなどの制御情報が必ず含まれるようなデータサイズとすることが望ましい。さらには、例えば制御などに用いられるメッセージのように比較的容量の小さい小受信メッセージの全体を格納可能なデータサイズとすることが望ましい。これにより、エンベロープを含むエントリをホスト装置２０に転送するのと同時にこの小受信メッセージのデータ部もホスト装置２０に転送される。
【００４８】
このような小受信メッセージは、遅延時間が短いことが要求されるデータである場合が多い。情報処理装置１０がより長いメッセージを受信した後にこのような小受信メッセージを受信した場合でも、ホスト装置２０は、小受信メッセージを先に要求する場合が多い。上述のように、小受信メッセージを低遅延メモリ１６０に格納することにより低遅延で転送することができる。
【００４９】
また、ポインタのデータサイズも予め定められている。例えば、４バイトである。この場合、各エントリに格納される前半メッセージのデータサイズは、エントリのデータサイズ３２バイトからポインタのデータサイズ４バイトを差し引いた残りのデータサイズ、すなわち２８バイトである。そこで、分割位置レジスタ１２２には、分割位置として、先頭から２８バイトを示す分割位置情報が格納されている。なお、ユーザは、上述のように決定された低遅延メモリ１６０のエントリに格納できる前半メッセージのデータサイズにしたがい、設定部１３０を介して分割位置情報を設定することができる。
【００５０】
小受信メッセージは、受信メッセージの全体がエントリに格納される。この場合には、ポインタを格納する必要がない。このため、図２に示すメッセージＢ２のように、エントリのデータサイズ３２バイト以下であれば、前半メッセージのデータサイズ２８バイトよりも大きいデータであっても格納することができる。
【００５１】
高遅延メモリ２００は、低遅延メモリ１６０に比べて大容量かつ高遅延のメモリである。高遅延メモリ２００には、低遅延メモリ１６０に格納しきれなかったデータを格納する。具体的には、受信メッセージのうち後半メッセージを格納する。高遅延メモリ２００は、ＦＩＦＯの構造を有しており、取得した後半メッセージを順に格納する。
【００５２】
例えばＭＰＩのシステムバッファ全体をＬＳＩ１００に設置するのは容量的に困難である。しかし、低遅延メモリ１６０は必ずしもＬＳＩ内蔵でなければならないというものではない。そこで、情報処理システム１においては、上述のように、低遅延メモリ１６０と高遅延メモリ２００という容量や遅延の異なる２種類のメモリをメッセージ交換の高速化という観点で使い分けている。
【００５３】
再び説明を図１に戻す。プリフェッチバッファ１８０は、高遅延メモリ制御部１５０を介して高遅延メモリ２００から後半メッセージを取得し、格納する。また、後半メッセージをホストインタフェース部１７０に渡す。この後半メッセージはホストインタフェース部１７０に渡された後、プリフェッチバッファ１８０から削除される。
【００５４】
プリフェッチバッファ１８０は、アドレスをキーとした一種のキャッシュである。空きラインがある場合には、空きラインにデータが格納される。空きラインがない場合には、ラインを適切なアルゴリズムで選択し、新しいデータで上書きする。本実施の形態にかかるプリフェッチバッファ１８０は、第３メモリとして機能する。
【００５５】
なお、他の例としては、プリフェッチバッファ１８０に、新たなデータを書き込む分の空きがない場合には、書き込まないこととしてもよい。
【００５６】
ホストインタフェース部１７０は、ホスト装置２０からの要求に応じて、低遅延メモリ１６０、高遅延メモリ２００またはプリフェッチバッファ１８０に格納されている受信メッセージをホスト装置２０に渡す。本実施の形態にかかるホストインタフェース部１７０は、受信メッセージ要求受信手段、第１メッセージ送信手段、第２メッセージ要求受信手段および第２メッセージ送信手段として機能する。
【００５７】
後半プリフェッチ制御部１９０は、低遅延メモリ制御部１４０が低遅延メモリ１６０からデータを読み出すと、スヌープ機能により対応するポインタの有無を検出する。そして、ポインタがあるとこれを高遅延メモリ制御部１５０に渡す。高遅延メモリ制御部１５０は、ポインタにより特定される後半メッセージを読み出す。本実施の形態にかかる高遅延メモリ制御部１５０は、後半データ抽出手段として機能する。
【００５８】
図３は、情報処理装置としてのホスト装置２０の機能構成を示すブロック図である。ホスト装置２０は、受信メッセージ要求部２０１と、後半メッセージ要求部２０２と、キャッシュメモリ２０４と、制御情報管理部２０６とを備えている。
【００５９】
受信メッセージ要求部２０１は、所定のアドレスのデータがキャッシュメモリ２０４に存在しない場合には、情報処理装置１０に対し、アドレスを指定して受信メッセージの要求を行う。そして、情報処理装置１０から小受信メッセージまたは前半メッセージを取得し、キャッシュメモリ２０４に格納する。なお、受信メッセージ要求部２０１は、キャッシュラインサイズで小受信メッセージまたは前半メッセージを取得する。後半メッセージ要求部２０２は、情報処理装置１０に対し後半メッセージの要求を行う。そして、情報処理装置１０から後半メッセージを取得する。本実施の形態にかかる受信メッセージ要求部２０１は、受信メッセージ要求手段およびメッセージ受信手段として機能する。
【００６０】
制御情報管理部２０６は、受信メッセージ要求部２０１が取得した小受信メッセージまたは前半メッセージに含まれる制御情報、すなわちエンベロープを抽出する。そして、受信関数によって指定されたキーと一致することを確認する。これにより、このメッセージを受信するか否かを検査する。
【００６１】
制御情報管理部２０６は、さらに受信メッセージ要求部２０１が取得したデータが前半メッセージである場合に、後半メッセージ要求部２０２に対し後半メッセージの要求を指示する。なお、取得したデータが前半メッセージであるか否かは、前半メッセージ中に格納されているサイズ情報が示すデータサイズがこの前半メッセージのデータサイズよりも大きいか否かにより判定する。本実施の形態にかかる制御情報管理部２０６は、検査手段およびデータサイズ比較手段として機能する。
【００６２】
後半メッセージ要求部２０２は、情報処理装置１０に対して、後半メッセージの要求を行う。そして、情報処理装置１０から後半メッセージを取得する。本実施の形態にかかる後半メッセージ要求部２０２は、第２メッセージ要求手段および第２メッセージ受信手段として機能する。
【００６３】
ホスト装置２０は、キャッシュベースのシステムである。したがって、ホスト装置２０のキャッシュミスヒットやプリフェッチ命令に伴うアクセスにより低遅延メモリ１６０に格納されている前半メッセージや小受信メッセージがホスト装置２０にバースト転送される。これにより、低遅延かつ高バンド幅での転送が可能になる。
【００６４】
例えば低遅延メモリ１６０のエントリのデータサイズが３２バイトであるとする。さらに、キャッシュメモリ２０４のキャッシュラインサイズが１２８バイトであるとする。この場合には、ホスト装置２０における１ラインのキャッシュミスに伴うリフィル動作において、４つのエントリに格納されている前半メッセージまたは小受信メッセージがホスト装置２０に転送される。
【００６５】
例えば、図２に示すように低遅延メモリ１６０に４つの前半メッセージまたは小受信メッセージが格納されているとする。このとき、キャッシュラインサイズでのアクセスにより４番目に格納された受信メッセージＡ２を受信するために先行する３つの前半メッセージまたは小受信メッセージを順次１個ずつアクセスしていく場合に比べて短い遅延時間で受信メッセージＡ２を受信することができる。
【００６６】
なお、キャッシュメモリ２０４に格納されたデータを利用した後は、キャッシュメモリ２０４における利用後のデータに対応するキャッシュライン、すなわち利用後のデータの低遅延メモリのエントリに対応するアドレスに対応するキャッシュラインを消去する。具体的には、利用後のデータに対応するキャッシュラインを再利用する前に、当該キャッシュラインに対してラインフラッシュを行う命令を実行することにより、利用後のラインを消去する。リングバッファである低遅延メモリ１６０においては、同一のアドレスに新たなデータが上書きされていく。したがって、ホスト装置２０においては、所定のアドレスにアクセスしようとしたときに、同一のアドレスに対する古いデータがキャッシュメモリ２０４に残っていた場合にはキャッシュメモリ２０４にアクセスしてしまう。
【００６７】
このため、このアドレスに格納されている新しいデータにアクセスすることができない。上述のように、キャッシュメモリ２０４のデータをフラッシュすることにより、所望のデータに確実にアクセスすることができる。なお、ホスト装置２０は、必ずしもキャッシュベースのシステムである必要はない。
【００６８】
図４は、情報処理装置１０によるメッセージ受信処理を示すフローチャートである。ネットワーク制御部１１０がネットワークを介してメッセージを受信すると（ステップＳ１００，Ｙｅｓ）、分割制御部１２０は、受信したメッセージ、すなわち受信メッセージのデータサイズを特定する（ステップＳ１０２）。具体的には、サイズ位置レジスタ１２４に格納されているサイズ位置情報によりサイズ情報の位置を特定し、データサイズを特定する。
【００６９】
次に、受信メッセージのデータサイズと低遅延メモリ１６０のエントリのデータサイズとを比較する（ステップＳ１０４）。ここで、エントリのデータサイズは、分割制御部１２０に予め設定されている。受信メッセージのデータサイズがエントリのデータサイズに比べて大きい場合には（ステップＳ１０６，Ｙｅｓ）、低遅延メモリ１６０に受信メッセージの全体を格納することができない。この場合、分割制御部１２０は受信メッセージを前半メッセージと後半メッセージとに分割する（ステップＳ１０８）。具体的には、分割位置レジスタ１２２に格納されている分割位置情報に示される分割位置で受信メッセージを分割する。すなわち、分割位置より前のデータが前半メッセージとなり、分割位置より後のデータが後半メッセージとなる。
【００７０】
次に、低遅延メモリ制御部１４０は、前半メッセージを低遅延メモリ１６０のエントリに格納する（ステップＳ１１０）。さらに、高遅延メモリ制御部１５０は、後半メッセージを高遅延メモリ２００に格納する（ステップＳ１１２）。なお、このとき、低遅延メモリ制御部１４０は、後半メッセージのアドレスであるポインタを前半メッセージと同一のエントリに格納する。
【００７１】
一方、受信メッセージのデータサイズがエントリのデータサイズ以下である場合には（ステップＳ１０６，Ｎｏ）、低遅延メモリ１６０に受信メッセージの全体を格納することができる。この場合、分割制御部１２０はこの受信メッセージ、すなわち小受信メッセージの全体を低遅延メモリ１６０に格納する（ステップＳ１２０）。以上で、情報処理装置１０によるメッセージ受信処理が完了する。
【００７２】
図５は、情報処理装置１０からホスト装置２０への受信メッセージ転送処理を示すフローチャートである。図４に示すメッセージ受信処理により情報処理装置１０がネットワークを介して受信したメッセージをホスト装置２０からの要求によりホスト装置２０に提供する際の処理である。
【００７３】
まず、ホスト装置２０の受信メッセージ要求部２０１は、受信メッセージ要求を情報処理装置１０に送る（ステップＳ２００）。情報処理装置１０においては、ホストインタフェース部１７０が受信メッセージ要求を受け取ると、低遅延メモリ制御部１４０は、低遅延メモリ１６０のエントリに格納されているデータを読み出す（ステップＳ２０２）。具体的には、小受信メッセージまたは前半メッセージを読み出す。次に、ホストインタフェース部１７０は、読み出したデータをホスト装置２０に送信する（ステップＳ２０４）。
【００７４】
このとき、後半プリフェッチ制御部１９０は、ポインタの有無、すなわち読み出したデータに対する後半メッセージの有無を監視する。具体的には、ポインタを有する前半メッセージに含まれるエンベロープの中に格納されたサイズ情報が示すデータサイズが分割位置レジスタ１２２に格納されている分割位置情報に示される分割位置よりも大きいか否かを検知する。
【００７５】
また、他の例としては、エントリに、前半データとともに後半メッセージが存在することを示すフラグを格納しておき、フラグの有無から後半メッセージの有無を判断してもよい。
【００７６】
後半メッセージが存在することにより、ホスト装置２０から間もなく前半メッセージに対応する後半メッセージを要求される確率が上がったことを知ることができる。受信メッセージのデータサイズが分割位置より大きい場合には、後半メッセージが存在するので、後半メッセージを要求される可能性が高くなる。
【００７７】
そして、後半メッセージがある場合には（ステップＳ２１０，Ｙｅｓ）、高遅延メモリ制御部１５０は、後半プリフェッチ制御部１９０からの指示により高遅延メモリ２００からポインタに示される後半メッセージを読み出す（ステップＳ２１２）。そして、読み出した後半メッセージをプリフェッチバッファ１８０に格納する（ステップＳ２１４）。
【００７８】
ホスト装置２０においては、受信メッセージ要求部２０１は、小受信メッセージまたは前半メッセージを取得し、これらのデータをキャッシュメモリ２０４に格納する。このとき、制御情報管理部２０６は、データからエンベロープを抽出する。そして、受信関数によって指定されたキーと一致することを確認する。そして、一致が確認できたデータが前半メッセージであるか否か、すなわち後半メッセージがあるか否かを判定する。
【００７９】
ステップＳ２０２において、後半メッセージがある場合には（ステップＳ２２０，Ｙｅｓ）、後半メッセージ要求部２０２は、後半メッセージ要求を情報処理装置１０に送る（ステップＳ２２２）。
【００８０】
情報処理装置１０のホストインタフェース部１７０は、要求されている後半メッセージがプリフェッチバッファ１８０に存在する場合には（ステップＳ２３０，Ｙｅｓ）、プリフェッチバッファ１８０から後半メッセージを読み出す（ステップＳ２３２）。一方、要求されている後半メッセージがプリフェッチバッファ１８０に存在しない場合には（ステップＳ２３０，Ｎｏ）、高遅延メモリ制御部１５０を介して高遅延メモリ２００から後半メッセージを読み出す（ステップＳ２３４）。
【００８１】
なお、プリフェッチバッファ１８０に後半メッセージが存在しない場合としては、ホストが高速でプリフェッチが追いつかなかった場合や、後半メッセージがプリフェッチバッファ１８０に一旦格納されたが、後半メッセージ要求を取得したときには、空き容量不足で既に削除されていたい場合が考えられる。また、プリフェッチバッファ１８０が新たなデータを書き込む分の空きがない場合には、書き込まない構造である場合には、後半メッセージが書き込まれなかった場合が考えられる。
【００８２】
次に、ホストインタフェース部１７０は、後半メッセージをホスト装置２０に送信する（ステップＳ２３６）。以上で、受信メッセージ転送処理が完了する。
【００８３】
以上のように、ホスト装置２０から要求されたデータに対応する後半メッセージが高遅延メモリ２００に格納されている場合には、ホスト装置２０から後半メッセージの要求を取得する前に予めホスト装置２０への転送にかかる遅延の比較的小さいプリフェッチバッファ１８０に後半メッセージを読み出しておく。これにより、ホスト装置２０から後半メッセージを要求された際に後半メッセージがプリフェッチバッファ１８０に存在する確率を高めることができる。したがって、低遅延で後半メッセージをホスト装置２０に転送することができる。
【００８４】
これにより、ホスト装置２０における後半メッセージを有する受信メッセージの受信遅延を短縮することができる。さらに、小容量の低遅延メモリ１６０には全体を格納することができないが、遅延のバンド幅への影響が大きい中程度のデータサイズの受信メッセージにおけるバンド幅を向上させることができる。
【００８５】
図６は、メッセージの受信時間を説明するための図である。ＭＰＩなどの２ｓｉｄｅｄな通信であるメッセージパッシングモデルに基づく通信ライブラリを実装する際には、受信側で受信したいメッセージと受信側ノードへのメッセージ到着順序が必ずしも一致しない。
【００８６】
例えば、図２に示すように、受信メッセージＢ１→Ｂ２→Ａ１→Ａ２の順序でメッセージが到着したとする。この状態において、ホスト装置２０が受信メッセージＡ２を受信する関数を実行したとする。この場合には、従来の処理においては、４つの受信メッセージのｅｎｖｅｌｏｐｅを元にＭＰＩの処理系は受信バッファからメッセージＡ２を検索して抽出する。
【００８７】
この際、受信メッセージＡ２よりも先に受信バッファに受信したメッセージＢ１，Ｂ２，Ａ１を高遅延メモリ２００上の共通バッファからソフトによるコピー処理で退避用バッファに退避する。退避用バッファは、通常はホスト装置２０の主記憶上に配置される。このように、メッセージＡ２よりも先に受信した受信メッセージを退避させる。このため、図６の上部に示すように受信メッセージのデータサイズに比例した退避バッファへのコピー時間の総和の時間がかかる。すなわち、受信メッセージＡ２の受信が完了するまでに多くの遅延時間がかかってしまっていた。
【００８８】
これに対し、本実施の形態にかかる情報処理システム１においては、上述のように、エンベロープがホスト装置２０から低遅延でアクセスできる低遅延メモリ１６０に保持されている。したがって、高遅延メモリ２００にアクセスすることなく、図６下部に示すように設定部１３０から受信メッセージＢ１，Ｂ２，Ａ１のエンベロープを少ない遅延時間で取得することができる。したがって、ホスト装置２０が受信メッセージＡ１を受信するまでの遅延時間を大幅に短縮させることができる。このように、データサイズが小さい場合において受信にかかる遅延を短くすることができる。
【００８９】
以上、本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
【００９０】
そうした第１の変更例としては、高遅延メモリ制御部１５０は、後半メッセージのデータサイズが予め設定された基準データサイズよりも小さい場合のみ後半メッセージのプリフェッチバッファ１８０への先取りを行うこととしてもよい。ここで、基準データサイズは予め設定されており、高遅延メモリ制御部１５０が保持している。本例にかかる高遅延メモリ制御部１５０は、第２メッセージサイズ比較手段として機能する。
【００９１】
プリフェッチバッファ１８０は、ホスト装置２０からの要求に即座に応答すべく比較的小容量低遅延なメモリで構成されている。しかし、ある程度以上長いメッセージのバンド幅性能はプリフェッチによる遅延短縮による影響が相対的に薄れてくる。そこで、より効果の高い中程度のメッセージサイズを有するメッセージにプリフェッチバッファ１８０を優先的に使用させた方が効果的である。そこで、上述のように基準データサイズよりも小さい後半メッセージのみをプリフェッチバッファ１８０に格納することとする。
【００９２】
また、第２の変更例としては、低遅延メモリ１６０をリングバッファとして動作させるのにかえて、ライトスルー型キャッシュメモリとして動作させてもよい。この場合、前半メッセージと後半メッセージを高遅延メモリ２００に確保した別の領域に分類して格納する。そして、前半メッセージに対応する領域のみをそのキャッシュの対象とする。これにより、前半メッセージが低遅延メモリ１６０に格納される確率が高くなるように誘導する。また、ライトバック型キャッシュメモリとして動作させてもよい。この場合には、高遅延メモリ２００は、前半メッセージの低遅延メモリ１６０から退避された場合に、この前半メッセージを格納する。
【００９３】
キャッシュメモリが一杯になり溢れた場合は、ライトスルー型キャッシュメモリにおいては、エントリを適切に選び、このエントリに新たな前半データを格納する。すなわち、高遅延メモリ２００上にリプレースさせる。ライトバック型キャッシュメモリの場合には、エントリの前半メッセージを高遅延メモリ２００に退避した後、上書きを行う。すなわち、高遅延メモリ２００上にリプレースさせる。
【００９４】
エントリを選択するアルゴリズムは通常のＣＰＵにおけるＬＲＵ（Ｌａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）アルゴリズムとは逆とする。すなわち、最も最近格納されたエントリからリプレースされるようにする。これにより、先に届いたメッセージほど先に受信されやすいというメッセージ交換の傾向を利用することでヒット率を向上させることができる。
【００９５】
さらに、遅延の影響が少ない後半メッセージ、すなわち比較的長いメッセージを選ぶこととしてもよい。これにより、短いメッセージほどキャッシュに溜まるようになるため、実効性能への効果が向上する。
【００９６】
以上のようなキャッシュ制御にすることで、低遅延メモリ１６０が溢れるほどにホスト装置２０からの受信メッセージ要求とネットワーク側からのメッセージ到着のバランスが崩れた場合でも、ネットワーク側に輻輳の原因となるような負荷を抑制した形でメッセージを受信することができる。
【００９７】
さらに、この構成においてもプリフェッチは有効である。キャッシュへのリードアクセスがヒットした場合、リード要求を出したホスト装置２０にヒットしたエントリに含まれる前半メッセージを応答データとして転送する。あわせて、後半メッセージへのポインタで指定される位置に格納された後半メッセージのプリフェッチバッファ１８０への先取りを開始する。これにより、ホスト装置２０から引き続き後半メッセージの要求があった場合のホスト装置２０への応答時間を短縮できる。その結果、主に中程度のメッセージの受信遅延の短縮と、実効バンド幅の向上を実現することができる。
【００９８】
また、第３の変更例としては、本実施の形態においては、低遅延メモリ１６０は、エンベロープを含む３２バイトのデータを前半メッセージとして格納したが、これにかえてエンベロープのみを格納することとしてもよい。すなわち、１つのエントリには、エンベロープと受信メッセージのうちエンベロープ以外の部分を含むデータを格納する高遅延メモリ２００のアドレスを示すポインタとを格納する。
【００９９】
この場合には、分割制御部１２０は、受信メッセージのデータサイズがエントリのデータサイズに比べて大きい場合には、前半メッセージと後半メッセージとに分割する処理にかえて、エンベロープのみを抽出する。そして、エンベロープを低遅延メモリ制御部１４０に渡し、残りのデータを高遅延メモリ制御部１５０に渡す。
【０１００】
また、第４の変更例としては、情報処理装置１０の各制御部は必ずしもハードワイヤドロジックで実現されていなくても良い。例えば、ＮＩＣ上のＣＰＵのファームウェアやホスト上のＣＰＵのソフトウェアで一部が実現されていても良い。
【０１０１】
図７は、この場合の情報処理装置１０のハードウェア構成を示す図である。情報処理装置１０は、ハードウェア構成として、情報処理装置１０における図４に示すメッセージ受信処理や図５に示す受信メッセージ転送処理を実行する情報処理プログラムなどが格納されているＲＯＭ５２と、ＲＯＭ５２内のプログラムに従って情報処理装置１０の各部を制御するＣＰＵ５１と、情報処理装置１０の制御に必要な種々のデータを記憶するＲＡＭ５３と、各部を接続するバス６２とを備えている。
【０１０２】
先に述べた情報処理装置１０における情報処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク（ＦＤ）、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供されてもよい。
【０１０３】
この場合には、情報処理プログラムは、情報処理装置１０において上記記録媒体から読み出して実行することにより主記憶装置上にロードされ、上記ソフトウェア構成で説明した各部が主記憶装置上に生成されるようになっている。
【０１０４】
また、本実施の形態の情報処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。
【０１０５】
また、ホスト装置２０についても図７に示すようなハードウェアにおいて実行されるソフトウェアとして実現されてもよい。
【図面の簡単な説明】
【０１０６】
【図１】情報処理システム１の全体構成を示す図である。
【図２】低遅延メモリ１６０および高遅延メモリ２００のデータ構成を示す図である。
【図３】ホスト装置２０の機能構成を示すブロック図である。
【図４】情報処理装置１０によるメッセージ受信処理を示すフローチャートである。
【図５】情報処理装置１０からホスト装置２０への受信メッセージ転送処理を示すフローチャートである。
【図６】メッセージの受信時間を説明するための図である。
【図７】情報処理装置１０のハードウェア構成を示す図である。
【符号の説明】
【０１０７】
５１  ＣＰＵ
５２  ＲＯＭ
５３  ＲＡＭ
６２  バス
１  情報処理システム
１０  情報処理装置
２０  ホスト装置
１１０  ネットワーク制御部
１２０  分割制御部
１２２  分割位置レジスタ
１２４  サイズ位置レジスタ
１３０  設定部
１４０  低遅延メモリ制御部
１５０  高遅延メモリ制御部
１６０  低遅延メモリ
１７０  ホストインタフェース部
１８０  プリフェッチバッファ
１９０  後半プリフェッチ制御部
２００  高遅延メモリ
２０１  受信メッセージ要求部
２０２  後半メッセージ要求部
２０４  キャッシュメモリ
２０６  制御情報管理部
【図１】
2008035202.tif 000003
【図２】
2008035202.tif 000004
【図３】
2008035202.tif 000005
【図４】
2008035202.tif 000006
【図５】
2008035202.tif 000007
【図６】
2008035202.tif 000008
【図７】
2008035202.tif 000009