説明

データ受信方法、データ受信装置及びコンピュータシステム

【課題】本発明は、高価なハードウェアを用意することなく、コンピュータシステムが外部から高速にデータを受け取ることができることを実現する技術の提供を目的とする。
【解決手段】データ受信装置が、データを受信するときに、メモリからのデータ転送先となるアプリケーション用メモリ領域のページオフセットを予測する手段と、メモリ上のデータ転送先ページの先頭アドレスと予測したページオフセットとにより規定されるアドレスを指定して、受信データをメモリに転送する手段と、受信データの長さと予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定する手段と、コンピュータシステムから予測したページオフセットの予測値について予測誤りの通知があるときに、設定したページオフセットの予測値をコンピュータシステムから通知されるページオフセットに従って変更する手段とを備えるように構成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ受信装置とコンピュータシステムとで構成されるシステムで実行されるデータ受信方法と、そのデータ受信方法の実現に用いられるデータ受信装置及びコンピュータシステムとに関し、特に、高価なハードウェアを用意したりプログラムを書き換えることなく、コンピュータシステムが外部から高速にデータを受け取ることができるようにすることを実現するデータ受信方法と、そのデータ受信方法の実現に用いられるデータ受信装置及びコンピュータシステムとに関する。
【背景技術】
【0002】
現在のコンピュータシステムにおいて、外部とのデータのやりとりを高速に行うことはシステム全体の高速化につながる重要な課題である。特に、パーソナルコンピュータなどの小さなコンピュータシステムをネットワークで接続して、全体として大きなひとつのコンピュータシステムとして使用するクラスタシステムなどでは、ネットワークを介したデータ伝送がシステム全体の計算速度を決める重要な要素となっている。
【0003】
このため、コンピュータシステムのデータ通信性能は年々向上しており、ここのところの約3年で2倍のペースで通信速度が上がっている。これはコンピュータの演算装置の速度向上を上回る勢いである。
【0004】
このようにデータ通信速度が速くなってくると、従来ではほとんど問題にならなかった受信データの取り扱い速度が非常に重要な課題となる。
【0005】
従来ではネットワークからデータがやってくる速度に比べて演算装置の性能が非常に高かったため、受信したデータに対して複雑な処理を行ってもほとんどオーバーヘッドにはならなかった。
【0006】
しかしながら現在ではその関係が崩れ、コンピュータシステムが受信データを処理するのに手一杯という状況が頻繁に生じている。
【0007】
これではデータ受信の速度を低下させてしまうだけでなく、本来ならばこのコンピュータシステム上で処理できたはずの計算が処理できなくなってしまうといった副次的な性能低下を引き落とし、システム全体の性能を大幅に低下させてしまう重要な問題である。
【0008】
このような問題に対処するために、Protocol Offloading やRemote DMAなどといった新しい技術が開発されてきた。
【0009】
Protocol Offloading は、従来オペレーティングシステム(OS)が行っていたデータ受信処理の一部をハードウェアに実装し、ネットワークインタフェースカード(NIC)に搭載してしまう手法である。これによって、コンピュータシステム本体は、これまで外部からデータを受信した際に行っていた処理をせずに済み、負担が軽くなる。
【0010】
しかしながら、このProtocol Offloading では、
1.コンピュータシステムが行っていた処理をまかなえるだけの、高速で複雑な処理が できるハードウェアを用意しなくてはならない
2.ソフトウェアは年々進化しており、OSの処理も年々変化しているので、ハードウ ェアではその変化に追従することができない
という問題点がある。
【0011】
一方、Remote DMAはこれらの問題点を解決する手段を提供する。Remote DMAは通信の方式を大幅に変更し、従来オペレーティングシステムが介在して複雑に処理しなければ受信できなかったデータを直接やり取りできるようにするものである。
【0012】
しかしながら、Remote DMAを用いるためには、Remote DMAに対応したハードウェアを用意し、Remote DMA用にプログラムを書き直す必要がある。そのため、一般にはなかなか普及していないというのが実情である。
【0013】
ここで、下記に示す特許文献1には、本発明に関連する発明として、物理アドレス上で連続しているページ間のページ境界を越えた高速のDMA転送を行うDMA制御装置が提案されている。
【特許文献1】特開平11−184797号公報
【発明の開示】
【発明が解決しようとする課題】
【0014】
このように、従来技術の問題点を解決するために、Protocol Offloading やRemote DMAなどといった新しい技術が開発されてきた。
【0015】
しかしながら、Protocol Offloading では、高価なハードウェアを用意しなければならないという問題点がある。また、Remote DMAでは、Remote DMAに対応したハードウェアを用意しなければならないという問題点があるとともに、Remote DMA用にプログラムを書き直す必要があるという問題点がある。
【0016】
これから、高価なハードウェアを用意したりプログラムを書き換えることなく、コンピュータシステムが高速にデータを受信できるようにする新たな技術を構築する必要がある。
【0017】
一方、OSが介在するデータ通信では、一般に、
ステップ1:外部からNICパケットが到達する
ステップ2:NICはあらかじめOSから指定された領域にパケットを転送し、転送し たことをOSに通知する
ステップ3.OSは転送されてきたパケット情報を解析し、最終的な宛先を決定する
ステップ4.最終的な宛先が使用されているデータ領域に、パケットに格納されている データをコピーする
というステップでデータ受信処理が行われる。
【0018】
これらのステップの内、ステップ2の処理は外部からデータを受信する上で必要不可欠な操作である。そのため、工夫の余地があるとすればステップ3あるいはステップ4の処理である。特に重要と考えられるのがステップ4である。
【0019】
ステップ4で実行するデータのコピー操作は、現在のプロセッサでは非常に重い処理のひとつである。それはいくらプロセッサの内部が高速化されても、メモリの速度はそれほど高速化されておらず、メモリアクセスを伴った操作は非常に時間のかかるものだからである。また、メモリは無限の速度を持っているわけではないので、メモリアクセスのための帯域には上限がある。データコピーの操作は、メモリからデータをいったん読み出し、別の場所に書き込む操作であるので、メモリに対する負荷が高く、メモリ帯域を無駄遣いしてしまう。この操作によって、他のメモリをアクセスする処理が滞ってしまうこともある。
【0020】
また、データのコピーはデータが増えれば増えるほど多くなっていく。したがって、データ通信速度が向上すると、それにしたがってデータコピー処理が重くなっていく。ステップ3で行うパケット情報の解析処理などは、パケットサイズを大きくしたり、ヘッダ情報をキャッシュにのせるなどの工夫により高速化が可能である。しかしながら、巨大なデータを扱うステップ4の処理では、そのような工夫はできにくい。
【0021】
このようなステップ4の操作を高速化するために、ページマップの切り替えという手法を用いることが考えられる。
【0022】
ページマップとは仮想記憶空間の実現に用いられるアドレス変換のためのテーブルである。ページマップには論理的なアドレスと物理的なアドレスとの組が記述されている。プログラムから論理アドレスAのデータを参照する要求があると、プロセッサはページマップを参照して、論理アドレスAに対応する物理アドレスA’を取り出す。そして、メモリの物理アドレスA’のデータを読み出し、これを論理アドレスAに対応するデータとしてプログラムに渡す。
【0023】
この機構を用いると、データの移動をコピーなしに実現することができる。例えば、論理アドレスBに対して物理アドレスB’が対応しており、論理アドレスCに対して物理アドレスC’が対応していたとする。論理アドレスCから論理アドレスBへデータを移動しようとした場合、ページマップを書き替えて論理アドレスと物理アドレスとの対応関係を、「B→C’,C→B’」に変更してしまう。このようにすると、論理アドレスBのデータを参照すると、これまで論理アドレスCに格納されていたデータが参照できることになる。
【0024】
なお、ページマップはアドレスひとつごとに用意されているのではなくて、ページと呼ばれるひとまとまりのデータ単位ごとに管理されている。例えば、広く用いられているIntel社のIA32プロセッサでは、このページサイズが4KBとなっている。
【0025】
ページマップの切り替えを用いるデータの移動はページ単位でなくてはならないために、利用できる状況が限定される。
【0026】
例えば、論理アドレス0x10000000番地から始まる4KB(=0x1000B)のデータを、論理アドレス0x20000000番地からの4KBという領域へ移動する場合には、論理アドレス0x20000000番地に対応するページマップを、現在論理アドレス0x10000000番地に対応している物理アドレスに関連付けるように書き替えればよい。
【0027】
しかし、例えば、移動先が論理アドレス0x20000100番地になると、移動先の領域が論理アドレス0x20000000番地から始まるページと、論理アドレス0x20001000番地から始まるページとにまたがってしまうため、ページマップの書き替えではうまく対応付けることができない。この場合には、データをコピーしなくてはならない。
【0028】
これを言い換えると、データのページオフセット(この例では、転送元が0x000 で、転送先が0x100)が一致していないと、ページマップの書き替えによるデータ移動は利用できない、ということになる。
【0029】
これから、前述したようなステップ1〜ステップ4の処理を実行するOSが介在するデータ通信において、そのステップ4で、単純に、ページマップの書き替えによるデータ移動を利用することはできない。
【0030】
そこで、本発明では、前述したようなステップ1〜ステップ4の処理を実行するOSが介在するデータ通信において、受信したデータをOSが一時的に用意したメモリ領域からアプリケーションプログラムが実際に使用するメモリ領域へデータ転送する際に、ページマップの書き替えによるデータ移動を利用できる状況を多く作り出すことで、それによる高速なデータ転送を実現し、これにより、高価なハードウェアを用意したりプログラムを書き換えることなく、コンピュータシステムが外部から高速にデータを受け取ることができるようにする新たなデータ受信技術の提供を目的とする。
【課題を解決するための手段】
【0031】
この目的を達成するために、本発明では、コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステム内のメモリに一時的に保存するデータ受信装置と、データ受信装置から転送されてくるデータを受信して、それをメモリに一時的に保存してから、アプリケーションプログラムの管理するアプリケーション用メモリ領域へ転送するコンピュータシステムとで構成されるときに、データ受信装置とコンピュータシステムとが以下のような構成を採る。
【0032】
〔1〕本発明のデータ受信装置の構成
本発明のデータ受信装置は、(イ)外部から送られてくるデータを受信するときに、アプリケーション用メモリ領域のページオフセットを予測する予測手段と、(ロ)メモリ上のデータ転送先ページの先頭アドレスと予測手段の予測したページオフセットとにより規定されるデータ格納開始アドレスを指定して、受信したデータをメモリに転送する転送手段と、(ハ)受信したデータの長さと予測手段の予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定する設定手段と、(ニ)コンピュータシステムから予測手段の予測したページオフセットの予測値について予測誤りの通知があるときに、設定手段の設定したページオフセットの予測値をコンピュータシステムから通知されるページオフセットに従って変更する変更手段とを備えるように構成する。
【0033】
この構成を採るときに、送信元情報及び送信先情報に対応付けて、設定手段の設定したページオフセットの予測値を記憶する第1の記憶手段を備えることがあり、この第1の記憶手段を備える場合には、予測手段は、データを受信するときに、その受信データの送信元情報及び送信先情報を抽出して、その抽出した送信元情報及び送信先情報をキーにして第1の記憶手段の記憶情報を参照することでページオフセットを予測するように処理する。
【0034】
このとき、さらに、コンピュータシステムから通知されるページオフセットの初期値に従って、第1の記憶手段に対して、ページオフセットの予測値を初期登録する初期登録手段を備えることがある。
【0035】
また、この構成を採るときに、送信元情報及び送信先情報に対応付けて、固定のページオフセットを用いるのか否かということと、固定のページオフセットを用いるものについては固定のページオフセットを記憶し、固定のページオフセットを用いないものについては、設定手段の設定したページオフセットの予測値を記憶する第2の記憶手段を備えることがあり、この第2の記憶手段を備える場合には、予測手段は、データを受信するときに、その受信データの送信元情報及び送信先情報を抽出して、その抽出した送信元情報及び送信先情報をキーにして第2の記憶手段の記憶情報を参照することでページオフセットを予測するように処理する。
【0036】
このとき、さらに、コンピュータシステムから通知される固定のページオフセットの値に従って、第2の記憶手段に対して、固定のページオフセットの値を登録する登録手段を備えることがあり、また、コンピュータシステムから通知されるページオフセットの初期値に従って、第2の記憶手段に対して、ページオフセットの予測値を初期登録する初期登録手段を備えることがある。
【0037】
この第2の記憶手段を備える理由は以下の通りである。
【0038】
すなわち、コンピュータシステムは、ループ処理などがある場合には、アプリケーション用メモリ領域の同じ場所に何度も小さなデータを受信していくことがある。
【0039】
このような場合に、第1の記憶手段を用いていると、予測するページオフセットが同じであるにもかかわらず、その都度、第1の記憶手段に対して同じページオフセットの予測値を書き込むという処理を繰り返すことになる。これに対して、第2の記憶手段を用いれば、そのような不都合な処理を行わなくも済むようになるからである。
【0040】
〔2〕本発明のコンピュータシステムの構成
本発明のコンピュータシステムは、(イ)データ受信装置からデータ転送の際に指定されるデータ格納開始アドレスに基づいて、データ受信装置の予測したページオフセットを特定する第1の特定手段と、(ロ)メモリに格納したデータを解析することで、そのデータの転送先となるアプリケーション用メモリ領域のページオフセットを特定する第2の特定手段と、(ハ)第1の特定手段の特定したページオフセットと第2の特定手段の特定したページオフセットとが一致するのか否かを判断する判断手段と、(ニ)判断手段が2つのページオフセットの不一致を判断するときに、第2の特定手段の特定したページオフセットとメモリに格納したデータの長さとに基づいて、データ転送後におけるアプリケーション用メモリ領域のページオフセットを特定して、データ受信装置に通知する第1の通知手段と、(ホ)判断手段の判断結果に基づいて、メモリからアプリケーション用メモリ領域へのデータ転送方法を決定する決定手段とを備えるように構成する。
【0041】
この構成を採るときに、データ受信装置に対して、ページオフセットの予測値の初期値を通知する第2の通知手段を備えたり、データ受信装置に対して、固定のページオフセットの値を通知する第3の通知手段を備えることがある。
【0042】
〔3〕本発明の処理について
本発明のデータ受信装置は、外部から送られてくるデータを受信すると、最終的なデータ転送先となるアプリケーション用メモリ領域のページオフセットを予測して、メモリ上のデータ転送先ページの先頭アドレスとその予測したページオフセットとにより規定されるデータ格納開始アドレスを指定して、受信したデータをメモリに転送するとともに、受信したデータの長さとその予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定する。
【0043】
このデータ転送を受けて、本発明のコンピュータシステムは、転送されてきたデータを受信して、そのデータ転送の際に指定されるデータ格納開始アドレスを起点として、受信したデータをメモリに格納する。
【0044】
続いて、そのデータ格納開始アドレスに基づいて、本発明のデータ受信装置の予測したページオフセットを特定するとともに、メモリに格納したデータを解析することで、そのデータの転送先となるアプリケーション用メモリ領域のページオフセットを特定して、その特定した2つのページオフセットが一致するのか否かを判断する。
【0045】
続いて、その判断結果に基づいて、メモリからアプリケーション用メモリ領域へのデータ転送方法を決定する。
【0046】
具体的には、2つのページオフセットの不一致を判断するときには、データコピー操作に従ってデータ転送を行うことを決定し、2つのページオフセットの一致を判断するときには、ページマップ切り替え可能なページのデータについてはページマップ切り替え操作によってデータ転送を行い、それ以外のページのデータについてはデータコピー操作に従ってデータ転送を行うことを決定する。
【0047】
続いて、2つのページオフセットの不一致を判断するときには、特定したアプリケーション用メモリ領域のページオフセットとメモリに格納したデータの長さとに基づいて、データ転送後におけるアプリケーション用メモリ領域のページオフセットを特定して、それを本発明のデータ受信装置に通知する。
【0048】
このページオフセットの通知を受けて、本発明のデータ受信装置は、予測したページオフセットに誤りがあることで、設定したページオフセットの予測値(次回のデータ受信の際に用いるページオフセットの予測値)についても誤りであることを判断して、本発明のコンピュータシステムから通知されるページオフセットに従って、その設定したページオフセットの予測値を変更する。
【0049】
〔4〕本発明の具体的な処理例
次に、転送されてくるデータがパケットであることを想定して、この本発明の処理について具体的に説明する。
【0050】
例えば、1ページの長さが0x1000で、外部から送られてくるパケットの長さが0x2800(2.5ページ分)で、本発明のデータ受信装置が一番初めに予測するアプリケーション用メモリ領域のページオフセットの予測値が0ページであることを仮定する。
【0051】
これから、本発明のデータ受信装置は、本発明のコンピュータシステムからページオフセットの予測誤りが通知されない場合には、
0ページ→0.5ページ→0ページ→0.5ページ→0ページ→・・・・・・
というように、アプリケーション用メモリ領域のページオフセットを予測していくことになる。
【0052】
(i)この場合にあって、さらに、アプリケーション用メモリ領域の先頭ページの実際のページオフセットが0ページであるとし、このとき、パケットがロスすることなく順番通りに転送されてくる場合には、図1に示すように、最初から、本発明のデータ受信装置の予測するアプリケーション用メモリ領域のページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが一致することで、ページマップ切り替え操作を利用することによって、メモリからアプリケーション用メモリ領域へ高速にデータを移動できることになる。
【0053】
(ii)一方、この場合にあって、さらに、アプリケーション用メモリ領域の先頭ページの実際のページオフセットが0.5ページであるとし、このとき、パケットがロスすることなく順番通りに転送されてくる場合には、図2に示すように、最初だけ、本発明のデータ受信装置の予測するアプリケーション用メモリ領域のページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが不一致となり、これにより、ページオフセットの予測の修正が行われ、それ以降、本発明のデータ受信装置の予測するアプリケーション用メモリ領域のページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが一致することで、ページマップ切り替え操作を利用することによって、メモリからアプリケーション用メモリ領域へ高速にデータを移動できることになる。
【0054】
(iii)一方、この場合にあって、さらに、アプリケーション用メモリ領域の先頭ページの実際のページオフセットが0ページであるとし、このとき、パケットがロスしたり順番通りに転送されてこない場合には、図3に示すように、その時点において、本発明のデータ受信装置の予測するメモリのページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが不一致となり、これにより、ページオフセットの予測の修正が行われ、それ以降、本発明のデータ受信装置の予測するメモリのページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが一致することで、ページマップ切り替え操作を利用することによって、メモリからアプリケーション用メモリ領域へ高速にデータを移動できることになる。
【0055】
ここで、この図3では、パケット#n+1よりも前にパケット#n+2が転送されてきたことを仮定しており、本発明のコンピュータシステムは、パケットのヘッダ情報を解析することで、そのことを検出することになる。
【0056】
図1では、パケットの長さが2.5ページ分であることを仮定したが、図4に示すように、パケットの長さが2.6ページ分というような中途半端な場合でも、最初から、本発明のデータ受信装置の予測するアプリケーション用メモリ領域のページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが一致するとともに、その後も、本発明のデータ受信装置の予測するアプリケーション用メモリ領域のページオフセットとアプリケーション用メモリ領域の実際のページオフセットとが一致することで、ページマップ切り替え操作を利用することによって、メモリからアプリケーション用メモリ領域へ高速にデータを移動できることになる。
【0057】
また、図2に示す例では、アプリケーション用メモリ領域の先頭ページの実際のページオフセットが0.5ページであるにもかかわらず、本発明のデータ受信装置は一番初めにページオフセットの予測値を0ページと予測しているが、本発明のコンピュータシステムが、本発明のデータ受信装置に対してページオフセットの予測値の初期値を通知し、これを受けて、本発明のデータ受信装置が、その通知されたページオフセットの予測値の初期値に従って一番初めのページオフセットを予測するようにすれば、そのような不都合は起こらない。
【発明の効果】
【0058】
本発明によれば、コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステム内のメモリに一時的に保存するデータ受信装置と、データ受信装置から転送されてくるデータを受信して、それをメモリに一時的に保存してから、アプリケーションプログラムの管理するアプリケーション用メモリ領域へ転送するコンピュータシステムとで構成されるシステムにおいて、データ受信装置がページマップの書き替えによるデータ移動を可能とするページオフセットを予測することが可能になり、これにより、ページマップの書き替えによるデータ移動を利用できる状況を多く作り出すことができることで、ページマップの書き替えによる高速なデータ転送を実現することができるようになる。
【0059】
これから、本発明によれば、高価なハードウェアを用意したりプログラムを書き換えることなく、コンピュータシステムが外部から高速にデータを受け取ることができるようになる。
【発明を実施するための最良の形態】
【0060】
以下、実施の形態に従って本発明を詳細に説明する。
【0061】
図5に、本発明のネットワークインタフェース装置1と本発明のデータ処理装置2とで構成されるシステム構成の一例を図示する。なお、ネットワークインタフェース装置1については、図面中でNICと略記することがある。
【0062】
この図に示すように、本発明のネットワークインタフェース装置1は、図示しないイーサネット(登録商標)から送信されてくるTCP/IPパケットを受信して一時的に格納する受信データ格納バッファ10と、受信データ格納バッファ10に格納されたパケットをデータ処理装置2のOS用バッファ200に転送するDMAエンジン11と、受信データ格納バッファ10に格納されたパケットを解析して、パケット長と送信元のIPアドレスと送信先のポート番号とを抽出するキー抽出器12と、キー抽出器12の抽出した送信元IPアドレス及び送信先ポート番号をキーにしてテーブルを検索することで、データ処理装置2のAPL用バッファ210のページオフセットを予測するオフセット予測器13と、データ処理装置2の設定したOS用バッファ200のページ先頭アドレスを受け取り登録する受信バッファ登録器14と、受信バッファ登録器14の登録したページ先頭アドレスとオフセット予測器13の予測したページ先頭アドレスとを加算することでOS用バッファ200のデータ格納開始アドレスを算出して、DMAエンジン11に与える加算器15とを備える。
【0063】
一方、本発明のデータ処理装置2は、オペレーティングシステム20と、APL用バッファ210を備えて所定のデータ処理を実行するアプリケーションプログラム21とを備える。
【0064】
オペレーティングシステム20は、ネットワークインタフェース装置1から転送されてくるパケットを受信して一時的に格納するOS用バッファ200と、アプリケーションプログラム21の設定した図6に示すようなAPL用バッファ210のデータ受信領域の情報を取得するAPL用バッファ領域情報取得部201と、データ受信領域となる図7に示すようなOS用バッファ200のページ先頭アドレスを設定して、その設定情報を受信バッファ登録器14に通知するOS用バッファアドレス通知部202と、オフセット予測器13の予測したページオフセットを特定するとともに、APL用バッファ210のページオフセットを特定するオフセット特定部203と、OS用バッファ200に格納したパケットのヘッダ情報を解析するヘッダ情報解析部204と、ページマップの切り替えによるOS用バッファ200からAPL用バッファ210へのデータ転送を制御するページマップ切替部205と、データコピーによるOS用バッファ200からAPL用バッファ210へのデータ転送を制御するデータコピー制御部206と、オフセット予測器13に対して、ページオフセットの予測の変更を指示するオフセット予測変更指示部207とを備える。
【0065】
ここで、図6では、APL用バッファ210のデータ受信領域として連続ページ構成のものを例示したが、ページがリンクで関連付けされるような場合には、このような連続ページ構成にはならない。また、図7では、OS用バッファ200のデータ受信領域として連続ページ構成のものを例示したが、ページがリンクで関連付けされるような場合には、このような連続ページ構成にはならない。
【0066】
図8に、オフセット予測器13の装置構成の一例を図示する。
【0067】
この図に示すように、オフセット予測器13は、送信元IPアドレス及び送信先ポート番号に対応付けて、APL用バッファ210のページオフセットの予測値を管理するオフセット予測テーブル130と、キー抽出器12の抽出した情報の指すオフセット予測テーブル130のページオフセットを更新対象として、“新ページオフセット=ページオフセット+パケット長”という算出式に従ってAPL用バッファ210のページオフセットの新たな予測値を算出して、オフセット予測テーブル130に管理されるページオフセットを更新するテーブル更新部131と、オフセット予測変更指示部207からの指示情報に従って、オフセット予測テーブル130に管理されるページオフセットを変更するCPUインタフェース132と、キー抽出器12の抽出した送信元IPアドレス及び送信先ポート番号をキーにしてオフセット予測テーブル130を参照することでページオフセットを読み出して、それを加算器15やテーブル更新部131に与えるテーブル参照部133とを備える。
【0068】
図9及び図10に、本発明のネットワークインタフェース装置1の実行する処理の一例をフローチャートの形で図示し、図11に、本発明のデータ処理装置2の備えるオペレーティングシステム20の実行するフローチャートの一例を図示する。
【0069】
次に、これらのフローチャートに従って、このように構成される本発明の実行する処理について詳細に説明する。
【0070】
最初に、図9及び図10のフローチャートに従って、本発明のネットワークインタフェース装置1の実行する処理について説明する。
【0071】
本発明のネットワークインタフェース装置1は、図示しないイーサネットから送信されてくるTCP/IPパケットを受信して受信データ格納バッファ10に格納すると、図9のフローチャートに示すように、先ず最初に、ステップS10で、そのパケットのへッダ情報から、送信元のIPアドレスと、送信先を指定するポート番号と、パケット長とを抽出する。
【0072】
ここで、本発明のネットワークインタフェース装置1はハードウェアで構成されており、これから、このステップS10では、パケットのヘッダ情報を詳細に解析することは行わずに、送信元のIPアドレスと、送信先を指定するポート番号と、パケット長とを抽出するだけの処理を行うことになる。
【0073】
続いて、ステップS11で、抽出したIPアドレス及びポート番号をキーにしてオフセット予測テーブル130を参照することで、APL用バッファ210のページオフセットの予測値を特定する。
【0074】
続いて、ステップS12で、前回転送したOS用バッファ200の最終ページの次のページの先頭アドレスと、特定したページオフセットの予測値とを加算することで、OS用バッファ200の転送先アドレスを算出する。
【0075】
続いて、ステップS13で、算出した転送先アドレスを転送先として、受信したパケットをOS用バッファ200に転送する。
【0076】
続いて、ステップS14で、ステップS11で特定したページオフセットを更新対象として、ステップS10で抽出したパケット長と、ステップS11で特定したページオフセットとを使い、
新ページオフセット=ページオフセット+パケット長
という算出式に従ってAPL用バッファ210のページオフセットの新たな予測値を算出して、オフセット予測テーブル130に管理されるページオフセットの予測値を更新して、処理を終了する。
【0077】
後述するように、本発明のデータ処理装置2は、このパケットの転送に際して、本発明のネットワークインタフェース装置1が予測したページオフセット(ステップS11で特定したページオフセット)に誤りがある場合には、本発明のネットワークインタフェース装置1に対して、次回のデータ転送の際に用いるページオフセットの予測値を指定して、ページオフセットの予測の変更を指示してくる。
【0078】
これから、本発明のネットワークインタフェース装置1は、本発明のデータ処理装置1からページオフセット予測の変更指示があると、図10のフローチャートに示すように、先ず最初に、ステップS20で、本発明のデータ処理装置1から送られてくるページオフセットの予測値を受け取り、続くステップS21で、図9のフローチャートのステップS14で更新したページオフセットの予測値を、その受け取ったページオフセットの予測値に変更して、処理を終了する。
【0079】
次に、図11のフローチャートに従って、本発明のデータ処理装置2の備えるオペレーティングシステム20の実行する処理について説明する。
【0080】
本発明のデータ処理装置2は、本発明のネットワークインタフェース装置1から転送先アドレスを指定してパケットが送られてくると、その転送先アドレスの指すOS用バッファ200のメモリ領域にパケットを格納してから、OS用バッファ200に割り込みを通知することで、オペレーティングシステム20に対してパケットの受信を通知する。
【0081】
この割込通知を受けて、本発明のデータ処理装置2の備えるオペレーティングシステム20は、図11のフローチャートに示すように、先ず最初に、ステップS30で、OS用バッファ200に格納されたパケットのヘッダ情報を解析することで、そのパケットをAPL用バッファ210のどこに格納するのかを決定する。
【0082】
すなわち、ネットワークを転送されてくるパケットは、順番通りに転送されてくるとは限らないし、パケットロスも発生することがある。これから、OS用バッファ200に格納されたパケットは、その格納順序のまま、APL用バッファ210にデータ転送していく訳にはいかない。そこで、このステップS30では、OS用バッファ200に格納されたパケットのヘッダ情報を解析することで、そのパケットをAPL用バッファ210のどこに格納するのかを決定するのである。
【0083】
続いて、ステップS31で、ステップS30の決定結果に基づいて、APL用バッファ210の格納開始ページのページオフセット(先頭アドレスからのオフセット)を特定する。
【0084】
続いて、ステップS32で、本発明のネットワークインタフェース装置1から指示された転送先アドレスに従って、OS用バッファ200の格納開始ページのページオフセット(先頭アドレスからのオフセット)を特定する。
【0085】
続いて、ステップS33で、ステップS31で特定したページオフセットと、ステップS32で特定したページオフセットとが一致するのか否かを判断する。
【0086】
この判断処理に従って、2つのページオフセットが一致することを判断するときには、ステップS34に進んで、OS用バッファ200に格納したパケットを処理対象として、ページマップの切り替えが可能なデータ部分については、ページマップの切り替えに従ってOS用バッファ200からAPL用バッファ210へデータ移動を行い、ページマップの切り替えが不可能なデータ部分については、OS用バッファ200からAPL用バッファ210へバイト単位にデータをコピーして、処理を終了する。
【0087】
すなわち、本発明のネットワークインタフェース装置1の予測したAPL用バッファ210のページオフセットの予測値と、パケットのヘッダ情報の解析により求められた実際のAPL用バッファ210のページオフセットとが一致するときには、ページマップの切り替えを利用するデータ移動が可能であるので、ページマップの切り替えが可能なデータ部分については、ページマップの切り替えに従ってOS用バッファ200からAPL用バッファ210へデータ移動を行うように制御するのである。
【0088】
一方、ステップS33の判断処理に従って、2つのページオフセットが一致しないことを判断するときには、ステップS35に進んで、OS用バッファ200に格納したパケットを処理対象として、OS用バッファ200からAPL用バッファ210へバイト単位にデータをコピーする。
【0089】
すなわち、本発明のネットワークインタフェース装置1の予測したAPL用バッファ210のページオフセットの予測値と、パケットのヘッダ情報の解析により求められた実際のAPL用バッファ210のページオフセットとが一致しないときには、ページマップの切り替えを利用することができないので、OS用バッファ200からAPL用バッファ210へバイト単位にデータをコピーするのである。
【0090】
続いて、ステップS36で、APL用バッファ210にコピーしたパケットの最終格納ページのページオフセット(次回のOS用バッファ200の格納開始ページのページオフセットとなるもの)を特定する。
【0091】
続いて、ステップS37で、本発明のネットワークインタフェース装置1に対して、特定したページオフセットを通知することで(IPアドレス及びポート番号も通知する)、オフセット予測テーブル130に格納されるページオフセットの予測値の変更を指示して、処理を終了する。
【0092】
このページオフセットの予測変更指示を受けて、本発明のネットワークインタフェース装置1は、図10のフローチャートで説明したように、オフセット予測テーブル130に格納される図9のフローチャートのステップS14で更新したページオフセットの予測値を、オペレーティングシステム20から通知されるページオフセットに従って変更するのである。
【0093】
次に、図12〜図17に従って、本発明の処理について具体的に説明する。ここで、図12〜図17では、1ページの長さを0x1000としている。
【0094】
図12〜図14に示す処理例(図1に示す処理例に相当するもの)では、図12に示すように、アプリケーションプログラム21がオペレーティングシステム20に対して、先頭アドレスが0x20000000で、長さが0x5000というAPL用バッファ210のメモリ領域にデータを受信することを要求し、オペレーティングシステム20がネットワークインタフェース装置1に対して、0x10000000〜0x10006000というOS用バッファ200のメモリ領域にデータを受信することを要求する、ということを想定している。
【0095】
この場合にあって、図13に示すように、ネットワークインタフェース装置1が0x2800(2.5ページ分)というパケット長のパケット#1を受信し、このとき、ネットワークインタフェース装置1が0x000 というページオフセットを予測したとする。
【0096】
この場合には、図13に示すように、ネットワークインタフェース装置1は、0x10000000を起点とするOS用バッファ200のメモリ領域に2.5ページのデータを転送し、次回のページオフセットの予測値として0x800(0.5ページ)を予測して、オフセット予測テーブル130に書き込む。
【0097】
このデータ転送を受けて、図13に示すように、オペレーティングシステム20は、APL用バッファ210の0x20000000が転送先領域として設定されていることで、ネットワークインタフェース装置1の予測したページオフセットと、APL用バッファ210のページオフセットとが一致することを判断して、ページテーブルの書き替えによるデータ移動を行いながら、OS用バッファ200からAPL用バッファ210へデータを転送する。
【0098】
続いて、図14に示すように、ネットワークインタフェース装置1が0x2800(2.5ページ分)というパケット長のパケット#2を受信したとする。このとき、ネットワークインタフェース装置1は、オフセット予測テーブル130の格納データに従って0x800(0.5ページ)というページオフセットを予測する。
【0099】
この場合には、図14に示すように、ネットワークインタフェース装置1は、0x10003800(=0x10003000+0x800) を起点とするOS用バッファ200のメモリ領域に2.5ページのデータを転送し、次回のページオフセットの予測値として0x000(=0x800+0x800)を予測して、オフセット予測テーブル130に書き込む。
【0100】
このデータ転送を受けて、図14に示すように、オペレーティングシステム20は、APL用バッファ210の0x20002800が転送先領域として設定されていることで、ネットワークインタフェース装置1の予測したページオフセットと、APL用バッファ210のページオフセットとが一致することを判断して、ページテーブルの書き替えによるデータ移動を行いながら、OS用バッファ200からAPL用バッファ210へデータを転送する。
【0101】
このようにして、図12〜図14に示す処理例では、図1に示したような形態でOS用バッファ200からAPL用バッファ210へデータ転送が実行されることになる。
【0102】
図15〜図17に示す処理例(図2に示す処理例に相当するもの)では、図15に示すように、アプリケーションプログラム21がオペレーティングシステム20に対して、先頭アドレスが0x20000800で、長さが0x5000というAPL用バッファ210のメモリ領域にデータを受信することを要求し、オペレーティングシステム20がネットワークインタフェース装置1に対して、0x10000000〜0x10006000というOS用バッファ200のメモリ領域にデータを受信することを要求する、ということを想定している。
【0103】
この場合にあって、図16に示すように、ネットワークインタフェース装置1が0x2800(2.5ページ分)というパケット長のパケット#1を受信し、このとき、ネットワークインタフェース装置1が0x000 というページオフセットを予測したとする。
【0104】
この場合には、図16に示すように、ネットワークインタフェース装置1は、0x10000000を起点とするOS用バッファ200のメモリ領域に2.5ページのデータを転送し、次回のページオフセットの予測値として0x800(0.5ページ)を予測して、オフセット予測テーブル130に書き込む。
【0105】
このデータ転送を受けて、図16に示すように、オペレーティングシステム20は、APL用バッファ210の0x20002800が転送先領域として設定されていることで、ネットワークインタフェース装置1の予測したページオフセットと、APL用バッファ210のページオフセットとが一致しないことを判断して、ページテーブルの書き替えによるデータ移動を行わずに、OS用バッファ200からAPL用バッファ210へデータを転送する。そして、ネットワークインタフェース装置1に対して、ページオフセットの予測値を0x000 に変更すべく通知する。
【0106】
続いて、図17に示すように、ネットワークインタフェース装置1が0x2800(2.5ページ分)というパケット長のパケット#2を受信したとする。このとき、ネットワークインタフェース装置1は、オペレーティングシステム20からの変更指示に従って0x000 というページオフセットを予測する。
【0107】
この場合には、図17に示すように、ネットワークインタフェース装置1は、0x10003000(=0x10003000+0x000) を起点とするOS用バッファ200のメモリ領域に2.5ページのデータを転送し、次回のページオフセットの予測値として0x800(=0x000+0x800)を予測して、オフセット予測テーブル130に書き込む。
【0108】
このデータ転送を受けて、図17に示すように、オペレーティングシステム20は、APL用バッファ210の0x20003000が転送先領域として設定されていることで、ネットワークインタフェース装置1の予測したページオフセットと、APL用バッファ210のページオフセットとが一致することを判断して、ページテーブルの書き替えによるデータ移動を行いながら、OS用バッファ200からAPL用バッファ210へデータを転送する。
【0109】
このようにして、図15〜図17に示す処理例では、図2に示したような形態でOS用バッファ200からAPL用バッファ210へデータ転送が実行されることになる。
【0110】
図示実施形態例に従って本発明を説明したが、本発明はこれに限定されるものではない。
【0111】
例えば、実施形態例では、オフセット予測テーブル130が送信元IPアドレス及び送信先ポート番号に対応付けて、APL用バッファ210のページオフセットの予測値を管理するものを開示したが、送信元IPアドレス及び送信先ポート番号に対応付けて、固定のページオフセットを用いるのか否かということと、固定のページオフセットを用いるものについては固定のページオフセットを管理し、固定のページオフセットを用いないものについては、APL用バッファ210のページオフセットの予測値を管理するという構成を採ることもある。
【0112】
データ処理装置2は、ループ処理などがある場合には、APL用バッファ210の同じメモリ領域に何度も小さなデータを受信していくことがあるので、このような場合には、オフセット予測テーブル130は、送信元IPアドレス及び送信先ポート番号に対応付けて、固定のページオフセットを用いるのか否かということと、固定のページオフセットを用いるものについては固定のページオフセットを管理し、固定のページオフセットを用いないものについては、APL用バッファ210のページオフセットの予測値を管理するという構成を採ることになる。
【産業上の利用可能性】
【0113】
本発明は、コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステムに転送するデータ受信装置と、そのデータ受信装置を接続するコンピュータシステムとで構成されるシステムに適用できるものであり、データ受信装置がページマップの書き替えによるデータ移動を可能とするページオフセットを予測することが可能になり、これにより、ページマップの書き替えによるデータ移動を利用できる状況を多く作り出すことができることで、ページマップの書き替えによる高速なデータ転送を実現することができるようになる。
【0114】
(付記1)コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステム内のメモリに一時的に保存するデータ受信装置と、データ受信装置から転送されてくるデータを受信して、それをメモリに一時的に保存してから、アプリケーションプログラムの管理するアプリケーション用メモリ領域へ転送するコンピュータシステムとで構成されるシステムで実行されるデータ受信方法であって、前記データ受信装置が、データを受信するときに、前記アプリケーション用メモリ領域のページオフセットを予測して、前記メモリ上のデータ転送先ページの先頭アドレスと予測したページオフセットとにより規定されるデータ格納開始アドレスを指定して、受信したデータを前記メモリに転送し、さらに、受信したデータの長さと予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定するとともに、コンピュータシステムから予測したページオフセットの予測値について予測誤りの通知があるときに、設定したページオフセットの予測値をコンピュータシステムから通知されるページオフセットに従って変更するように処理し、前記コンピュータシステムが、データ転送の際に指定されるデータ格納開始アドレスに基づいて、前記データ受信装置の予測したページオフセットを特定するとともに、前記メモリに格納したデータを解析することで、そのデータの転送先となる前記アプリケーション用メモリ領域のページオフセットを特定して、その特定した2つのページオフセットが一致するのか否かを判断し、2つのページオフセットの不一致を判断するときに、特定した前記アプリケーション用メモリ領域のページオフセットと前記メモリに格納したデータの長さとに基づいて、データ転送後における前記アプリケーション用メモリ領域のページオフセットを特定して、前記データ受信装置に通知し、さらに、2つのページオフセットが一致するのか否かの判断結果に基づいて、前記メモリから前記アプリケーション用メモリ領域へのデータ転送方法を決定するように処理することを、特徴とするデータ受信方法。
【0115】
(付記2)コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステム内のメモリに一時的に保存するデータ受信装置であって、データを受信するときに、前記メモリからのデータ転送先となるアプリケーション用メモリ領域のページオフセットを予測する予測手段と、前記メモリ上のデータ転送先ページの先頭アドレスと前記予測手段の予測したページオフセットとにより規定されるデータ格納開始アドレスを指定して、前記受信したデータを前記メモリに転送する転送手段と、前記受信したデータの長さと前記予測手段の予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定する設定手段と、コンピュータシステムから前記予測手段の予測したページオフセットの予測値について予測誤りの通知があるときに、前記設定手段の設定したページオフセットの予測値をコンピュータシステムから通知されるページオフセットに従って変更する変更手段とを備えることを、特徴とするデータ受信装置。
【0116】
(付記3)付記2に記載のデータ受信装置において、送信元情報及び送信先情報に対応付けて、前記設定手段の設定したページオフセットの予測値を記憶する記憶手段を備え、前記予測手段は、データを受信するときに、その受信データの送信元情報及び送信先情報を抽出して、その抽出した送信元情報及び送信先情報をキーにして前記記憶手段の記憶情報を参照することでページオフセットを予測することを、特徴とするデータ受信装置。
【0117】
(付記4)付記2に記載のデータ受信装置において、送信元情報及び送信先情報に対応付けて、固定のページオフセットを用いるのか否かということと、固定のページオフセットを用いるものについては固定のページオフセットを記憶し、固定のページオフセットを用いないものについては、前記設定手段の設定したページオフセットの予測値を記憶する記憶手段を備え、前記予測手段は、データを受信するときに、その受信データの送信元情報及び送信先情報を抽出して、その抽出した送信元情報及び送信先情報をキーにして前記記憶手段の記憶情報を参照することでページオフセットを予測することを、特徴とするデータ受信装置。
【0118】
(付記5)付記4に記載のデータ受信装置において、コンピュータシステムから通知される固定のページオフセットの値に従って、前記記憶手段に対して、固定のページオフセットの値を登録する登録手段を備えることを、特徴とするデータ受信装置。
【0119】
(付記6)付記3ないし5のいずれか1項に記載のデータ受信装置において、コンピュータシステムから通知されるページオフセットの初期値に従って、前記記憶手段に対して、ページオフセットの予測値を初期登録する初期登録手段を備えることを、特徴とするデータ受信装置。
【0120】
(付記7)データ受信装置から転送されてくるデータを受信して、それをメモリに一時的に保存してから、アプリケーションプログラムの管理するアプリケーション用メモリ領域へ転送するコンピュータシステムであって、前記データ受信装置からデータ転送の際に指定されるデータ格納開始アドレスに基づいて、前記データ受信装置の予測したページオフセットを特定する第1の特定手段と、前記メモリに格納したデータを解析することで、そのデータの転送先となる前記アプリケーション用メモリ領域のページオフセットを特定する第2の特定手段と、前記第1の特定手段の特定したページオフセットと前記第2の特定手段の特定したページオフセットとが一致するのか否かを判断する判断手段と、前記判断手段が2つのページオフセットの不一致を判断するときに、前記第2の特定手段の特定したページオフセットと前記メモリに格納したデータの長さとに基づいて、データ転送後における前記アプリケーション用メモリ領域のページオフセットを特定して、前記データ受信装置に通知する第1の通知手段と、前記判断手段の判断結果に基づいて、前記メモリから前記アプリケーション用メモリ領域へのデータ転送方法を決定する決定手段とを備えることを、特徴とするコンピュータシステム。
【0121】
(付記8)付記7に記載のコンピュータシステムにおいて、前記決定手段は、前記判断手段が2つのページオフセットの不一致を判断するときには、データコピー操作に従ってデータ転送を行うことを決定し、前記判断手段が2つのページオフセットの一致を判断するときには、ページマップ切り替え可能なページのデータについてはページマップ切り替え操作によってデータ転送を行い、それ以外のページのデータについてはデータコピー操作に従ってデータ転送を行うことを決定することを、特徴とするコンピュータシステム。
【0122】
(付記9)付記7又は8に記載のコンピュータシステムにおいて、前記データ受信装置に対して、固定のページオフセットの値を通知する第2の通知手段を備えることを、特徴とするコンピュータシステム。
【0123】
(付記10)付記7又は8に記載のコンピュータシステムにおいて、前記データ受信装置に対して、ページオフセットの予測値の初期値を通知する第3の通知手段を備えることを、特徴とするコンピュータシステム。
【図面の簡単な説明】
【0124】
【図1】本発明の処理の説明図である。
【図2】本発明の処理の説明図である。
【図3】本発明の処理の説明図である。
【図4】本発明の処理の説明図である。
【図5】本発明を具備するシステムの装置構成図である。
【図6】APL用バッファ領域情報取得部の取得する情報の説明図である。
【図7】OS用バッファアドレス通知部の設定する情報の説明図である。
【図8】オフセット予測器の装置構成図である。
【図9】ネットワークインタフェース装置の実行する処理をフローチャートの形で示した図である。
【図10】ネットワークインタフェース装置の実行する処理をフローチャートの形で示した図である。
【図11】データ処理装置の備えるオペレーティングシステムの実行するフローチャートである。
【図12】本発明の処理の説明図である。
【図13】本発明の処理の説明図である。
【図14】本発明の処理の説明図である。
【図15】本発明の処理の説明図である。
【図16】本発明の処理の説明図である。
【図17】本発明の処理の説明図である。
【符号の説明】
【0125】
1 ネットワークインタフェース装置
2 データ処理装置
10 受信データ格納バッファ
11 DMAエンジン
12 キー抽出器
13 オフセット予測器
14 受信バッファ登録器
15 加算器
20 オペレーティングシステム
21 アプリケーションプログラム
200 OS用バッファ200
201 APL用バッファ領域情報取得部
202 OS用バッファアドレス通知部
203 オフセット特定部
204 ヘッダ情報解析部
205 ページマップ切替部
206 データコピー制御部
207 オフセット予測変更指示部
210 APL用バッファ

