(57)【要約】【課題】本発明は、高価なハードウェアを用意することなく、コンピュータシステムが外部から高速にデータを受け取ることができることを実現する技術の提供を目的とする。【解決手段】データ受信装置が、データを受信するときに、メモリからのデータ転送先となるアプリケーション用メモリ領域のページオフセットを予測する手段と、メモリ上のデータ転送先ページの先頭アドレスと予測したページオフセットとにより規定されるアドレスを指定して、受信データをメモリに転送する手段と、受信データの長さと予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定する手段と、コンピュータシステムから予測したページオフセットの予測値について予測誤りの通知があるときに、設定したページオフセットの予測値をコンピュータシステムから通知されるページオフセットに従って変更する手段とを備えるように構成する。【選択図】図１
2008129832.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステム内のメモリに一時的に保存するデータ受信装置と、データ受信装置から転送されてくるデータを受信して、それをメモリに一時的に保存してから、アプリケーションプログラムの管理するアプリケーション用メモリ領域へ転送するコンピュータシステムとで構成されるシステムで実行されるデータ受信方法であって、
前記データ受信装置が、
データを受信するときに、前記アプリケーション用メモリ領域のページオフセットを予測して、前記メモリ上のデータ転送先ページの先頭アドレスと予測したページオフセットとにより規定されるデータ格納開始アドレスを指定して、受信したデータを前記メモリに転送し、さらに、受信したデータの長さと予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定するとともに、コンピュータシステムから予測したページオフセットの予測値について予測誤りの通知があるときに、設定したページオフセットの予測値をコンピュータシステムから通知されるページオフセットに従って変更するように処理し、
前記コンピュータシステムが、
データ転送の際に指定されるデータ格納開始アドレスに基づいて、前記データ受信装置の予測したページオフセットを特定するとともに、前記メモリに格納したデータを解析することで、そのデータの転送先となる前記アプリケーション用メモリ領域のページオフセットを特定して、その特定した２つのページオフセットが一致するのか否かを判断し、２つのページオフセットの不一致を判断するときに、特定した前記アプリケーション用メモリ領域のページオフセットと前記メモリに格納したデータの長さとに基づいて、データ転送後における前記アプリケーション用メモリ領域のページオフセットを特定して、前記データ受信装置に通知し、さらに、２つのページオフセットが一致するのか否かの判断結果に基づいて、前記メモリから前記アプリケーション用メモリ領域へのデータ転送方法を決定するように処理することを、
特徴とするデータ受信方法。
【請求項２】
コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステム内のメモリに一時的に保存するデータ受信装置であって、
データを受信するときに、前記メモリからのデータ転送先となるアプリケーション用メモリ領域のページオフセットを予測する予測手段と、
前記メモリ上のデータ転送先ページの先頭アドレスと前記予測手段の予測したページオフセットとにより規定されるデータ格納開始アドレスを指定して、前記受信したデータを前記メモリに転送する転送手段と、
前記受信したデータの長さと前記予測手段の予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定する設定手段と、
コンピュータシステムから前記予測手段の予測したページオフセットの予測値について予測誤りの通知があるときに、前記設定手段の設定したページオフセットの予測値をコンピュータシステムから通知されるページオフセットに従って変更する変更手段とを備えることを、
特徴とするデータ受信装置。
【請求項３】
請求項２に記載のデータ受信装置において、
送信元情報及び送信先情報に対応付けて、前記設定手段の設定したページオフセットの予測値を記憶する記憶手段を備え、
前記予測手段は、データを受信するときに、その受信データの送信元情報及び送信先情報を抽出して、その抽出した送信元情報及び送信先情報をキーにして前記記憶手段の記憶情報を参照することでページオフセットを予測することを、
特徴とするデータ受信装置。
【請求項４】
請求項２に記載のデータ受信装置において、
送信元情報及び送信先情報に対応付けて、固定のページオフセットを用いるのか否かということと、固定のページオフセットを用いるものについては固定のページオフセットを記憶し、固定のページオフセットを用いないものについては、前記設定手段の設定したページオフセットの予測値を記憶する記憶手段を備え、
前記予測手段は、データを受信するときに、その受信データの送信元情報及び送信先情報を抽出して、その抽出した送信元情報及び送信先情報をキーにして前記記憶手段の記憶情報を参照することでページオフセットを予測することを、
特徴とするデータ受信装置。
【請求項５】
請求項３又は４に記載のデータ受信装置において、
コンピュータシステムから通知されるページオフセットの初期値に従って、前記記憶手段に対して、ページオフセットの予測値を初期登録する初期登録手段を備えることを、
特徴とするデータ受信装置。
【請求項６】
データ受信装置から転送されてくるデータを受信して、それをメモリに一時的に保存してから、アプリケーションプログラムの管理するアプリケーション用メモリ領域へ転送するコンピュータシステムであって、
前記データ受信装置からデータ転送の際に指定されるデータ格納開始アドレスに基づいて、前記データ受信装置の予測したページオフセットを特定する第１の特定手段と、
前記メモリに格納したデータを解析することで、そのデータの転送先となる前記アプリケーション用メモリ領域のページオフセットを特定する第２の特定手段と、
前記第１の特定手段の特定したページオフセットと前記第２の特定手段の特定したページオフセットとが一致するのか否かを判断する判断手段と、
前記判断手段が２つのページオフセットの不一致を判断するときに、前記第２の特定手段の特定したページオフセットと前記メモリに格納したデータの長さとに基づいて、データ転送後における前記アプリケーション用メモリ領域のページオフセットを特定して、前記データ受信装置に通知する通知手段と、
前記判断手段の判断結果に基づいて、前記メモリから前記アプリケーション用メモリ領域へのデータ転送方法を決定する決定手段とを備えることを、
特徴とするコンピュータシステム。
【請求項７】
請求項６に記載のコンピュータシステムにおいて、
前記決定手段は、前記判断手段が２つのページオフセットの不一致を判断するときには、データコピー操作に従ってデータ転送を行うことを決定し、前記判断手段が２つのページオフセットの一致を判断するときには、ページマップ切り替え可能なページのデータについてはページマップ切り替え操作によってデータ転送を行い、それ以外のページのデータについてはデータコピー操作に従ってデータ転送を行うことを決定することを、
特徴とするコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ受信装置とコンピュータシステムとで構成されるシステムで実行されるデータ受信方法と、そのデータ受信方法の実現に用いられるデータ受信装置及びコンピュータシステムとに関し、特に、高価なハードウェアを用意したりプログラムを書き換えることなく、コンピュータシステムが外部から高速にデータを受け取ることができるようにすることを実現するデータ受信方法と、そのデータ受信方法の実現に用いられるデータ受信装置及びコンピュータシステムとに関する。
【背景技術】
【０００２】
現在のコンピュータシステムにおいて、外部とのデータのやりとりを高速に行うことはシステム全体の高速化につながる重要な課題である。特に、パーソナルコンピュータなどの小さなコンピュータシステムをネットワークで接続して、全体として大きなひとつのコンピュータシステムとして使用するクラスタシステムなどでは、ネットワークを介したデータ伝送がシステム全体の計算速度を決める重要な要素となっている。
【０００３】
このため、コンピュータシステムのデータ通信性能は年々向上しており、ここのところの約３年で２倍のペースで通信速度が上がっている。これはコンピュータの演算装置の速度向上を上回る勢いである。
【０００４】
このようにデータ通信速度が速くなってくると、従来ではほとんど問題にならなかった受信データの取り扱い速度が非常に重要な課題となる。
【０００５】
従来ではネットワークからデータがやってくる速度に比べて演算装置の性能が非常に高かったため、受信したデータに対して複雑な処理を行ってもほとんどオーバーヘッドにはならなかった。
【０００６】
しかしながら現在ではその関係が崩れ、コンピュータシステムが受信データを処理するのに手一杯という状況が頻繁に生じている。
【０００７】
これではデータ受信の速度を低下させてしまうだけでなく、本来ならばこのコンピュータシステム上で処理できたはずの計算が処理できなくなってしまうといった副次的な性能低下を引き落とし、システム全体の性能を大幅に低下させてしまう重要な問題である。
【０００８】
このような問題に対処するために、Ｐrotocol Ｏffloading やＲemote ＤＭＡなどといった新しい技術が開発されてきた。
【０００９】
Ｐrotocol Ｏffloading は、従来オペレーティングシステム（ＯＳ）が行っていたデータ受信処理の一部をハードウェアに実装し、ネットワークインタフェースカード（ＮＩＣ）に搭載してしまう手法である。これによって、コンピュータシステム本体は、これまで外部からデータを受信した際に行っていた処理をせずに済み、負担が軽くなる。
【００１０】
しかしながら、このＰrotocol Ｏffloading では、
１．コンピュータシステムが行っていた処理をまかなえるだけの、高速で複雑な処理が      できるハードウェアを用意しなくてはならない
２．ソフトウェアは年々進化しており、ＯＳの処理も年々変化しているので、ハードウ      ェアではその変化に追従することができない
という問題点がある。
【００１１】
一方、Ｒemote ＤＭＡはこれらの問題点を解決する手段を提供する。Ｒemote ＤＭＡは通信の方式を大幅に変更し、従来オペレーティングシステムが介在して複雑に処理しなければ受信できなかったデータを直接やり取りできるようにするものである。
【００１２】
しかしながら、Ｒemote ＤＭＡを用いるためには、Ｒemote ＤＭＡに対応したハードウェアを用意し、Ｒemote ＤＭＡ用にプログラムを書き直す必要がある。そのため、一般にはなかなか普及していないというのが実情である。
【００１３】
ここで、下記に示す特許文献１には、本発明に関連する発明として、物理アドレス上で連続しているページ間のページ境界を越えた高速のＤＭＡ転送を行うＤＭＡ制御装置が提案されている。
【特許文献１】特開平１１−１８４７９７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
このように、従来技術の問題点を解決するために、Ｐrotocol Ｏffloading やＲemote ＤＭＡなどといった新しい技術が開発されてきた。
【００１５】
しかしながら、Ｐrotocol Ｏffloading では、高価なハードウェアを用意しなければならないという問題点がある。また、Ｒemote ＤＭＡでは、Ｒemote ＤＭＡに対応したハードウェアを用意しなければならないという問題点があるとともに、Ｒemote ＤＭＡ用にプログラムを書き直す必要があるという問題点がある。
【００１６】
これから、高価なハードウェアを用意したりプログラムを書き換えることなく、コンピュータシステムが高速にデータを受信できるようにする新たな技術を構築する必要がある。
【００１７】
一方、ＯＳが介在するデータ通信では、一般に、
ステップ１：外部からＮＩＣパケットが到達する
ステップ２：ＮＩＣはあらかじめＯＳから指定された領域にパケットを転送し、転送し              たことをＯＳに通知する
ステップ３．ＯＳは転送されてきたパケット情報を解析し、最終的な宛先を決定する
ステップ４．最終的な宛先が使用されているデータ領域に、パケットに格納されている              データをコピーする
というステップでデータ受信処理が行われる。
【００１８】
これらのステップの内、ステップ２の処理は外部からデータを受信する上で必要不可欠な操作である。そのため、工夫の余地があるとすればステップ３あるいはステップ４の処理である。特に重要と考えられるのがステップ４である。
【００１９】
ステップ４で実行するデータのコピー操作は、現在のプロセッサでは非常に重い処理のひとつである。それはいくらプロセッサの内部が高速化されても、メモリの速度はそれほど高速化されておらず、メモリアクセスを伴った操作は非常に時間のかかるものだからである。また、メモリは無限の速度を持っているわけではないので、メモリアクセスのための帯域には上限がある。データコピーの操作は、メモリからデータをいったん読み出し、別の場所に書き込む操作であるので、メモリに対する負荷が高く、メモリ帯域を無駄遣いしてしまう。この操作によって、他のメモリをアクセスする処理が滞ってしまうこともある。
【００２０】
また、データのコピーはデータが増えれば増えるほど多くなっていく。したがって、データ通信速度が向上すると、それにしたがってデータコピー処理が重くなっていく。ステップ３で行うパケット情報の解析処理などは、パケットサイズを大きくしたり、ヘッダ情報をキャッシュにのせるなどの工夫により高速化が可能である。しかしながら、巨大なデータを扱うステップ４の処理では、そのような工夫はできにくい。
【００２１】
このようなステップ４の操作を高速化するために、ページマップの切り替えという手法を用いることが考えられる。
【００２２】
ページマップとは仮想記憶空間の実現に用いられるアドレス変換のためのテーブルである。ページマップには論理的なアドレスと物理的なアドレスとの組が記述されている。プログラムから論理アドレスＡのデータを参照する要求があると、プロセッサはページマップを参照して、論理アドレスＡに対応する物理アドレスＡ’を取り出す。そして、メモリの物理アドレスＡ’のデータを読み出し、これを論理アドレスＡに対応するデータとしてプログラムに渡す。
【００２３】
この機構を用いると、データの移動をコピーなしに実現することができる。例えば、論理アドレスＢに対して物理アドレスＢ’が対応しており、論理アドレスＣに対して物理アドレスＣ’が対応していたとする。論理アドレスＣから論理アドレスＢへデータを移動しようとした場合、ページマップを書き替えて論理アドレスと物理アドレスとの対応関係を、「Ｂ→Ｃ’，Ｃ→Ｂ’」に変更してしまう。このようにすると、論理アドレスＢのデータを参照すると、これまで論理アドレスＣに格納されていたデータが参照できることになる。
【００２４】
なお、ページマップはアドレスひとつごとに用意されているのではなくて、ページと呼ばれるひとまとまりのデータ単位ごとに管理されている。例えば、広く用いられているＩntel社のＩＡ３２プロセッサでは、このページサイズが４ＫＢとなっている。
【００２５】
ページマップの切り替えを用いるデータの移動はページ単位でなくてはならないために、利用できる状況が限定される。
【００２６】
例えば、論理アドレス0x10000000番地から始まる４ＫＢ（＝0x1000Ｂ）のデータを、論理アドレス0x20000000番地からの４ＫＢという領域へ移動する場合には、論理アドレス0x20000000番地に対応するページマップを、現在論理アドレス0x10000000番地に対応している物理アドレスに関連付けるように書き替えればよい。
【００２７】
しかし、例えば、移動先が論理アドレス0x20000100番地になると、移動先の領域が論理アドレス0x20000000番地から始まるページと、論理アドレス0x20001000番地から始まるページとにまたがってしまうため、ページマップの書き替えではうまく対応付けることができない。この場合には、データをコピーしなくてはならない。
【００２８】
これを言い換えると、データのページオフセット（この例では、転送元が0x000 で、転送先が0x100)が一致していないと、ページマップの書き替えによるデータ移動は利用できない、ということになる。
【００２９】
これから、前述したようなステップ１〜ステップ４の処理を実行するＯＳが介在するデータ通信において、そのステップ４で、単純に、ページマップの書き替えによるデータ移動を利用することはできない。
【００３０】
そこで、本発明では、前述したようなステップ１〜ステップ４の処理を実行するＯＳが介在するデータ通信において、受信したデータをＯＳが一時的に用意したメモリ領域からアプリケーションプログラムが実際に使用するメモリ領域へデータ転送する際に、ページマップの書き替えによるデータ移動を利用できる状況を多く作り出すことで、それによる高速なデータ転送を実現し、これにより、高価なハードウェアを用意したりプログラムを書き換えることなく、コンピュータシステムが外部から高速にデータを受け取ることができるようにする新たなデータ受信技術の提供を目的とする。
【課題を解決するための手段】
【００３１】
この目的を達成するために、本発明では、コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステム内のメモリに一時的に保存するデータ受信装置と、データ受信装置から転送されてくるデータを受信して、それをメモリに一時的に保存してから、アプリケーションプログラムの管理するアプリケーション用メモリ領域へ転送するコンピュータシステムとで構成されるときに、データ受信装置とコンピュータシステムとが以下のような構成を採る。
【００３２】
〔１〕本発明のデータ受信装置の構成
本発明のデータ受信装置は、（イ）外部から送られてくるデータを受信するときに、アプリケーション用メモリ領域のページオフセットを予測する予測手段と、（ロ）メモリ上のデータ転送先ページの先頭アドレスと予測手段の予測したページオフセットとにより規定されるデータ格納開始アドレスを指定して、受信したデータをメモリに転送する転送手段と、（ハ）受信したデータの長さと予測手段の予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定する設定手段と、（ニ）コンピュータシステムから予測手段の予測したページオフセットの予測値について予測誤りの通知があるときに、設定手段の設定したページオフセットの予測値をコンピュータシステムから通知されるページオフセットに従って変更する変更手段とを備えるように構成する。
【００３３】
この構成を採るときに、送信元情報及び送信先情報に対応付けて、設定手段の設定したページオフセットの予測値を記憶する第１の記憶手段を備えることがあり、この第１の記憶手段を備える場合には、予測手段は、データを受信するときに、その受信データの送信元情報及び送信先情報を抽出して、その抽出した送信元情報及び送信先情報をキーにして第１の記憶手段の記憶情報を参照することでページオフセットを予測するように処理する。
【００３４】
このとき、さらに、コンピュータシステムから通知されるページオフセットの初期値に従って、第１の記憶手段に対して、ページオフセットの予測値を初期登録する初期登録手段を備えることがある。
【００３５】
また、この構成を採るときに、送信元情報及び送信先情報に対応付けて、固定のページオフセットを用いるのか否かということと、固定のページオフセットを用いるものについては固定のページオフセットを記憶し、固定のページオフセットを用いないものについては、設定手段の設定したページオフセットの予測値を記憶する第２の記憶手段を備えることがあり、この第２の記憶手段を備える場合には、予測手段は、データを受信するときに、その受信データの送信元情報及び送信先情報を抽出して、その抽出した送信元情報及び送信先情報をキーにして第２の記憶手段の記憶情報を参照することでページオフセットを予測するように処理する。
【００３６】
このとき、さらに、コンピュータシステムから通知される固定のページオフセットの値に従って、第２の記憶手段に対して、固定のページオフセットの値を登録する登録手段を備えることがあり、また、コンピュータシステムから通知されるページオフセットの初期値に従って、第２の記憶手段に対して、ページオフセットの予測値を初期登録する初期登録手段を備えることがある。
【００３７】
この第２の記憶手段を備える理由は以下の通りである。
【００３８】
すなわち、コンピュータシステムは、ループ処理などがある場合には、アプリケーション用メモリ領域の同じ場所に何度も小さなデータを受信していくことがある。
【００３９】
このような場合に、第１の記憶手段を用いていると、予測するページオフセットが同じであるにもかかわらず、その都度、第１の記憶手段に対して同じページオフセットの予測値を書き込むという処理を繰り返すことになる。これに対して、第２の記憶手段を用いれば、そのような不都合な処理を行わなくも済むようになるからである。
【００４０】
〔２〕本発明のコンピュータシステムの構成
本発明のコンピュータシステムは、（イ）データ受信装置からデータ転送の際に指定されるデータ格納開始アドレスに基づいて、データ受信装置の予測したページオフセットを特定する第１の特定手段と、（ロ）メモリに格納したデータを解析することで、そのデータの転送先となるアプリケーション用メモリ領域のページオフセットを特定する第２の特定手段と、（ハ）第１の特定手段の特定したページオフセットと第２の特定手段の特定したページオフセットとが一致するのか否かを判断する判断手段と、（ニ）判断手段が２つのページオフセットの不一致を判断するときに、第２の特定手段の特定したページオフセットとメモリに格納したデータの長さとに基づいて、データ転送後におけるアプリケーション用メモリ領域のページオフセットを特定して、データ受信装置に通知する第１の通知手段と、（ホ）判断手段の判断結果に基づいて、メモリからアプリケーション用メモリ領域へのデータ転送方法を決定する決定手段とを備えるように構成する。
【００４１】
この構成を採るときに、データ受信装置に対して、ページオフセットの予測値の初期値を通知する第２の通知手段を備えたり、データ受信装置に対して、固定のページオフセットの値を通知する第３の通知手段を備えることがある。
【００４２】
〔３〕本発明の処理について
本発明のデータ受信装置は、外部から送られてくるデータを受信すると、最終的なデータ転送先となるアプリケーション用メモリ領域のページオフセットを予測して、メモリ上のデータ転送先ページの先頭アドレスとその予測したページオフセットとにより規定されるデータ格納開始アドレスを指定して、受信したデータをメモリに転送するとともに、受信したデータの長さとその予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定する。
【００４３】
このデータ転送を受けて、本発明のコンピュータシステムは、転送されてきたデータを受信して、そのデータ転送の際に指定されるデータ格納開始アドレスを起点として、受信したデータをメモリに格納する。
【００４４】
続いて、そのデータ格納開始アドレスに基づいて、本発明のデータ受信装置の予測したページオフセットを特定するとともに、メモリに格納したデータを解析することで、そのデータの転送先となるアプリケーション用メモリ領域のページオフセットを特定して、その特定した２つのページオフセットが一致するのか否かを判断する。
【００４５】
続いて、その判断結果に基づいて、メモリからアプリケーション用メモリ領域へのデータ転送方法を決定する。
【００４６】
具体的には、２つのページオフセットの不一致を判断するときには、データコピー操作に従ってデータ転送を行うことを決定し、２つのページオフセットの一致を判断するときには、ページマップ切り替え可能なページのデータについてはページマップ切り替え操作によってデータ転送を行い、それ以外のページのデータについてはデータコピー操作に従ってデータ転送を行うことを決定する。
【００４７】
続いて、２つのページオフセットの不一致を判断するときには、特定したアプリケーション用メモリ領域のページオフセットとメモリに格納したデータの長さとに基づいて、データ転送後におけるアプリケーション用メモリ領域のページオフセットを特定して、それを本発明のデータ受信装置に通知する。
【００４８】
このページオフセットの通知を受けて、本発明のデータ受信装置は、予測したページオフセットに誤りがあることで、設定したページオフセットの予測値（次回のデータ受信の際に用いるページオフセットの予測値）についても誤りであることを判断して、本発明のコンピュータシステムから通知されるページオフセットに従って、その設定したページオフセットの予測値を変更する。
【００４９】
〔４〕本発明の具体的な処理例
次に、転送されてくるデータがパケットであることを想定して、この本発明の処理について具体的に説明する。
【００５０】
例えば、１ページの長さが0x1000で、外部から送られてくるパケットの長さが0x2800（２．５ページ分）で、本発明のデータ受信装置が一番初めに予測するアプリケーション用メモリ領域のページオフセットの予測値が０ページであることを仮定する。
【００５１】
これから、本発明のデータ受信装置は、本発明のコンピュータシステムからページオフセットの予測誤りが通知されない場合には、
０ページ→０．５ページ→０ページ→０．５ページ→０ページ→・・・・・・
というように、アプリケーション用メモリ領域のページオフセットを予測していくことになる。
【００５２】
（ｉ）この場合にあって、さらに、アプリケーション用メモリ領域の先頭ページの実際のページオフセットが０ページであるとし、このとき、パケットがロスすることなく順番通りに転送されてくる場合には、図１に示すように、最初から、本発明のデータ受信装置の予測するアプリケーション用メモリ領域のページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが一致することで、ページマップ切り替え操作を利用することによって、メモリからアプリケーション用メモリ領域へ高速にデータを移動できることになる。
【００５３】
（ii）一方、この場合にあって、さらに、アプリケーション用メモリ領域の先頭ページの実際のページオフセットが０．５ページであるとし、このとき、パケットがロスすることなく順番通りに転送されてくる場合には、図２に示すように、最初だけ、本発明のデータ受信装置の予測するアプリケーション用メモリ領域のページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが不一致となり、これにより、ページオフセットの予測の修正が行われ、それ以降、本発明のデータ受信装置の予測するアプリケーション用メモリ領域のページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが一致することで、ページマップ切り替え操作を利用することによって、メモリからアプリケーション用メモリ領域へ高速にデータを移動できることになる。
【００５４】
（iii)一方、この場合にあって、さらに、アプリケーション用メモリ領域の先頭ページの実際のページオフセットが０ページであるとし、このとき、パケットがロスしたり順番通りに転送されてこない場合には、図３に示すように、その時点において、本発明のデータ受信装置の予測するメモリのページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが不一致となり、これにより、ページオフセットの予測の修正が行われ、それ以降、本発明のデータ受信装置の予測するメモリのページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが一致することで、ページマップ切り替え操作を利用することによって、メモリからアプリケーション用メモリ領域へ高速にデータを移動できることになる。
【００５５】
ここで、この図３では、パケット＃ｎ＋１よりも前にパケット＃ｎ＋２が転送されてきたことを仮定しており、本発明のコンピュータシステムは、パケットのヘッダ情報を解析することで、そのことを検出することになる。
【００５６】
図１では、パケットの長さが２．５ページ分であることを仮定したが、図４に示すように、パケットの長さが２．６ページ分というような中途半端な場合でも、最初から、本発明のデータ受信装置の予測するアプリケーション用メモリ領域のページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが一致するとともに、その後も、本発明のデータ受信装置の予測するアプリケーション用メモリ領域のページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが一致することで、ページマップ切り替え操作を利用することによって、メモリからアプリケーション用メモリ領域へ高速にデータを移動できることになる。
【００５７】
また、図２に示す例では、アプリケーション用メモリ領域の先頭ページの実際のページオフセットが０．５ページであるにもかかわらず、本発明のデータ受信装置は一番初めにページオフセットの予測値を０ページと予測しているが、本発明のコンピュータシステムが、本発明のデータ受信装置に対してページオフセットの予測値の初期値を通知し、これを受けて、本発明のデータ受信装置が、その通知されたページオフセットの予測値の初期値に従って一番初めのページオフセットを予測するようにすれば、そのような不都合は起こらない。
【発明の効果】
【００５８】
本発明によれば、コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステム内のメモリに一時的に保存するデータ受信装置と、データ受信装置から転送されてくるデータを受信して、それをメモリに一時的に保存してから、アプリケーションプログラムの管理するアプリケーション用メモリ領域へ転送するコンピュータシステムとで構成されるシステムにおいて、データ受信装置がページマップの書き替えによるデータ移動を可能とするページオフセットを予測することが可能になり、これにより、ページマップの書き替えによるデータ移動を利用できる状況を多く作り出すことができることで、ページマップの書き替えによる高速なデータ転送を実現することができるようになる。
【００５９】
これから、本発明によれば、高価なハードウェアを用意したりプログラムを書き換えることなく、コンピュータシステムが外部から高速にデータを受け取ることができるようになる。
【発明を実施するための最良の形態】
【００６０】
以下、実施の形態に従って本発明を詳細に説明する。
【００６１】
図５に、本発明のネットワークインタフェース装置１と本発明のデータ処理装置２とで構成されるシステム構成の一例を図示する。なお、ネットワークインタフェース装置１については、図面中でＮＩＣと略記することがある。
【００６２】
この図に示すように、本発明のネットワークインタフェース装置１は、図示しないイーサネット(登録商標）から送信されてくるＴＣＰ／ＩＰパケットを受信して一時的に格納する受信データ格納バッファ１０と、受信データ格納バッファ１０に格納されたパケットをデータ処理装置２のＯＳ用バッファ２００に転送するＤＭＡエンジン１１と、受信データ格納バッファ１０に格納されたパケットを解析して、パケット長と送信元のＩＰアドレスと送信先のポート番号とを抽出するキー抽出器１２と、キー抽出器１２の抽出した送信元ＩＰアドレス及び送信先ポート番号をキーにしてテーブルを検索することで、データ処理装置２のＡＰＬ用バッファ２１０のページオフセットを予測するオフセット予測器１３と、データ処理装置２の設定したＯＳ用バッファ２００のページ先頭アドレスを受け取り登録する受信バッファ登録器１４と、受信バッファ登録器１４の登録したページ先頭アドレスとオフセット予測器１３の予測したページ先頭アドレスとを加算することでＯＳ用バッファ２００のデータ格納開始アドレスを算出して、ＤＭＡエンジン１１に与える加算器１５とを備える。
【００６３】
一方、本発明のデータ処理装置２は、オペレーティングシステム２０と、ＡＰＬ用バッファ２１０を備えて所定のデータ処理を実行するアプリケーションプログラム２１とを備える。
【００６４】
オペレーティングシステム２０は、ネットワークインタフェース装置１から転送されてくるパケットを受信して一時的に格納するＯＳ用バッファ２００と、アプリケーションプログラム２１の設定した図６に示すようなＡＰＬ用バッファ２１０のデータ受信領域の情報を取得するＡＰＬ用バッファ領域情報取得部２０１と、データ受信領域となる図７に示すようなＯＳ用バッファ２００のページ先頭アドレスを設定して、その設定情報を受信バッファ登録器１４に通知するＯＳ用バッファアドレス通知部２０２と、オフセット予測器１３の予測したページオフセットを特定するとともに、ＡＰＬ用バッファ２１０のページオフセットを特定するオフセット特定部２０３と、ＯＳ用バッファ２００に格納したパケットのヘッダ情報を解析するヘッダ情報解析部２０４と、ページマップの切り替えによるＯＳ用バッファ２００からＡＰＬ用バッファ２１０へのデータ転送を制御するページマップ切替部２０５と、データコピーによるＯＳ用バッファ２００からＡＰＬ用バッファ２１０へのデータ転送を制御するデータコピー制御部２０６と、オフセット予測器１３に対して、ページオフセットの予測の変更を指示するオフセット予測変更指示部２０７とを備える。
【００６５】
ここで、図６では、ＡＰＬ用バッファ２１０のデータ受信領域として連続ページ構成のものを例示したが、ページがリンクで関連付けされるような場合には、このような連続ページ構成にはならない。また、図７では、ＯＳ用バッファ２００のデータ受信領域として連続ページ構成のものを例示したが、ページがリンクで関連付けされるような場合には、このような連続ページ構成にはならない。
【００６６】
図８に、オフセット予測器１３の装置構成の一例を図示する。
【００６７】
この図に示すように、オフセット予測器１３は、送信元ＩＰアドレス及び送信先ポート番号に対応付けて、ＡＰＬ用バッファ２１０のページオフセットの予測値を管理するオフセット予測テーブル１３０と、キー抽出器１２の抽出した情報の指すオフセット予測テーブル１３０のページオフセットを更新対象として、“新ページオフセット＝ページオフセット＋パケット長”という算出式に従ってＡＰＬ用バッファ２１０のページオフセットの新たな予測値を算出して、オフセット予測テーブル１３０に管理されるページオフセットを更新するテーブル更新部１３１と、オフセット予測変更指示部２０７からの指示情報に従って、オフセット予測テーブル１３０に管理されるページオフセットを変更するＣＰＵインタフェース１３２と、キー抽出器１２の抽出した送信元ＩＰアドレス及び送信先ポート番号をキーにしてオフセット予測テーブル１３０を参照することでページオフセットを読み出して、それを加算器１５やテーブル更新部１３１に与えるテーブル参照部１３３とを備える。
【００６８】
図９及び図１０に、本発明のネットワークインタフェース装置１の実行する処理の一例をフローチャートの形で図示し、図１１に、本発明のデータ処理装置２の備えるオペレーティングシステム２０の実行するフローチャートの一例を図示する。
【００６９】
次に、これらのフローチャートに従って、このように構成される本発明の実行する処理について詳細に説明する。
【００７０】
最初に、図９及び図１０のフローチャートに従って、本発明のネットワークインタフェース装置１の実行する処理について説明する。
【００７１】
本発明のネットワークインタフェース装置１は、図示しないイーサネットから送信されてくるＴＣＰ／ＩＰパケットを受信して受信データ格納バッファ１０に格納すると、図９のフローチャートに示すように、先ず最初に、ステップＳ１０で、そのパケットのへッダ情報から、送信元のＩＰアドレスと、送信先を指定するポート番号と、パケット長とを抽出する。
【００７２】
ここで、本発明のネットワークインタフェース装置１はハードウェアで構成されており、これから、このステップＳ１０では、パケットのヘッダ情報を詳細に解析することは行わずに、送信元のＩＰアドレスと、送信先を指定するポート番号と、パケット長とを抽出するだけの処理を行うことになる。
【００７３】
続いて、ステップＳ１１で、抽出したＩＰアドレス及びポート番号をキーにしてオフセット予測テーブル１３０を参照することで、ＡＰＬ用バッファ２１０のページオフセットの予測値を特定する。
【００７４】
続いて、ステップＳ１２で、前回転送したＯＳ用バッファ２００の最終ページの次のページの先頭アドレスと、特定したページオフセットの予測値とを加算することで、ＯＳ用バッファ２００の転送先アドレスを算出する。
【００７５】
続いて、ステップＳ１３で、算出した転送先アドレスを転送先として、受信したパケットをＯＳ用バッファ２００に転送する。
【００７６】
続いて、ステップＳ１４で、ステップＳ１１で特定したページオフセットを更新対象として、ステップＳ１０で抽出したパケット長と、ステップＳ１１で特定したページオフセットとを使い、
新ページオフセット＝ページオフセット＋パケット長
という算出式に従ってＡＰＬ用バッファ２１０のページオフセットの新たな予測値を算出して、オフセット予測テーブル１３０に管理されるページオフセットの予測値を更新して、処理を終了する。
【００７７】
後述するように、本発明のデータ処理装置２は、このパケットの転送に際して、本発明のネットワークインタフェース装置１が予測したページオフセット（ステップＳ１１で特定したページオフセット）に誤りがある場合には、本発明のネットワークインタフェース装置１に対して、次回のデータ転送の際に用いるページオフセットの予測値を指定して、ページオフセットの予測の変更を指示してくる。
【００７８】
これから、本発明のネットワークインタフェース装置１は、本発明のデータ処理装置１からページオフセット予測の変更指示があると、図１０のフローチャートに示すように、先ず最初に、ステップＳ２０で、本発明のデータ処理装置１から送られてくるページオフセットの予測値を受け取り、続くステップＳ２１で、図９のフローチャートのステップＳ１４で更新したページオフセットの予測値を、その受け取ったページオフセットの予測値に変更して、処理を終了する。
【００７９】
次に、図１１のフローチャートに従って、本発明のデータ処理装置２の備えるオペレーティングシステム２０の実行する処理について説明する。
【００８０】
本発明のデータ処理装置２は、本発明のネットワークインタフェース装置１から転送先アドレスを指定してパケットが送られてくると、その転送先アドレスの指すＯＳ用バッファ２００のメモリ領域にパケットを格納してから、ＯＳ用バッファ２００に割り込みを通知することで、オペレーティングシステム２０に対してパケットの受信を通知する。
【００８１】
この割込通知を受けて、本発明のデータ処理装置２の備えるオペレーティングシステム２０は、図１１のフローチャートに示すように、先ず最初に、ステップＳ３０で、ＯＳ用バッファ２００に格納されたパケットのヘッダ情報を解析することで、そのパケットをＡＰＬ用バッファ２１０のどこに格納するのかを決定する。
【００８２】
すなわち、ネットワークを転送されてくるパケットは、順番通りに転送されてくるとは限らないし、パケットロスも発生することがある。これから、ＯＳ用バッファ２００に格納されたパケットは、その格納順序のまま、ＡＰＬ用バッファ２１０にデータ転送していく訳にはいかない。そこで、このステップＳ３０では、ＯＳ用バッファ２００に格納されたパケットのヘッダ情報を解析することで、そのパケットをＡＰＬ用バッファ２１０のどこに格納するのかを決定するのである。
【００８３】
続いて、ステップＳ３１で、ステップＳ３０の決定結果に基づいて、ＡＰＬ用バッファ２１０の格納開始ページのページオフセット（先頭アドレスからのオフセット）を特定する。
【００８４】
続いて、ステップＳ３２で、本発明のネットワークインタフェース装置１から指示された転送先アドレスに従って、ＯＳ用バッファ２００の格納開始ページのページオフセット（先頭アドレスからのオフセット）を特定する。
【００８５】
続いて、ステップＳ３３で、ステップＳ３１で特定したページオフセットと、ステップＳ３２で特定したページオフセットとが一致するのか否かを判断する。
【００８６】
この判断処理に従って、２つのページオフセットが一致することを判断するときには、ステップＳ３４に進んで、ＯＳ用バッファ２００に格納したパケットを処理対象として、ページマップの切り替えが可能なデータ部分については、ページマップの切り替えに従ってＯＳ用バッファ２００からＡＰＬ用バッファ２１０へデータ移動を行い、ページマップの切り替えが不可能なデータ部分については、ＯＳ用バッファ２００からＡＰＬ用バッファ２１０へバイト単位にデータをコピーして、処理を終了する。
【００８７】
すなわち、本発明のネットワークインタフェース装置１の予測したＡＰＬ用バッファ２１０のページオフセットの予測値と、パケットのヘッダ情報の解析により求められた実際のＡＰＬ用バッファ２１０のページオフセットとが一致するときには、ページマップの切り替えを利用するデータ移動が可能であるので、ページマップの切り替えが可能なデータ部分については、ページマップの切り替えに従ってＯＳ用バッファ２００からＡＰＬ用バッファ２１０へデータ移動を行うように制御するのである。
【００８８】
一方、ステップＳ３３の判断処理に従って、２つのページオフセットが一致しないことを判断するときには、ステップＳ３５に進んで、ＯＳ用バッファ２００に格納したパケットを処理対象として、ＯＳ用バッファ２００からＡＰＬ用バッファ２１０へバイト単位にデータをコピーする。
【００８９】
すなわち、本発明のネットワークインタフェース装置１の予測したＡＰＬ用バッファ２１０のページオフセットの予測値と、パケットのヘッダ情報の解析により求められた実際のＡＰＬ用バッファ２１０のページオフセットとが一致しないときには、ページマップの切り替えを利用することができないので、ＯＳ用バッファ２００からＡＰＬ用バッファ２１０へバイト単位にデータをコピーするのである。
【００９０】
続いて、ステップＳ３６で、ＡＰＬ用バッファ２１０にコピーしたパケットの最終格納ページのページオフセット（次回のＯＳ用バッファ２００の格納開始ページのページオフセットとなるもの）を特定する。
【００９１】
続いて、ステップＳ３７で、本発明のネットワークインタフェース装置１に対して、特定したページオフセットを通知することで（ＩＰアドレス及びポート番号も通知する）、オフセット予測テーブル１３０に格納されるページオフセットの予測値の変更を指示して、処理を終了する。                                                                    
【００９２】
このページオフセットの予測変更指示を受けて、本発明のネットワークインタフェース装置１は、図１０のフローチャートで説明したように、オフセット予測テーブル１３０に格納される図９のフローチャートのステップＳ１４で更新したページオフセットの予測値を、オペレーティングシステム２０から通知されるページオフセットに従って変更するのである。
【００９３】
次に、図１２〜図１７に従って、本発明の処理について具体的に説明する。ここで、図１２〜図１７では、１ページの長さを0x1000としている。
【００９４】
図１２〜図１４に示す処理例（図１に示す処理例に相当するもの）では、図１２に示すように、アプリケーションプログラム２１がオペレーティングシステム２０に対して、先頭アドレスが0x20000000で、長さが0x5000というＡＰＬ用バッファ２１０のメモリ領域にデータを受信することを要求し、オペレーティングシステム２０がネットワークインタフェース装置１に対して、0x10000000〜0x10006000というＯＳ用バッファ２００のメモリ領域にデータを受信することを要求する、ということを想定している。
【００９５】
この場合にあって、図１３に示すように、ネットワークインタフェース装置１が0x2800（２．５ページ分）というパケット長のパケット＃１を受信し、このとき、ネットワークインタフェース装置１が0x000 というページオフセットを予測したとする。
【００９６】
この場合には、図１３に示すように、ネットワークインタフェース装置１は、0x10000000を起点とするＯＳ用バッファ２００のメモリ領域に２．５ページのデータを転送し、次回のページオフセットの予測値として0x800(０．５ページ）を予測して、オフセット予測テーブル１３０に書き込む。
【００９７】
このデータ転送を受けて、図１３に示すように、オペレーティングシステム２０は、ＡＰＬ用バッファ２１０の0x20000000が転送先領域として設定されていることで、ネットワークインタフェース装置１の予測したページオフセットと、ＡＰＬ用バッファ２１０のページオフセットとが一致することを判断して、ページテーブルの書き替えによるデータ移動を行いながら、ＯＳ用バッファ２００からＡＰＬ用バッファ２１０へデータを転送する。
【００９８】
続いて、図１４に示すように、ネットワークインタフェース装置１が0x2800（２．５ページ分）というパケット長のパケット＃２を受信したとする。このとき、ネットワークインタフェース装置１は、オフセット予測テーブル１３０の格納データに従って0x800(０．５ページ）というページオフセットを予測する。
【００９９】
この場合には、図１４に示すように、ネットワークインタフェース装置１は、0x10003800（＝0x10003000+0x800) を起点とするＯＳ用バッファ２００のメモリ領域に２．５ページのデータを転送し、次回のページオフセットの予測値として0x000(＝0x800+0x800)を予測して、オフセット予測テーブル１３０に書き込む。
【０１００】
このデータ転送を受けて、図１４に示すように、オペレーティングシステム２０は、ＡＰＬ用バッファ２１０の0x20002800が転送先領域として設定されていることで、ネットワークインタフェース装置１の予測したページオフセットと、ＡＰＬ用バッファ２１０のページオフセットとが一致することを判断して、ページテーブルの書き替えによるデータ移動を行いながら、ＯＳ用バッファ２００からＡＰＬ用バッファ２１０へデータを転送する。
【０１０１】
このようにして、図１２〜図１４に示す処理例では、図１に示したような形態でＯＳ用バッファ２００からＡＰＬ用バッファ２１０へデータ転送が実行されることになる。
【０１０２】
図１５〜図１７に示す処理例（図２に示す処理例に相当するもの）では、図１５に示すように、アプリケーションプログラム２１がオペレーティングシステム２０に対して、先頭アドレスが0x20000800で、長さが0x5000というＡＰＬ用バッファ２１０のメモリ領域にデータを受信することを要求し、オペレーティングシステム２０がネットワークインタフェース装置１に対して、0x10000000〜0x10006000というＯＳ用バッファ２００のメモリ領域にデータを受信することを要求する、ということを想定している。
【０１０３】
この場合にあって、図１６に示すように、ネットワークインタフェース装置１が0x2800（２．５ページ分）というパケット長のパケット＃１を受信し、このとき、ネットワークインタフェース装置１が0x000 というページオフセットを予測したとする。
【０１０４】
この場合には、図１６に示すように、ネットワークインタフェース装置１は、0x10000000を起点とするＯＳ用バッファ２００のメモリ領域に２．５ページのデータを転送し、次回のページオフセットの予測値として0x800(０．５ページ）を予測して、オフセット予測テーブル１３０に書き込む。
【０１０５】
このデータ転送を受けて、図１６に示すように、オペレーティングシステム２０は、ＡＰＬ用バッファ２１０の0x20002800が転送先領域として設定されていることで、ネットワークインタフェース装置１の予測したページオフセットと、ＡＰＬ用バッファ２１０のページオフセットとが一致しないことを判断して、ページテーブルの書き替えによるデータ移動を行わずに、ＯＳ用バッファ２００からＡＰＬ用バッファ２１０へデータを転送する。そして、ネットワークインタフェース装置１に対して、ページオフセットの予測値を0x000 に変更すべく通知する。
【０１０６】
続いて、図１７に示すように、ネットワークインタフェース装置１が0x2800（２．５ページ分）というパケット長のパケット＃２を受信したとする。このとき、ネットワークインタフェース装置１は、オペレーティングシステム２０からの変更指示に従って0x000 というページオフセットを予測する。
【０１０７】
この場合には、図１７に示すように、ネットワークインタフェース装置１は、0x10003000（＝0x10003000+0x000) を起点とするＯＳ用バッファ２００のメモリ領域に２．５ページのデータを転送し、次回のページオフセットの予測値として0x800(＝0x000+0x800)を予測して、オフセット予測テーブル１３０に書き込む。
【０１０８】
このデータ転送を受けて、図１７に示すように、オペレーティングシステム２０は、ＡＰＬ用バッファ２１０の0x20003000が転送先領域として設定されていることで、ネットワークインタフェース装置１の予測したページオフセットと、ＡＰＬ用バッファ２１０のページオフセットとが一致することを判断して、ページテーブルの書き替えによるデータ移動を行いながら、ＯＳ用バッファ２００からＡＰＬ用バッファ２１０へデータを転送する。
【０１０９】
このようにして、図１５〜図１７に示す処理例では、図２に示したような形態でＯＳ用バッファ２００からＡＰＬ用バッファ２１０へデータ転送が実行されることになる。
【０１１０】
図示実施形態例に従って本発明を説明したが、本発明はこれに限定されるものではない。
【０１１１】
例えば、実施形態例では、オフセット予測テーブル１３０が送信元ＩＰアドレス及び送信先ポート番号に対応付けて、ＡＰＬ用バッファ２１０のページオフセットの予測値を管理するものを開示したが、送信元ＩＰアドレス及び送信先ポート番号に対応付けて、固定のページオフセットを用いるのか否かということと、固定のページオフセットを用いるものについては固定のページオフセットを管理し、固定のページオフセットを用いないものについては、ＡＰＬ用バッファ２１０のページオフセットの予測値を管理するという構成を採ることもある。
【０１１２】
データ処理装置２は、ループ処理などがある場合には、ＡＰＬ用バッファ２１０の同じメモリ領域に何度も小さなデータを受信していくことがあるので、このような場合には、オフセット予測テーブル１３０は、送信元ＩＰアドレス及び送信先ポート番号に対応付けて、固定のページオフセットを用いるのか否かということと、固定のページオフセットを用いるものについては固定のページオフセットを管理し、固定のページオフセットを用いないものについては、ＡＰＬ用バッファ２１０のページオフセットの予測値を管理するという構成を採ることになる。
【産業上の利用可能性】
【０１１３】
本発明は、コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステムに転送するデータ受信装置と、そのデータ受信装置を接続するコンピュータシステムとで構成されるシステムに適用できるものであり、データ受信装置がページマップの書き替えによるデータ移動を可能とするページオフセットを予測することが可能になり、これにより、ページマップの書き替えによるデータ移動を利用できる状況を多く作り出すことができることで、ページマップの書き替えによる高速なデータ転送を実現することができるようになる。
【０１１４】
（付記１）コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステム内のメモリに一時的に保存するデータ受信装置と、データ受信装置から転送されてくるデータを受信して、それをメモリに一時的に保存してから、アプリケーションプログラムの管理するアプリケーション用メモリ領域へ転送するコンピュータシステムとで構成されるシステムで実行されるデータ受信方法であって、前記データ受信装置が、データを受信するときに、前記アプリケーション用メモリ領域のページオフセットを予測して、前記メモリ上のデータ転送先ページの先頭アドレスと予測したページオフセットとにより規定されるデータ格納開始アドレスを指定して、受信したデータを前記メモリに転送し、さらに、受信したデータの長さと予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定するとともに、コンピュータシステムから予測したページオフセットの予測値について予測誤りの通知があるときに、設定したページオフセットの予測値をコンピュータシステムから通知されるページオフセットに従って変更するように処理し、前記コンピュータシステムが、データ転送の際に指定されるデータ格納開始アドレスに基づいて、前記データ受信装置の予測したページオフセットを特定するとともに、前記メモリに格納したデータを解析することで、そのデータの転送先となる前記アプリケーション用メモリ領域のページオフセットを特定して、その特定した２つのページオフセットが一致するのか否かを判断し、２つのページオフセットの不一致を判断するときに、特定した前記アプリケーション用メモリ領域のページオフセットと前記メモリに格納したデータの長さとに基づいて、データ転送後における前記アプリケーション用メモリ領域のページオフセットを特定して、前記データ受信装置に通知し、さらに、２つのページオフセットが一致するのか否かの判断結果に基づいて、前記メモリから前記アプリケーション用メモリ領域へのデータ転送方法を決定するように処理することを、特徴とするデータ受信方法。
【０１１５】
（付記２）コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステム内のメモリに一時的に保存するデータ受信装置であって、データを受信するときに、前記メモリからのデータ転送先となるアプリケーション用メモリ領域のページオフセットを予測する予測手段と、前記メモリ上のデータ転送先ページの先頭アドレスと前記予測手段の予測したページオフセットとにより規定されるデータ格納開始アドレスを指定して、前記受信したデータを前記メモリに転送する転送手段と、前記受信したデータの長さと前記予測手段の予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定する設定手段と、コンピュータシステムから前記予測手段の予測したページオフセットの予測値について予測誤りの通知があるときに、前記設定手段の設定したページオフセットの予測値をコンピュータシステムから通知されるページオフセットに従って変更する変更手段とを備えることを、特徴とするデータ受信装置。
【０１１６】
（付記３）付記２に記載のデータ受信装置において、送信元情報及び送信先情報に対応付けて、前記設定手段の設定したページオフセットの予測値を記憶する記憶手段を備え、前記予測手段は、データを受信するときに、その受信データの送信元情報及び送信先情報を抽出して、その抽出した送信元情報及び送信先情報をキーにして前記記憶手段の記憶情報を参照することでページオフセットを予測することを、特徴とするデータ受信装置。
【０１１７】
（付記４）付記２に記載のデータ受信装置において、送信元情報及び送信先情報に対応付けて、固定のページオフセットを用いるのか否かということと、固定のページオフセットを用いるものについては固定のページオフセットを記憶し、固定のページオフセットを用いないものについては、前記設定手段の設定したページオフセットの予測値を記憶する記憶手段を備え、前記予測手段は、データを受信するときに、その受信データの送信元情報及び送信先情報を抽出して、その抽出した送信元情報及び送信先情報をキーにして前記記憶手段の記憶情報を参照することでページオフセットを予測することを、特徴とするデータ受信装置。
【０１１８】
（付記５）付記４に記載のデータ受信装置において、コンピュータシステムから通知される固定のページオフセットの値に従って、前記記憶手段に対して、固定のページオフセットの値を登録する登録手段を備えることを、特徴とするデータ受信装置。
【０１１９】
（付記６）付記３ないし５のいずれか１項に記載のデータ受信装置において、コンピュータシステムから通知されるページオフセットの初期値に従って、前記記憶手段に対して、ページオフセットの予測値を初期登録する初期登録手段を備えることを、特徴とするデータ受信装置。
【０１２０】
（付記７）データ受信装置から転送されてくるデータを受信して、それをメモリに一時的に保存してから、アプリケーションプログラムの管理するアプリケーション用メモリ領域へ転送するコンピュータシステムであって、前記データ受信装置からデータ転送の際に指定されるデータ格納開始アドレスに基づいて、前記データ受信装置の予測したページオフセットを特定する第１の特定手段と、前記メモリに格納したデータを解析することで、そのデータの転送先となる前記アプリケーション用メモリ領域のページオフセットを特定する第２の特定手段と、前記第１の特定手段の特定したページオフセットと前記第２の特定手段の特定したページオフセットとが一致するのか否かを判断する判断手段と、前記判断手段が２つのページオフセットの不一致を判断するときに、前記第２の特定手段の特定したページオフセットと前記メモリに格納したデータの長さとに基づいて、データ転送後における前記アプリケーション用メモリ領域のページオフセットを特定して、前記データ受信装置に通知する第１の通知手段と、前記判断手段の判断結果に基づいて、前記メモリから前記アプリケーション用メモリ領域へのデータ転送方法を決定する決定手段とを備えることを、特徴とするコンピュータシステム。
【０１２１】
（付記８）付記７に記載のコンピュータシステムにおいて、前記決定手段は、前記判断手段が２つのページオフセットの不一致を判断するときには、データコピー操作に従ってデータ転送を行うことを決定し、前記判断手段が２つのページオフセットの一致を判断するときには、ページマップ切り替え可能なページのデータについてはページマップ切り替え操作によってデータ転送を行い、それ以外のページのデータについてはデータコピー操作に従ってデータ転送を行うことを決定することを、特徴とするコンピュータシステム。
【０１２２】
（付記９）付記７又は８に記載のコンピュータシステムにおいて、前記データ受信装置に対して、固定のページオフセットの値を通知する第２の通知手段を備えることを、特徴とするコンピュータシステム。
【０１２３】
（付記１０）付記７又は８に記載のコンピュータシステムにおいて、前記データ受信装置に対して、ページオフセットの予測値の初期値を通知する第３の通知手段を備えることを、特徴とするコンピュータシステム。
【図面の簡単な説明】
【０１２４】
【図１】本発明の処理の説明図である。
【図２】本発明の処理の説明図である。
【図３】本発明の処理の説明図である。
【図４】本発明の処理の説明図である。
【図５】本発明を具備するシステムの装置構成図である。
【図６】ＡＰＬ用バッファ領域情報取得部の取得する情報の説明図である。
【図７】ＯＳ用バッファアドレス通知部の設定する情報の説明図である。
【図８】オフセット予測器の装置構成図である。
【図９】ネットワークインタフェース装置の実行する処理をフローチャートの形で示した図である。
【図１０】ネットワークインタフェース装置の実行する処理をフローチャートの形で示した図である。
【図１１】データ処理装置の備えるオペレーティングシステムの実行するフローチャートである。
【図１２】本発明の処理の説明図である。
【図１３】本発明の処理の説明図である。
【図１４】本発明の処理の説明図である。
【図１５】本発明の処理の説明図である。
【図１６】本発明の処理の説明図である。
【図１７】本発明の処理の説明図である。
【符号の説明】
【０１２５】
１      ネットワークインタフェース装置
２      データ処理装置
１０    受信データ格納バッファ
１１    ＤＭＡエンジン
１２    キー抽出器
１３    オフセット予測器
１４    受信バッファ登録器
１５    加算器
２０    オペレーティングシステム
２１    アプリケーションプログラム
２００  ＯＳ用バッファ２００
２０１  ＡＰＬ用バッファ領域情報取得部
２０２  ＯＳ用バッファアドレス通知部
２０３  オフセット特定部
２０４  ヘッダ情報解析部
２０５  ページマップ切替部
２０６  データコピー制御部
２０７  オフセット予測変更指示部
２１０  ＡＰＬ用バッファ
【図１】
2008129832.tif 000003
【図２】
2008129832.tif 000004
【図３】
2008129832.tif 000005
【図４】
2008129832.tif 000006
【図５】
2008129832.tif 000007
【図６】
2008129832.tif 000008
【図７】
2008129832.tif 000009
【図８】
2008129832.tif 000010
【図９】
2008129832.tif 000011
【図１０】
2008129832.tif 000012
【図１１】
2008129832.tif 000013
【図１２】
2008129832.tif 000014
【図１３】
2008129832.tif 000015
【図１４】
2008129832.tif 000016
【図１５】
2008129832.tif 000017
【図１６】
2008129832.tif 000018
【図１７】
2008129832.tif 000019