(57)【要約】ネットワーク通信を行う計算機システムのデータ通信システムであって、通信データの長さに基づいて、その通信（転送）をＮＩＣ（ハードウェア）２を用いて行うか、あるいはホストプロセッサ（ＣＰＵ４）を用いて行うかについての通信方式について選択設定して取り扱うようにすると共に、さらに、この際、ＮＩＣメモリ２２の空き状態を判断し、例えば送信に係るデータをＮＩＣメモリ２２に移すか、ホストメモリ５にコピーするかについての通信方式についても適宜判断して取り扱えるようにした。
2004068356.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク通信を行う計算機システムのデータ通信システムであって、
計算機システムのデータ通信に関する性能又は状態の少なくとも一つを認識する性能状態認識部と、
複数の異なる通信方式についての実行機能を有すると共に前記性能状態認識部による性能と状態に基づいて、前記複数の異なる通信方式から少なくとも一つの通信方式を設定して実行する通信方式選択実行部と、
を備えてなるデータ通信システム。
【請求項２】
請求の範囲第１項に記載のデータ通信システムにおいて、
前記データ通信に関する性能として、ホストプロセッサによるＩ／Ｏバスのデータ転送性能とネットワークインターフェイスカードの持つハードウェアによるデータ転送性能を含むことを特徴とするデータ通信システム。
【請求項３】
請求の範囲第２項に記載のデータ通信システムにおいて、
前記データ通信に関する状態として、通信要求のあるデータ長が含まれ、データ長が所定の長さ以上の場合、前記通信方式選択実行部は、ネットワークインターフェイスカードの持つハードウェアによるデータ転送を実行することを特徴とするデータ通信システム。
【請求項４】
請求の範囲第３項に記載のデータ通信システムにおいて、
前記データ通信に関する状態として、通信要求のあるデータ長が含まれ、データ長が所定の長さ以上でない場合、前記通信方式選択実行部は、ホストプロセッサによるＩ／Ｏバスを用いたデータ転送を行うことを特徴とするデータ通信システム。
【請求項５】
請求の範囲第１項に記載のデータ通信システムにおいて、
前記データ通信に関する状態として、通信要求のあるデータに対するネットワークインターフェイスカードのメモリの空き状態が含まれ、前記性能状態認識部によりネットワークインターフェイスカードのメモリに空きがあると認識された場合、前記通信方式選択実行部は、前記通信要求のあるデータをネットワークインターフェイスカードのメモリに直接転送することを特徴とするデータ通信システム。
【請求項６】
請求の範囲第１項に記載のデータ通信システムにおいて、
前記データ通信に関する状態として、通信要求のあるデータに対するホストメモリの空き状態とネットワークインターフェイスカードのメモリの空き状態とが含まれ、前記性能状態認識部によりネットワークインターフェイスカードのメモリに空きが無いと認識された場合において、ホストメモリに空きがあると認識された場合、前記通信方式選択実行部は、前記通信要求のあるデータをホストメモリにコピーすることを特徴とするデータ通信システム。
【請求項７】
請求の範囲第５項に記載のデータ通信システムにおいて、
前記データ通信に関する状態として、通信要求のあるデータに対するホストメモリの空き状態とネットワークインターフェイスカードのメモリの空き状態とが含まれ、前記性能状態認識部によりネットワークインターフェイスカードのメモリに空きが無いと認識された場合において、更にホストメモリに空きが無いと認識された場合、前記通信方式選択実行部は、前記通信要求に対する処理実行を待ち状態にすることを特徴とするデータ通信システム。
【請求項８】
請求の範囲第１項に記載のデータ通信システムにおいて、
前記データ通信に関する状態として、通信要求のあるデータに対するネットワークインターフェイスカードのメモリの空き状態が含まれ、前記性能状態認識部によりネットワークインターフェイスカードのメモリに空きが無いと認識された場合、前記性能状態認識部は空きが生じる時間を推定し、空きが生じるまでの推定時間だけ前記通信要求に対する処理実行を待ち状態にすることを特徴とするデータ通信システム。
【請求項９】
請求の範囲第１項に記載のデータ通信システムにおいて、
ネットワークインターフェイスカードとホストとの間のデータ転送においてバッファディスクリプタを用いる場合に、
前記データ通信に関する状態として、前記バッファディスクリプタにおける要求数が含まれ、前記性能状態認識部により、前記要求数が所定数以上あると認識された場合、前記通信方式選択実行部は、ネットワークインターフェイスカードにより、要求に係るデータを一括して転送させることを特徴とするデータ通信システム。
【請求項１０】
請求の範囲第９項に記載のデータ通信システムにおいて、
前記性能状態認識部により、前記要求数が所定数以上ないと認識された場合、前記通信方式選択実行部は、ネットワークインターフェイスカードにより、要求に係るデータを一つずつ転送させることを特徴とするデータ通信システム。
【請求項１１】
複数の異なる通信方式についての実行機能を有してネットワーク通信を行う計算機システムのデータ通信方法であって、
計算機システムのデータ通信に関する性能又は状態の少なくとも一つを認識する認識ステップと、
前記認識された性能と状態に基づいて、前記複数の異なる通信方式から少なくとも一つの通信方式を設定して実行する通信実行ステップと、
を備えてなるデータ通信方法。
【請求項１２】
請求の範囲第１１項に記載のデータ通信方法において、
前記認識ステップにおいて認識されるデータ通信に関する性能として、ホストプロセッサによるＩ／Ｏバスのデータ転送性能とネットワークインターフェイスカードの持つハードウェアによるデータ転送性能を含むことを特徴とするデータ通信システム。
【請求項１３】
請求の範囲第１２項に記載のデータ通信方法において、
前記認識ステップにおいて認識されるデータ通信に関する状態として、通信要求のあるデータ長が含まれ、データ長が所定の長さ以上の場合、前記通信実行ステップでは、前記通信方式としてネットワークインターフェイスカードの持つハードウェアによるデータ転送を実行することを特徴とするデータ通信方法。
【請求項１４】
請求の範囲第１２項に記載のデータ通信方法において、
前記認識ステップにおいて認識されるデータ通信に関する状態として、通信要求のあるデータ長が含まれ、データ長が所定の長さ以上でない場合、前記通信実行ステップでは、ホストプロセッサによるＩ／Ｏバスを用いたデータ転送を行うことを特徴とするデータ通信方法。
【請求項１５】
請求の範囲第１１項に記載のデータ通信方法において、
前記認識ステップにおいて認識されるデータ通信に関する状態として、通信要求のあるデータに対するネットワークインターフェイスカードのメモリの空き状態が含まれ、前記認識ステップにおいてネットワークインターフェイスカードのメモリに空きがあると認識された場合、前記通信実行ステップでは、前記通信要求のあるデータをネットワークインターフェイスカードのメモリに直接転送することを特徴とするデータ通信方法。
【請求項１６】
請求の範囲第１１項に記載のデータ通信方法において、
前記認識ステップにおいて認識されるデータ通信に関する状態として、通信要求のあるデータに対するホストメモリの空き状態とネットワークインターフェイスカードのメモリの空き状態とが含まれ、前記認識ステップにおいてネットワークインターフェイスカードのメモリに空きが無いと認識された場合において、ホストメモリに空きがあると認識された場合、前記通信実行ステップでは、前記通信要求のあるデータをホストメモリにコピーすることを特徴とするデータ通信方法。
【請求項１７】
請求の範囲第１５項に記載のデータ通信方法において、
前記認識ステップにおいて認識されるデータ通信に関する状態として、通信要求のあるデータに対するホストメモリの空き状態とネットワークインターフェイスカードのメモリの空き状態とが含まれ、前記認識ステップにおいてネットワークインターフェイスカードのメモリに空きが無いと認識された場合において、更にホストメモリに空きが無いと認識された場合、前記通信実行ステップでは、前記通信要求に対する処理実行を待ち状態にすることを特徴とするデータ通信方法。
【請求項１８】
請求の範囲第１１項に記載のデータ通信方法において、
前記認識ステップにおいて認識されるデータ通信に関する状態として、通信要求のあるデータに対するネットワークインターフェイスカードのメモリの空き状態が含まれ、前記認識ステップによりネットワークインターフェイスカードのメモリに空きが無いと認識された場合、空きが生じる時間を推定する推定ステップを備え、前記通信実行ステップでは、空きが生じるまでの推定時間だけ前記通信要求に対する処理実行を待ち状態にすることを特徴とするデータ通信方法。
【請求項１９】
請求の範囲第１１項に記載のデータ通信方法において、
ネットワークインターフェイスカードとホストとの間のデータ転送においてバッファディスクリプタを用いる場合に、
前記認識ステップにより認識されるデータ通信に関する状態として、前記バッファディスクリプタにおける要求数が含まれ、前記認識ステップにおいて前記要求数が所定数以上あると認識された場合、前記通信実行ステップでは、ネットワークインターフェイスカードにより、要求に係るデータを一括して転送させることを特徴とするデータ通信方法。
【請求項２０】
請求の範囲第１９項に記載のデータ通信方法において、
前記認識ステップにおいて、前記要求数が所定数以上ないと認識された場合、前記通信実行ステップでは、ネットワークインターフェイスカードにより、要求に係るデータを一つずつ転送させることを特徴とするデータ通信方法。
【請求項２１】
複数の異なる通信方式についての実行機能を有してネットワーク通信を行う計算機システムのデータ通信方法をコンピュータに実行させるデータ通信プログラムであって、
計算機システムのデータ通信に関する性能又は状態の少なくとも一つを認識する認識ステップと、
前記認識された性能と状態に基づいて、前記複数の異なる通信方式から少なくとも一つの通信方式を設定して実行する通信実行ステップと、
をコンピュータに実行させるデータ通信プログラム。
【請求項２２】
請求の範囲第２１項に記載のデータ通信プログラムにおいて、
前記認識ステップにおいて認識されるデータ通信に関する性能として、ホストプロセッサによるＩ／Ｏバスのデータ転送性能とネットワークインターフェイスカードの持つハードウェアによるデータ転送性能を含むことを特徴とするデータ通信プログラム。
【請求項２３】
請求の範囲第２２項に記載のデータ通信プログラムにおいて、
前記認識ステップにおいて認識されるデータ通信に関する状態として、通信要求のあるデータ長が含まれ、データ長が所定の長さ以上の場合、前記通信実行ステップでは、前記通信方式としてネットワークインターフェイスカードの持つハードウェアによるデータ転送をコンピュータに実行させることを特徴とするデータ通信プログラム。
【請求項２４】
請求の範囲第２２項に記載のデータ通信プログラムにおいて、
前記認識ステップにおいて認識されるデータ通信に関する状態として、通信要求のあるデータ長が含まれ、データ長が所定の長さ以上でない場合、前記通信実行ステップでは、ホストプロセッサによるＩ／Ｏバスを用いたデータ転送を行うことをコンピュータに実行させることを特徴とするデータ通信プログラム。
【請求項２５】
請求の範囲第２１項に記載のデータ通信プログラムにおいて、
前記認識ステップにおいて認識されるデータ通信に関する状態として、通信要求のあるデータに対するネットワークインターフェイスカードのメモリの空き状態が含まれ、前記認識ステップにおいてネットワークインターフェイスカードのメモリに空きがあると認識された場合、前記通信実行ステップでは、前記通信要求のあるデータをネットワークインターフェイスカードのメモリに直接転送することをコンピュータに実行させることを特徴とするデータ通信プログラム。
【請求項２６】
請求の範囲第２１項に記載のデータ通信プログラムにおいて、
前記認識ステップにおいて認識されるデータ通信に関する状態として、通信要求のあるデータに対するホストメモリの空き状態とネットワークインターフェイスカードのメモリの空き状態とが含まれ、前記認識ステップにおいてネットワークインターフェイスカードのメモリに空きが無いと認識された場合において、ホストメモリに空きがあると認識された場合、前記通信実行ステップでは、前記通信要求のあるデータをホストメモリにコピーすることをコンピュータに実行させることを特徴とするデータ通信プログラム。
【請求項２７】
請求の範囲第２５項に記載のデータ通信プログラムにおいて、
前記認識ステップにおいて認識されるデータ通信に関する状態として、通信要求のあるデータに対するホストメモリの空き状態とネットワークインターフェイスカードのメモリの空き状態とが含まれ、前記認識ステップにおいてネットワークインターフェイスカードのメモリに空きが無いと認識された場合において、更にホストメモリに空きが無いと認識された場合、前記通信実行ステップでは、前記通信要求に対する処理実行を待ち状態にすることをコンピュータに実行させることを特徴とするデータ通信プログラム。
【請求項２８】
請求の範囲第２８項に記載のデータ通信プログラムにおいて、
前記認識ステップにおいて認識されるデータ通信に関する状態として、通信要求のあるデータに対するネットワークインターフェイスカードのメモリの空き状態が含まれ、前記認識ステップによりネットワークインターフェイスカードのメモリに空きが無いと認識された場合、空きが生じる時間を推定する推定ステップを備え、前記通信実行ステップでは、空きが生じるまでの推定時間だけ前記通信要求に対する処理実行を待ち状態にすることをコンピュータに実行させることを特徴とするデータ通信プログラム。
【請求項２９】
請求の範囲第２１項に記載のデータ通信プログラムにおいて、
ネットワークインターフェイスカードとホストとの間のデータ転送においてバッファディスクリプタを用いる場合に、
前記認識ステップにより認識されるデータ通信に関する状態として、前記バッファディスクリプタにおける要求数が含まれ、前記認識ステップにおいて前記要求数が所定数以上あると認識された場合、前記通信実行ステップでは、ネットワークインターフェイスカードにより、要求に係るデータを一括して転送させることをコンピュータに実行させることを特徴とするデータ通信プログラム。
【請求項３０】
請求の範囲第２９項に記載のデータ通信プログラムにおいて、
前記認識ステップにおいて、前記要求数が所定数以上ないと認識された場合、前記通信実行ステップでは、ネットワークインターフェイスカードにより、要求に係るデータを一つずつ転送させることをコンピュータに実行させることを特徴とするデータ通信プログラム。
【発明の詳細な説明】
【技術分野】  本発明は、コンピュータの内部データを外部に送信する際に、あるいは外部データをコンピュータ内部に受信する際に、計算機環境に基づいて通信方式を選択することができるデータ通信システムおよびデータ通信方法、データ通信プログラムに関するものである。
【背景技術】  近年、プロセッサ性能とネットワーク性能の向上は目覚ましいものがある。特にネットワーク性能の向上は目覚ましく、ネットワークハードウェアの性能を引き出すためには、プロセッサによる通信処理やデータのコピーを抑えた通信処理が必要となっている。しかしながら、どのような方式を用いることが最良の効率を得ることになるかについては、プロセッサの処理能力、システムバスの転送能力、メモリバンド幅転送能力、Ｉ／Ｏバス転送能力等の影響を受けるため、これらの組合せを総合的に考えなければならない。
従来のネットワーク通信ソフトウェアでは、ネットワークの性質とシステムハードウェアとの組合せにより最適な通信処理方式が異なっていた。このために、特定のネットワークに最適化するハードウェアや通信手順の記述が一つに定められたソフトウェアが備えられ、ソフトウェア処理性能とハードウェア性能の差に応じて適宜通信ソフトウェア及びハードウェア処理の方式を変更可能とすることは考慮されていなかった。
したがって、従来では、あるネットワークを用いた計算機システム上で通信性能（アプリケーション性能）を最大限に引き出すためには、そのシステム（システムハードウェアとネットワークハードウェアやオペレーティングシステム）用に最適化された特定の方式のみを実装するか、複数の方式を実装して、計算機システム毎に固定若しくはパラメータを最適化する必要があり、このため、計算機環境に応じて通信方式を適宜自動的に選択することはできず、したがって常時最適な通信方式を採用して高効率で通信を行うことはできなかった。
本発明は、そのような問題を解決するためになされたものであって、様々な計算機環境に応じて通信方式を自動的に選択することができ、通信性能の高速化、ならびにアプリケーション性能の高速化を図ることができるデータ通信システム、データ通信方法、データ通信プログラムを得ることを目的とするものである。
【発明の開示】
上述した目的を達成するため、本発明は、ネットワーク通信を行う計算機システムのデータ通信システムであって、計算機システムのデータ通信に関する性能又は状態の少なくとも一つを認識する性能状態認識部と、複数の異なる通信方式についての実行機能を有すると共に前記性能状態認識部による性能と状態に基づいて、前記複数の異なる通信方式から少なくとも一つの通信方式を設定して実行する通信方式選択実行部とを備えてなるものである。各通信方式はソフトウェア又はハードウェアにより実行されることができる。
なお、本発明の実施の形態において、通信方式選択実行部は、通信制御部３２とＮＩＣ制御部３３とにより構成される。
前記データ通信に関する性能としては、ホストプロセッサ（ホストＣＰＵ）によるＩ／Ｏバスのデータ転送性能とネットワークインターフェイスカード（ＮＩＣ）の持つハードウェアによるデータ転送性能とが含まれる。
また、前記データ通信に関する状態としては、通信要求のあるデータ長が含まれ、データ長が所定の長さ以上の場合、前記通信方式選択実行部は、ネットワークインターフェイスカードの持つハードウェアによるデータ転送を実行する。この場合、ネットワークインターフェイスカードのＣＰＵはＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を実行して、迅速にデータを転送することができる。
また、通信要求のあるデータ長が所定の長さ以上でない場合は、前記通信方式選択実行部は、ホストプロセッサによるＩ／Ｏバスを用いたデータ転送を行う。なお、データ長についてのテーブルを有し、そのテーブルの値に従って、データ長に対する通信方式を選択するようにしても良い。
さらに、前記データ通信に関する状態として、通信要求のあるデータに対するネットワークインターフェイスカードのメモリの空き状態が含まれ、前記性能状態認識部によりネットワークインターフェイスカードのメモリに空きがあると認識された場合、前記通信方式選択実行部は、前記通信要求のあるデータをネットワークインターフェイスカードのメモリに直接転送する。
また、前記データ通信に関する状態として、通信要求のあるデータに対するホストメモリの空き状態とネットワークインターフェイスカードのメモリの空き状態とが含まれ、前記性能状態認識部によりネットワークインターフェイスカードのメモリに空きが無いと認識された場合において、ホストメモリに空きがあると認識された場合、前記通信方式選択実行部は、前記通信要求のあるデータをホストメモリにコピーする。
また、前記データ通信に関する状態として、通信要求のあるデータに対するホストメモリの空き状態とネットワークインターフェイスカードのメモリの空き状態とが含まれ、前記性能状態認識部によりネットワークインターフェイスカードのメモリに空きが無いと認識された場合において、更にホストメモリに空きが無いと認識された場合、前記通信方式選択実行部は、前記通信要求に対する処理実行を待ち状態にする。
また、前記データ通信に関する状態として、通信要求のあるデータに対するネットワークインターフェイスカードのメモリの空き状態が含まれ、前記性能状態認識部によりネットワークインターフェイスカードのメモリに空きが無いと認識された場合、前記性能状態認識部は空きが生じる時間を推定し、空きが生じるまでの推定時間だけ前記通信要求に対する処理実行を待ち状態にする。
さらに、ネットワークインターフェイスカードとホストとの間のデータ転送においてバッファディスクリプタを用いる場合に、前記データ通信に関する状態として、前記バッファディスクリプタにおける要求数が含まれ、前記性能状態認識部により、前記要求数が所定数以上あると認識された場合、前記通信方式選択実行部は、ネットワークインターフェイスカードにより、要求に係るデータを一括して転送させる。この場合、前記要求数が所定数以上ないと認識された場合、前記通信方式選択実行部は、ネットワークインターフェイスカードにより、要求に係るデータを一つずつ転送させる。
また、本発明は、複数の異なる通信方式についての実行機能を有してネットワーク通信を行う計算機システムのデータ通信方法であって、計算機システムのデータ通信に関する性能又は状態の少なくとも一つを認識する認識ステップと、前記認識された性能と状態に基づいて、前記複数の異なる通信方式から少なくとも一つの通信方式を設定して実行する通信実行ステップとを備えてなるものである。
また、本発明は、複数の異なる通信方式についての実行機能を有してネットワーク通信を行う計算機システムのデータ通信方法をコンピュータに実行させるデータ通信プログラムであって、計算機システムのデータ通信に関する性能又は状態の少なくとも一つを認識する認識ステップと、前記認識された性能と状態に基づいて、前記複数の異なる通信方式から少なくとも一つの通信方式を設定して実行する通信実行ステップとをコンピュータに実行させるものである。
なお、上記プログラムは、上記コンピュータにより読取り可能な媒体に記録されることができ、この記録媒体には、ＣＤ−ＲＯＭやフレキシブルディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の可搬型記憶媒体や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータ並びにそのデータベースや、更に回線上の伝送媒体をも含まれる。
【図面の簡単な説明】  第１図は、本発明の実施の形態におけるハードウェア構成図である。
第２図は、本発明の実施の形態におけるＮＩＣを示すハードウェア構成図である。
第３図は、本発明の実施の形態におけるソフトウェア構成図である。
第４図は、本発明の実施の形態１における機能ブロック図である。
第５図は、本発明の実施の形態１における送信時の動作を示すフローチャートである。
第６図は、ハードウェア性能状態認識部が有するテーブルを示す図である。
第７図は、メモリ状態認識部が有するテーブルを示す図である。
第８図は、本発明の実施の形態１における受信時の動作を示すフローチャートを示す図である。
第９図は、本発明の実施の形態３における機能ブロック図である。
第１０図は、本発明の実施の形態３の動作を示すフローチャートである。
第１１図は、本発明の実施の形態３においてディスクリプタ要求数認識部が有するテーブルである。
【発明を実施するための最良の形態】  以下、本発明の実施の形態を図を用いて詳細に説明する。
実施の形態１．
第１図は本発明の実施の形態におけるメッセージ通信システムの基本ハードウェア構成図、第２図はＮＩＣを示す構成図、第３図はソフトウェア構成図、第４図は実施の形態１における機能ブロック図である。
第１図に示されるように、このメッセージ通信システムは、ホスト１にＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）２を備えている。ホスト１においては、システムバス３を介して、ＣＰＵ（ホストプロセッサ）４とホストメモリ５が接続され、更にインタフェイス（Ｉ／Ｆ）６を介してハードディスク（ＨＤＤ）７が接続されている。そして、ＮＩＣ２は、このインタフェイス６及びＩ／Ｏバス８を介してネットワーク９との間に接続されている。
ＮＩＣ２はＮＩＣ用のＣＰＵ２１とＮＩＣメモリ２２とネットワーク接続用Ｉ／Ｆ２３がシステムバス２４により互いに接続されて構成されている。
また、第３図に示されるように、メッセージ通信システムのソフトウェア構成は、ユーザプログラム実行部３１と、通信制御部（通信ライブラリ部）３２と、ＮＩＣ制御部３３と、性能状態認識部３４とを備えて構成されることができる。性能状態認識部３４は、ハードウェアの性能を認識するハードウェア性能認識部３４１と、メモリの空状態を認識するメモリ状態認識部３４２と、これら認識部３４１，３４２の認識結果に基づいて通信機能を通信制御部３２に指示して設定させる通信方式指示部３４３とを備えている。
更に第４図に示す機能ブロック図において、通信制御部３２は、通信方式指示部３４３により指示された通信方式を設定する通信方式設定部３２１と、この通信方式設定部３２１により設定された通信方式を実行する通信方式実行部３２２とを備えている。またＮＩＣ制御部３３では、やはり通信方式指示部３４３により指示された通信方式を設定するＮＩＣ用通信方式設定部（以下単に通信方式設定部という）３３１と、この通信方式設定部３３１により設定された通信方式を実行するＮＩＣ用通信方式実行部（以下単に通信方式実行部という）３３２とを備えている。また、本システムでは、ユーザプログラム実行部３１による通信要求に係る通信データの情報を取得する通信データ情報取得部３５を備えている。そして、ハードウェア性能認識部３４１が通信データ情報取得部３５からの通信情報（データ長）に対して本システムにおけるハードウェアの性能を認識し、メモリ状態認識部３４２がメモリ３６におけるホストメモリ５やＨＤＤ７やＮＩＣメモリ２２、あるいは必要に応じて他のメモリからメモリ状態を認識し、これら認識結果に基づいて通信方式指示部３４３が通信方式を通信制御部３２及びＮＩＣ制御部３３に指示する。
以上の構成において、第５図を参照しながら実施の形態１の送信時の動作について説明し、第８図を参照しながら実施の形態１の受信時の動作について説明する。実施の形態１は、通信データの長さに基づいて、ホストプロセッサ（ホストＣＰＵ）によるＩ／Ｏバスのデータ転送性能とネットワークインターフェイスカード（ＮＩＣ）の持つハードウェアによるデータ転送性能とを比較し、その通信（転送）をＮＩＣ（ハードウェア）２を用いて行うか、あるいはホストプロセッサ（ＣＰＵ４）を用いて行うかについての通信方式について選択設定して取り扱うようにしたものである。さらに、この際、ＮＩＣメモリ２２の空き状態を判断し、例えば送信に係るデータをＮＩＣメモリ２２に移すか、ホストメモリ５にコピーするかについての通信方式についても適宜判断して取り扱えるようにしている。
Ａ）送信時：データ長が所定長さ以上の場合
ユーザプロセス（ユーザプログラム実行部３１）からデータの送信要求があった場合、通信データ情報取得部３５は、その送信要求に係るデータの情報を取得し、ハードウェア性能認識部３４１はこの通信データ情報取得部３５から得られるデータ長を判断し、そのデータ長に対するハードウェア性能を認識し通信方式指示部３４３に出力する。また、メモリ状態認識部３４２はホストメモリ５における空容量と共にＮＩＣメモリ２２の空容量に基づいてメモリ状態を認識し、そのメモリの空状態を通信方式指示部３４３に出力する。
なお、ハードウェア性能認識部３４１は、第６図に示すようなテーブル情報を有している。このテーブルは複数の異なるデータ長に対するホストのＣＰＵ４の転送性能（転送時間）とＮＩＣ（以下ＮＩＣハードウェアという）２の転送性能（転送時間）を表したものである。ハードウェア性能認識部３４１はこのテーブルにしたがって、送信要求に係るデータがＣＰＵ４を用いて転送された場合と、ＮＩＣを用いて転送された場合との概略所要時間を通信方式指示部３４３に与える。この場合、ハードウェア性能認識部３４１が通信方式指示部３４３に対してどちらの方式を採用するかをテーブルの時間に基づいて（例えば時間コストの短い方を）与えるようにしても良い。なお、通信要求に係るデータ長が所定の長さ以上の場合は、ＮＩＣを用いて転送を行った方が、時間的に速くデータ転送を行うことができるので、第６図に示すテーブルに代わり、例えば、送信要求に係るデータが所定のデータ長以上であるか否かについて判断を行えるような所定データ長についての情報を格納しておくようにしておき、所定のデータ長以上のデータ送信の場合は、原則的（可能な場合）にＮＩＣハードウェアを用いてデータを送信するようハードウェア性能認識部が通信方式指示部に指示を与えるようにしても良い。
また、メモリ状態認識部３４２は、第７図に示すようなテーブルを有している。このテーブルは、ＮＩＣメモリ２２及びホストメモリ５の空き容量と、空が無い場合に送信に係るデータ長を格納するに必要な空きが生じるまでの推定時間を格納したものであり、推定時間はそれまでの空時間の統計データに基づき、或いはデータ送信中などの場合にそのデータの送出速度に基づいて取得するようにしてある。
通信方式指示部３４３は、第５図に示すように、（１）データ長が所定の長さ以上の場合であって（Ｓ１，Ｙ）、且つＮＩＣメモリ２２が空いている場合（Ｓ２，Ｙ）は、ＮＩＣハードウェアを用いてその通信要求に係るデータをＮＩＣメモリ２２に転送する機能（方式）を採用し、通信制御部３２及びＮＩＣ制御部３３の各通信方式設定部３２１，３３１にその方式を設定させてそれぞれの通信方式実行部３２２，３３２がその通信方式を実行する（Ｓ３）。
一方、（２）データ長に対して、ＮＩＣメモリ２２が空いていない場合（Ｓ２，Ｎ）、例えばデータがホストメモリ５にある場合等で直接ネットワークに出力できる場合（Ｓ４，Ｙ）には、ＮＩＣハードウェアを用いて直接インタフェイスからネットワークに出力する機能（方式）を採用する（Ｓ５）ようにしても良いし、或いは、（３）ＮＩＣメモリが空いていない場合（Ｓ２，Ｎ）、又は上記機能を採用する場合には、更にネットワークへの出力線が使用中などでネットワークへの直接の出力ができない場合（Ｓ４，Ｎ）は、通信方式指示部３４３はメモリ状態認識部３４２からの認識結果に基づいてホストメモリ５の空状態を判断し（Ｓ６）、ホストメモリ５が空いている場合（Ｓ６，Ｙ）は、一度そのホストメモリ５へ通信データをコピーする機能（方式）を採用する（Ｓ７）。即ち通信方式指示部３４３は、通信方式設定部３２１，３３１にホストメモリ５への通信データのコピー機能を設定させて通信方式実行部３２２，３３２がその機能を実行する。なお、図示しないがホストメモリ５へのデータのコピーが行われると、所定の時間間隔で通信機能選択指示部はＮＩＣメモリ２２の状態或いは直接ネットワークへの出力が可能となったか否かを判断し、（１）又は（２）の方式を実行させる。一方、（４）ＮＩＣメモリにもホストメモリにも空が無い場合（Ｓ６，Ｎ）は、これらに空が生じ、或いはネットワークへＮＩＣハードウェアを用いて直接出力できるようになるまでの間、即ち上記（１）〜（３）のいずれかの機能が採用可能となるまでの間、通信方式指示部は、ユーザプログラム実行部におけるプロセスを待たせる機能を通信方式設定部に設定させて通信方式実行部がそれを実行する（Ｓ８）。
Ｂ）送信時：データ長が所定長さ以上でない場合
以上は通信データ長が所定の長さ以上の場合に、ＮＩＣハードウェア（ＮＩＣ２）を用いて通信を行う幾つかの機能について説明したが、通信データ長が所定の長さ以上でない場合（Ｓ１，Ｎ）は、上述したＮＩＣハードウェアによるデータ通信に代えて、ホストプロセッサ（ホストＣＰＵ４）を用いた通信（転送）が行われるように性能状態認識部３４は通信制御部３２及びＮＩＣ制御部３３の通信方式設定部３２１，３３１に指示を出す。この場合、ホストプロセッサ（ＣＰＵ４）が行う機能は前述のＮＩＣハードウェアが行う動作と同じである。
すなわち、性能状態認識部３４（通信方式指示部３４３）は、（１）データ長が所定の長さ以上でない場合であって、且つＮＩＣメモリ２２が空いている場合（Ｓ９，Ｙ）は、ホストプロセッサ（ＣＰＵ４）を用いてその通信要求に係る例えばホストメモリ５またはＨＤＤ７にあるデータをＮＩＣメモリ２２に転送する機能（方式）を採用し、通信制御部３２及びＮＩＣ制御部３３の通信方式設定部３２１，３３１にその方式を設定させて通信機能実行部３２２，３３２がその通信機能を実行する（Ｓ１０）。一方、（２）データ長に対して、ＮＩＣメモリ２２が空いていない場合（Ｓ９，Ｎ）、その通信に係るデータが例えばホストメモリ５にありネットワークへ直接出力できるような場合（Ｓ１１，Ｙ）は、ホストプロセッサ（ＣＰＵ４）を用いて直接インタフェイスからネットワークに出力する機能を採用するようにしても良い（Ｓ１２）。また、（３）ＮＩＣメモリが空いていない場合、或いは上記機能を採用する場合には、さらにネットワークへの出力線が使用中などでネットワークへの直接の出力ができない場合（Ｓ１１，Ｎ）は、通信方式指示部３４３はメモリ状態認識部３４２からの認識結果に基づいてホストメモリ５の空状態を判断し、ホストメモリ５が空いている場合（Ｓ１３，Ｙ）は、その通信に係るデータが例えばＨＤＤ７にあるような場合は、一度そのデータをホストメモリ５へコピーする方式を採用する。即ち通信方式指示部３４３は、通信方式設定部３２１，３３１にホストメモリ５への通信データのコピー機能を設定させて通信方式実行部がその方式を実行する（Ｓ１４）。ホストメモリ５へのデータのコピーが行われると、例えば所定の時間間隔で通信方式指示部３４３はＮＩＣメモリ２２の状態或いは直接ネットワークへの出力が可能となったか否かを判断し、（１）又は（２）の機能を実行させる。一方、（４）ＮＩＣメモリ２２にもホストメモリ７にも空が無い場合（Ｓ１３，Ｎ）は、これらに空が生じ、或いはネットワークへＮＩＣハードウェアを用いて直接出力できるようになるまでの間、即ち上記（１）〜（３）のいずれかの機能が採用可能となるまでの間、通信方式指示部３４３は、ユーザプログラム実行部３１におけるプロセスを待たせる方式を通信方式設定部に設定させて通信方式実行部がそれを実行する（Ｓ１５）。
Ｃ）受信時：データ長が所定長さ以上の場合
ユーザプロセス（ユーザプログラム実行部３１）からデータの受信要求があった場合、通信データ情報取得部３５は、その受信要求に係るデータの情報を取得している。ハードウェア性能認識部３４１はこの通信データ情報取得部３５から得られるデータ長を判断し、そのデータ長に対するハードウェア性能を通信方式指示部３４３に出力する。また、メモリ状態認識部３４２はホストメモリ５における空容量と共にＮＩＣメモリ２２の空容量に基づいてメモリ状態を認識する。そしてメモリの空状態を通信方式指示部３４３に出力する。
通信方式指示部３４３は、第８図に示すように、（１）データ長が所定の長さ以上の場合（Ｓ２１，Ｙ）であって、且つＮＩＣメモリ２２が空いている場合（Ｓ２２，Ｙ）は、ＮＩＣハードウェアを用いてその通信要求に係るデータをＮＩＣメモリ２２に転送する機能（方式）を採用し、通信制御部３２及びＮＩＣ制御部３３それぞれの通信方式設定部３２１，３３１にその方式に対応した設定をさせて、それぞれの通信方式実行部３２２，３３２が設定された通信方式を実行する（Ｓ２３）。一方、（２）データ長に対して、ＮＩＣメモリが空いていない場合（Ｓ２２，Ｎ）、通信方式指示部３４３はメモリ状態認識部３４２からの認識結果に基づいてホストメモリ５の空状態を判断し、ホストメモリ５が空いている場合（Ｓ２４，Ｙ）は、ＮＩＣメモリ２２に転送することなく、ＮＩＣハードウェアを用いて、そのデータをホストメモリ５へコピーする方式を採用する。即ち通信方式指示部３４３は、通信方式設定部３２１，３３１にホストメモリ５への通信データのコピー機能を設定させて通信方式実行部３２２，３３２がその方式を実行する（Ｓ２５）。一方、（４）ＮＩＣメモリ２２にもホストメモリ５にも空が無い場合（Ｓ２４，Ｎ）は、これらに空が生じ、受信できるようになるまでの間、即ち上記（１）〜（３）のいずれかの方式が採用可能となるまでの間、通信方式指示部３４３は、ユーザプログラム実行部３１におけるプロセスを待たせる方式を通信方式設定部３２１，３３１に設定させて通信方式実行部３２２，３３２がそれを実行する（Ｓ２６）。
Ｄ）受信時：データ長が所定長さ以上でない場合
データ長が所定の長さ以上でない場合は、性能状態認識部３４は、上述したデータ通信（転送）動作をＮＩＣハードウェアに代えてホストプロセッサ（ホストＣＰＵ４）により行わせる。
即ち、データ長が所定の長さ以上でなく（Ｓ２１，Ｎ）であって、且つＮＩＣメモリ２２が空いている場合（Ｓ２７，Ｙ）は、ホストプロセッサ（ＣＰＵ４）を用いてその通信要求に係るデータをＮＩＣメモリ２２に転送する機能（方式）を採用し、通信制御部３２及びＮＩＣ制御部３３それぞれの通信方式設定部３２１，３３１にその方式に対応した設定をさせて、それぞれの通信方式実行部３２２，３３２が設定された通信方式を実行する（Ｓ２８）。一方、データ長に対して、ＮＩＣメモリ２２が空いていない場合（Ｓ２７，Ｎ）、通信方式指示部３４３はメモリ状態認識部３４２からの認識結果に基づいてホストメモリ５の空状態を判断し、ホストメモリ５が空いている場合（Ｓ２９，Ｙ）は、ホストのＣＰＵ４を用いて、そのデータをホストメモリ５へコピーする方式を採用する。即ち通信方式指示部３４３は、通信方式設定部３２１，３３１にホストメモリ５への通信データのコピー機能を設定させて通信方式実行部３２２，３３２がその方式を実行する（Ｓ３０）。一方、ＮＩＣメモリ２２にもホストメモリ５にも空が無い場合（Ｓ２９，Ｎ）は、これらに空が生じ、受信できるようになるまでの間、即ち上記（１）〜（３）のいずれかの方式が採用可能となるまでの間、通信方式指示部３４３は、ユーザプログラム実行部３１におけるプロセスを待たせる方式を通信方式設定部３２１，３３１に設定させて通信方式実行部３２２，３３２がそれを実行する（Ｓ３１）。
実施の形態２．
データ長が所定の長さ以上の場合、若しくは所定の長さ以上でない場合において、上記Ａ）〜Ｃ）における（２）（３）（４）等でＮＩＣメモリやホストメモリに空きが生じていない場合、通信データ情報取得部から得られる通信データ情報に基づいて、メモリ状態認識部は、それらメモリに空きが生じる時間を推定し、その推定時間だけ、ユーザプロセスを待たせるようにすることもできる。この推定時間は、例えば経験値に基づきＮＩＣメモリに空きが無い場合から所定容量の空きが生じるまでの時間を記憶しておいたり、あるいはメモリの空き速度を判断して所定のデータを記憶させるに十分な容量が空く間での時間を推定することによって定められる。ホストメモリについても同様に推定し、ユーザプロセスを待たせることができる。そして、空きが生じた場合に、それぞれ（２）（３）（４）の段階に応じた転送処理を実行する。
実施の形態３．
実施の形態３は送受信ディスクリプタを用いる通信方式を採用する場合の取り扱いについて説明する。実施の形態３は、送受信ディスクリプタに要求数が所定数以上ある場合に、複数纏めて転送することにより、ＮＩＣハードウェアによる起動回数を減らし、起動オーバヘッドを減らすようにしたものである。ＮＩＣハードウェアは起動オーバヘッドが大きいので、起動回数を減らすことは、通信効率を高める上で大きな効果をもたらす。第９図は実施の形態３におけるブロック機能図を示す。ここでは、第４図と同一対象物については、同一の符号を付して、ここでの説明を省略する。実施の形態３では、通信制御部３２Ａに送受信ディスクリプタ４０（４０１，４０２）が設けられると共に、性能状態認識部３４Ａに送受信ディスクリプタ要求数の認識部４０３が設けられ、通信要求があると、送受信ディスクリプタ４０の情報に基づいて、ディスクリプタ数を判断し、それが所定数以上の場合は、纏めて通信（転送）を行い、一方所定数以上でない場合は一つずつ通信（転送）を行う。即ち、送信の場合は、送信ディスクリプタ数が所定数以上の場合は、データを纏めてＮＩＣメモリ２２に転送し、あるいは外部ネットワークに出力するよう通信方式指示部３４３Ａは通信制御部３２Ａ及びＮＩＣ制御部３３の通信方式設定部３２１，３３１に方式を設定させ、通信方式実行部３２２，３３２がそれを実行する。送信ディスクリプタ数が所定数以上でない場合は、以上の処理を一つずつ行う。この際、送信されるデータ長の長さが所定長さ以上の場合は実施の形態１に準じてＮＩＣハードウェアが転送処理を行う。またデータ長の長さが所定長さ以上でない場合は、ホストプロセッサ（ＣＰＵ４）が転送処理を行う。また受信の場合も同様に受信ディスクリプタ数が所定数以上の場合は、データをまとめてホストメモリ５やＨＤＤ７に転送する。送信ディスクリプタ数が所定数以上でない場合は、以上の処理を一つずつ行う。
送信の場合の動作を第１０図のフローチャートに示している。これによれば、ディスクリプタ要求数が所定数以上の場合（Ｓ４１，Ｙ）は全データ長が所定長さ以上であるか否かが判断され、所定長さ以上の場合（Ｓ４２，Ｙ）はＮＩＣハードウェアにより纏めて転送を行う（Ｓ４３）。全データ長が所定長さ以上でない場合（Ｓ４２，Ｎ）はホストＣＰＵ４により全データを纏めて例えばＮＩＣメモリ２２に送信する（Ｓ４４）。
一方、ディスクリプタ要求数が所定数以上でない場合（Ｓ４１，Ｎ）は、１つずつデータ転送を行う。この場合、各データ毎にデータ長が判断され、所定長さ以上の場合はＮＩＣハードウェアによる転送が行われ、所定長さ以上でない場合はホストのＣＰＵ４による転送が行われる（Ｓ４５）。
以上、本発明の様々な実施の形態を説明したが、本発明は上述した実施の形態に限定されることはなく、本発明の要旨を逸脱しない範囲において応用可能であることはもちろんである。
【産業上の利用の可能性】
以上説明したように、本発明によれば、様々な計算機環境に応じて通信方式を自動的に選択することができ、通信性能の高速化、ならびにアプリケーション性能の高速化を図ることができるデータ通信システム、データ通信方法、データ通信プログラムを得ることができるという効果を奏する。
【図１】
2004068356.tif 000003
【図２】
2004068356.tif 000004
【図３】
2004068356.tif 000005
【図４】
2004068356.tif 000006
【図５】
2004068356.tif 000007
【図６】
2004068356.tif 000008
【図７】
2004068356.tif 000009
【図８】
2004068356.tif 000010
【図９】
2004068356.tif 000011
【図１０】
2004068356.tif 000012
【図１１】
2004068356.tif 000013
【手続補正書】
【提出日】平成17年4月12日(2005.4.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワーク通信を行う計算機システムのデータ通信システムであって、
計算機システムのデータ通信に関する（性能または）状態として、通信要求のあるデータに対するネットワークインターフェイスカードのメモリの空き状態を認識する性能状態認識部と、
複数の異なる通信方式についての実行機能を有すると共に前記性能状態認識部により認識された状態に基づいて、前記複数の異なる通信方式から少なくとも一つの通信方式を設定して実行する通信方式選択実行部であって、前記性能状態認識部により、ネットワークインターフェイスカードのメモリに空きがあると認識された場合に、前記通信要求のあるデータをネットワークインターフェイスカードのメモリに直接転送する通信方式を設定して実行する通信方式選択実行部と、
を備えてなるデータ通信システム。
【請求項２】
請求項１に記載のデータ通信システムにおいて、
前記計算機システムのデータ通信に関する状態として、通信要求のあるデータに対するホストメモリの空き状態とネットワークインターフェイスカードのメモリの空き状態とが含まれ、前記性能状態認識部によりネットワークインターフェイスカードのメモリに空きが無いと認識された場合において、ホストメモリに空きがあると認識された場合、前記通信方式選択実行部は、前記通信要求のあるデータをホストメモリにコピーすることを特徴とするデータ通信システム。
【請求項３】
請求項１に記載のデータ通信システムにおいて、
前記計算機システムのデータ通信に関する状態として、通信要求のあるデータに対するホストメモリの空き状態とネットワークインターフェイスカードのメモリの空き状態とが含まれ、前記性能状態認識部によりネットワークインターフェイスカードのメモリに空きが無いと認識された場合において、更にホストメモリに空きが無いと認識された場合、前記通信方式選択実行部は、前記通信要求に対する処理実行を待ち状態にすることを特徴とするデータ通信システム。
【請求項４】
請求項１に記載のデータ通信システムにおいて、
前記計算機システムのデータ通信に関する状態として、通信要求のあるデータに対するネットワークインターフェイスカードのメモリの空き状態が含まれ、前記性能状態認識部によりネットワークインターフェイスカードのメモリに空きが無いと認識された場合、前記性能状態認識部は空きが生じる時間を推定し、空きが生じるまでの推定時間だけ前記通信要求に対する処理実行を待ち状態にすることを特徴とするデータ通信システム。
【請求項５】
請求項１に記載のデータ通信システムにおいて、
ネットワークインターフェイスカードとホストとの間のデータ転送においてバッファディスクリプタを用いる場合に、
前記計算機システムのデータ通信に関する状態として、前記バッファディスクリプタにおける要求数が含まれ、前記性能状態認識部により、前記要求数が所定数以上あると認識された場合、前記通信方式選択実行部は、ネットワークインターフェイスカードにより、要求に係るデータを一括して転送させることを特徴とするデータ通信システム。
【請求項６】
請求項５に記載のデータ通信システムにおいて、
前記性能状態認識部により、前記要求数が所定数以上ないと認識された場合、前記通信方式選択実行部は、ネットワークインターフェイスカードにより、要求に係るデータを一つずつ転送させることを特徴とするデータ通信システム。
【国際調査報告】
2004068356.tif 000014
2004068356.tif 000015
2004068356.tif 000016
2004068356.tif 000017
2004068356.tif 000018