【特許請求の範囲】
【請求項1】
コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステム内のメモリに一時的に保存するデータ受信装置と、データ受信装置から転送されてくるデータを受信して、それをメモリに一時的に保存してから、アプリケーションプログラムの管理するアプリケーション用メモリ領域へ転送するコンピュータシステムとで構成されるシステムで実行されるデータ受信方法であって、
前記データ受信装置が、
データを受信するときに、前記アプリケーション用メモリ領域のページオフセットを予測して、前記メモリ上のデータ転送先ページの先頭アドレスと予測したページオフセットとにより規定されるデータ格納開始アドレスを指定して、受信したデータを前記メモリに転送し、さらに、受信したデータの長さと予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定するとともに、コンピュータシステムから予測したページオフセットの予測値について予測誤りの通知があるときに、設定したページオフセットの予測値をコンピュータシステムから通知されるページオフセットに従って変更するように処理し、
前記コンピュータシステムが、
データ転送の際に指定されるデータ格納開始アドレスに基づいて、前記データ受信装置の予測したページオフセットを特定するとともに、前記メモリに格納したデータを解析することで、そのデータの転送先となる前記アプリケーション用メモリ領域のページオフセットを特定して、その特定した2つのページオフセットが一致するのか否かを判断し、2つのページオフセットの不一致を判断するときに、特定した前記アプリケーション用メモリ領域のページオフセットと前記メモリに格納したデータの長さとに基づいて、データ転送後における前記アプリケーション用メモリ領域のページオフセットを特定して、前記データ受信装置に通知し、さらに、2つのページオフセットが一致するのか否かの判断結果に基づいて、前記メモリから前記アプリケーション用メモリ領域へのデータ転送方法を決定するように処理することを、
特徴とするデータ受信方法。
【請求項2】
コンピュータシステムに付随して設けられて、外部から送られてくるデータを受信してコンピュータシステム内のメモリに一時的に保存するデータ受信装置であって、
データを受信するときに、前記メモリからのデータ転送先となるアプリケーション用メモリ領域のページオフセットを予測する予測手段と、
前記メモリ上のデータ転送先ページの先頭アドレスと前記予測手段の予測したページオフセットとにより規定されるデータ格納開始アドレスを指定して、前記受信したデータを前記メモリに転送する転送手段と、
前記受信したデータの長さと前記予測手段の予測したページオフセットとに基づいて、次回のデータ受信の際に用いるページオフセットの予測値を設定する設定手段と、
コンピュータシステムから前記予測手段の予測したページオフセットの予測値について予測誤りの通知があるときに、前記設定手段の設定したページオフセットの予測値をコンピュータシステムから通知されるページオフセットに従って変更する変更手段とを備えることを、
特徴とするデータ受信装置。
【請求項3】
請求項2に記載のデータ受信装置において、
送信元情報及び送信先情報に対応付けて、前記設定手段の設定したページオフセットの予測値を記憶する記憶手段を備え、
前記予測手段は、データを受信するときに、その受信データの送信元情報及び送信先情報を抽出して、その抽出した送信元情報及び送信先情報をキーにして前記記憶手段の記憶情報を参照することでページオフセットを予測することを、
特徴とするデータ受信装置。
【請求項4】
請求項2に記載のデータ受信装置において、
送信元情報及び送信先情報に対応付けて、固定のページオフセットを用いるのか否かということと、固定のページオフセットを用いるものについては固定のページオフセットを記憶し、固定のページオフセットを用いないものについては、前記設定手段の設定したページオフセットの予測値を記憶する記憶手段を備え、
前記予測手段は、データを受信するときに、その受信データの送信元情報及び送信先情報を抽出して、その抽出した送信元情報及び送信先情報をキーにして前記記憶手段の記憶情報を参照することでページオフセットを予測することを、
特徴とするデータ受信装置。
【請求項5】
請求項3又は4に記載のデータ受信装置において、
コンピュータシステムから通知されるページオフセットの初期値に従って、前記記憶手段に対して、ページオフセットの予測値を初期登録する初期登録手段を備えることを、
特徴とするデータ受信装置。
【請求項6】
データ受信装置から転送されてくるデータを受信して、それをメモリに一時的に保存してから、アプリケーションプログラムの管理するアプリケーション用メモリ領域へ転送するコンピュータシステムであって、
前記データ受信装置からデータ転送の際に指定されるデータ格納開始アドレスに基づいて、前記データ受信装置の予測したページオフセットを特定する第1の特定手段と、
前記メモリに格納したデータを解析することで、そのデータの転送先となる前記アプリケーション用メモリ領域のページオフセットを特定する第2の特定手段と、
前記第1の特定手段の特定したページオフセットと前記第2の特定手段の特定したページオフセットとが一致するのか否かを判断する判断手段と、
前記判断手段が2つのページオフセットの不一致を判断するときに、前記第2の特定手段の特定したページオフセットと前記メモリに格納したデータの長さとに基づいて、データ転送後における前記アプリケーション用メモリ領域のページオフセットを特定して、前記データ受信装置に通知する通知手段と、
前記判断手段の判断結果に基づいて、前記メモリから前記アプリケーション用メモリ領域へのデータ転送方法を決定する決定手段とを備えることを、
特徴とするコンピュータシステム。
【請求項7】
請求項6に記載のコンピュータシステムにおいて、
前記決定手段は、前記判断手段が2つのページオフセットの不一致を判断するときには、データコピー操作に従ってデータ転送を行うことを決定し、前記判断手段が2つのページオフセットの一致を判断するときには、ページマップ切り替え可能なページのデータについてはページマップ切り替え操作によってデータ転送を行い、それ以外のページのデータについてはデータコピー操作に従ってデータ転送を行うことを決定することを、
特徴とするコンピュータシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate