(57)【特許請求の範囲】
【請求項１】
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
前記複数の通信ポートの１つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる処理制御手段と、
を備え、
前記処理制御手段は、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させる、
データ転送装置。
【請求項２】
請求項１に記載のデータ転送装置であって、
前記処理制御手段は、前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させるように構成され、
前記設定された入力順位がより高いスレッドにより処理された単位データをより早期に送信する単位データ送信手段を備えるデータ転送装置。
【請求項３】
請求項１又は２に記載のデータ転送装置であって、
前記処理制御手段は、
前記取得されたデータ量が大きくなるほど大きくなる優先度を算出し、当該算出された優先度が最大である通信ポートを経由して受信された単位データからなる単位データブロックを前記複数のスレッドに処理させるように構成されたデータ転送装置。
【請求項４】
請求項３に記載のデータ転送装置であって、
前記処理制御手段は、
第１の単位データブロックを前記処理単位毎に分割することにより複数の処理ブロックを生成するとともに、当該生成された処理ブロックの数が、前記生成されたスレッドの数よりも少ない場合、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドの一部に処理させるとともに、当該生成された複数のスレッドの残余のスレッドに、第２の単位データブロックを処理させるように構成されたデータ転送装置。
【請求項５】
請求項４に記載のデータ転送装置であって、
前記処理制御手段は、
前記第１の単位データブロックに対する処理が完了する将来の時点にて算出される予定の優先度を算出し、当該算出された優先度が最大である通信ポートを経由して受信された単位データからなる単位データブロックを前記第２の単位データブロックとして選択するように構成されたデータ転送装置。
【請求項６】
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に適用され、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成し、
前記複数の通信ポートの１つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させると共に、前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させる、データ転送方法。
【請求項７】
請求項６に記載のデータ転送方法であって、
前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させ、
前記設定された入力順位がより高いスレッドによって処理された単位データをより早期に送信する、データ転送方法。
【請求項８】
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
前記複数の通信ポートの１つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる処理制御手段と、
を実現させるためのプログラムであり、
前記処理制御手段は、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを転送するデータ転送装置に関する。
【背景技術】
【０００２】
予め定められた形式に従った単位データ（プロトコル・データ・ユニット、例えば、パケット、フレーム、又は、セグメント等）を転送するデータ転送装置が知られている。この種のデータ転送装置の一つとして特許文献１に記載のデータ転送装置は、複数の通信ポート（物理ポート）と、通信ポートを経由して受信した単位データを一時的に記憶するバッファと、を備える。
【０００３】
データ転送装置は、複数の単位データからなる単位データブロック毎に転送準備処理を行う。例えば、単位データブロックは、予め設定されたデータ量を有するように定められる。また、単位データブロックは、予め設定された時間間隔内に受信された単位データを含むように定められる。転送準備処理は、単位データブロックに含まれる各単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための処理である。
【０００４】
また、複数のスレッドを生成し、生成した複数のスレッドにより分散処理を行うマルチスレッド技術が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２４６０８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
そこで、マルチスレッド技術をデータ転送装置に適用することが好適であると考えられる。この場合、データ転送装置は、各通信ポートに対して１つのスレッドを割り当て、各通信ポートを経由して受信した単位データに対する転送準備処理を、当該通信ポートに対して割り当てられたスレッドに実行させるように構成されることが好適であると考えられる。
【０００７】
ところで、図１に示したように、単位データブロックＤＢ＃１〜ＤＢ＃８に含まれる単位データの数は、通信ポート毎に異なることが多い。従って、各スレッド＃１〜＃４が転送準備処理を完了するタイミングは、互いに異なることが多い。その結果、図１に示した例においては、スレッド＃１，＃２，＃４において、いずれの処理も実行していない空転時間（無駄な時間）が生じる。
【０００８】
即ち、上記データ転送装置にマルチスレッド技術を適用した場合、単位データブロックに含まれる単位データの数が相対的に多い通信ポートに係る転送準備処理の完了が無駄に遅くなってしまう。その結果、この通信ポートを経由して受信した単位データの遅延時間（転送処理に要する時間）が無駄に長くなってしまう。
【０００９】
これに対処するため、転送準備処理を完了したスレッドが、当該スレッドに対して割り当てられた通信ポート以外の通信ポートに係る単位データを処理するようにデータ転送装置を構成することが考えられる。しかしながら、この場合、転送準備処理の結果が出力される順序が変化するので、単位データを、受信した順に送信するためには、単位データを転送する順序を制御する必要が生じるという問題がある。
【００１０】
このため、本発明の目的は、上述した課題である「単位データに対する処理が無駄に遅くなる場合が生じること」を解決することが可能なデータ転送装置を提供することにある。
【課題を解決するための手段】
【００１１】
かかる目的を達成するため本発明の一形態であるデータ転送装置は、
複数の通信ポートと、
上記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
上記複数の通信ポートの１つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる処理制御手段と、
を備える。
【００１２】
また、本発明の他の形態であるデータ転送方法は、
複数の通信ポートと、
上記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に適用され、
上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成し、
上記複数の通信ポートの１つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる方法である。
【００１３】
また、本発明の他の形態であるプログラムは、
複数の通信ポートと、
上記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に、
上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
上記複数の通信ポートの１つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる処理制御手段と、
を実現させるためのプログラムである。
【発明の効果】
【００１４】
本発明は、以上のように構成されることにより、単位データに対する処理を迅速に完了することができる。
【図面の簡単な説明】
【００１５】
【図１】背景技術に係るデータ転送装置の各スレッドが処理を実行する時間を概念的に示した説明図である。
【図２】本発明の第１実施形態に係るデータ転送装置の概略構成を表す図である。
【図３】本発明の第１実施形態に係るデータ転送装置の機能の概略を表すブロック図である。
【図４】本発明の第１実施形態に係るデータ転送装置のＣＰＵが実行するプログラムを示したフローチャートである。
【図５】本発明の第１実施形態に係るデータ転送装置のバッファが記憶している単位データブロックを概念的に示した説明図である。
【図６】本発明の第１実施形態に係るデータ転送装置の各スレッドが処理する処理ブロックを概念的に示した説明図である。
【図７】本発明の第１実施形態に係るデータ転送装置のバッファが記憶している単位データブロックを概念的に示した説明図である。
【図８】本発明の第１実施形態に係るデータ転送装置のバッファが記憶している単位データブロックを概念的に示した説明図である。
【図９】本発明の第２実施形態に係るデータ転送装置のＣＰＵが、図４の処理に追加して実行する処理を示したフローチャートである。
【図１０】本発明の第２実施形態に係るデータ転送装置の各スレッドが処理する処理ブロックを概念的に示した説明図である。
【図１１】本発明の第３実施形態に係るデータ転送装置の機能の概略を表すブロック図である。
【発明を実施するための形態】
【００１６】
以下、本発明に係る、データ転送装置、データ転送方法、及び、プログラム、の各実施形態について図１〜図１１を参照しながら説明する。
【００１７】
＜第１実施形態＞
（構成）
図２に示したように、第１実施形態に係るデータ転送装置１は、中央処理装置（ＣＰＵ；Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、記憶装置としてのメモリ１２と、バッファ１３と、複数の通信ポートＳＰ１，ＳＰ２，ＲＰ１，ＲＰ２，ＲＰ３，ＲＰ４と、を備える。
【００１８】
データ転送装置１は、メモリ１２に記憶されているプログラムをＣＰＵ１１が実行することにより、後述する機能を実現するように構成されている。
各通信ポートＳＰ１，ＳＰ２，ＲＰ１，ＲＰ２，ＲＰ３，ＲＰ４は、通信回線を介して他の通信装置と接続されている。
【００１９】
本例では、通信ポートＳＰ１，ＳＰ２のそれぞれは、データを受信する通信装置と接続されている。即ち、通信ポートＳＰ１，ＳＰ２のそれぞれは、送信用通信ポートとも表記される。また、通信ポートＲＰ１，ＲＰ２，ＲＰ３，ＲＰ４（ＲＰ１〜ＲＰ４）のそれぞれは、データを送信する通信装置と接続されている。即ち、通信ポートＲＰ１〜ＲＰ４のそれぞれは、受信用通信ポートとも表記される。
【００２０】
バッファ１３は、複数の通信ポートＲＰ１〜ＲＰ４のそれぞれを経由して受信した単位データを一時的に記憶する。単位データは、予め定められた形式に従ったデータである。本例では、単位データは、プロトコル・データ・ユニット（例えば、パケット、フレーム、又は、セグメント等）を構成する。
【００２１】
データ転送装置１は、受信用通信ポートＲＰ１〜ＲＰ４を介して単位データを受信する。データ転送装置１は、受信した単位データをバッファ１３に一時的に記憶させる。データ転送装置１は、バッファ１３に記憶されている単位データに含まれる、当該単位データの送信先を表す情報（例えば、送信先のＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス等）に基づいて、当該単位データの送信先と対応付けられた送信用通信ポートＳＰ１，ＳＰ２を特定する。
【００２２】
そして、データ転送装置１は、特定した送信用通信ポートＳＰ１，ＳＰ２を経由させて、バッファ１３に記憶されている単位データを送信する。
このように、データ転送装置１は、単位データを転送するように構成される。
【００２３】
（機能）
図３は、上記のように構成されたデータ転送装置１の機能を表すブロック図である。
データ転送装置１の機能は、スレッド生成部（スレッド生成手段）２１と、処理制御部（処理制御手段）２２と、単位データ送信部（単位データ送信手段）２３と、を含む。
【００２４】
スレッド生成部２１は、単位データの送信先に基づいて、当該単位データを出力する送信用通信ポートＳＰ１，ＳＰ２を特定するための転送準備処理を実行するための、複数（本例では、４つ）のスレッドＴ１〜Ｔ４を生成する。
【００２５】
処理制御部２２は、スレッド生成部２１により生成された複数のスレッドＴ１〜Ｔ４に対して入力順位を予め設定する。本例では、処理制御部２２は、スレッドＴ４、スレッドＴ３、スレッドＴ２、及び、スレッドＴ１の順に、入力順位が高くなるように、複数のスレッドＴ１〜Ｔ４に対して入力順位を設定する。
【００２６】
処理制御部２２は、複数の受信用通信ポートＲＰ１〜ＲＰ４のそれぞれに対して、当該受信用通信ポートＲＰ１〜ＲＰ４を経由して受信され且つバッファ１３に記憶されている、すべての単位データのデータ量（通信ポート毎データ量）を取得する。次いで、処理制御部２２は、取得された通信ポート毎データ量が大きくなるほど大きくなる優先度を複数の受信用通信ポートＲＰ１〜ＲＰ４のそれぞれに対して算出する。本例では、処理制御部２２は、取得された通信ポート毎データ量に正比例する整数を優先度として算出する。
【００２７】
次いで、処理制御部２２は、転送準備処理の対象となる受信用通信ポートＲＰ１〜ＲＰ４を選択する。本例では、処理制御部２２は、算出された優先度が最大である受信用通信ポートＲＰ１〜ＲＰ４を１つだけ選択する。
【００２８】
処理制御部２２は、選択された受信用通信ポートＲＰ１〜ＲＰ４を経由して受信された複数の単位データからなる単位データブロックを取得する。単位データブロックは、予め定められた方式に従って形成される。本例では、単位データブロックは、予め設定された時間間隔内に受信された単位データからなる。なお、単位データブロックは、予め設定されたデータ量を有するように形成されていてもよい。
【００２９】
処理制御部２２は、取得された単位データブロックを、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成する。本例では、処理制御部２２は、１つの処理ブロックに含まれる単位データの数を、予め設定された処理単位数とするように、取得された単位データブロックを分割する。なお、処理制御部２２は、１つの処理ブロックに含まれるデータ量を、予め設定された処理単位量とするように、取得された単位データブロックを分割するように構成されていてもよい。
【００３０】
このようにして、処理制御部２２は、複数の受信用通信ポートＲＰ１〜ＲＰ４の１つを経由して受信された複数の単位データからなる単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成している、と言うことができる。
【００３１】
処理制御部２２は、生成された処理ブロックのそれぞれを、スレッド生成部２１により生成された複数のスレッドＴ１〜Ｔ４に分散処理させる。このとき、処理制御部２２は、設定された入力順位がより高いスレッドＴ１〜Ｔ４に、より早期に受信された単位データを含む処理ブロックを処理させる。
【００３２】
これにより、各スレッドＴ１〜Ｔ４は、処理ブロックに対して転送準備処理を実行する。その結果、各スレッドＴ１〜Ｔ４は、単位データを出力する送信用通信ポートＳＰ１，ＳＰ２を特定するための通信ポート特定情報を出力する。
【００３３】
このようにして、処理制御部２２は、上記取得された通信ポート毎データ量がより大きい受信用通信ポートＲＰ１〜ＲＰ４を経由して受信された単位データからなる単位データブロックほど、より早期に複数のスレッドＴ１〜Ｔ４に処理させている、と言うことができる。また、処理制御部２２は、上記算出された優先度が最大である受信用通信ポートＲＰ１〜ＲＰ４を経由して受信された単位データからなる単位データブロックを複数のスレッドＴ１〜Ｔ４に処理させている、と言うこともできる。
【００３４】
処理制御部２２は、優先度を算出し且つ単位データブロックを取得し且つ複数の処理ブロックを生成し且つ複数の処理ブロックを複数のスレッドに分散処理させる処理を、バッファ１３に単位データが記憶されている間、繰り返し実行する。
【００３５】
単位データ送信部２３は、複数のスレッドＴ１〜Ｔ４が転送準備処理を実行することにより出力した通信ポート特定情報を受け付ける。単位データ送信部２３は、受け付けた通信ポート特定情報のそれぞれに対して、当該通信ポート特定情報により特定される送信用通信ポートＳＰ１，ＳＰ２へ、バッファ１３に記憶されている単位データを出力する（即ち、通信装置へ送信する）転送処理を実行する。
【００３６】
このとき、単位データ送信部２３は、処理制御部２２により設定された入力順位がより高いスレッドＴ１〜Ｔ４から出力された通信ポート特定情報に対して、より早期に転送処理を実行する。
このように、単位データ送信部２３は、処理制御部２２により設定された入力順位がより高いスレッドＴ１〜Ｔ４により処理された単位データをより早期に送信している、と言うことができる。
【００３７】
データ転送装置１は、単位データ送信部２３により転送された単位データをバッファ１３から消去する。
【００３８】
（作動）
次に、上述したデータ転送装置１の作動について説明する。
先ず、データ転送装置１は、起動時に、転送準備処理を実行するための、複数（本例では、４つ）のスレッドＴ１〜Ｔ４を生成する。更に、データ転送装置１は、生成された複数のスレッドＴ１〜Ｔ４に対して入力順位を設定する。本例では、データ転送装置１は、スレッドＴ４、スレッドＴ３、スレッドＴ２、及び、スレッドＴ１の順に、入力順位が高くなるように、複数のスレッドＴ１〜Ｔ４に対して入力順位を設定する。
【００３９】
また、データ転送装置１は、各受信用通信ポートＲＰ１〜ＲＰ４を介して単位データを受信する毎に、受信した単位データをバッファ１３に一時的に記憶させる。
【００４０】
一方、データ転送装置１は、図４にフローチャートにより示したプログラムを実行する。
具体的に述べると、データ転送装置１は、このプログラムの処理を開始すると、バッファ１３に単位データが存在する（記憶されている）か否かを判定する（ステップＳ１０１）。データ転送装置１は、バッファ１３に単位データが記憶されていない場合、ステップＳ１０１にて待機する。
【００４１】
いま、バッファ１３に単位データが記憶されている場合を想定して説明を続ける。この場合、データ転送装置１は、「Ｙｅｓ」と判定してステップＳ１０２へ進み、すべてのスレッドが処理を完了しているか否かを判定する。データ転送装置１は、すべてのスレッドが処理を完了していない場合、ステップＳ１０２にて待機する。
【００４２】
いま、すべてのスレッドが処理を完了している場合を想定して説明を続ける。この場合、データ転送装置１は、「Ｙｅｓ」と判定してステップＳ１０３へ進み、複数の受信用通信ポートＲＰ１〜ＲＰ４のそれぞれに対して、通信ポート毎データ量を取得する。
【００４３】
いま、図５に示したように、バッファ１３が単位データブロックＤＢ＃１〜ＤＢ＃８を記憶している場合を想定する。単位データブロックＤＢ＃１〜ＤＢ＃８は、この順に、データ転送装置１に受信されたデータである。
【００４４】
また、単位データブロックＤＢ＃１，ＤＢ＃５は、受信用通信ポートＲＰ１を経由して受信されたデータであり、単位データブロックＤＢ＃２，ＤＢ＃６は、受信用通信ポートＲＰ２を経由して受信されたデータであり、単位データブロックＤＢ＃３，ＤＢ＃７は、受信用通信ポートＲＰ３を経由して受信されたデータであり、単位データブロックＤＢ＃４，ＤＢ＃８は、受信用通信ポートＲＰ４を経由して受信されたデータである。
【００４５】
次いで、データ転送装置１は、取得された通信ポート毎データ量が大きくなるほど大きくなる優先度を複数の受信用通信ポートＲＰ１〜ＲＰ４のそれぞれに対して算出する（ステップＳ１０４）。
ここでは、受信用通信ポートＲＰ３に対して算出された優先度が最大となる場合を想定する。
【００４６】
そして、データ転送装置１は、転送準備処理の対象となる受信用通信ポートＲＰ１〜ＲＰ４として、算出された優先度が最大である受信用通信ポートＲＰ１〜ＲＰ４を１つだけ選択する。従って、ここでは、データ転送装置１は、受信用通信ポートＲＰ３を選択する。そして、データ転送装置１は、選択された受信用通信ポートＲＰ３を経由して受信された複数の単位データからなる単位データブロックＤＢ＃３を取得する（ステップＳ１０５）。
【００４７】
次いで、データ転送装置１は、取得された単位データブロックＤＢ＃３を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックＤＢ＃３−１〜ＤＢ＃３−４を生成する（ステップＳ１０６）。ここでは、生成された処理ブロックの数（処理ブロック数）と、生成されたスレッドの数（スレッド数）と、が一致する場合を想定する。
【００４８】
そして、データ転送装置１は、図６の（Ａ）に示したように、生成された処理ブロックＤＢ＃３−１〜ＤＢ＃３−４のそれぞれを、生成された複数のスレッドＴ１〜Ｔ４に分散処理させる。
【００４９】
これにより、スレッドＴ１は、処理ブロックＤＢ＃３−１に対して転送準備処理を実行し、スレッドＴ２は、処理ブロックＤＢ＃３−２に対して転送準備処理を実行し、スレッドＴ３は、処理ブロックＤＢ＃３−３に対して転送準備処理を実行し、スレッドＴ４は、処理ブロックＤＢ＃３−４に対して転送準備処理を実行する（ステップＳ１０７）。
【００５０】
その結果、各スレッドＴ１〜Ｔ４は、単位データを出力する送信用通信ポートＳＰ１，ＳＰ２を特定するための通信ポート特定情報を出力する。そして、データ転送装置１は、通信ポート特定情報のそれぞれに対して、当該通信ポート特定情報により特定される送信用通信ポートＳＰ１，ＳＰ２へ、バッファ１３に記憶されている単位データを出力する（即ち、通信装置へ送信する）転送処理を実行する（ステップＳ１０８）。
【００５１】
その後、データ転送装置１は、ステップＳ１０１へ戻り、ステップＳ１０１〜ステップＳ１０８の処理を繰り返し実行する。
【００５２】
この時点では、バッファ１３は、図７に示したように、単位データブロックＤＢ＃１，ＤＢ＃２，ＤＢ＃４〜ＤＢ＃８を記憶している。また、受信用通信ポートＲＰ１に対して算出される優先度が最大となる。
【００５３】
従って、データ転送装置１は、受信用通信ポートＲＰ１を選択し、選択された受信用通信ポートＲＰ１を経由して受信された複数の単位データからなる単位データブロックＤＢ＃１を取得する（ステップＳ１０５）。
【００５４】
次いで、データ転送装置１は、取得された単位データブロックＤＢ＃１を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックＤＢ＃１−１〜ＤＢ＃１−３を生成する（ステップＳ１０６）。ここでは、処理ブロック数がスレッド数よりも少ない場合を想定する。
【００５５】
そして、データ転送装置１は、図６の（Ｂ）に示したように、生成された処理ブロックＤＢ＃１−１〜ＤＢ＃１−３のそれぞれを、生成された複数のスレッドＴ１〜Ｔ３に分散処理させる。
【００５６】
これにより、スレッドＴ１は、処理ブロックＤＢ＃１−１に対して転送準備処理を実行し、スレッドＴ２は、処理ブロックＤＢ＃１−２に対して転送準備処理を実行し、スレッドＴ３は、処理ブロックＤＢ＃１−３に対して転送準備処理を実行する（ステップＳ１０７）。
【００５７】
その結果、各スレッドＴ１〜Ｔ３は、単位データを出力する送信用通信ポートＳＰ１，ＳＰ２を特定するための通信ポート特定情報を出力する。そして、データ転送装置１は、通信ポート特定情報のそれぞれに対して転送処理を実行する（ステップＳ１０８）。
【００５８】
その後、データ転送装置１は、ステップＳ１０１へ戻り、ステップＳ１０１〜ステップＳ１０８の処理を繰り返し実行する。
【００５９】
この時点では、バッファ１３は、図８に示したように、単位データブロックＤＢ＃２，ＤＢ＃４〜ＤＢ＃８を記憶している。また、受信用通信ポートＲＰ４に対して算出される優先度が最大となる。
【００６０】
従って、データ転送装置１は、受信用通信ポートＲＰ４を選択し、選択された受信用通信ポートＲＰ４を経由して受信された複数の単位データからなる単位データブロックＤＢ＃４を取得する（ステップＳ１０５）。
【００６１】
次いで、データ転送装置１は、取得された単位データブロックＤＢ＃４を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックＤＢ＃４−１〜ＤＢ＃４−４を生成する（ステップＳ１０６）。ここでは、処理ブロック数とスレッド数とが一致する場合を想定する。
【００６２】
そして、データ転送装置１は、図６の（Ｃ）に示したように、生成された処理ブロックＤＢ＃４−１〜ＤＢ＃４−４のそれぞれを、生成された複数のスレッドＴ１〜Ｔ４に分散処理させる。
【００６３】
これにより、スレッドＴ１は、処理ブロックＤＢ＃４−１に対して転送準備処理を実行し、スレッドＴ２は、処理ブロックＤＢ＃４−２に対して転送準備処理を実行し、スレッドＴ３は、処理ブロックＤＢ＃４−３に対して転送準備処理を実行し、スレッドＴ４は、処理ブロックＤＢ＃４−４に対して転送準備処理を実行する（ステップＳ１０７）。
【００６４】
その結果、各スレッドＴ１〜Ｔ４は、単位データを出力する送信用通信ポートＳＰ１，ＳＰ２を特定するための通信ポート特定情報を出力する。そして、データ転送装置１は、通信ポート特定情報のそれぞれに対して転送処理を実行する（ステップＳ１０８）。
【００６５】
以上、説明したように、本発明の第１実施形態に係るデータ転送装置１によれば、単位データブロックに含まれる単位データの数が相対的に多い通信ポートＲＰ１〜ＲＰ４に係る転送準備処理の完了が無駄に遅くることを防止することができる。その結果、この通信ポートＲＰ１〜ＲＰ４を経由して受信した単位データの遅延時間（転送処理に要する時間）が無駄に長くなることを防止することができる。このように、データ転送装置１によれば、単位データに対する処理（転送準備処理）を迅速に完了することができる。
【００６６】
更に、本発明の第１実施形態に係るデータ転送装置１は、複数のスレッドＴ１〜Ｔ４に対して入力順位を予め設定するとともに、設定された入力順位がより高いスレッドＴ１〜Ｔ４に、より早期に受信された単位データを含む処理ブロックを処理させる。加えて、データ転送装置１は、設定された入力順位がより高いスレッドにより処理された単位データをより早期に送信する。
【００６７】
これによれば、単位データが受信された順序を変更することなく、単位データを送信（転送）することができる。
【００６８】
更に、本発明の第１実施形態に係るデータ転送装置１は、複数の通信ポートＲＰ１〜ＲＰ４のそれぞれに対して通信ポート毎データ量を取得する。加えて、データ転送装置１は、取得された通信ポート毎データ量がより大きい通信ポートＲＰ１〜ＲＰ４を経由して受信された単位データからなる単位データブロックほど、より早期に複数のスレッドＴ１〜Ｔ４に処理させる。
【００６９】
これによれば、ある通信ポートＲＰ１〜ＲＰ４を経由して、単位時間あたりに受信される単位データのデータ量が過大である場合であっても、当該単位データの遅延時間（転送処理に要する時間）が過大となることを回避することができる。
【００７０】
＜第２実施形態＞
次に、本発明の第２実施形態に係るデータ転送装置について説明する。第２実施形態に係るデータ転送装置は、上記第１実施形態に係るデータ転送装置に対して、処理ブロック数がスレッド数よりも少ない場合、当該生成された処理ブロックのそれぞれを複数のスレッドの一部に処理させるとともに、複数のスレッドの残余のスレッドに、他の単位データブロックを処理させる点において相違している。従って、以下、かかる相違点を中心として説明する。
【００７１】
（機能）
第２実施形態に係る処理制御部２２は、取得した単位データブロック（第１の単位データブロック）を処理単位毎に分割することにより複数の処理ブロックを生成した際に、生成された処理ブロックの数（処理ブロック数）が、スレッド生成部２１により生成されたスレッドＴ１〜Ｔ４の数（スレッド数、本例では、４つ）よりも少ないか否かを判定する。
【００７２】
そして、処理制御部２２は、処理ブロック数がスレッド数よりも少ないと判定した場合、第１の単位データブロックに対する、スレッドＴ１〜Ｔ４による転送準備処理が完了する将来の時点にて算出される予定の優先度を算出する。更に、処理制御部２２は、算出された優先度が最大である受信用通信ポートＲＰ１〜ＲＰ４を経由して受信された単位データからなる単位データブロックを第２の単位データブロックとして選択する。
【００７３】
加えて、処理制御部２２は、選択された第２の単位データブロックを処理単位毎に分割することにより複数の処理ブロックを生成する。そして、処理制御部２２は、第１の単位データブロックに基づいて生成された処理ブロックのそれぞれを複数のスレッドＴ１〜Ｔ４の一部に処理させるとともに、複数のスレッドＴ１〜Ｔ４の残余のスレッドに、第２の単位データブロックに基づいて生成された処理ブロックを処理させる。
【００７４】
（作動）
次に、第２実施形態に係るデータ転送装置１の作動について、図９を参照しながら説明する。第２実施形態に係るデータ転送装置１は、図４に示したプログラムに代えて、図４のステップＳ１０６及びステップＳ１０７の間に、図９に示したステップＳ２０１〜ステップＳ２０５の処理を追加したプログラムを実行する。
【００７５】
いま、第１実施形態と同様に、図５に示したように、バッファ１３が単位データブロックＤＢ＃１〜ＤＢ＃８を記憶している場合を想定する。
この場合、データ転送装置１は、受信用通信ポートＲＰ３に対して最大の優先度を算出する（図４のステップＳ１０４）。
【００７６】
そして、データ転送装置１は、受信用通信ポートＲＰ３を選択し、選択された受信用通信ポートＲＰ３を経由して受信された複数の単位データからなる単位データブロックＤＢ＃３を取得する（図４のステップＳ１０５）。
【００７７】
次いで、データ転送装置１は、取得された単位データブロックＤＢ＃３を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックＤＢ＃３−１〜ＤＢ＃３−４を生成する（図４のステップＳ１０６）。
【００７８】
次いで、データ転送装置１は、図９のステップＳ２０１へ進み、処理ブロック数がスレッド数よりも少ないか否かを判定する。ここでは、処理ブロック数とスレッド数とが一致する。従って、データ転送装置１は、「Ｎｏ」と判定して図４のステップＳ１０７へ進む。
【００７９】
そして、データ転送装置１は、図１０の（Ａ）に示したように、生成された処理ブロックＤＢ＃３−１〜ＤＢ＃３−４のそれぞれを、生成された複数のスレッドＴ１〜Ｔ４に分散処理させる。
その後、データ転送装置１は、転送処理を実行し（図４のステップＳ１０８）、図４のステップＳ１０１へ戻る。
【００８０】
この時点では、バッファ１３は、図７に示したように、単位データブロックＤＢ＃１，ＤＢ＃２，ＤＢ＃４〜ＤＢ＃８を記憶している。
この場合、データ転送装置１は、受信用通信ポートＲＰ１に対して最大の優先度を算出する（図４のステップＳ１０４）。
【００８１】
そして、データ転送装置１は、受信用通信ポートＲＰ１を選択し、選択された受信用通信ポートＲＰ１を経由して受信された複数の単位データからなる単位データブロックＤＢ＃１を取得する（図４のステップＳ１０５）。
【００８２】
次いで、データ転送装置１は、取得された単位データブロックＤＢ＃１（即ち、第１の単位データブロック）を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックＤＢ＃１−１〜ＤＢ＃１−３を生成する（図４のステップＳ１０６）。
【００８３】
次いで、データ転送装置１は、図９のステップＳ２０１へ進み、処理ブロック数がスレッド数よりも少ないか否かを判定する。ここでは、処理ブロック数がスレッド数よりも少ない。従って、データ転送装置１は、「Ｙｅｓ」と判定して図９のステップＳ２０２へ進む。
【００８４】
そして、データ転送装置１は、図４のステップＳ１０５にて取得された単位データブロックＤＢ＃１（即ち、第１の単位データブロック）に対する、スレッドＴ１〜Ｔ３による転送準備処理が完了する将来の時点にて算出される予定の優先度を算出する。
【００８５】
具体的には、データ転送装置１は、バッファ１３から単位データブロックＤＢ＃１が消去された状態における通信ポート毎データ量を取得する（図９のステップＳ２０２）。更に、データ転送装置１は、取得された通信ポート毎データ量が大きくなるほど大きくなる優先度を複数の受信用通信ポートＲＰ１〜ＲＰ４のそれぞれに対して算出する（図９のステップＳ２０３）。このようにして、データ転送装置１は、上記将来の時点にて算出される予定の優先度を算出する。
【００８６】
そして、データ転送装置１は、算出された優先度が最大である受信用通信ポートＲＰ１〜ＲＰ４（ここでは、受信用通信ポートＲＰ４）を経由して受信された単位データからなる単位データブロックＤＢ＃４を第２の単位データブロックとして取得（選択）する（図９のステップＳ２０４）。
【００８７】
次いで、データ転送装置１は、取得された単位データブロックＤＢ＃４（第２の単位データブロック）を処理単位毎に分割することにより複数の処理ブロックＤＢ＃４−１〜ＤＢ＃４を生成する（図９のステップＳ２０５）。
【００８８】
そして、データ転送装置１は、図１０の（Ｂ）に示したように、単位データブロックＤＢ＃１（第１の単位データブロック）に基づいて生成された処理ブロックＤＢ＃１−１〜ＤＢ#１−３のそれぞれを複数のスレッドＴ１〜Ｔ４の一部のスレッドＴ１〜Ｔ３に処理させるとともに、複数のスレッドＴ１〜Ｔ４の残余のスレッドＴ４に、単位データブロックＤＢ＃４（第２の単位データブロック）に基づいて生成された処理ブロックＤＢ＃４−１を処理させる。
【００８９】
これにより、スレッドＴ１は、処理ブロックＤＢ＃１−１に対して転送準備処理を実行し、スレッドＴ２は、処理ブロックＤＢ＃１−２に対して転送準備処理を実行し、スレッドＴ３は、処理ブロックＤＢ＃１−３に対して転送準備処理を実行し、スレッドＴ４は、処理ブロックＤＢ＃４−１に対して転送準備処理を実行する（図４のステップＳ１０７）。
【００９０】
その結果、各スレッドＴ１〜Ｔ４は、単位データを出力する送信用通信ポートＳＰ１，ＳＰ２を特定するための通信ポート特定情報を出力する。そして、データ転送装置１は、通信ポート特定情報のそれぞれに対して転送処理を実行する（ステップＳ１０８）。
【００９１】
次に、データ転送装置１が図４のステップＳ１０７に進んだときには、データ転送装置１は、図１０の（Ｃ）に示したように、単位データブロックＤＢ＃４（第１の単位データブロック）に基づいて生成された処理ブロックＤＢ＃４−２〜ＤＢ#４−４のそれぞれを複数のスレッドＴ１〜Ｔ４の一部のスレッドＴ１〜Ｔ３に処理させるとともに、複数のスレッドＴ１〜Ｔ４の残余のスレッドＴ４に、単位データブロックＤＢ＃２（第２の単位データブロック）に基づいて生成された処理ブロックＤＢ＃２−１を処理させる。
【００９２】
これにより、スレッドＴ１は、処理ブロックＤＢ＃４−２に対して転送準備処理を実行し、スレッドＴ２は、処理ブロックＤＢ＃４−３に対して転送準備処理を実行し、スレッドＴ３は、処理ブロックＤＢ＃４−４に対して転送準備処理を実行し、スレッドＴ４は、処理ブロックＤＢ＃２−１に対して転送準備処理を実行する（図４のステップＳ１０７）。
【００９３】
その結果、各スレッドＴ１〜Ｔ４は、単位データを出力する送信用通信ポートＳＰ１，ＳＰ２を特定するための通信ポート特定情報を出力する。そして、データ転送装置１は、通信ポート特定情報のそれぞれに対して転送処理を実行する（ステップＳ１０８）。
【００９４】
以上、説明したように、本発明の第２実施形態に係るデータ転送装置１は、第１の単位データブロックから複数の処理ブロックを生成した場合において、処理ブロック数がスレッド数よりも少ない場合、当該生成された処理ブロックのそれぞれを複数のスレッドＴ１〜Ｔ４の一部に処理させるとともに、複数のスレッドＴ１〜Ｔ４の残余のスレッドに、第２の単位データブロックを処理させる。
【００９５】
これによれば、単位データブロックに含まれる単位データの数（又は、データ量）が少ない場合であっても、スレッドにおいて、いずれの処理も実行していない空転時間（無駄な時間）が生じることを防止することができる。この結果、単位データに対する処理（転送準備処理）をより一層迅速に完了することができる。
【００９６】
更に、本発明の第２実施形態に係るデータ転送装置１は、第１の単位データブロックに対する処理が完了する将来の時点にて算出される予定の優先度を算出し、当該算出された優先度が最大である通信ポートＲＰ１〜ＲＰ４を経由して受信された単位データからなる単位データブロックを第２の単位データブロックとして選択する。
【００９７】
これによれば、ある通信ポートＲＰ１〜ＲＰ４を経由して、単位時間あたりに受信される単位データのデータ量が過大である場合であっても、当該単位データの遅延時間（転送処理に要する時間）が過大となることをより一層確実に回避することができる。
【００９８】
＜第３実施形態＞
次に、本発明の第３実施形態に係るデータ転送装置について図１１を参照しながら説明する。
第３実施形態に係るデータ転送装置１００は、
複数の通信ポートと、
上記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成部（スレッド生成手段）１０１と、
上記複数の通信ポートの１つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる処理制御部（処理制御手段）１０２と、
を備える。
【００９９】
これによれば、単位データブロックに含まれる単位データの数が相対的に多い通信ポートに係る転送準備処理の完了が無駄に遅くることを防止することができる。その結果、この通信ポートを経由して受信した単位データの遅延時間（転送処理に要する時間）が無駄に長くなることを防止することができる。このように、データ転送装置１００によれば、単位データに対する処理（転送準備処理）を迅速に完了することができる。
【０１００】
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
【０１０１】
例えば、上記各実施形態においては、受信用通信ポートＲＰ１〜ＲＰ４の数と、生成されるスレッドの数と、が一致していたが、異なっていてもよい。
【０１０２】
なお、上記各実施形態においてデータ転送装置１の各機能は、ＣＰＵがプログラム（ソフトウェア）を実行することにより実現されていたが、回路等のハードウェアにより実現されていてもよい。
【０１０３】
また、上記各実施形態においてプログラムは、記憶装置に記憶されていたが、コンピュータが読み取り可能な記録媒体に記憶されていてもよい。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【０１０４】
また、上記実施形態の他の変形例として、上述した実施形態及び変形例の任意の組み合わせが採用されてもよい。
【０１０５】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のように記載され得るが、以下には限られない。
【０１０６】
（付記１）
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
前記複数の通信ポートの１つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる処理制御手段と、
を備えるデータ転送装置。
【０１０７】
これによれば、単位データブロックに含まれる単位データの数が相対的に多い通信ポートに係る転送準備処理の完了が無駄に遅くることを防止することができる。その結果、この通信ポートを経由して受信した単位データの遅延時間（転送処理に要する時間）が無駄に長くなることを防止することができる。このように、上記データ転送装置によれば、単位データに対する処理（転送準備処理）を迅速に完了することができる。
【０１０８】
（付記２）
付記１に記載のデータ転送装置であって、
前記処理制御手段は、前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させるように構成され、
前記設定された入力順位がより高いスレッドにより処理された単位データをより早期に送信する単位データ送信手段を備えるデータ転送装置。
【０１０９】
これによれば、単位データが受信された順序を変更することなく、単位データを送信（転送）することができる。
【０１１０】
（付記３）
付記１又は付記２に記載のデータ転送装置であって、
前記処理制御手段は、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させるように構成されたデータ転送装置。
【０１１１】
これによれば、ある通信ポートを経由して、単位時間あたりに受信される単位データのデータ量が過大である場合であっても、当該単位データの遅延時間（転送処理に要する時間）が過大となることを回避することができる。
【０１１２】
（付記４）
付記３に記載のデータ転送装置であって、
前記処理制御手段は、
前記取得されたデータ量が大きくなるほど大きくなる優先度を算出し、当該算出された優先度が最大である通信ポートを経由して受信された単位データからなる単位データブロックを前記複数のスレッドに処理させるように構成されたデータ転送装置。
【０１１３】
（付記５）
付記４に記載のデータ転送装置であって、
前記処理制御手段は、
第１の単位データブロックを前記処理単位毎に分割することにより複数の処理ブロックを生成するとともに、当該生成された処理ブロックの数が、前記生成されたスレッドの数よりも少ない場合、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドの一部に処理させるとともに、当該生成された複数のスレッドの残余のスレッドに、第２の単位データブロックを処理させるように構成されたデータ転送装置。
【０１１４】
これによれば、単位データブロックに含まれる単位データの数（又は、データ量）が少ない場合であっても、スレッドにおいて、いずれの処理も実行していない空転時間（無駄な時間）が生じることを防止することができる。この結果、単位データに対する処理（転送準備処理）をより一層迅速に完了することができる。
【０１１５】
（付記６）
付記５に記載のデータ転送装置であって、
前記処理制御手段は、
前記第１の単位データブロックに対する処理が完了する将来の時点にて算出される予定の優先度を算出し、当該算出された優先度が最大である通信ポートを経由して受信された単位データからなる単位データブロックを前記第２の単位データブロックとして選択するように構成されたデータ転送装置。
【０１１６】
これによれば、ある通信ポートを経由して、単位時間あたりに受信される単位データのデータ量が過大である場合であっても、当該単位データの遅延時間（転送処理に要する時間）が過大となることをより一層確実に回避することができる。
【０１１７】
（付記７）
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に適用され、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成し、
前記複数の通信ポートの１つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる、データ転送方法。
【０１１８】
（付記８）
付記７に記載のデータ転送方法であって、
前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させ、
前記設定された入力順位がより高いスレッドによって処理された単位データをより早期に送信する、データ転送方法。
【０１１９】
（付記９）
付記７又は付記８に記載のデータ転送方法であって、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させる、データ転送方法。
【０１２０】
（付記１０）
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
前記複数の通信ポートの１つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる処理制御手段と、
を実現させるためのプログラム。
【０１２１】
（付記１１）
付記１０に記載のプログラムであって、
前記処理制御手段は、前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させるように構成され、
前記データ転送装置に、更に、
前記設定された入力順位がより高いスレッドにより処理された単位データをより早期に送信する単位データ送信手段を実現させるためのプログラム。
【０１２２】
（付記１２）
付記１０又は付記１１に記載のプログラムであって、
前記処理制御手段は、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させるように構成されたプログラム。
【産業上の利用可能性】
【０１２３】
本発明は、データを転送する、レイヤ３スイッチ、又は、ルータ等に適用可能である。
【符号の説明】
【０１２４】
１      データ転送装置
１１    ＣＰＵ
１２    メモリ
１３    バッファ
２１    スレッド生成部
２２    処理制御部
２３    単位データ送信部
１００  データ転送装置
１０１  スレッド生成部
１０２  処理制御部
ＲＰ１，ＲＰ２，ＲＰ３，ＲＰ４，ＳＰ１，ＳＰ２  通信ポート
【図１】
0005573440.tif 000002
【図２】
0005573440.tif 000003
【図３】
0005573440.tif 000004
【図４】
0005573440.tif 000005
【図５】
0005573440.tif 000006
【図６】
0005573440.tif 000007
【図７】
0005573440.tif 000008
【図８】
0005573440.tif 000009
【図９】
0005573440.tif 000010
【図１０】
0005573440.tif 000011
【図１１】
0005573440.tif 000012