(57)【要約】【課題】より高速にパケットの受信を行うことができるようにする。【解決手段】パケット組上数判定部１２１は、アプリケーション層からの要求に応じて受信した第１のパケットの数が、第２のパケットを生成するときの、第１のパケットの数である第１の閾値を超えるか否かを判定し、タイムアウト時間判定部１２２は、第１の閾値を超えないと判定された場合、所定の時間を経過したか否かを判定し、タイムアウト回数判定部１２３は、所定の時間が経過したと判定された場合、所定の時間を連続で経過した回数が、第２の閾値を超えるか否かを判定する。パケット組上数設定部１２４は、第２の閾値を超えると判定された場合、第２のパケットを生成するときの、第１のパケットの数を減じるように第１の閾値を設定することで、より高速にパケットの受信を行うことができるようになる。本発明は、パーソナルコンピュータに適用できる。【選択図】図７
2007201758.tif 000002
【特許請求の範囲】
【請求項１】
第１のパケットを受信する受信装置において、
アプリケーション層からの要求に応じて受信した前記第１のパケットの数が、前記第１のパケットから前記第１のパケットよりも格納されるデータのサイズの大きい第２のパケットを生成するときの、前記第１のパケットの数である第１の閾値を超えるか否かを判定する第１の判定手段と、
前記第１の閾値を超えないと判定された場合、１つ前の前記第１のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かを判定する第２の判定手段と、
前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第２の閾値を超えるか否かを判定する第３の判定手段と、
前記第２の閾値を超えると判定された場合、前記第２のパケットを生成するときの前記第１のパケットの数を減じるように前記第１の閾値を設定する第１の設定手段と
を備える受信装置。
【請求項２】
前記第２の閾値を超えないと判定された場合、受信した前記第１のパケットから前記第２のパケットを生成し、前記アプリケーション層に処理を受け渡す処理を行う処理手段を備える
請求項１の受信装置。
【請求項３】
前記第１の設定手段は、前記第２の閾値を超えると判定された場合、前記第２のパケットを生成するときの前記第１のパケットの数から１を減じるように前記第１の閾値を設定する
請求項１の受信装置。
【請求項４】
前記要求に応じて、前記第１の閾値、前記第２の閾値、および前記所定の時間の初期値を設定する第２の設定手段を備え、
前記第１の判定手段は、アプリケーション層からの要求に応じて受信した前記第１のパケットの数が、設定された前記第１の閾値を超えるか否かを判定し、
前記第２の判定手段は、前記第１の閾値を超えないと判定された場合、１つ前の前記第１のパケットを受信してから設定された前記所定の時間を経過したか否かを判定し、
前記第３の判定手段は、前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、設定された前記第２の閾値を超えるか否かを判定する
請求項１の受信装置。
【請求項５】
第１のパケットを受信する受信装置の受信方法において、
アプリケーション層からの要求に応じて受信した前記第１のパケットの数が、前記第１のパケットから前記第１のパケットよりも格納されるデータのサイズの大きい第２のパケットを生成するときの、前記第１のパケットの数である第１の閾値を超えるか否かを判定する第１の判定ステップと、
前記第１の閾値を超えないと判定された場合、１つ前の前記第１のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かを判定する第２の判定ステップと、
前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第２の閾値を超えるか否かを判定する第３の判定ステップと、
前記第２の閾値を超えると判定された場合、前記第２のパケットを生成するときの前記第１のパケットの数を減じるように前記第１の閾値を設定する設定ステップと
を含む受信方法。
【請求項６】
第１のパケットを受信する受信装置の処理を、コンピュータに行わせるプログラムにおいて、
アプリケーション層からの要求に応じて受信した前記第１のパケットの数が、前記第１のパケットから前記第１のパケットよりも格納されるデータのサイズの大きい第２のパケットを生成するときの、前記第１のパケットの数である第１の閾値を超えるか否かを判定する第１の判定ステップと、
前記第１の閾値を超えないと判定された場合、１つ前の前記第１のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かを判定する第２の判定ステップと、
前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第２の閾値を超えるか否かを判定する第３の判定ステップと、
前記第２の閾値を超えると判定された場合、前記第２のパケットを生成するときの前記第１のパケットの数を減じるように前記第１の閾値を設定する設定ステップと
を含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は受信装置および方法、並びにプログラムに関し、特に、TOE（TCP Offload Engine）により通信をする受信装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
従来より、インターネットなどのネットワークで使用されるプロトコルとして、TCP/IP（Transmission Control Protocol/Internet Protocol）がある。TCP/IPは、もともとUNIX（登録商標）においてソフトウェア（ソフトウェアプログラム）により実装されていた経緯があり、現在でもその処理の大部分がソフトウェアにより行われている。しかし、容量の大きいデータのネットワーク転送要求が高まるにつれて、TCP/IPの処理の高速化を求める声が大きくなってきた。
【０００３】
そのような要求に対して、例えば、TOE（TCP Offload Engine）と称される、ホスト側のCPU（Central Processing Unit）リソースが費やされていたTCP/IPの処理を、別のチップ（専用のハードウェア）が代わりに行うようにする技術がある。このようにすることで、ホスト側のCPUリソースをアプリケーションプログラムの処理だけに割り当てることができるようになり、ホスト側のCPUの負荷を減らすとともに、TCP/IPの処理を高速化させることができる。
【０００４】
また、本出願人は、パケットを送信する送信装置において、入力してくるAV（Audio Visual）データをAVバッファ回路に格納した後に、パケット処理部において、32キロバイトのジャンボパケット（以下、イーサーネット（登録商標）パケット（パケット）よりも格納されるデータのサイズの大きいパケットを、ジャンボパケットと称して説明する）を生成し、CPUが生成したヘッダに基づいて、生成したジャンボパケットを分割して、最大1518バイトのパケットを生成して送信できるようにすることを先に提案した（例えば、特許文献１）。
【０００５】
【特許文献１】特開２００３−２２９９０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、先の提案においては、送信装置では、ジャンボパケットのサイズがバッファのサイズよりも大きい場合、バッファのサイズ以上のパケットを送信することができないため、一度に送信するパケットのサイズをバッファのサイズよりも小さくし、受信装置では、タイムアウト処理を行って、ある程度のパケットの受信を待つことにより、ある程度のサイズとなったパケットをアプリケーション層に渡すという処理を行っていたが、頻繁にタイムアウトが発生し、転送速度が遅くなる可能性があった。
【０００７】
例えば、ジャンボパケットのサイズが32キロバイト、送信装置のバッファのサイズが８キロバイトのように、ジャンボパケットのサイズがバッファのサイズよりも大きい場合、送信装置からは、一度に８キロバイト以上のパケットは送信されないため、受信装置は、ある程度パケットの受信を待った上でタイムアウトの処理により、その時点におけるサイズのパケットをアプリケーション層に渡す処理を行っていたが、このとき、毎回タイムアウトが発生してしまうため、転送速度が遅くなってしまうという問題があった。
【０００８】
本発明はこのような状況に鑑みてなされたものであり、より高速にパケットの受信を行うことができるようにするものである。
【課題を解決するための手段】
【０００９】
本発明の一側面は、第１のパケットを受信する受信装置において、アプリケーション層からの要求に応じて受信した前記第１のパケットの数が、前記第１のパケットから前記第１のパケットよりも格納されるデータのサイズの大きい第２のパケットを生成するときの、前記第１のパケットの数である第１の閾値を超えるか否かを判定する第１の判定手段と、前記第１の閾値を超えないと判定された場合、１つ前の前記第１のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かを判定する第２の判定手段と、前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第２の閾値を超えるか否かを判定する第３の判定手段と、前記第２の閾値を超えると判定された場合、前記第２のパケットを生成するときの前記第１のパケットの数を減じるように前記第１の閾値を設定する第１の設定手段とを備える受信装置である。
【００１０】
前記第２の閾値を超えないと判定された場合、受信した前記第１のパケットから前記第２のパケットを生成し、前記アプリケーション層に処理を受け渡す処理を行う処理手段を備えるようにすることができる。
【００１１】
前記第１の設定手段は、前記第２の閾値を超えると判定された場合、前記第２のパケットを生成するときの前記第１のパケットの数から１を減じるように前記第１の閾値を設定するようにすることができる。
【００１２】
前記要求に応じて、前記第１の閾値、前記第２の閾値、および前記所定の時間の初期値を設定する第２の設定手段を備え、前記第１の判定手段は、アプリケーション層からの要求に応じて受信した前記第１のパケットの数が、設定された前記第１の閾値を超えるか否かを判定し、前記第２の判定手段は、前記第１の閾値を超えないと判定された場合、１つ前の前記第１のパケットを受信してから設定された前記所定の時間を経過したか否かを判定し、前記第３の判定手段は、前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、設定された前記第２の閾値を超えるか否かを判定するようにすることができる。
【００１３】
本発明の一側面は、第１のパケットを受信する受信装置の受信方法において、アプリケーション層からの要求に応じて受信した前記第１のパケットの数が、前記第１のパケットから前記第１のパケットよりも格納されるデータのサイズの大きい第２のパケットを生成するときの、前記第１のパケットの数である第１の閾値を超えるか否かを判定する第１の判定ステップと、前記第１の閾値を超えないと判定された場合、１つ前の前記第１のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かを判定する第２の判定ステップと、前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第２の閾値を超えるか否かを判定する第３の判定ステップと、前記第２の閾値を超えると判定された場合、前記第２のパケットを生成するときの前記第１のパケットの数を減じるように前記第１の閾値を設定する設定ステップとを含む受信方法である。
【００１４】
本発明の一側面は、第１のパケットを受信する受信装置の処理を、コンピュータに行わせるプログラムにおいて、アプリケーション層からの要求に応じて受信した前記第１のパケットの数が、前記第１のパケットから前記第１のパケットよりも格納されるデータのサイズの大きい第２のパケットを生成するときの、前記第１のパケットの数である第１の閾値を超えるか否かを判定する第１の判定ステップと、前記第１の閾値を超えないと判定された場合、１つ前の前記第１のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かを判定する第２の判定ステップと、前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第２の閾値を超えるか否かを判定する第３の判定ステップと、前記第２の閾値を超えると判定された場合、前記第２のパケットを生成するときの前記第１のパケットの数を減じるように前記第１の閾値を設定する設定ステップとを含むプログラムである。
【００１５】
本発明の一側面においては、アプリケーション層からの要求に応じて受信した前記第１のパケットの数が、前記第１のパケットから前記第１のパケットよりも格納されるデータのサイズの大きい第２のパケットを生成するときの、前記第１のパケットの数である第１の閾値を超えるか否かが判定され、前記第１の閾値を超えないと判定された場合、１つ前の前記第１のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かが判定され、前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第２の閾値を超えるか否かが判定され、前記第２の閾値を超えると判定された場合、前記第２のパケットを生成するときの前記第１のパケットの数を減じるように前記第１の閾値が設定される。
【発明の効果】
【００１６】
以上のように、本発明の一側面によれば、より高速にパケットの受信を行うことができる。
【発明を実施するための最良の形態】
【００１７】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００１８】
本発明の一側面の受信装置（例えば、図７のパーソナルコンピュータ１）は、アプリケーション層からの要求に応じて受信した第１のパケット（例えば、パケット）の数が、第１のパケットから第１のパケットよりも格納されるデータのサイズの大きい第２のパケット（例えば、ジャンボパケット）を生成するときの、第１のパケットの数である第１の閾値（例えば、パケット組上数）を超えるか否かを判定する第１の判定手段（例えば、図７のパケット組上数判定部１２１）と、第１の閾値を超えないと判定された場合、１つ前の第１のパケットを受信してからタイムアウトまでの所定の時間（例えば、タイムアウト時間）を経過したか否かを判定する第２の判定手段（例えば、図７のタイムアウト時間判定部１２２）と、所定の時間が経過したと判定された場合、所定の時間を連続で経過した回数が、許容しているタイムアウトの回数である第２の閾値（例えば、タイムアウト回数）を超えるか否かを判定する第３の判定手段（例えば、図７のタイムアウト回数判定部１２３）と、第２の閾値を超えると判定された場合、第２のパケットを生成するときの第１のパケットの数を減じるように第１の閾値を設定する第１の設定手段（例えば、図７のパケット組上数設定部１２４）とを備える。
【００１９】
第２の閾値を超えないと判定された場合、受信した第１のパケットから第２のパケットを生成し、アプリケーション層に処理を受け渡す処理を行う処理手段（例えば、図７のパケット処理部１２５）を備えるようにすることができる。
【００２０】
第１の設定手段は、第２の閾値を超えると判定された場合、第２のパケットを生成するときの第１のパケットの数から１を減じるように第１の閾値を設定するようにすることができる。
【００２１】
要求に応じて、第１の閾値、第２の閾値、および所定の時間の初期値を設定する第２の設定手段（例えば、図７の初期値設定部１１１）を備え、第１の判定手段は、アプリケーション層からの要求に応じて受信した第１のパケットの数が、設定された第１の閾値を超えるか否かを判定し、第２の判定手段は、第１の閾値を超えないと判定された場合、１つ前の第１のパケットを受信してから設定された所定の時間を経過したか否かを判定し、第３の判定手段は、所定の時間が経過したと判定された場合、所定の時間を連続で経過した回数が、設定された第２の閾値を超えるか否かを判定するようにすることができる。
【００２２】
本発明の一側面の受信方法またはプログラムは、アプリケーション層からの要求に応じて受信した第１のパケット（例えば、パケット）の数が、第１のパケットから第１のパケットよりも格納されるデータのサイズの大きい第２のパケット（例えば、ジャンボパケット）を生成するときの、第１のパケットの数である第１の閾値（例えば、パケット組上数）を超えるか否かを判定する第１の判定ステップ（例えば、図１２のステップＳ１３３の処理）と、第１の閾値を超えないと判定された場合、１つ前の第１のパケットを受信してからタイムアウトまでの所定の時間（例えば、タイムアウト時間）を経過したか否かを判定する第２の判定ステップ（例えば、図１２のステップＳ１３７の処理）と、所定の時間が経過したと判定された場合、所定の時間を連続で経過した回数が、許容しているタイムアウトの回数である第２の閾値（例えば、タイムアウト回数）を超えるか否かを判定する第３の判定ステップ（例えば、図１２のステップＳ１３８の処理）と、第２の閾値を超えると判定された場合、第２のパケットを生成するときの第１のパケットの数を減じるように第１の閾値を設定する設定ステップ（例えば、図１２のステップＳ１４０の処理）とを含む。
【００２３】
本発明の一側面のプログラムは、記録媒体（例えば、図１３のリムーバブルメディア２２１）に記録することができる。
【００２４】
以下、図面を参照しながら本発明の実施の形態について説明する。
【００２５】
図１は、本発明を適用したパーソナルコンピュータ１のハードウェアの構成の例を示すブロック図である。
【００２６】
このパーソナルコンピュータ１は、ネットワーク２に接続されている。パーソナルコンピュータ１は、ネットワーク２に接続された他の機器から送信されてくるAVデータなどのデータを、例えば、TCP/IPなどのプロトコルに従って受信する、本発明の受信装置の一例である。なお、パーソナルコンピュータ１は、データを受信するだけでなく、データを送信するようにしてもよいので、以下、データの送信と受信の両方の場合について説明する。
【００２７】
パーソナルコンピュータ１は、CPU１１、PCI（Peripheral Component Interconnect）バスコントローラ１２、RAM（Random Access Memory）１３、データ処理部１４、AVデータバッファ１５、送受信バッファ１６、PHY１７（以下、物理層回路１７と称する）、MAG１８（以下、パルストランス１８と称する）、およびRJ-45１９（以下、コネクタ１９と称する）を含むようにして構成される。
【００２８】
CPU１１は、パーソナルコンピュータ１の各部を制御する。また、CPU１１は、後述するROM（Read Only Memory）２１２または記録部２１８などに記録されているアプリケーションプログラム（ソフトウェアプログラム）を実行するとともに、所定の通信プログラム（ソフトウェアプログラム）を基に、パケットの送受信に関するTCP/IPの処理を行う。例えば、パーソナルコンピュータ１がパケットの送受信をする場合、CPU１１は、パケットに含まれるAVデータ自体の処理は行わずに、パケットに含まれるヘッダ（制御データ）に関する処理を行う。
【００２９】
具体的には、CPU１１は、後述するROM２１２または記録部２１８などに記録されているソフトウェアプログラムに従って、ネットワーク２を介して、ネットワーク２に接続された他の機器に、パケットを送信するためのIPの処理、パケット伝送中に異常が発生した場合に異常を知らせるICMP（Internet Control Message Protocol）の処理、IPアドレスとMAC（Media Access Control）アドレスの変換を行うARP（Address Resolution Protocol）の処理、通信を行っているプログラムを識別してポートを割り当てるコネクション型のTCPの処理などを行う。
【００３０】
換言すれば、CPU１１は、例えば、AVデータバッファ１５に記憶されているAVデータや、送受信バッファ１６に記憶されているパケットなどのデータそのものを処理するのではなく、RAM１３に記憶されている、AVデータやパケットなどのデータの、例えば、先頭のアドレスや長さなどの情報を基に処理を行う（ヘッダの処理を行う）。すなわち、このとき、RAM１３には、AVデータなどのデータそのものは記憶されていないことになる。
【００３１】
さらにまた、CPU１１は、PCIバスコントローラ１２を介して、データ処理部１４を制御する。データ処理部１４は、パーソナルコンピュータ１により送受信されるデータ（パケット）の合成および分割処理、並びにパーソナルコンピュータ１によるデータの送受信の処理のうち、CPU１１が実行する上述したIPの処理などの処理以外の処理を行うハードウェアである。
【００３２】
データ処理部１４は、PCIバスインターフェース３１、レジスタ３２、ジャンボパケット処理部３３、ギガビットMAC（Media Access Control）３４、およびSD-RAM（Synchronous Dynamic - Random Access Memory）コントローラ３５を含むようにして構成される。
【００３３】
PCIバスインターフェース３１は、レジスタ３２およびジャンボパケット処理部３３と、PCIバスコントローラ１２との間で入出力されるデータのインターフェースである。レジスタ３２は、PCIバスインターフェース３１を介して入出力されてくるデータ、並びにジャンボパケット処理部３３およびギガビットMAC３４において処理されるデータまたは処理による結果のデータを記憶する。
【００３４】
SD-RAMコントローラ３５は、AVデータバッファ１５または送受信バッファ１６と、ジャンボパケット処理部３３またはギガビットMAC３４との間で行われるデータ転送を制御する。SD-RAMコントローラ３５は、データを送信する場合、例えば、AVデータに対して各種の処理を行う画像音声処理装置（図示せず）から供給されるAVデータを、AVデータバッファ１５に記憶させる。
【００３５】
ジャンボパケット処理部３３は、データを送信する場合、AVデータバッファ１５に記憶されているAVデータを読み出し、読み出したAVデータに各種の処理を施すことにより、AVデータを格納した、例えば、32キロバイトのサイズのジャンボパケットを生成する。また、ジャンボパケット処理部３３は、PCIバスコントローラ１２からPCIバスインターフェース３１を介して、CPU１１から供給されるヘッダを基に、パケットの送信に用いるヘッダを生成する。そして、ジャンボパケット処理部３３は、ジャンボパケットに含まれるAVデータを分割し、分割することにより得られたAVデータと、パケットの送信に用いるヘッダヘッダとを含むパケットを生成する。ジャンボパケット処理部３３は、SD-RAMコントローラ３５の制御の基に、生成したパケットを送受信バッファ１６に記憶させる。
【００３６】
ギガビットMAC３４は、物理層回路１７との間で入出力されるデータのMACの処理を行う。ギガビットMAC３４は、データを送信する場合、SD-RAMコントローラ３５の制御の基に、送受信バッファ１６に記憶されているパケットにMACの処理を施し、物理層回路１７に供給する。
【００３７】
物理層回路１７は、例えば、イーサーネット規格に基づいて、ネットワーク２を介してコンピュータ１が送受信するパケットの変調または復調などの物理層の処理を行う。物理層回路１７は、データを送信する場合、ギガビットMAC３４から供給されるパケットに対して、例えば、変調などの物理層の処理を施し、パルストランス１８を介して、コネクタ１９に供給する。
【００３８】
コネクタ１９は、例えば、RJ-45型などからなり、通信線を介してネットワーク２と接続されている。コネクタ１９は、データを送信する場合、パルストランス１８を介して物理層回路１７から供給されるパケットを、ネットワーク２を介して、ネットワーク２に接続された他の機器に送信する。
【００３９】
また、コネクタ１９は、データを受信する場合、ネットワーク２を介して、ネットワーク２に接続された他の機器から送信されてくるパケットを受信し、パルストランス１８を介して物理層回路１７に供給する。物理層回路１７は、パルストランス１８を介してコネクタ１９から供給されるパケットに対して、例えば、復調などの物理層の処理を施し、ギガビットMAC３４に供給する。
【００４０】
ギガビットMAC３４は、データを受信する場合、物理層回路１７から供給されるパケットに対してMACの処理を施し、SD-RAMコントローラ３５に供給する。SD-RAMコントローラ３５は、ギガビットMAC３４から供給されるパケットを送受信バッファ１６に記憶させる。
【００４１】
ジャンボパケット処理部３３は、データを受信する場合、SD-RAMコントローラ３５が送受信バッファ１６から読み出したパケットであって、SD-RAMコントローラ３５から供給される複数のパケットを合成してジャンボパケットを生成する。ジャンボパケット処理部３３は、PCIバスコントローラ１２およびPCIバスインターフェース３１を介して、CPU１１から供給されるTCP/IPの処理の結果を基に、ジャンボパケットを分割してパケットを生成する。
【００４２】
そして、ジャンボパケット処理部３３は、SD-RAMコントローラ３５の制御の基に、生成したパケットをAVデータバッファ１５に供給して記憶させる。SD-RAMコントローラ３５は、AVデータバッファ１５に記憶されたパケットを、AVデータに対して各種の処理を行う画像音声処理装置（図示せず）に出力する。
【００４３】
次に、図２および図６のフローチャートを参照して、図１のパーソナルコンピュータ１による、パケットの送受信の処理について説明する。
【００４４】
まず、図２のフローチャートを参照して、パーソナルコンピュータ１が、ネットワーク２を介して、ネットワーク２に接続された他の機器に、パケットを送信する処理について説明する。
【００４５】
ステップＳ１１において、AVバッファ１５は、SD-RAMコントローラ３５の制御の基に、AVデータに対して各種の処理を行う画像音声処理装置（図示せず）から出力されたAVデータを記憶する。
【００４６】
ステップＳ２１において、ジャンボパケット処理部３３は、SD-RAMコントローラ３５の制御の基に、AVバッファ１５に記憶されているAVデータを読み出し、読み出したAVデータを格納したジャンボパケットを生成する。例えば、ジャンボパケット処理部３３は、図３の上側に示されるように、AVデータを格納した32キロバイトのサイズのジャンボパケットを生成する。
【００４７】
図２のフローチャートに戻り、ステップＳ２２において、ジャンボパケット処理部３３は、生成したジャンボパケットの送信処理に必要となるデータを、PCIバスインターフェース３１からPCIバスコントローラ１２を介して、CPU１１に供給する。また、このとき、ジャンボパケット処理部３３は、必要に応じて、レジスタ３２に記憶されているデータも、PCIバスインターフェース３１からPCIバスコントローラ１２を介して、CPU１１に供給する。
【００４８】
ステップＳ４１において、CPU１１は、PCIバスインターフェース３１およびPCIバスコントローラ１２を介して、ジャンボパケット処理部３３から供給されるデータを基に、ジャンボパケットを送信するためのTCP/IPの処理を行い、IPヘッダとTCPヘッダからなるヘッダHD1を生成する。CPU１１は、PCIバスコントローラ１２からPCIバスインターフェース３１を介して、ヘッダHD1をジャンボパケット処理部３３に供給する。
【００４９】
このとき、ジャンボパケット処理部３３は、SD-RAMコントローラ３５の制御の基に、図３の上側に示される、IPヘッダとTCPヘッダからなるヘッダHD1がデータ（AVデータ）に付加された、32キロバイトのサイズのジャンボパケットを送受信バッファ１６に記憶させる。
【００５０】
図２のフローチャートに戻り、ステップＳ２３において、ジャンボパケット処理部３３は、CPU１１から供給されるヘッダHD1を基に、パケットの送信に用いるヘッダHD2を生成する。そして、ジャンボパケット処理部３３は、SD-RAMコントローラ３５の制御の基に、送受信バッファ１６に記憶されているジャンボパケットに含まれるAVデータを分割し、分割することにより得られたAVデータと、ヘッダHD2とを含むパケットを生成する。
【００５１】
具体的には、ジャンボパケット処理部３３は、例えば、図４のヘッダHD2のIPヘッダに示すように、サービスタイプ（Service Type）、識別（Identification）、生存時間（Time to Live）、送信元アドレス（Source IP Address）、および宛先アドレス（Destination IP Address）は、ヘッダHD1のIPヘッダのサービスタイプ、識別、生存時間、送信元アドレス、および宛先アドレスをそのまま用いて（コピーして）、ヘッダHD2のIPヘッダを生成する。
【００５２】
なお、その他のヘッダHD2のIPヘッダは、例えば、図４に示すように、バージョン（Version）には“4h”、ヘッダ長（HLEN）には“5”または”F”、全長（Total Length）には“0000h”、フラグ（Flags）には“0000h”、フラグメントオフセット（Fragment Offset）には“0000h”、プロトコル（Protocol）には“TCP=06h”、ヘッダチェックサム（Header Checksum）がハードウェアにより演算され、オプション（IP Options）とパディング（Padding）が生成されないようにヘッダHD2のIPヘッダを生成する。
【００５３】
また、ジャンボパケット処理部３３は、例えば、図５のヘッダHD2のTCPヘッダに示すように、送信元ポート番号（Source Port）、宛先ポート番号（Destination Port）、およびウィンドウ（Window）は、ヘッダHD1のTCPヘッダの送信元ポート番号データ、宛先ポート番号データ、およびウィンドウデータをそのまま用いて（コピーして）、ヘッダHD2のTCPヘッダを生成する。
【００５４】
なお、その他のヘッダHD2のTCPヘッダは、例えば、図５に示すように、シーケンス番号（Sequence Number）がハードウェアにより演算され、確認応答番号（Acknowledgement Number）がハードウェアにより演算され、データオフセット/ヘッダ長（HLEN）には“5”または“F”、予約（Reserved）には“0”、制御ビット（Code Bit）が各パケットのORとなり、チェックサム（Checksum）がハードウェアにより演算され、緊急ポインタ（Urgent Pointer）には“0”、オプション（Options）とパディング（Padding）が生成されないようにヘッダHD2のTCPヘッダを生成する。
【００５５】
すなわち、ジャンボパケット処理部３３は、図３の下側に示されるように、ジャンボパケットに含まれるAVデータを分割し、分割することにより得られたAVデータ（図３ではデータと表現されている）と、ヘッダHD1を基に生成したヘッダHD2とを含む、パケット長最大1518バイトの複数のパケットを生成する。
【００５６】
図２のフローチャートに戻り、ステップＳ２４において、ジャンボパケット処理部３３は、SD-RAMコントローラ３５の制御の基に、生成したパケットを送受信バッファ１６に記憶させる。
【００５７】
ステップＳ３１において、送受信バッファ１６は、SD-RAMコントローラ３５の制御の基に、記憶しているパケットをギガビットMAC３４に供給する。そして、ギガビットMAC３４に供給されたパケットは、ギガビットMAC３４によるMACの処理および物理層回路１７による物理層の処理が施され、パルストランス１８を介して、コネクタ１９からネットワーク２に送信される。
【００５８】
以上のようにして、パーソナルコンピュータ１は、ネットワーク２を介して、ネットワーク２に接続された他の機器にパケットを送信する。
【００５９】
次に、図６のフローチャートを参照して、パーソナルコンピュータ１が、ネットワーク２に接続された他の機器から、ネットワーク２を介してパケットを受信する処理について説明する。
【００６０】
パーソナルコンピュータ１がネットワーク２を介してパケットを受信する場合、パケットは、コネクタ１９で受信され、パルストランス１８を介して物理層回路１７による物理層の処理が施され、ギガビットMAC３４に供給される。
【００６１】
ステップＳ７１において、ギガビットMAC３４は、ネットワーク２を介して受信したパケットであって、物理層回路１７から供給されるパケットに対してMACの処理を施し、SD-RAMコントローラ３５に供給する。SD-RAMコントローラ３５は、ギガビットMAC３４から供給されるパケットを送受信バッファ１６に記憶させる。
【００６２】
ステップＳ６１において、送受信バッファ１６は、SD-RAMコントローラ３５の制御の基に、記憶しているパケットをジャンボパケット処理部３３に供給する。
【００６３】
ステップＳ５１において、ジャンボパケット処理部３３は、SD-RAMコントローラ３５が送受信バッファ１６から読み出したパケットであって、SD-RAMコントローラ３５から供給される複数のパケットを合成してジャンボパケットを生成する。例えば、ジャンボパケット処理部３３は、パケットに付加されているヘッダHD2のIPヘッダ（図４）とTCPヘッダ（図５）の処理に従って、SD-RAMコントローラ３５から供給される複数のパケットを合成することで、図３の上側に示される、IPヘッダとTCPヘッダからなるヘッダHD1がデータ（AVデータ）に付加された、32キロバイトのサイズのジャンボパケットを生成する。
【００６４】
具体的には、ジャンボパケット処理部３３は、例えば、図４のヘッダHD2のIPヘッダに示すように、サービスタイプ、識別、生存時間、送信元アドレス、および宛先アドレスをそのまま用いて（コピーして）、ヘッダHD1のIPヘッダを生成する。また、ジャンボパケット処理部３３は、例えば、図５のヘッダHD2のTCPヘッダに示すように、送信元ポート番号、宛先ポート番号、およびウィンドウをそのまま用いて（コピーして）、ヘッダHD1のTCPヘッダを生成する。
【００６５】
なお、このとき、ジャンボパケット処理部３３は、ヘッダHD1のIPヘッダのチェックサムデータ、並びにTCPヘッダのチェックサムデータ、シーケンス番号、および確認応答番号を生成する。また、ジャンボパケット処理部３３は、パケットに含まれるヘッダHD2のIPヘッダおよびTCPヘッダのチェックサムデータ、並びにAVデータを用いたチェックサム演算を行う。
【００６６】
そして、ジャンボパケット処理部３３は、ジャンボパケットの受信処理に必要となるデータ、例えば、パケットのヘッダHD2（例えば、図４のIPヘッダと図５のTCPヘッダ）から取得された送信元アドレス、宛先アドレス、およびサイズデータなどを、PCIバスインターフェース３１からPCIバスコントローラ１２を介してCPU１１に供給する。また、このとき、ジャンボパケット処理部３３は、必要に応じて、レジスタ３２に記憶されているデータも、PCIバスインターフェース３１からPCIバスコントローラ１２を介して、CPU１１に供給する。
【００６７】
図６のフローチャートに戻り、ステップＳ８１において、CPU１１は、PCIバスインターフェース３１およびPCIバスコントローラ１２を介して、ジャンボパケット処理部３３から供給されるデータを基に、ジャンボパケットの受信をするためのTCP/IPの処理を行う。CPU１１は、TCP/IPの処理の結果を、PCIバスコントローラ１２からPCIバスインターフェース３１を介して、ジャンボパケット処理部３３に供給する。
【００６８】
ステップＳ５２において、ジャンボパケット処理部３３は、PCIバスコントローラ１２からPCIバスインターフェース３１を介して、CPU１１から供給されるTCP/IPの処理の結果を基に、ジャンボパケットを分割してパケットを生成する。例えば、ジャンボパケット処理部３３は、図３の下側に示されるように、ジャンボパケットに含まれるAVデータを分割し、分割することにより得られたAVデータ（図３ではデータと表現されている）とヘッダHD2とを含む、パケット長最大1518バイトの複数のパケットを生成する。
【００６９】
図６のフローチャートに戻り、ステップＳ５３において、ジャンボパケット処理部３３は、SD-RAMコントローラ３５の制御の基に、生成したパケットをAVデータバッファ１５に供給して記憶させる。そして、AVデータバッファ１５に記憶されたパケットは、SD-RAMコントローラ３５の制御の基に、AVデータに対して各種の処理を行う画像音声処理装置（図示せず）に出力される。
【００７０】
以上のようにして、パーソナルコンピュータ１は、ネットワーク２に接続された他の機器から、ネットワーク２を介してパケットを受信する。
【００７１】
このように、パーソナルコンピュータ１において、データ処理部１４は、複数のパケットからなるジャンボパケットを生成し、ジャンボパケットの送受信処理（TCP/IPの処理）をCPU１１に行わせる。そのため、複数のパケットの送受信処理をCPU１１が行う場合に比べて、CPU１１の処理負担を軽減することができる。
【００７２】
また、このとき、CPU１１とデータ処理部１４との間では、例えば、ヘッダやレジスタデータなどの、データ量の小さなデータのみを伝送し、データ処理部１４において、ハードウェアによりTCP/IPの処理の一部を高速に行うことで、従来のPCIバスをそのまま用いるとともに、CPU１１を高速化することなく、TCP/IPの処理を高速化することができる。その結果、パーソナルコンピュータ１の構成を、簡単かつ安価なものにすることができる。
【００７３】
ところで、上述したように、先の提案においては、例えば、ジャンボパケットのサイズが32キロバイト、送信装置のバッファのサイズが８キロバイトのように、ジャンボパケットのサイズがバッファのサイズよりも大きい場合、送信装置からは、一度に８キロバイト以上のパケットは送信されないため、受信装置は、ある程度パケットの受信を待った上でタイムアウトの処理により、その時点におけるサイズのパケットをアプリケーション層に渡す処理を行っている。
【００７４】
この場合、タイムアウトが頻繁に発生し、転送速度が遅くなってしまう可能性がある。本出願人は、従来の課題のみならず、この新たな課題も同時に解決させる手法として、タイムアウトが何度か続いた場合に、パケットからジャンボパケットを生成するときのパケットの数を動的に変更して、ジャンボパケットのサイズを変えながら、ジャンボパケットを生成する手法を発明した。以下、図７乃至図１２を参照して、ジャンボパケットを生成するときのパケットの数を動的に変更しながら、パケットを受信する処理について説明する。なお、以下、図７乃至図１２を参照して説明する処理は、例えば、上述した、図６のステップＳ５１の処理において、ジャンボパケットを生成するときに行われる。
【００７５】
図７は、図１のパーソナルコンピュータ１の機能的構成例を示すブロック図である。
【００７６】
パーソナルコンピュータ１は、ソフトウェアプログラム１０１、初期化ソフトウェア１０２、ジャンボパケットレジスタ１０３、およびソケット処理部１０４を含むようにして構成される。
【００７７】
なお、本実施の形態では、パーソナルコンピュータ１は、上述した図１のハードウェア構成を有しているので、ソフトウェアプログラム１０１は、例えば、CPU１１（図１）が実行するプログラム（ソフトウェア）として構成され、初期化処理部１０２およびソケット処理部１０４は、例えば、ジャンボパケット処理部３３（図１）が実行するプログラムとして構成される。ただし、パーソナルコンピュータ１の構成を図１のハードウェア構成と異ならせることで、ソフトウェアプログラム１０１、初期化処理部１０２、またはソケット処理部１０４は、ハードウェア単体として構成することもできるし、ソフトウェアとハードウェアとの組み合わせとして構成することもできる。
【００７８】
ソフトウェアプログラム１０１は、例えば、CPU１１により実行される、AVデータを再生させることのできるアプリケーションプログラムの所定の通信プログラムである。ソフトウェアプログラム１０１は、例えば、ユーザによりユーザインターフェースを介して、所定のAVデータの再生が指示されたとき、ソケット生成要求またはジャンボパケット機能使用要求を初期化処理部１０２に供給する。
【００７９】
ここで、ソケット生成要求とは、ネットワーク２を介して他の機器と通信を行うためのソケットを生成させる要求である。例えば、ソケット生成要求は、AVデータを受信する場合、AVデータを提供するパーソナルコンピュータ（または、例えば、専用のサーバなど）との通信を行うためのソケットを生成する要求となる。また、ジャンボパケット機能使用要求とは、後述する、所定の数ごとに、ジャンボパケットを動的に組上げる機能（以下、ジャンボパケット機能とも称する）を使用させるための要求である。
【００８０】
すなわち、ソフトウェアプログラム１０１は、ソケット生成要求とともに、ジャンボパケット機能使用要求を、初期化処理部１０２に供給することで、ジャンボパケット機能を使用して、例えば、AVデータを受信させることになる。
【００８１】
初期化処理部１０２は、ソフトウェアプログラム１０１から、ソケット生成要求とともに、ジャンボパケット機能使用要求が供給されてきた場合、ジャンボパケット機能の初期化の処理を行う。
【００８２】
ここで、ジャンボパケット機能の初期化の処理とは、ジャンボパケットレジスタ１０３に記憶されている、例えば、パケット組上数、タイムアウト時間、またはタイムアウト回数などのデータを初期化する処理である。
【００８３】
なお、パケット組上数（以下、パケット組上数をＮ（Ｎは自然数）とも称する）とは、受信したパケットの組上げる数を指定する値（閾値）である。例えば、上述した例のように、ジャンボパケットのサイズが32キロバイトで、パケットのサイズが1518バイトである場合、パケット組上数には20（個）が設定され、20（個）のパケットを受信したとき、20（個）のパケットが組上げられて、（1518×20バイトのサイズの）ジャンボパケットが生成される。また、同様に、例えば、ジャンボパケットのサイズが９キロバイトで、パケットのサイズが1.5キロバイトである場合、パケット組上数には６（個）が設定され、６（個）のパケットを受信したとき、６（個）のパケットが組上げられて、（1.5×6バイトのサイズの）ジャンボパケットが生成される。
【００８４】
また、タイムアウト時間とは、例えば、50ミリ秒などの、前回パケットを受信してから、ある時間を経過してもパケットを受信しない場合、タイムアウトの処理を実行させるまで時間である。さらにまた、タイムアウト回数とは、例えば、３回などの、連続してタイムアウトが発生可能な回数を指定するための値（閾値）である。なお、以下、パケット組上数、タイムアウト時間、およびタイムアウト回数を総称して、ジャンボパケット設定情報とも称して説明する。
【００８５】
初期化処理部１０２は、初期値設定部１１１を含むようにして構成される。
【００８６】
初期値設定部１１１は、ソフトウェアプログラム１０１から、ソケット生成要求とともに、ジャンボパケット機能使用要求が供給されてきた場合、ジャンボパケット設定情報をジャンボパケットレジスタ１０３に設定する、ジャンボパケット機能の初期化の処理を行う。初期値設定部１１１は、ジャンボパケット機能の初期化の処理を行った場合、ジャンボパケットレジスタ番号をソケット処理部１０４に供給する。
【００８７】
なお、詳細は後述するが、ジャンボパケットレジスタ番号とは、ジャンボパケットレジスタ１０３には、セッションごとに、それぞれ、ジャンボパケット設定情報が記憶されているので、それらを区別するために、対象となるセッションのジャンボパケット設定情報を指定するための番号である。ジャンボパケットレジスタ番号は、例えば、１，２，３，・・・，Ｍなどの番号となる。
【００８８】
ジャンボパケットレジスタ１０３は、レジスタから構成される。例えば、ジャンボパケットレジスタ１０３は、初期化処理部１０２またはソケット処理部１０４からの指示を基に、セッションごとに、ジャンボパケット設定情報またはジャンボパケット機能の使用状況を示す情報（以下、使用状況と称して説明する）を記憶する。なお、使用状況は、例えば、使用していないことを示す“使用状態”または使用していることを示す“空き状態”のいずれか一方を示す情報となる。なお、ジャンボパケットレジスタ１０３は、レジスタ３２（図１）と同一としてもよい。
【００８９】
ソケット処理部１０４は、ソケット通信に関する各種の処理を実行する。例えば、ソケット処理部１０４は、ジャンボパケット処理部３３（データ処理部１４）の制御の基に、ソケット通信に関する各種の処理を実行する。
【００９０】
また、ソケット処理部１０４は、初期化処理部１０２から供給されるジャンボパケットレジスタ番号を基に、ジャンボパケットレジスタ１０３から、ジャンボパケットレジスタ番号に対応した領域に記憶されているジャンボパケット設定情報を読み出して設定する。ソケット処理部１０４は、設定されたジャンボパケット設定情報を基に、ジャンボパケット受信の処理を行い、受信したパケットから生成したジャンボパケットの処理をソフトウェアプログラム１０１に受け渡す。
【００９１】
ここで、ジャンボパケット受信の処理とは、パケット組上数を、例えば、タイムアウト時間およびタイムアウト回数に基づいて動的に変更させながら、パケットを受信する処理である。
【００９２】
また、ソケット処理部１０４は、ジャンボパケット受信の処理が終了した場合、ジャンボパケット受信の処理が終了したことを示す通知（以下、処理終了通知と称する）をジャンボパケットレジスタ１０３に供給して記憶させる。ジャンボパケットレジスタ１０３は、ソケット処理部１０４から供給される処理終了通知を基に、ジャンボパケット受信の処理が終了したので、例えば、使用状況を“使用状態”から“空き状態”に変更して記憶する。このように、使用状況が“空き状態”となることにより、異なるセッションに対して、この“空き状態”となった領域を使用させることができる。
【００９３】
ソケット処理部１０４は、パケット組上数判定部１２１、タイムアウト時間判定部１２２、タイムアウト回数判定部１２３、パケット組上数設定部１２４、およびパケット処理部１２５を含むようにして構成される。
【００９４】
パケット組上数判定部１２１は、受信したパケットの数が、Ｎ（パケット組上数）となるか否かを判定する。パケット組上数判定部１２１は、判定結果をタイムアウト時間判定部１２２またはパケット処理部１２５に供給する。
【００９５】
タイムアウト時間判定部１２２は、パケット組上数判定部１２１から供給される判定結果を基に、前回パケットを受信してからタイムアウト時間が経過したか否かを判定する。タイムアウト時間判定部１２２は、判定結果をタイムアウト回数判定部１２３に供給する。
【００９６】
タイムアウト回数判定部１２３は、タイムアウト時間判定部１２２から供給される判定結果を基に、タイムアウトした回数が連続で、タイムアウト回数以上発生したか否かを判定する。タイムアウト回数判定部１２３は、判定結果をパケット組上数設定部１２４またはパケット処理部１２５に供給する。
【００９７】
パケット組上数設定部１２４は、タイムアウト回数判定部１２３から供給される判定結果を基に、設定されているＮ（パケット組上数）を減じる演算を行って、減じられたＮ（パケット組上数）をジャンボパケットレジスタ１０３に記憶させて設定する。なお、このとき、パケット組上数設定部１２４は、Ｎ（パケット組上数）を、ジャンボパケットレジスタ１０３に記憶させずに、例えば、メモリ（図示せず）などに記憶させるようにしてもよい。
【００９８】
パケット処理部１２５は、パケット組上数判定部１２１またはタイムアウト回数判定部１２３から供給される判定結果を基に、所定のパケット組上数のパケットからジャンボパケットを生成する。パケット処理部１２５は、生成したジャンボパケットの処理をソフトウェアプログラム１０１に受け渡す。このとき、ソフトウェアプログラム１０１（すなわち、CPU１１）は、ジャンボパケットの処理をパケット処理部１２５から受け渡されたので、例えば、上述した、図６のステップＳ８１の処理を行うことになる。
【００９９】
次に、図８乃至図１２を参照して、図７の機能的構成例を有する、パーソナルコンピュータ１の動作について説明する。まず、図８のフローチャートを参照して、データ受信の処理について説明する。なお、この処理は、例えば、ユーザによりユーザインターフェースを介して、所定のAVデータの再生が指示されたとき開始される。
【０１００】
ステップＳ１０１において、初期化処理部１０２は、ソフトウェアプログラム１０１から供給されるソケット生成要求またはジャンボパケット機能使用要求を基に、ジャンボパケット機能の初期化の処理を行う。例えば、ステップＳ１０１において、初期化処理部１０２は、ジャンボパケット設定情報を初期化する処理を行う。
【０１０１】
ここで、ステップＳ１０１における、初期化処理部１０２による、ジャンボパケット機能の初期化の処理の詳細について、図９のフローチャートを参照して説明する。
【０１０２】
ステップＳ１１１において、初期値設定部１１１は、ソフトウェアプログラム１０１からソケット生成要求が入力されたか否かを判定する。
【０１０３】
ステップＳ１１１において、ソケット生成要求が入力されていないと判定された場合、ソフトウェアプログラム１０１からは、例えば、所定のAVデータの再生が指示されていないので、ステップＳ１１１に戻り、上述した処理が繰り返される。すなわち、初期化処理部１０２は、例えば、ユーザによりユーザインターフェースを介して、所定のAVデータの再生が指示されるまで待機している。
【０１０４】
一方、ステップＳ１１１において、ソフトウェアプログラム１０１からソケット生成要求が入力されたと判定された場合、ステップＳ１１２に進み、初期値設定部１１１は、ジャンボパケット機能使用要求が入力されたか否かを判定する。
【０１０５】
ステップＳ１１２において、ジャンボパケット機能使用要求が入力されていないと判定された場合、例えば、所定のAVデータの再生を指示されたが、ジャンボパケット受信の処理を行わないので、ステップＳ１１１に戻り、上述した処理が繰り返される。すなわち、初期化処理部１０２は、例えば、ユーザによりユーザインターフェースを介して、所定のAVデータの再生が再度指示されるまで待機している。
【０１０６】
一方、ステップＳ１１２において、ジャンボパケット機能使用要求が入力されたと判定された場合、ステップＳ１１３に進み、初期値設定部１１１は、ジャンボパケット機能に空きがあるか否かを判定する。例えば、ステップＳ１１３において、初期値設定部１１１は、ジャンボパケットレジスタ１０３に記憶されているジャンボパケット設定情報に対応した使用状況が“空き状態”を示している領域があるか否かを判定する。
【０１０７】
例えば、ジャンボパケットレジスタ１０３は、図１０に示すように、１乃至Ｍを示しているジャンボパケットレジスタ番号に対応して、使用状況、パケット組上数、タイムアウト時間、およびタイムアウト回数を、それぞれ記憶している。これらのジャンボパケットレジスタ番号は、セッションごとに割り当てられる番号であるので、各セッションごとに、パケット組上数、タイムアウト時間、およびタイムアウト回数が割り当てられている。
【０１０８】
すなわち、初期値設定部１１１は、上述したように、使用状況には、“使用状態”と“空き状態”とがあり、使用状況が“使用状態”を示している場合、その領域は既に他のセッションにより使用されていることになるので、使用状況が“空き状態”を示している領域があるか否かを判定することになる。
【０１０９】
図９のフローチャートに戻り、ステップＳ１１３において、ジャンボパケット機能に空きがないと判定された場合、ジャンボパケット機能を使用することができないので、ステップＳ１１１に戻り、上述した処理が繰り返される。すなわち、初期化処理部１０２は、例えば、ユーザによりユーザインターフェースを介して、所定のAVデータの再生が再度指示されるまで待機している。
【０１１０】
一方、ステップＳ１１３において、ジャンボパケット機能に空きがあると判定された場合、ステップＳ１１４に進み、初期値設定部１１１は、ジャンボパケットレジスタ設定の処理を行う。例えば、ステップＳ１１４において、初期値設定部１１１は、図１０のジャンボパケットレジスタ１０３の、１であるジャンボパケットレジスタ番号に対応した使用状況が“空き状態”を示している場合、１であるジャンボパケットレジスタ番号に対応した、パケット組上数、タイムアウト時間、およびタイムアウト回数を設定する、ジャンボパケットレジスタ設定の処理を行う。
【０１１１】
ここで、ステップＳ１１４における、初期値設定部１１１による、ジャンボパケットレジスタ設定の処理の詳細について、図１１のフローチャートを参照して説明する。
【０１１２】
ステップＳ１２１において、初期値設定部１１１は、パケット組上数を設定する。例えば、ステップＳ１２１において、初期値設定部１１１は、図１０のジャンボパケットレジスタ１０３の、１であるジャンボパケットレジスタ番号に対応した、パケット組上数（Ｎ）に20（個）を記憶させて設定する。
【０１１３】
ステップＳ１２２において、初期値設定部１１１は、タイムアウト時間を設定する。例えば、ステップＳ１２２において、初期値設定部１１１は、図１０のジャンボパケットレジスタ１０３の、１であるジャンボパケットレジスタ番号に対応した、タイムアウト時間に50（ミリ秒）を記憶させて設定する。
【０１１４】
ステップＳ１２３において、初期値設定部１１１は、タイムアウト回数を設定する。例えば、ステップＳ１２３において、初期値設定部１１１は、図１０のジャンボパケットレジスタ１０３の、１であるジャンボパケットレジスタ番号に対応した、タイムアウト回数に３（回）を記憶させて設定する。
【０１１５】
図９のフローチャートに戻り、ステップＳ１１５において、初期値設定部１１１は、ジャンボパケットレジスタ番号をソケット処理部１０４に通知して、ジャンボパケット機能の初期化の処理を終了し、図８のステップＳ１０１に処理を戻し、ステップＳ１０２の処理を実行させる。例えば、初期値設定部１１１は、１であるジャンボパケットレジスタ番号をソケット処理部１０４に通知する。
【０１１６】
ステップＳ１０２において、ソケット処理部１０４は、ジャンボパケット受信の処理を行う。
【０１１７】
ここで、ステップＳ１０２における、ソケット処理部１０４による、ジャンボパケット受信の処理の詳細について、図１２を参照して説明する。
【０１１８】
ステップＳ１３１において、ソケット処理部１０４は、初期値設定部１１１から供給されるジャンボパケットレジスタ番号を基に、ジャンボパケットレジスタ１０３から、パケット組上数、タイムアウト時間、およびタイムアウト回数（ジャンボパケット設定情報）を読み出す。例えば、ステップＳ１３１において、ソケット処理部１０４は、図１０に示すように、初期値設定部１１１から供給される、１であるジャンボパケットレジスタ番号を基に、20（個）であるパケット組上数、50（ミリ秒）であるタイムアウト時間、および３（回）であるタイムアウト回数を、それぞれ読み出す。
【０１１９】
図１２のフローチャートに戻り、ステップＳ１３２において、ソケット処理部１０４は、パケットを受信したか否かを判定する。
【０１２０】
ステップＳ１３２において、パケットを受信していないと判定された場合、ステップＳ１３２に戻り、上述した処理が繰り返される。すなわち、ソケット処理部１０４は、パケットを受信するまで待機していることになる。
【０１２１】
一方、ステップＳ１３２において、パケットを受信したと判定された場合、ステップＳ１３３に進み、パケット組上数判定部１２１は、受信したパケットの数（パケット数）がＮ個（パケット組上数）となったか否かを判定する。例えば、ステップＳ１３３において、パケット組上数判定部１２１は、受信したパケット数が20個となったか否かを判定する。
【０１２２】
ステップＳ１３３において、受信したパケット数がＮ個（例えば20個）となったと判定された場合、パケット組上数の数だけパケットを受信できたので、ステップＳ１３４に進み、パケット処理部１２５は、所定のパケット組上数のパケットからジャンボパケットを生成する。パケット処理部１２５は、生成したジャンボパケットの処理をソフトウェアプログラム１０１に受け渡す。
【０１２３】
このとき、ソフトウェアプログラム１０１（すなわち、CPU１１）は、ジャンボパケットの処理をパケット処理部１２５から受け渡されたので、例えば、上述した、図６のステップＳ８１の処理を行う。そして、ソフトウェアプログラム１０１（すなわち、CPU１１）は、受け取ったジャンボパケットに対して、TCP/IPの処理を行って、AVデータバッファ１５に記憶させ、その後、AVデータとして、例えば、AVデータに対して各種の処理を行う画像音声処理装置（図示せず）に出力する。
【０１２４】
ステップＳ１３５において、ソケット処理部１０４は、パケットの受信を終了したか否かを判定する。
【０１２５】
ステップＳ１３５において、パケットの受信を終了したと判定された場合、ステップＳ１３６に進み、ソケット処理部１０４は、パケットの受信を終了したことを示す処理終了通知をジャンボパケットレジスタ１０３に出力して、図８のステップＳ１０２に処理を戻し、パーソナルコンピュータ１による、データ受信の処理を終了する。
【０１２６】
このとき、例えば、ジャンボパケットレジスタ１０３は、ソケット処理部１０４から供給される処理終了通知を基に、図１０のジャンボパケットレジスタ１０３の、１であるジャンボパケットレジスタ番号に対応した、使用状況を“使用状態”から“空き状態”に変更して記憶する。その結果、１であるジャンボパケットレジスタ番号に対応した領域が、他のセッションにより使用されることが可能となる。
【０１２７】
一方、ステップＳ１３５において、パケットの受信を終了していないと判定された場合、パケットの受信を終了していないので、ステップＳ１３２に戻り、上述した処理が繰り返される。
【０１２８】
ステップＳ１３３において、受信したパケット数がＮ個（例えば20個）となっていないと判定された場合、ステップＳ１３７に進み、タイムアウト時間判定部１２２は、前回パケットを受信してから50ミリ秒（所定の時間）以上経過したか否かを判定する。
【０１２９】
ステップＳ１３７において、前回パケットを受信してから50ミリ秒以上経過していないと判定された場合、まだタイムアウトしていないので、ステップＳ１３２に戻り、上述した処理が繰り返される。
【０１３０】
一方、ステップＳ１３７において、前回パケットを受信してから50ミリ秒以上経過したと判定された場合、ステップＳ１３８に進み、タイムアウト回数判定部１２３は、タイムアウトが連続で３回（所定の回数）以上発生したか否かを判定する。
【０１３１】
ステップＳ１３８において、タイムアウトが連続で３回以上発生していないと判定された場合、タイムアウトの発生した回数が許容範囲内であるので、ステップＳ１３４に進み、上述した処理が繰り返される。
【０１３２】
一方、ステップＳ１３８において、タイムアウトが連続で３回以上発生したと判定された場合、タイムアウトの発生した回数が許容している回数を超えているので、ステップＳ１３９に進み、パケット組上数設定部１２４は、Ｎ（パケット組上数）を１減じる。例えば、ステップＳ１３９において、パケット組上数設定部１２４は、20（個）であるＮ（パケット組上数）から１減じて、19（個）であるＮを算出する。
【０１３３】
ステップＳ１４０において、パケット組上数設定部１２４は、減じられたパケット組上数を設定して、ステップＳ１３３に戻り、上述した処理が繰り返される。例えば、ステップＳ１４０において、パケット組上数設定部１２４は、19（個）であるＮ（パケット組上数）をジャンボパケットレジスタ１０３に記憶させて設定する。
【０１３４】
そして、ステップＳ１３３において、パケット組上数判定部１２１は、受信したパケット数が19個となったか否かを判定することになる。このように、タイムアウトが連続で所定の回数続いた場合に、Ｎ（パケット組上数）を動的に減らす（例えば、20から19に減らす）ことができるので、タイムアウトが発生しにくくなる。その結果、タイムアウト処理に起因する転送速度の劣化を抑制することができる。
【０１３５】
以上のように、本発明によれば、より高速にパケットの受信を行うことができる。
【０１３６】
また、本発明によれば、一定時間以上パケットを受信しなかった場合、パケット組上数に満たなくても、その時点のサイズでCPUに処理を引き渡すタイムアウト処理を行い、さらに、タイムアウト処理が連続で続くとき、パケット組上数を動的に変更することができる。その結果、タイムアウト処理に起因する転送速度の劣化を抑制することができる。さらに、例えば、パケット組上数以上のパケットが送信されてこない場合でも、パケット組上数を動的に変更することで、タイムアウト処理に起因する転送速度の劣化を抑制することができる。
【０１３７】
さらにまた、本発明によれば、例えば、送信側のバッファのサイズや、受信側のパケット組上数などが最適でないことで発生する転送遅れなどを、パケット組上数を動的に変更することでなくし、常に高速転送をすることが可能となる。
【０１３８】
なお、上述した例においては、パーソナルコンピュータ１を一例にして説明したが、本発明においてはそれに限らず、例えば、ビデオカメラ、AVサーバ、またはスイッチャなど、ネットワークに接続して、ネットワークに接続された他の機器と通信をする機器であればよい。
【０１３９】
また、上述した例においては、プロトコルスタックとして、TCP/IPを一例にして説明したが、本発明においてはそれに限らず、例えば、UDP/IP（User Datagram Protocol/Internet Protocol）などであってもよい。
【０１４０】
さらにまた、上述した例においては、タイムアウトが所定の回数発生した場合、パケット組上数を減じるとして説明したが、もちろん、タイムアウト状況からパケット組上数を動的に増やすようにしてもよい。また、上述した例においては、パケット組上数を受信側で設定するとして説明したが、送信側で設定するようにしてもよい。
【０１４１】
図１３は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成の例を示すブロック図である。CPU２１１は、ROM２１２、または記録部２１８に記録されているプログラムに従って各種の処理を実行する。RAM２１３には、CPU２１１が実行するプログラムやデータなどが適宜記憶される。これらのCPU２１１、ROM２１２、およびRAM２１３は、バス２１４により相互に接続されている。
【０１４２】
CPU２１１にはまた、バス２１４を介して入出力インターフェース２１５が接続されている。入出力インターフェース２１５には、スイッチ、マイクロホンなどよりなる入力部２１６、ディスプレイ、スピーカなどよりなる出力部２１７が接続されている。CPU２１１は、入力部２１６から入力される指令に対応して各種の処理を実行する。そして、CPU２１１は、処理の結果を出力部２１７に出力する。
【０１４３】
入出力インターフェース２１５に接続されている記録部２１８は、例えばハードディスクからなり、CPU２１１が実行するプログラムや各種のデータを記録する。通信部２１９は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。また、通信部２１９を介してプログラムを取得し、記録部２１８に記録してもよい。
【０１４４】
入出力インターフェース２１５に接続されているドライブ２２０は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア２２１が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記録部２１８に転送され、記録される。
【０１４５】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図１３に示すように、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD（Digital Versatile Disc）を含む）、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア２２１、または、プログラムが一時的もしくは永続的に格納されるROM２１２や、記録部２１８を構成するハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインターフェースである通信部２１９を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【０１４６】
なお、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１４７】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１４８】
【図１】本発明を適用したパーソナルコンピュータのハードウェアの構成の例を示すブロック図である。
【図２】図１のパーソナルコンピュータによる、パケット送信の処理について説明するフローチャートである。
【図３】ジャンボパケットとパケットの関係について説明する図である。
【図４】IPヘッダを生成する処理について説明する図である。
【図５】TCPヘッダを生成する処理について説明する図である。
【図６】図１のパーソナルコンピュータによる、パケット受信の処理について説明するフローチャートである。
【図７】図１のパーソナルコンピュータの機能的構成例を示すブロック図である。
【図８】データ受信の処理を説明するフローチャートである。
【図９】ジャンボパケット機能の初期化の処理を説明するフローチャートである。
【図１０】ジャンボパケットレジスタについて説明する図である。
【図１１】ジャンボパケットレジスタ設定の処理を説明するフローチャートである。
【図１２】ジャンボパケット受信の処理について説明するフローチャートである。
【図１３】パーソナルコンピュータの構成を示すブロック図である。
【符号の説明】
【０１４９】
１  パーソナルコンピュータ，  １１  CPU，  １２  PCIバスコントローラ，  １３  RAM，  １４  データ処理部，  １５  AVデータバッファ，  １６  送受信バッファ，  １７  PHY，  １８  MAG，  １９  RJ-45，  ３１  PCIバスインターフェース，  ３２  レジスタ，  ３３  ジャンボパケット処理部，  ３４  ギガビットMAC，  ３５  SD-RAMコントローラ，  １０１  ソフトウェアプログラム，  １０２  初期化処理部，  １０３  ジャンボパケットレジスタ，  １０４  ソケット処理部，  １１１  初期値設定部，  １２１  パケット組上数判定部，  １２２  タイムアウト時間判定部，  １２３  タイムアウト回数判定部，  １２４  パケット組上数設定部，  １２５  パケット処理部
【図１】
2007201758.tif 000003
【図２】
2007201758.tif 000004
【図３】
2007201758.tif 000005
【図４】
2007201758.tif 000006
【図５】
2007201758.tif 000007
【図６】
2007201758.tif 000008
【図７】
2007201758.tif 000009
【図８】
2007201758.tif 000010
【図９】
2007201758.tif 000011
【図１０】
2007201758.tif 000012
【図１１】
2007201758.tif 000013
【図１２】
2007201758.tif 000014
【図１３】
2007201758.tif 000015