(57)【特許請求の範囲】
【請求項１】
演算処理部と、主記憶部と、ネットワークアダプタを少なくとも含む計算機を、それぞれのネットワークアダプタを介して、少なくとも２以上接続して構成されるネットワークにおいて計算機のアプリケーション間でデータの通信を行う通信方法であって、
前記データの通信に先立って、送信側計算機のアプリケーションと受信側計算機のアプリケーションとの間でデータの直接転送を行うための識別子をメッセージ通信で決定し、
受信側計算機のアプリケーションが当該計算機の主記憶部に前記識別子に対応した受信領域を予め割り当て、前記割り当てられた受信領域と前記識別子との対応を示す情報をテーブル形式で設定した後に、
送信側計算機のアプリケーションが送信処理を発行すると、該送信側計算機のネットワークアダプタはデータに前記識別子を付加して該データを送信し、
受信側計算機のネットワークアダプタは、ネットワークを介して転送された前記識別子が付加されたデータについて、前記受信領域と識別子の対応関係を示す情報を検索して、受信先となる予め割り当てられた受信領域を特定し、当該受信領域にデータの転送を行ない、
受信側計算機のアプリケーションは受信要求を発行した際、まだデータが前記受信領域に転送されていない場合はブロックされ、該データが該受信領域に転送された場合に該ブロックされていた受信側計算機のアプリケーションが起動されて、該受信領域に転送されているデータを受け取り、
受信側計算機のアプリケーションは受信要求を発行した際、既にデータが前記受信領域に転送されていた場合は受信領域に転送されているデータを即座に受け取ること
を特徴とする通信方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
計算機システム等の情報処理システムを接続して構成したネットワークにおける、情報通信性能の向上ための技術に関する。
【０００２】
特に、仮想メモリを有する計算機システム等の情報処理システムを接続したネットワークにおける、情報通信処理の高速化のための技術に関する。
【０００３】
【従来の技術】
従来のネットワークを構成する情報処理システムの構成例を図２に示す。
【０００４】
ここでは、ネットワークを構成する情報処理システムの一例として、ネットワーク内計算機２００の構成について説明する。
【０００５】
ネットワーク内計算機２００は、プロセッサ２３０、メモリ２５０、ネットワークアダプタ２１０を有して構成され、各々の構成要素は、システムバス２８０に接続された構成になっている。
【０００６】
ネットワークアダプタ２１０は、さらに、ＤＭＡ制御部２２０、送受信用バッファ２２１、ネットワーク送受信部２１８、受信ＤＭＡ制御情報保持手段２１１、送信ＤＭＡ制御情報保持手段２１２、割込制御情報保持手段２１３、アダプタ制御情報保持手段２１４、およびアダプタ制御手段２１５を備えており、これらは内部バス２２２によって接続された構成になっている。
【０００７】
ＤＭＡ制御部２２０は、受信ＤＭＡ制御情報保持手段２１１、送信ＤＭＡ制御情報保持手段２１２、割込制御情報保持手段２１３、アダプタ制御情報保持手段２１４に保持された情報に基づいて、送受信用バッファ２２１とメモリ２５０との間のデータ転送の制御を行う手段であり、例えば、ＴＴＬ、ＣＭＯＳ等の電子デバイスにより実現することができる。
【０００８】
送受信用バッファ２２１は、ネットワーク２９０を介して送信するパケット、および、ネットワーク２９０を介して受信したパケットを格納、保持する手段であり、例えば、ＲＡＭ等によって実現することができる。
【０００９】
ネットワーク送受信部２１８は、ネットワーク２９０と送受信用バッファ２２１との間でデータ通信を行わせる手段であり、例えば、各種ＴＴＬ、ＣＭＯＳ等の電子デバイスによって実現できる。
【００１０】
受信ＤＭＡ制御情報保持手段２１１は、送受信用バッファ２２１からメモリ２５０にデータ転送を行う際に行う制御に関する情報を保持する手段であり、例えば、ＲＡＭ、各種ＴＴＬ、各種ＣＭＯＳ等の電子デバイスによって実現できる。
【００１１】
送信ＤＭＡ制御情報保持手段２１２は、メモリ２５０から送受信用バッファ２２１にデータを転送を行う際に行う制御に関する情報を保持する手段であり、例えば、ＲＡＭ、各種ＴＴＬ、各種ＣＭＯＳ等の電子デバイスによって実現できる。
【００１２】
割込制御情報保持手段２１３は、送受信用バッファ２２１とメモリ２５０との間でのデータ転送処理の終了時、および、ある定められた動作の終了時等に、割込を発行する場合に使用する情報を保持する手段であり、例えば、ＲＡＭ等の電子デバイスによって実現できる。
【００１３】
アダプタ制御情報保持手段２１４は、ネットワークアダプタ２００が動作を行う際に使用する各種の制御情報を保持する手段であり、例えば、ＲＡＭ、各種ＴＴＬ、各種ＣＭＯＳ等の電子デバイスによって実現できる。
【００１４】
アダプタ制御手段２１５は、プロセッサ２３０がネットワークアダプタ２００の動作の起動、停止等を行うように制御する手段であり、例えば、ＲＡＭ、各種ＴＴＬ、各種ＣＭＯＳ等の電子デバイスによって実現できる。
【００１５】
また、ネットワーク送受信部２１８は、内部に自アドレス保持手段２１９を備えている。自アドレス保持手段２１９は、ネットワーク送受信部２１８が、ネットワーク２９０を介して通信されるパケットを監視し、該パケットが自計算機宛のパケットか否かを判断するために、自アドレスを保持する手段であり、例えば、ＲＡＭ、各種ＴＴＬ、各種ＣＭＯＳ等の電子デバイスによって実現できる。
【００１６】
以下、上記のような従来のシステムを使用したデータ通信における受信処理の処理手順について説明する。
【００１７】
まず、ネットワークアダプタ２１０は、ネットワーク２９０を介して伝送されてくるパケットの転送先が、自計算機であるか否かを判断する。
【００１８】
次に、パケットの転送先が、自計算機であると判断した場合、ネットワークアダプタ２１０は、ネットワークを介して伝送されてくるパケットを、送受信バッファ２２１内に取り込む。
【００１９】
さらに、ＤＭＡ制御部２２０は、受信ＤＭＡ制御情報保持手段２１１が保持する情報に基づき、ＤＭＡ処理（「Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ」の略：直接、メモリにアクセスして入出力処理を行うことを意味し、以下このように記す）によって、取り込んだパケットを、ＯＳ（オペレーティング・システム）空間内に存在する受信パケット領域２６３に転送する。
【００２０】
次に、ネットワークアダプタ２１０は、ＤＭＡ処理によるデータ転送処理の終了後に、割込制御情報保持手段２１３の保持する情報の内容にしたがって、プロセッサ２３０に割り込みを指示する。
【００２１】
割り込みを指示されたプロセッサ２３０は、ＯＳ空間内に存在する受信パケット領域２６３に存在するパケット内の情報にもとづき、データを転送すべきユーザ空間内に存在するユーザデータ２７１等を調べ、その後、データをコピーする処理を行うことによって、アプリケーションにデータを引き渡す一連の処理を行う。
【００２２】
また、高速通信機構の検討において、平成５年５月の「並列処理シンポジウムＪＳＰＰ’９３」における「メッセージ通信の分散メモリ型並列計算機性能への影響−通信と演算のオーバラップと直接メッセージ受信の効果」の発表において、直接メッセージ通信手段が提案されており、メッセージへッダに、受信アドレスを付加しておくことが考えられるが、この手段では、受信メッセージをユーザ領域に転送可能か否かをを調べる手段、および、送信側で受信メッセージのアドレスを検出する手段が必要である。
【００２３】
【発明が解決しようとする課題】
受信側のアドレスを直接指定するためには、送信側にて、受信側のアドレスを知っておくことが必須であるが、これを行うためには、送受信に先だって、別途、所定の通知をおこなう必要がある。従来の方法では、予め通信をおこなうことによってこれを実現するため、通信処理オーバヘッドの削減ができない。
【００２４】
すなわち、ハードウエアによる、受信パケットのメモリへの転送処理が完了するまでは、受信パケットのデータの引き渡し先となる、アプリケーションおよびそのデータ領域のアドレスが特定できないのである。
【００２５】
このため、受信パケットは、必ず、一度は、ＯＳ空間内に存在する受信バッファによって受信されてから、データコピー処理等によって、データを目的のアプリケーションに引き渡す処理が必要となる。
【００２６】
かかるデータコピー処理は、データ量に比例して処理量が増加する。現在では、データ通信処理において、前記データコピー処理の占める割合が高いため、高速データ通信処理を行う上での大きな問題となっている。
【００２７】
本発明の目的は、計算機システム等の情報処理システムを接続して構成したネットワークにおける、情報通信性能の向上ための技術を提供することにある。
【００３０】
【課題を解決するための手段】
本発明は、演算処理部と、主記憶部と、ネットワークインタフェースを少なくとも含む計算機を、それぞれのネットワークインタフェースを介して、少なくとも２以上接続して構成されるネットワークを介してデータの通信を行ないながら動作する計算機システムにおける通信方法であって、
データの転送に先立ち、受信側の計算機の主記憶部に受信領域を予め割り当て、ネットワークを介して送信する際に該予め割り当てられた受信領域を指定する識別子を付加し、
受信側計算機に、前記予め割り当てられた受信領域と前記付加された識別子の対応を示す情報を持たせ、ネットワークを介して転送されたデータについて、受信側計算機において、前記受信領域と識別子の対応関係を示す情報を検索して、受信先となる予め割り当てられた受信領域を特定し、当該受信領域にデータの転送を行なうことを特徴とする。
【００３１】
すなわち、本発明では、現状の通信（ＴＣＰ／ＩＰ等）の動作と同様に、受信側と送信側で使用する、仮想的な回線の識別子を設定し、送信側では、その識別子を指定して送信し、受信側では、その識別子に対応して受信領域のアドレスを設定して、ハードウエアにて、識別子に基づいて受信領域のアドレスへの変換を行い、その後、データ転送を行うことで、余分な通信処理を発生させることなく、直接データを送信したい領域に、データを送るものである。
【００３２】
さらに、送信側となる情報処理システムでは、受信側の情報処理システム内での転送先を指示する情報を、分割されるべきデータごとに、ヘッダ部の特定の領域にさらに記述する、ネットワークにおける通信方法も好ましい。
【００３３】
【作用】
本発明においては、送受信するパケット内に、パケットを分割するための情報およびパケットが受信されるべき領域を示す情報である受信領域指定情報を備えた構成にする。
【００３４】
そして、ネットワークを構成する、受信側の情報処理装置は、パケットを受信した後、パケットを分割するための情報に基づいて、パケットを分割し、情報処理装置が備えるメモリ上に存在する前記受信領域指定情報に対応して、受信領域を指定するために、予め受信側装置に備えられている変換テーブルを参照する。
【００３５】
かかる変換テーブルの参照によって、パケット内のデータの受信領域を決定し、当該受信領域に、パケット内のデータを、ＤＭＡ処理等によって転送する。
【００３６】
以上のように、本発明によれば、ネットワークを介して通信を行うアプリケーションプロセス間での通信を、受信側のプロセッサによるデータコピー処理を不要として実現可能な高速なデータ通信機能を有する手段を安価に提供することができる。
【００３７】
【実施例】
本発明の実施例について、以下、図面を参照して説明する。
【００３８】
図１に、ネットワークを構成する、本発明にかかる情報処理システムの一例である、ネットワーク内計算機の構成例を示す。
【００３９】
ネットワーク内計算機１００を備えて構成されるネットワーク１９０は、通常、ネット内計算機１００を、少なくとも２台以上備えた構成になっている。
【００４０】
以下、ネットワーク内計算機１００の構成を説明する。
【００４１】
ネットワーク内計算機１００は、プロセッサ１３０と、メモリ１５０と、ネットワークアダプタ１１０とを有して構成され、これらの構成要素は、システムバス１８０を介して接続されている。
【００４２】
また、ネットワーク内計算機１００のシステムの構成によっては、少なくとも１以上のＩ／Ｏ装置１４０を設けて構成するのが好ましい。
【００４３】
また、上記ネットワークアダプタ１１０は、マルチキューＤＭＡ制御部１２０と、送受信用バッファ１２１と、ネットワーク送受信部１１８と、受信ＤＭＡ制御情報保持手段１１１と、送信ＤＭＡ制御情報保持手段１１２と、割込制御情報保持手段１１３と、アダプタ制御情報保持手段１１４と、アダプタ制御手段１１５と、受信ＤＭＡ制御情報選択手段１１６と、ＤＭＡ分割情報保持手段１１７とを有して構成され、各構成要素は、内部バス１２２を介して接続されている。
【００４４】
マルチキューＤＭＡ制御部１２０は、受信ＤＭＡ制御情報保持手段１１１、アダプタ制御情報保持手段１１４、および受信ＤＭＡ制御情報選択手段１１６に保持された情報と、ネットワークから受信したパケットに含まれる情報と、メモリ１５０に保持されている受信領域指定情報選択情報１６７および受信領域指定情報（１６４から１６５）の各情報に基づいて、送受信用バッファ１２１からメモリ１５０へのデータ転送処理（受信時の処理）と、また、送信ＤＭＡ制御情報保持手段１１２、割込制御情報保持手段１１３、およびアダプタ制御情報保持手段１１４に保持された情報と、メモリ１５０の送信領域指定情報（１６６）とに基づいて、メモリ１５０から送受信用バッファ１２１へのデータ転送処理（送信時の処理）を行う手段であり、例えば、各種ＴＴＬ、ＣＭＯＳ等の電子デバイスによって実現することができる。
【００４５】
送受信用バッファ１２１は、ネットワーク１９０を介して送信するパケット、および、ネットワーク１９０を介して受信したパケットを保持する手段であり、例えば、ＲＡＭ等の電子デバイスによって実現することができる。
【００４６】
ネットワーク送受信部１１８は、ネットワーク１９０と送受信用バッファ１２１との間のデータ通信を行わせる手段であり、例えば、各種ＴＴＬ、ＣＭＯＳ等の電子デバイスによって実現することができる。
【００４７】
受信ＤＭＡ制御情報保持手段１１１は、送受信用バッファ１２１からメモリ１５０へのデータ転送時に行う制御に関する情報を保持する手段であり、例えば、ＲＡＭ、各種ＴＴＬ、ＣＭＯＳ等の電子デバイスによって実現することができる。
【００４８】
送信ＤＭＡ制御情報保持手段１１２は、メモリ１５０から送受信用バッファ１２１へのデータ転送時に行う制御に関する情報を保持する手段であり、例えば、ＲＡＭ、各種ＴＴＬ、ＣＭＯＳ等の電子デバイスによって実現することができる。
【００４９】
割込制御情報保持手段１１３は、送受信用バッファ１２１とメモリ１５０との間でのデータ転送処理の終了時、および、所定の動作の終了時等に、割込を発行する際に使用する情報を保持する手段であり、例えば、ＲＡＭ、各種ＴＴＬ、ＣＭＯＳ等の電子デバイスによって実現することができる。
【００５０】
アダプタ制御情報保持手段１１４は、ネットワークアダプタ１１０が動作を行う際に使用する、制御情報を保持する手段であり、例えば、ＲＡＭ、各種ＴＴＬ、ＣＭＯＳ等の電子デバイスによって実現することができる。
【００５１】
アダプタ制御手段１１５は、送受信パケットをＤＭＡ処理により、データ転送制御する際、制御情報等をネットワークアダプタ１１０に、プロセッサ１３０によって通知させるための手段であり、例えば、各種ＴＴＬ、ＣＭＯＳ等の電子デバイスによって実現することができる。
【００５２】
ネットワーク送受信部１１８は、送受信用バッファ１２１の内容を、ネットワーク１９０に出力する送信処理と、ネットワーク１９０上の通信パケットを監視し、自アドレスを含むパケットを、送受信用バッファ１２１に取り込む処理（かかる処理は、次に示す自アドレス保持手段１１９によって行われる）を行う手段であり、例えば、各種ＴＴＬ、ＣＭＯＳ等の電子デバイスによって実現することができる。また、ネットワーク送受信部１１８に備えられた、自アドレス保持手段１１９は、例えば、ＲＡＭ等の電子デバイスによって実現できる。
【００５３】
また、送受信用バッファ１２１は、例えば、ＲＡＭ等の電子デバイスによって実現できる。なお、プロセッサ１３０は、例えば、ＣＰＵ（中央処理装置）によって実現可能であり、メモリ１５０は、例えばＲＡＭによって実現可能である。
【００５４】
次に、メモリ１５０に格納されるデータの構造について説明する。
【００５５】
メモリ１５０に格納されるデータの構造は、受信処理に関連するデータ構造と、送信処理に関連するデータ構造を考慮している。
【００５６】
受信処理に関連するデータ構造としては、受信領域指定情報選択情報１６７、受信領域指定情報（１６４から１６５）、受信プロトコル情報（１６１から１６２）、ユーザデータ（１７１から１７２）がある。
【００５７】
ユーザデータ（１７１から１７２）は、受信側がデータを受信する領域として確保した領域に格納された情報である。
【００５８】
受信プロトコル情報（１６１から１６２）は、通信の際に必要なプロトコル情報を転送するための領域に格納された情報である。
【００５９】
通信の際に必要なプロトコル情報とは、例えば、受信すべきプロセスを特定するための情報等である。
【００６０】
受信領域指定情報（１６４から１６５）は、（受信の際に）パケットを転送する際の制御情報であり、例えば、ユーザデータ（１７１から１７２）、受信プロトコル情報（１６１から１６２）のアドレス情報等である。受信領域指定情報（１６４から１６５）では、複数のユーザデータを指し示す情報を保持してもよい。
【００６１】
図１のメモリ１５０内に存在する、受信領域指定情報選択情報１６７は、後で示す、ネットワークパケットの受信領域指定情報３１２−ｂが示す情報にもとづいて、複数存在する受信領域指定情報（１６４から１６５）のいずれかを選択するための情報を保持し、そのデータ構造は、テーブル状になっている。
【００６２】
送信処理に関連するデータは、例えば、送信領域指定情報（１６６）については、送信プロトコル情報（１６３）、ユーザデータ（１７３）等である。
【００６３】
ユーザデータ（１７３）は、送信側が送信するデータ領域に格納されたデータである。送信プロトコル情報（１６３）は、通信の際に必要なプロトコル情報を転送するための領域に格納された情報である。通信の際に必要なプロトコル情報とは、例えば、受信先のプロセスを特定するための情報等である。
【００６４】
送信領域指定情報（１６６）は、（送信の際）パケットを転送する際に必要な制御情報であり、例えば、ユーザデータ（１７３）、送信プロトコル情報（１６３）のアドレス情報およびサイズ情報である。送信領域指定情報（１６６）は、複数のユーザデータを指し示す情報を保持してもよい。
【００６５】
受信領域指定情報（１６４から１６５）は、受信プロトコル情報（１６１から１６２）およびユーザデータ（１７１から１７２）の転送先領域を指定する情報であり、例えば、メモリ１５０内におけるアドレス、データサイズ等を有する。
【００６６】
送信領域指定情報１６６は、送信プロトコル情報１６３、および、ユーザデータ１７３を指定する情報であり、例えば、メモリ１５０内におけるアドレス、データサイズ等を有する。
【００６７】
ここで、送信プロトコル情報１６３、ユーザデータ１７３は、受信処理側と同様に、複数備えておくのも良い。
【００６８】
本実施例においては、ユーザデータ（１７１から１７２）、ユーザデータ（１７３）は、メモリ１５０内のユーザ空間１７０に存在する。一方、受信領域指定情報選択情報１６７、受信プロトコル情報（１６１から１６２）、受信領域指定情報（１６４から１６５）、送信領域指定情報（１６６）、および、送信プロトコル情報１６３は、ＯＳ空間１６０内に存在する。
【００６９】
次に、図３を参照して、ネットワーク上で送受信されるパケットである、ネットワークパケットの構成を示す。
【００７０】
従来のネットワークパケットは、例えば、データ３１０−ａ、タイプ３２０−ａ、送信元アドレス３２１−ａ、受信先アドレス３２２−ａを有して構成されていた。
【００７１】
データ３１０−ａは、ＯＳ、ソフトウエアが処理する対象となる情報である。
【００７２】
タイプ３２０−ａは、ネットワークアダプタ１１０が所定の処理を行うために必要な情報であり、例えば、データ全体の長さ等の情報である。
【００７３】
送信元アドレス３２１−ａは、パケットを送出したネットワーク内計算機を識別するための識別子である。さらに、受信先アドレス３２２−ａは、パケットを受信すべきネットワーク内計算機を識別するための識別子である。
【００７４】
本発明にかかるネットワークパケットは、データ３１０−ｂ、分割情報３１１−ｂ、受信領域指定情報３１２−ｂ、タイプ３２０−ｂ、送信元アドレス３２１−ｂ、受信先アドレス３２２−ｂを有して構成される。
【００７５】
データ３１０−ｂ、タイプ３２０−ｂ、送信元アドレス３２１−ｂ、受信先アドレス３２２−ｂは、それぞれ、データ３１０−ａ、タイプ３２０−ａ、送信元アドレス３２１−ａ、受信先アドレス３２２−ａに対応している。
【００７６】
ここで、データ３１０−ｂの部分は、受信側としては、上記の受信プロトコル情報（１６１から１６２）から、受信領域指定情報３１２−ｂ、タイプ３２０−ｂ、送信元アドレス３２１−ｂ、受信先アドレス３２２−ｂに相当する情報を除いた情報と、ユーザデータ（１７１から１７２）とを有して構成される情報である。
【００７７】
または、データ３１０−ｂの部分は、送信側としては、上記の送信プロトコル情報（１６３）から、受信領域指定情報３１２−ｂ、タイプ３２０−ｂ、送信元アドレス３２１−ｂ、受信先アドレス３２２−ｂに相当する情報を除いた情報と、ユーザデータ（１７３）とを有して構成される情報である。
【００７８】
分割情報３１１−ｂは、例えば、パケットの分割数および分割する際の長さを示す情報である。また、ここで、分割情報は、３つ以上に分割するための情報を含んでもよいことは言うまでもない。また、パケットを分割した場合、分割された部分の、どの分割部分が、受信プロトコル情報（１６１から１６２）、送信プロトコル情報（１６３）に相当する部分で、どの分割部分が、ユーザデータ（１７１から１７３）に相当する部分であるかを示す情報を備えていてもよい。また３つ以上に、パケットを分割する場合には、分割された部分の、どの分割部分が、ユーザデータの、どの部分に対応するかを示す情報を備えておくのも好ましい。
【００７９】
受信領域指定情報３１２−ｂは、パケットデータをメモリ１５０に転送する際に、そのデータの転送先を示す受信領域指定情報を選択するための情報である。
【００８０】
以下、パケットの送信処理および受信処理の概要を示す。
【００８１】
パケットの送信処理は、ユーザデータＡ１７３と、送信プロトコル情報１６３とを用いて、図３参照の本発明にかかるネットワークパケットを作成して、ネットワークにパケットを出力する処理である。
【００８２】
以下、送信時のソフトウエア処理、ネットワークアダプタ１１０の動作を説明する。
【００８３】
まず、パケット送信処理時に行われるソフトウエアによる処理を、図４を参照して説明する。
【００８４】
ユーザデータＡ１７３には、送信対象となるユーザデータが保持されている。
【００８５】
まず、ステップ４１０に示すように、送信プロトコル情報１６３には、受信領域指定情報３１２−ｂ、タイプ３２０−ｂ、送信元アドレス３２１−ｂ、受信先アドレス３２２−ｂを設定する。
【００８６】
ここで、前述のように、受信領域指定情報３１２−ｂは、受信側での受信領域を指定するための識別子である。タイプ３２０−ｂは、例えば、上位のプロトコルの種類等を示す情報である。送信元アドレス３２１−ｂは、自計算機のネットワークにおける識別子であり、受信先アドレス３２２−ｂは、受信先の計算機のネットワークにおける識別子である。
【００８７】
次に、ステップ４２０に示すように、送信領域指定情報１６６に、ユーザデータＡ１７３、送信プロトコル情報領域１６３を指定する情報を設定する。
【００８８】
設定する情報としては、例えば、メモリ１７０内におけるアドレス、データ長等である。ここで、送信領域指定情報１６６に設定する情報の中で、データ長および領域指定の数を、分割情報３１１−ｂとして、ネットワークパケットを構成する。
【００８９】
次に、ステップ４３０に示すように、送信領域指定情報１６６の情報を、送信ＤＭＡ制御情報保持手段１１２に設定する。
【００９０】
送信ＤＭＡ制御情報保持手段１１２に設定する情報は、メモリ１７０内における、当該領域のアドレス等である。
【００９１】
最後に、ステップ４４０に示すように、アダプタ制御手段１１５に対して、動作の起動通知を行う。上記の一連の処理により送信処理が完了する。
【００９２】
次に、送信処理の際のネットワークアダプタ１１０の動作を、図４を参照して説明する。アダプタ制御手段１１５に対する動作起動の通知によって、当該手段が動作を開始した以降の動作について説明する。
【００９３】
まず、ステップ５１０に示すように、マルチキューＤＭＡ制御部１２０は、送信ＤＭＡ制御情報保持手段１１２に保持されている情報に基づいて、送信領域指定情報１６６の内容を読み出して、その内容を、ＤＭＡ分割情報保持手段１１７に設定する。
【００９４】
次に、ステップ５２０に示すように、マルチキューＤＭＡ制御部１２０は、ＤＭＡ分割情報保持手段１１７に保持されている、送信領域指定情報１６６の内容にしたがって、ユーザデータＡ１７３、送信プロトコル情報１６３に保持されている情報を、送受信用バッファ１２１に読み込む処理を行う。
【００９５】
次に、ステップ５３０に示すように、マルチキューＤＭＡ制御部１２０は、ＤＭＡ分割情報保持手段１１７に保持されている送信領域指定情報１６６の内容から、データ長、領域指定の数を、「分割情報３１１−ｂ」として利用するために取り出す。
【００９６】
次に、ステップ５４０に示すように、マルチキューＤＭＡ制御部１２０は、ユーザデータＡ１７３と、送信プロトコル情報１６３に保持されている受信領域指定情報３１２−ｂ、タイプ３２０−ｂ、送信元アドレス３２１−ｂ、受信先アドレス３２２−ｂ以外の情報とから、データ３１０−ｂを構成し、さらに、送信プロトコル情報１６３に保持されている受信領域指定情報３１２−ｂ、タイプ３２０−ｂ、送信元アドレス３２１−ｂ、受信先アドレス３２２−ｂを用いて、本発明にかかるネットワークパケットを送受信用バッファ１２１内に作成、格納する。
【００９７】
最後に、ステップ５５０に示すように、内部バス１２２を介して、ネットワーク送受信部１１８から、作成したネットワークパケットを出力する。
【００９８】
さて、次に、パケットの受信処理について示す。
【００９９】
受信処理は、ネットワーク１９０から取り込んだネットワークパケットを用いて、ハードウエア処理によって、パケットが備えるデータ部分のみを、ユーザ空間内に存在する所定のユーザデータ格納領域に、直接転送することで、パケットデータのデータコピー処理を行わずに、アプリケーションプログラムにデータを引き渡すことを可能にするものである。
【０１００】
以下、受信処理の内容について説明する。
【０１０１】
ところで、受信処理には、大きく分けて、ソフトウエアがデータの到着に先だって行う処理である受信ソフト前処理と、データ到着時にネットワークアダプタ１１０が行う処理と、ソフトウエアによる、データが到着した後に行う処理である受信ソフト後処理がある。
【０１０２】
まず、受信ソフト前処理について示す。
【０１０３】
受信ソフト前処理は、受信領域指定情報選択情報１６７、受信領域指定情報（１６４から１６５）に、情報を設定し、かかる設定処理をネットワークアダプタ１１０に通知する処理である。
【０１０４】
まず、ステップ６１０に示すように、割込制御情報保持手段１１３に、データ受信終了時にプロセッサ１３０に発行する、割込に関する割込情報を設定する。
【０１０５】
次に、ステップ６２０に示すように、受信領域指定情報選択情報１６７内に、ネットワークパケット内の受信領域指定情報３１２−ｂと、受信領域指定情報（１６４から１６５）とをどのように対応させるかを決定し設定する処理を行う。
【０１０６】
例えば、受信領域指定情報選択情報１６７は、受信領域指定情報３１２−ｂに基づいて、受信領域指定情報の有するアドレスを読み出すことができる、テーブル状のデータ構造を有する構成を採用すれば良い。
【０１０７】
次に、ステップ６３０に示すように、受信領域指定情報（１６４から１６５）に、ユーザデータ（１７１から１７２）および受信プロトコル情報（１６１から１６２）が有する情報を設定する。この情報は、例えば、ユーザデータ（１７１から１７２）および受信プロトコル情報（１６１から１６２）のアドレスと、データサイズ等である。
【０１０８】
最後に、ステップ６４０に示すように、受信ＤＭＡ制御情報保持手段１１１に、受信領域指定情報選択情報１６７が示す情報を設定する。
【０１０９】
次に、ネットワークパケットを取り込んでから、データを受信するまでのネットワークアダプタ１１０の動作について説明する。
【０１１０】
まず、ステップ７１０に示すように、ネットワークアダプタ１１０内のネットワーク送受信部１１８は、ネットワーク１９０を監視して、ネットワーク１９０上を通信されるネットワークパケットを取り込む。
【０１１１】
次に、ステップ７２０に示すように、ネットワークパケットの受信先アドレス３２２−ｂの内容が、自アドレス保持手段１１９に予め保持されている内容と等しい場合には、ステップ７４０にブランチし、等しくない場合には、ステップ７３０にブランチする。
【０１１２】
ステップ７３０では、取り込んだネットワークパケットを棄却して処理を終了する。
【０１１３】
一方、ステップ７４０では、ネットワークパケットを送受信用バッファ１２１に取り込む。
【０１１４】
次に、ステップ７５０に示すように、マルチキューＤＭＡ制御部１２０は、ネットワークパケット内の受信領域指定情報３１２−ｂの内容を、受信ＤＭＡ制御情報選択手段１１６に設定する。
【０１１５】
次に、ステップ７６０に示すように、マルチキューＤＭＡ制御部１２０は、受信ＤＭＡ制御情報保持手段１１１の内容と、受信ＤＭＡ制御情報選択手段１１６の内容とから、複数存在する受信領域指定情報（１６４から１６５）のいずれかを選択する処理を行う。
【０１１６】
すなわち、これは、受信領域指定情報３１２−ｂの内容にしたがって、受信領域指定情報選択情報１６７のテーブルを参照することで、受信領域指定情報（１６４から１６５）のうちの一つを特定する処理である。
【０１１７】
次に、ステップ７７０に示すように、マルチキューＤＭＡ制御部１２０は、選択した受信領域指定情報（１６４から１６５）から、アドレス情報を取得する。
【０１１８】
次に、ステップ７８０に示すように、マルチキューＤＭＡ制御部１２０は、送受信用バッファ１２１に取り込んだネットワークパケットを用いて、分割情報３１１−ｂを取得する。
【０１１９】
次に、ステップ７８５に示すように、マルチキューＤＭＡ制御部１２０は、分割情報３１１−ｂに基づき、送受信用バッファ１２１に取り込んだネットワークパケットのデータ部を分割する処理を行う。
【０１２０】
すなわち、分割情報に保持されている分割数、分割長の情報と、パケットデータの分割部分のうち、どの分割部分が、受信プロトコル情報（１６１から１６２）に相当する部分で、どの分割部分がユーザデータ（１７１から１７２）に相当する部分であるかを示す情報とから、ネットワークパケットのデータ３１０−ｂを、受信プロトコル情報と、ユーザデータとに分割する処理を行う。
【０１２１】
次に、ステップ７９０に示すように、ステップ７７０にて特定された受信領域指定情報の情報（例えば、メモリ１５０内のアドレス値）に基づいて、分割したパケットを、ユーザデータおよび受信プロトコル情報に分離して、各々の転送先領域に転送する。
【０１２２】
最後に、ステップ７９５に示すように、割込制御情報保持手段１１３の内容にしたがって、プロセッサ１３０に対して割込を発行する。
【０１２３】
さて、次に、データ到着後に行う受信ソフト後処理について説明する。
【０１２４】
受信ソフト後処理は、ネットワークパケットが、ハードウエアによってユーザデータおよび受信プロトコル情報に分割して転送された後に、発行した割込によって起動される。
【０１２５】
まず、ステップ８１０に示すように、割込が発行されると、プロセッサ１３０は、受信プロトコル制御情報が有する情報にしたがって、データを受信したアプリケーションを特定する。
【０１２６】
次に、ステップ８２０に示すように、データを受信したアプリケーションが、データ受信要求を発行後、待ち状態となっていた場合には、ステップ８３０にブランチし、そうでない場合には、ステップ８４０にブランチする。
【０１２７】
ステップ８３０では、受信要求をしてブロックされていたアプリケーションの起動を行う。一方、ステップ８４０では、データを受信したアプリケーションがデータ受信要求を発行後に、待ち状態となっていない場合には、受信要求が発行されたときに、即座にデータを引き渡せるように、状態を通知するためのフラグの設定を行う。かかる場合には、受信アプリケーションから受信要求が発行されたときにデータの引き渡し処理を行う。
【０１２８】
次に、上記受信処理の動作を明確にするために、受信要求を発行したアプリケーションプログラムからみた動作を、図９を参照して説明する。
【０１２９】
まず、ステップ９１０に示すように、受信バッファの割り当て処理を行う。これは、図６にて説明した処理の起動を行うものである。
【０１３０】
次に、ステップ９２０に示すように、受信要求を発行する。受信要求の発行処理は、ステップ９１０の受信バッファ割り当て処理が先行して行われることが必要条件であるが、受信バッファ割り当て処理の直後に、受信要求を出すことは必要条件ではない。
【０１３１】
ここでは、最も単純に受信処理の流れを説明するために、受信関連処理のみの記述にとどめるが、ステップ９１０とステップ９２０との間に、所定の処理が存在してもかまわない。
【０１３２】
次に、ステップ９３０にしたがって、受信データの到着が受信要求に先行していれば、ステップ９６０にブランチし、そうでなれけば、ステップ９４０にブランチする。
【０１３３】
ステップ９６０では、図８にて説明した、データ到着を示すフラグが設定されているので、データを受け取るのみでよい。
【０１３４】
ステップ９５０では、まだデータが到着していないので、図８にて説明した受信要求プロセスの起動まで待ち状態に入る。かかる状態からの復帰処理は、図８にて説明した方法にて行われる。
【０１３５】
以下、さらに詳細に本発明にかかる実施例について図面を参照して説明する。
【０１３６】
図１０に、ネットワークシステムを構成する、本発明にかかる情報処理装置の一例である、ネットワーク内計算機ノード１１０１（複数存在する計算機の一つずつを、以下「ノード」と称する）の構成例を示す。
【０１３７】
ネットワーク内計算機ノード１１０１を有して構成されるネットワークは、図１０に示す計算機ノード１１０１を、ネットワーク１１０５に少なくとも２台以上接続して構成する。
【０１３８】
ネットワーク１１０５は、パケット等の情報を伝送するための手段であり、例えば、電気ケーブル、光ファイバ等を使用して構成すれば良い。
【０１３９】
以下、ネットワークを構成する情報処理装置の一例である、ネットワーク内計算機ノード１１０１の構成について、図面を参照して説明する。
【０１４０】
本実施例におけるネットワーク内計算機ノード１１０１は、プロセッサ１１０２、メモリ１１０３、ネットワークアダプタ１１１０を有して構成され、各構成要素は、システムバス１１０４を介して接続されている。
【０１４１】
また、前記ネットワークアダプタ１１１０は、マルチキューＤＭＡ制御部１１１１、受信用バッファ１１１２、送信用バッファ１１１３、ネットワーク受信部１１１４、およびネットワーク送信部１１１５を備えた構成としている。
【０１４２】
なお、計算機ノード１１０１は、システムの構成によっては、少なくとも１以上のＩ／Ｏ装置（図示せず）を備える構成にするのが好ましい。
【０１４３】
マルチキューＤＭＡ制御部１１１１および、ネットワーク送信部１１１５、ネットワーク受信部１１１４は、例えば、各種ＴＴＬ、ＣＭＯＳ等の電子デバイスによって実現することができる。
【０１４４】
また、送信用バッファ１１３、受信用バッファ１１２は、例えば、ＲＡＭ等の電子デバイスによって実現できる。さらに、プロセッサ１１０２は、例えばＣＰＵによって、メモリ１１０３は、例えば、ＲＡＭ等の電子デバイスによって実現できる。
【０１４５】
さて、図１１に、前記マルチキューＤＭＡ制御部の構成例を示す。
【０１４６】
マルチキューＤＭＡ制御部は、マルチキュー制御レジスタ群１２０１とＤＭＡ制御部１２０２とを有して構成されており、本マルチキューＤＭＡ制御部は、システムバス、受信用バッファ、および送信用バッファに接続されている。
【０１４７】
マルチキュー制御レジスタ群１２０１は、ＡＤＰ＿ＣＯＭＭＡＮＤ１２１１、ＡＤＰ＿ＳＴＡＴＵＳ１２１２、ＳＥＮＤ＿Ｑ＿ＡＤＲ１２２１、ＳＥＮＤ＿Ｑ＿ＬＥＮ１２２２、ＳＥＮＤ＿Ｑ＿ＨＥＡＤ１２２３、ＳＥＮＤ＿Ｑ＿ＴＡＩＬ１２２４、ＲＥＣＶ＿Ｑ＿ＴＢＬ＿ＡＤＲ１２３１、ＲＥＣＶ＿Ｑ＿ＴＢＬ＿ＬＥＮ１２３２、ＲＥＣＶ＿ＰＯＲＴ＿ＮＯ１２３３、ＲＥＣＶ＿Ｑ＿ＡＤＲ１２４１、ＲＥＣＶ＿Ｑ＿ＬＥＮ１２４２、ＲＥＣＶ＿Ｑ＿ＨＥＡＤ１２４３、ＲＥＣＶ＿Ｑ＿ＴＡＩＬ１２４４の各レジスタを有して構成される。
【０１４８】
なお、マルチキュー制御レジスタ群１２０１は、例えば、各種ＴＴＬ、ＣＭＯＳ、ＲＡＭ等の電子デバイスによって実現できる。
【０１４９】
ＤＭＡ制御部１２０２は、ＤＭＡ処理により、データ転送処理を行う機能を有するハードワイアードロジックであり、例えば、各種ＴＴＬ、ＣＭＯＳ等にて実現される。
【０１５０】
ＡＤＰ＿ＣＯＭＭＡＮＤ１２１１は、ネットワークアダプタを制御するためのコマンドを格納するためのレジスタであり、ＡＤＰ＿ＳＴＡＴＵＳ１２１２は、ネットワークアダプタを制御するためのステータス情報を保持するためのレジスタである。
【０１５１】
ＳＥＮＤ＿Ｑ＿ＡＤＲ１２２１、ＳＥＮＤ＿Ｑ＿ＬＥＮ１２２２、ＳＥＮＤ＿Ｑ＿ＨＥＡＤ１２２３、ＳＥＮＤ＿Ｑ＿ＴＡＩＬ１２２４は、送信用コマンドを処理するための、リスト構造（以下、これを「コマンドキュー」と称する）を有する各種パラメータの格納部であり、後に図１５を参照して説明する。
【０１５２】
ＲＥＣＶ＿Ｑ＿ＴＢＬ＿ＡＤＲ１２３１は、コマンドキュー選択テーブルのアドレスを示すポインタ、ＲＥＣＶ＿Ｑ＿ＴＢＬ＿ＬＥＮ１２３２は、コマンドキュー選択テーブルのサイズを示し、さらに、ＲＥＣＶ＿ＰＯＲＴ＿ＮＯ１２３３は、受信したパケットのヘッダ内に存在するＤＭＡ＿ＰＯＲＴ＿ＮＯを一時的に保存するためのレジスタである。
【０１５３】
なお、コマンドキュー選択テーブルについては、図１３および図１４を参照して説明する。また、「ＤＭＡ＿ＰＯＲＴ＿ＮＯ」については、図１２を参照して説明する。
【０１５４】
ＲＥＣＶ＿Ｑ＿ＡＤＲ１２４１、ＲＥＣＶ＿Ｑ＿ＬＥＮ１２４２、ＲＥＣＶ＿Ｑ＿ＨＥＡＤ１２４３、ＲＥＣＶ＿Ｑ＿ＴＡＩＬ１２４４は、受信用コマンドキュー用のパラメータの格納部であり、後に図１５を参照して説明する。
【０１５５】
次に、図１２に、ネットワークを介して通信されるパケットのデータフォーマットを示す。
【０１５６】
パケットデータは、ＤＡＴＡ＿ＬＥＮＧＴＨ１３０１、ＨＥＡＤＥＲ＿ＬＥＮＧＴＨ１３０２、ＤＭＡ＿ＰＯＲＴ＿ＮＯ１３０３、ＳＲＣ＿ＮＯＤＥ＿ＮＯ１３０４、ＤＳＴ＿ＮＯＤＥ＿ＮＯ１３０５、ＭＯＤＥ１３０６、およびＳＯＦＴ＿ＨＥＡＤＥＲ１３１１とを備えて構成されるハードヘッダ部１３００と、ＳＯＦＴ＿ＤＡＴＡ１３１２を備えるパケットデータ部１３１０を有して構成される。
【０１５７】
ハードヘッダ部１３００を構成する各要素のデータ長は、固定長であることが好ましい。
【０１５８】
ＤＡＴＡ＿ＬＥＮＧＴＨ１３０１は、１３０１、１３０２、１３０３、１３０４、１３０５、１３０６、１３１１、１３１２から構成されるデータの長さを示す情報が格納されている。
【０１５９】
ＨＥＡＤＥＲ＿ＬＥＮＧＴＨ１３０２は、パケット内のデータを複数に分割し、ＤＭＡ処理により記憶領域に転送する際のデータの長さを示し、この長さは、１３０１、１３０２、１３０３、１３０４、１３０５、１３０６、１３１１から構成されるデータの長さである。
【０１６０】
すなわち、ＨＥＡＤＥＲ＿ＬＥＮＧＴＨ１３０２は、ハードヘッダ部の長さを示す情報である。
【０１６１】
ＤＭＡ＿ＰＯＲＴ＿ＮＯ１３０３は、受信側の計算機ノードが備える主記憶（もちろん、主記憶には限られない）に、ＤＭＡ処理によってデータを転送する際のコマンドキューを選択するための、コマンドキュー選択テーブル１４０１の選択処理を行うためのパラメータである。
【０１６２】
前にも述べたとおり、コマンドキュー選択テーブル１４０１については、後述する。
【０１６３】
ＳＲＣ＿ＮＯＤＥ＿ＮＯ１３０４は、ネットワークを介してデータを送信する送信側の計算機ノードを識別するための情報であり、予め計算機ノードに付加されたアドレス番号等を使用すればよい。また、ＤＳＴ＿ＮＯＤＥ＿ＮＯ１３０５は、ネットワークを介してデータを受信する受信側の計算機ノードを識別するための情報であり、予め計算機ノードに付加されたアドレス番号等を使用すればよい。
【０１６４】
図１０に示すネットワーク受信部１１１４は、例えば、パケットが備えるＤＳＴ＿ＮＯＤＥ＿ＮＯ１３０５の内容が、予め設定された自計算機ノードに割当てられたアドレス番号と一致したときに、パケットの取り込み処理を行うように構成しておけば良い。
【０１６５】
ＭＯＤＥ１３０６は、ＤＭＡ処理を実行する際のコマンドを決定するためのパラメータであり、その使用法については、後に説明する処理フローの説明の際に述べる。
【０１６６】
また、ＳＯＦＴ＿ＨＥＡＤＥＲ１３１１は、プロトコル処理を行うソフトウエアが使用するための情報であり、ＳＯＦＴ＿ＤＡＴＡ１３１２は、ネットワークを介して、例えば、アプリケーション間で送受信されるデータそのものである。
【０１６７】
次に、図１３に、受信されたデータをＤＭＡ処理するためのデータ構造の一例を示す。これは、図１０のメモリ１１０３の内に格納すればよい。
【０１６８】
メモリ内の受信ＤＭＡ処理用データ構造は、コマンドキュー選択テーブル１４０１と、ポート別コマンドキュー群１４１０とを有して構成される。
【０１６９】
コマンドキュー選択テーブルの各エントリ１４０１−１、１４０１−２、…、１４０１−Ｎは、ポート別コマンドキュー１４１０−１、１４１０−２、…、１４１０−Ｎに対応して、情報（以下で述べる、図１４に示すような情報）を保持している。
【０１７０】
図１４に、コマンドキュー選択テーブル１４０１の構成を示す。これは、メモリ１１０３内に格納しておけば良い。
【０１７１】
テーブルの先頭アドレスは、図１１にて示した、マルチキュー制御レジスタ群１２０１を構成するＲＥＣＶ＿Ｑ＿ＴＢＬ＿ＡＤＲ１２３１で指示され、テーブルのエントリ数は、マルチキュー制御レジスタ群１２０１を構成するＲＥＣＶ＿Ｑ＿ＴＢＬ＿ＬＥＮ１２３２にて示される。
【０１７２】
図１４に示す、各エントリ１４０１−１、１４０１−２、…、１４０１−Ｎは、「Ｑ＿ＡＤＲ＿Ｍ，Ｑ＿ＨＥＡＤ＿Ｍ，Ｑ＿ＴＡＩＬ＿Ｍ，Ｑ＿ＬＥＮ＿Ｍ」（ただしＭ＝１〜Ｎ：Ｎは、正の整数）の４つのパラメータを有して構成されており、これらは、各コマンドキューを制御するための情報である。
【０１７３】
これら各々のパラメータにより、所定の制御を行う方法については、図１５にて示す。
【０１７４】
次に、図１５に、コマンドキューの構成例を示す。これは、図１０のメモリ１１０３内に格納されている。
【０１７５】
なお、コマンドキューの構成は、基本的に、送信側、受信側のいずれも同様の構成である。
【０１７６】
Ｑ＿ＡＤＲ，Ｑ＿ＨＥＡＤ，Ｑ＿ＴＡＩＬ，Ｑ＿ＬＥＮは、送信側については、図１１にて示した、ＳＥＮＤ＿Ｑ＿ＡＤＲ２２１、ＳＥＮＤ＿Ｑ＿ＬＥＮ２２２、ＳＥＮＤ＿Ｑ＿ＨＥＡＤ２２３、ＳＥＮＤ＿Ｑ＿ＴＡＩＬ２２４に、一対一に対応しており、同様に、受信側については、図１１に示した、ＲＥＣＶ＿Ｑ＿ＡＤＲ２４１、ＲＥＣＶ＿Ｑ＿ＬＥＮ２４２、ＲＥＣＶ＿Ｑ＿ＨＥＡＤ２４３、ＲＥＣＶ＿Ｑ＿ＴＡＩＬ２４４に、一対一に対応している。
【０１７７】
以下、各々について説明する。
【０１７８】
Ｑ＿ＡＤＲ，Ｑ＿ＨＥＡＤ，Ｑ＿ＴＡＩＬ，Ｑ＿ＬＥＮは、コマンドキューを管理するための情報である。
【０１７９】
Ｑ＿ＡＤＲは、コマンドキューの先頭のアドレスを示すポインタであり、Ｑ＿ＨＥＡＤは、次回のＤＭＡ処理を行うためのコマンドを示すポインタであり、Ｑ＿ＴＡＩＬは、ソフトウエアによって現在設定されている最後のコマンドを示すためのポインタである。
【０１８０】
コマンドキューは、キューの最後尾に、キューの先頭がつながっており、論理的なリング構造を有している。
【０１８１】
Ｑ＿ＬＥＮは、コマンドキューの最後を認識し、先頭に折り返す処理をするために、必要なコマンドキューの長さ情報を保持する変数である。
【０１８２】
次に、コマンドキュー内部に備えられたコマンドについて説明する。
【０１８３】
各コマンド単位は、ＣＯＭＭＡＮＤ１６０１、ＨＥＡＤＥＲ＿ＰＯＩＮＴＥＲ１６０２、ＨＥＡＤＥＲ＿ＬＥＮＧＴＨ１６０３、ＤＡＴＡ＿ＰＯＩＮＴＥＲ１６０４、ＤＡＴＡ＿ＬＥＮＧＴＨ１６０５、ＲＥＳＵＬＴ＿ＳＴＡＴＵＳ１６０６を有して構成される。
【０１８４】
ＣＯＭＭＡＮＤ１６０１のフィールドは、このコマンドによるＤＭＡ処理が終了した際に、割り込み命令を発行するか否か等の情報を保持するフィールドである。
【０１８５】
ＨＥＡＤＥＲ＿ＰＯＩＮＴＥＲ１６０２のフィールドは、ハードヘッダ１６１０を保存している領域の物理アドレスを保持するフィールドである。
【０１８６】
ＨＥＡＤＥＲ＿ＬＥＮＧＴＨ１６０３のフィールドは、ハードヘッダ１６１０のデータ長を示す情報を保持するフィールドである。
【０１８７】
なお、ハードヘッダ１６１０は、ＤＡＴＡ＿ＬＥＮＧＴＨ１３０１、ＨＥＡＤＥＲ＿ＬＥＮＧＴＨ１３０２、ＤＭＡ＿ＰＯＲＴ＿ＮＯ１３０３、ＳＲＣ＿ＮＯＤＥ＿ＮＯ１３０４、ＤＳＴ＿ＮＯＤＥ＿ＮＯ１３０５、ＭＯＤＥ１３０６、ＳＯＦＴ＿ＨＥＡＤＥＲ１３１１を有して構成される。
【０１８８】
ＤＡＴＡ＿ＰＯＩＮＴＥＲ１６０４およびＤＡＴＡ＿ＬＥＮＧＴＨ１６０５は、それぞれ、パケット内のソフトデータ領域の物理アドレス（ＤＡＴＡ＿ＰＯＩＮＴＥＲ１６０４）、および、長さ（ＤＡＴＡ＿ＬＥＮＧＴＨ１６０５）を示す。
【０１８９】
受信用のコマンドキューでは、ＨＥＡＤＥＲ＿ＬＥＮＧＴＨ１６０３およびＤＡＴＡ＿ＬＥＮＧＴＨ１６０５は、ヘッダ部分およびデータ部分に対応して、受信用に確保した記憶領域のサイズを示す。
【０１９０】
コマンドに、パケット単位ごとに、ＨＥＡＤＥＲ＿ＰＯＩＮＴＥＲ１６０２およびＤＡＴＡ＿ＰＯＩＮＴＥＲ１６０４に、物理アドレスを設定する領域を持ち、受信時に、このアドレスに対応してデータ転送を行うことで、以下に示すように、仮想アドレスを使用している場合に、仮想アドレスでの連続領域が、物理アドレスでは非連続領域となる、データの転送処理を行うことが可能となる。
【０１９１】
送受信対象となるデータ領域に対応する物理アドレスの取得は、ＯＳによって行われる。最も単純な場合は、アプリケーションが物理アドレスに基づいて動作している場合であり、かかる場合には、ＯＳは該アプリケーションのデータ領域の物理アドレスを、上位物理アドレスを設定すべきＤＡＴＡ＿ＰＯＩＮＴＥＲ１６０４に設定すればよい。
【０１９２】
次に、ＯＳが仮想メモリ管理を行うシステム例を示す。
【０１９３】
メモリ１１０３は、ＯＳおよびアプリケーションによって使用されており、仮想メモリ管理下のプログラム（通常のアプリケーションプログラム）は、仮想メモリによるアドレスを、アドレス変換を行うための「プロセスページテーブル」に設定された情報にて物理アドレスに変換して、メモリアクセスを行う。
【０１９４】
この仮想メモリアドレスと物理アドレスの変換のためのテーブルが、図１６に示すプロセスページテーブルである。
【０１９５】
以下、ＯＳによって行われるアプリケーションのデータ領域の論理アドレスから、物理アドレスを取得する処理を、図１６に示すプロセスページテーブルを使用して説明する。
【０１９６】
これは、図１０のメモリ１１０３上に割り付けられた物理アドレスの替わりに、仮想アドレスを使用するための変換テーブルである。
【０１９７】
具体的には、図１６に示すように、プロセスページテーブルは、プロセスの仮想ページに対応する物理ページを示すテーブルになっている。
【０１９８】
ここで「ページ」とは、ＯＳがメモリ管理を行う基本単位である。ページのサイズは、２のべき乗で表現され、現在のＯＳでは、２０４８，４０９６，８１９２（バイト等）等のサイズを採用しているものが多い。
【０１９９】
物理アドレスと仮想アドレスは、前述のページ番号に、ページ内のオフセット値を加えた値となる。なお、物理アドレスと仮想アドレスにおいては、ページ内のオフセット値は同一の値である。
【０２００】
物理アドレスを設定する際には、このテーブルを参照することにより、論理アドレスに対応する物理アドレスへの対応をとることができる。
【０２０１】
例えば、あるアプリケーションのデータ領域が論理ページ「Ｍ、Ｍ＋１」であり、２領域にまたがって存在するデータを受信する場合には、各々の物理ページ番号２００、物理ページ番号３５８をページサイズ倍して、ページ内のオフセット値を加えることにより物理アドレスを算出して、これをコマンドキューの連続する２つのコマンドのＤＡＴＡ−ＰＯＩＮＴＥＲ１６０４に設定すれば良い。このような処理によって、非連続的に存在する物理アドレス領域から、連続的に存在する仮想アドレス領域に、連続的にデータを転送することができるようになる。
【０２０２】
次に、仮想空間アドレスと物理空間アドレスとコマンドキューとの関連を、図１８を参照して説明する。
【０２０３】
図１８に示す仮想メモリ空間の一部に、アプリケーションの空間が存在する。
【０２０４】
アプリケーション空間内に存在するデータバッファ１９１０は、データＡ１９０１、データＢ１９０２、データＣ１９０３、およびデータＤ１９０４とを有して構成される。
【０２０５】
今、データＡ１９０１内の「３」は、仮想空間内のページ番号であり、図１８に示すように、領域Ａ１９２１に対応し、物理空間内でページ番号「５２」に対応する。
【０２０６】
かかる対応は、図１６にて説明したプロセステーブルに設定されている情報であるので、プロセステーブルを参照することで、仮想空間内の「３」ページが、物理空間内のページ番号「５２」に対応していることにより判断される。
【０２０７】
以下、データＢ１９０２は、仮想空間内のページ番号「４」を有し、領域Ｃ１９２３に対応し、物理空間内でページ番号「７３」を有する。
【０２０８】
また、データＣ１９０３は、仮想空間内のページ番号「５」を有し、領域Ｂ１９２２に対応し、物理空間内でページ番号「６０」を有する。
【０２０９】
最後に、データＤ１９０４は、仮想空間内のページ番号「６」を有し、領域Ｄ１９２４に対応し、物理空間内でページ番号「８１」を有する。
【０２１０】
したがって、アプリケーション空間のデータバッファ１９１０内に存在するデータＡ１９０１、データＢ１９０２、データＣ１９０３、データＤ１９０４にデータを受信する際には、コマンドキュー１９３０内のコマンドに対して設定する、物理アドレスを決定するための物理ページは、コマンドＡ１９３１には、物理空間内のページ番号「５２」を使用する。また、コマンドＢ１９３２には、物理空間内のページ番号「７３」を使用する。さらに、コマンドＣ１９３３には、物理空間内のページ番号「６０」を使用する。最後に、コマンドＤ１９３４には、物理空間内のページ番号「８１」を使用するようにする。上述のようにして、コマンドキューに設定する物理アドレスを算出すればよい。
【０２１１】
上記のように、コマンドキューのネットワークパケットに対応して各エントリを備え、各エントリごとに物理アドレスを設定する領域を保持する構成にすることにより、非連続的に存在する物理アドレス領域から、連続的に存在する仮想アドレス領域に、連続的にデータを受信することができるようになる。
【０２１２】
次に、本発明にかかる一連の処理を、初期化処理、受信側処理、送出側処理の順に説明をする。
【０２１３】
最初に、図２０を参照して、初期化処理の動作を説明する。
【０２１４】
まず、ステップ２１１０において、コマンドキュー選択テーブル１４０１を作成し、メモリ１１０３内に格納しておく。
【０２１５】
次に、ステップ２１２０において、コマンドキューを作成し、メモリ１１０３内に格納しておく。
【０２１６】
続いて、ステップ２１３０において、ステップ２１１０において作成したコマンドキュー選択テーブル１４０１の管理情報を、ネットワークアダプタ１１１０が備えるマルチキュー制御レジスタ群２０１内のＲＥＣＶ＿Ｑ＿ＴＢＬ＿ＡＤＤＲ１２３１、ＲＥＣＶ＿Ｑ＿ＴＢＬ＿ＬＥＮ１２３２に設定する。
【０２１７】
その後、ステップ２１４０において、ネットワークアダプタ１１１０が備えるマルチキュー制御レジスタ群１２０１内のＡＤＰ＿ＣＯＭＭＡＮＤ１２１１に、起動コマンドを設定する。
【０２１８】
次に、ステップ２１５０において、アプリケーション間で使用するポートを通信処理に先立って決定する処理を行なう。
【０２１９】
初めは、通信相手が特定できないので、初期化通信時には、例えば、ポート番号は、「１」を使用することにしておき、また、使用できる最大のエントリ数を、初期化時に静的に設定しておく。
【０２２０】
初期化通信方式としては、カーネル内のプロトコル処理を行うソフトウエア間での通信を、通常のメッセージパッシングと同様の方式で行えばよい。
【０２２１】
なお、通信に使用するバッファは、カーネル内のプロトコルサーバ用のバッファである。
【０２２２】
上述の初期化処理により、プロトコル処理を行うソフトウエアは、通常のメッセージ通信（ＴＣＰ／ＩＰ等）と同様の通信が可能となる。
【０２２３】
次に、アプリケーション間で使用するポートを通信処理に先立って決定する処理として、送出側および受信側システムのポート番号の割り当て処理を行う。
【０２２４】
まず、ポート割り当てを行う処理を、以下に示す。
【０２２５】
ネットワーク内計算機を複数接続して構成されたネットワークにおいて、各計算機に対して、ポート番号が、静的に割り当てられているものとする。
【０２２６】
すなわち、計算機１と計算機２の間の通信では、例えば、ポート番号１００〜２００を使用するように、ポート番号を割り当て、同様に、ブロードキャスト通信用に使用するポートの番号の範囲も、例えば、ポート番号１０００〜２０００を使用するように、使用するポートの番号の範囲を予め指定しておく。
【０２２７】
各計算機間の通信に使用できるポートの番号の範囲が定められているので、アプリケーション間で使用するポート番号の決定は、前述のプロトコルサーバ間の通信により、ＴＣＰ／ＩＰ等のプロトコルと同様の方法により行われる。以上の処理により、初期化処理が完了する。
【０２２８】
次に、図１７に受信処理のフローを示す。
【０２２９】
通信の際に、データコピー処理を省略するためには、データの受信バッファがデータの送出よりも先に設定されていることが必要である。
【０２３０】
そこでまず、ステップ１８１０において、受信側のアプリケーションは、データの受信処理の起動を行う前に、受信バッファの割り当て処理を行う。
【０２３１】
次に、ステップ１８２０において、受信システムコールが、実際の受信データの到着よりも先に発行されれば、ステップ１８３０にブランチし、そうでなければ、ステップ１８５０にブランチする。
【０２３２】
ステップ１８３０では、データ到着終了までブロック（所定時間、処理がウエイトされることを、「ブロック」と称する）され、全データの到着時に、ステップ１８４０に示すように、受信発行プロセスの起動を行ない、受信処理を完了する。
【０２３３】
一方、ステップ１８５０においては、全データが到着したことを確認した後、受信処理を完了する。
【０２３４】
次に、図１９を参照して、受信マルチキューＤＭＡ処理を説明する。
【０２３５】
まず、ステップ２０１０において、ネットワーク１１０５を介して到着した、パケットデータは、ネットワーク受信部１１１４によって、取り込み動作が行われ、受信用バッファ１１１２に格納される。
【０２３６】
次に、ステップ２０２０においては、マルチキューＤＭＡ制御部１１１１が、受信バッファ１１１２を監視しており、パケットデータが到着すると、マルチキューＤＭＡ制御部が起動し、一連の処理を開始することになる。
【０２３７】
具体的には、以下の処理が行われる。
【０２３８】
まず、パケットのハードヘッダ部が備える、ＤＭＡ＿ＰＯＲＴ＿ＮＯ１３０３の内容にしたがって、実行すべきコマンドキューを決定する。この処理は、マルチキュー制御レジスタ群１２０１内のＲＥＣＶ＿Ｑ＿ＴＢＬ＿ＡＤＲ１２３１の内容に、前記ＤＭＡ＿ＰＯＲＴ＿ＮＯ１３０３の内容をコマンドキュー選択テーブルの各エントリのサイズ倍（例えば、ＤＭＡ＿ＰＯＲＴ＿ＮＯが「５」のとき、５エントリ分）した数値を加えることによって、アドレスを算出することによって行われる。
【０２３９】
ここで、セキュリティの向上のために、例えば、ＤＭＡ＿ＰＯＲＴ＿ＮＯ１３０３に、セキュリティチェックのための情報を備え、該情報が、予め設定された情報と一致したときにのみデータ転送を行なうような構成することが好ましい。
【０２４０】
次に、ステップ２０３０において、メモリ１１０３から、ＤＭＡ処理によって、Ｑ＿ＡＤＲ＿Ｏ，  Ｑ＿ＨＥＡＤ＿Ｏ，  Ｑ＿ＴＡＩＬ＿Ｏ，  Ｑ＿ＬＥＮ＿Ｏ（Ｏは、ＤＭＡ＿ＰＯＲＴ＿ＮＯ１３０３と等しい）を読み出し、各々、ＲＥＣＶ＿Ｑ＿ＡＤＲ１２４１、ＲＥＣＶ＿Ｑ＿ＬＥＮ１２４２、ＲＥＣＶ＿Ｑ＿ＨＥＡＤ１２４３、ＲＥＣＶ＿Ｑ＿ＴＡＩＬ１２４４に設定する。
【０２４１】
なお、前回のＤＭＡ処理におけるＤＭＡ＿ＰＯＲＴ＿ＮＯ１３０３と、同一のＤＭＡ＿ＰＯＲＴ＿ＮＯ１３０３を有するパケットであれば、ステップ２０３０における処理は、省略することができる。
【０２４２】
また、ＲＥＣＶ＿Ｑ＿ＡＤＲ１２４１、ＲＥＣＶ＿Ｑ＿ＬＥＮ１２４２、ＲＥＣＶ＿Ｑ＿ＨＥＡＤ１２４３、ＲＥＣＶ＿Ｑ＿ＴＡＩＬ１２４４を複数個保持するためのメモリを、ネットワークアダプタ１１１０内に設けた構成にすることで、高い確率で、ステップ２０３０のＤＭＡ処理による読み込み処理（メモリ１１０３からの読みだし処理）を省略することができる。
【０２４３】
次に、ステップ２０４０において、パケットヘッダ部内のＭＯＤＥ１３０６の内容が「−１」であれば、ステップ２０７０にブランチし、そうでけなれば、ステップ２０５０にブランチする。
【０２４４】
ステップ２０７０では、ＲＥＣＶ＿Ｑ＿ＡＤＲに、ＲＥＤＶ＿Ｑ＿ＨＥＡＤを加えた値が示す位置に存在するコマンドを実行する。ステップ２０７０に続いて、ステップ２０８０では、ＲＥＣＶ＿Ｑ＿ＨＥＡＤが示す内容を実行したコマンドが存在するアドレスの、次のアドレスが選択されるように、ＲＥＣＶ＿Ｑ＿ＨＥＡＤが存在するアドレスに、１コマンド分のアドレスを加える処理を行い、ステップ２０９０へと進む。
【０２４５】
一方、ステップ２０５０では、「ＲＥＣＶ＿Ｑ＿ＡＤＲ＋ＭＯＤＥ」番目（コマンドキューＭＯＤＥ番目）のコマンドを実行する。ステップ２０５０に続いて、ステップ２０６０では、ＲＥＣＶ＿Ｑ＿ＨＥＡＤ内容を実行したコマンドが存在するアドレスの、次のアドレスが選択されるように、ＲＥＣＶ＿Ｑ＿ＨＥＡＤが存在するアドレスに、（１＋ＭＯＤＥ）コマンド分のアドレスを加える処理を行い、ステップ２０９０に進む。
【０２４６】
ステップ２０９０では、ＲＥＣＶ＿Ｑ＿ＡＤＲ１２４１、ＲＥＣＶ＿Ｑ＿ＬＥＮ１２４２、ＲＥＣＶ＿Ｑ＿ＨＥＡＤ１２４３、ＲＥＣＶ＿Ｑ＿ＴＡＩＬ１２４４の内容を、コマンドキュー選択テーブル内のエントリＱ＿ＡＤＲ＿Ｏ，Ｑ＿ＨＥＡＤ＿Ｏ，Ｑ＿ＴＡＩＬ＿Ｏ，Ｑ＿ＬＥＮ＿Ｏ（Ｏは、ＤＭＡ＿ＰＯＲＴ＿ＮＯ１３０３と等しい）に書き戻し、処理を完了する。
【０２４７】
以上に示したマルチキューＤＭＡ処理を繰り返すことにより、パケットデータは、アプリケーション空間のデータバッファ内へと、直接、転送されることになる。
【０２４８】
次に、図２１を参照して送信側の処理について説明する。
【０２４９】
まず、ステップ２２１０において、アプリケーションが送信処理を発行する。
【０２５０】
次に、ステップ２２２０において、送信処理命令を発行したアプリケーション内の送信データバッファの物理アドレスを、図１８を参照して説明した方法によって算出する。
【０２５１】
次に、ステップ２２３０において、ステップ２２２０において算出した物理アドレスをパラメータとして持つコマンドを、送信用コマンドキューに設定する。
【０２５２】
次に、ステップ２２４０において、送信処理を発行したアプリケーションをブロックする。
【０２５３】
続いて、ステップ２２５０において、ネットワークアダプタ１１１０によって、データの送出、すなわち、送信処理が行なわれる。ネットワークアダプタは、送信を終了すると、割り込みを発行する。
【０２５４】
次に、ステップ２２６０において、割り込みすべき旨の命令を受け取ったプロセッサ１１０２は、送信処理を発行して、ブロックされたアプリケーションの起動処理を行なう。以上で、送信処理は完了する。
【０２５５】
以上のように、本発明にかかる一連の処理、すなわち初期化処理、受信側処理、送出側処理が行われ、ネットワークにおけるパケットの高速通信が可能となる。
【０２５６】
【発明の効果】
本発明によれば、複数の情報処理システムを接続して構成したネットワークにおける、パケット内のデータの送受信処理において、受信側情報処理システムによる、データコピー、ページテーブル変更処理等を行わずに、高速な情報通信が可能な手段を安価に提供することができる。
【図面の簡単な説明】
【図１】計算機ネットワークシステム構成図である。
【図２】従来のネットワークシステムの構成図である。
【図３】ネットワークパケットの構成図である。
【図４】送信ソフト処理のフローチャートである。
【図５】ネットワークアダプタ送信動作の説明図である。
【図６】受信ソフト前処理の説明図である。
【図７】ネットワークアダプタ受信動作の説明図である。
【図８】受信ソフト後処理の説明図である。
【図９】受信アプリケーション処理の説明図である。
【図１０】計算機ネットワークシステムの構成図である。
【図１１】マルチキューＤＭＡ制御部の構成図である。
【図１２】パケットの構成図である。
【図１３】ＤＭＡ処理用データ構造の説明図である。
【図１４】コマンドキュー選択テーブルの構成の説明図である。
【図１５】コマンドキュー構成図である。
【図１６】プロセスページテーブルの説明図である。
【図１７】受信側での処理フローの説明図である。
【図１８】バッファコマンドキューの対応の説明図である。
【図１９】受信側のマルチキューＤＭＡ処理フローの説明図である。
【図２０】初期化処理フローの説明図である。
【図２１】送信処理フローの説明図である。
【符号の説明】
１００…ネットワーク内計算機、１１０…ネットワークアダプタ、１１１…受信ＤＭＡ制御情報保持手段、１１２…送信ＤＭＡ制御情報保持手段、１１３…割込制御情報保持手段、１１４…アダプタ制御情報保持手段、１１５…アダプタ制御手段、１１６…受信ＤＭＡ制御情報選択手段、１１７…ＤＭＡ分割情報保持手段、１１８…ネットワーク送受信部、１１９…自アドレス保持手段、１２０…マルチキューＤＭＡ制御部、１２１…送受信用バッファ、１２２…内部バス、１３０…プロセッサ、１４０…Ｉ／Ｏ装置、１５０…メモリ、１６０…ＯＳ空間、１７０…ユーザ空間、１６１…受信プロトコル情報、１６２…受信プロトコル情報、１６３…送信プロトコル情報、１６４…受信領域指定情報、１６５…受信領域指定情報、１６７…受信領域指定情報選択情報、１７１…ユーザデータ、１７２…ユーザデータ、１７３…ユーザデータ、２００…ネットワーク内計算機、２３０…プロセッサ、２５０…メモリ、２１０…ネットワークアダプタ、２１１…受信ＤＭＡ制御情報保持手段、２１２…送信ＤＭＡ制御情報保持手段、２１３…割込制御情報保持手段、２１４…アダプタ制御情報保持手段、２１５…アダプタ制御手段、２１８…ネットワーク送受信部、２１９…自アドレス保持手段、２２０…ＤＭＡ制御部、２２１…送受信用バッファ、２２２…内部バス、２８０…システムバス、１１０１…計算機ノード、１１０２…プロセッサ、１１０３…メモリ、１１０４…システムバス、１１１０…ネットワークアダプタ、１１１１…マルチキューＤＭＡ制御部、１１１２…受信用バッファ、１１１３…送信用バッファ、１１１４…ネットワーク受信部、１１１５…ネットワーク送信部、１２０１…マルチキュー制御レジスタ群、１２０２…ＤＭＡ制御部、１３００…ハードヘッダ部、１３１０…パケットデータ部
【図１】
0003623727.tif 000002
【図２】
0003623727.tif 000003
【図３】
0003623727.tif 000004
【図４】
0003623727.tif 000005
【図５】
0003623727.tif 000006
【図６】
0003623727.tif 000007
【図７】
0003623727.tif 000008
【図８】
0003623727.tif 000009
【図９】
0003623727.tif 000010
【図１０】
0003623727.tif 000011
【図１１】
0003623727.tif 000012
【図１２】
0003623727.tif 000013
【図１３】
0003623727.tif 000014
【図１４】
0003623727.tif 000015
【図１５】
0003623727.tif 000016
【図１６】
0003623727.tif 000017
【図１７】
0003623727.tif 000018
【図１８】
0003623727.tif 000019
【図１９】
0003623727.tif 000020
【図２０】
0003623727.tif 000021
【図２１】
0003623727.tif 000022