(57)【要約】【課題】メモリ上にて作成されたパケット・データの転送効率を向上させる。【解決手段】本発明に係るデータ転送システムは、パケット・データを生成する作業領域であるメモリと、パケット・データを通信装置へ転送するＤＭＡ転送装置と、パケット・データをネットワークへ送信する通信装置とがバスで接続され、バスの最大転送データ単位でデータ転送されるデータ転送システムであって、ＤＭＡ転送装置は、メモリで生成され他装置に転送するためのパケット・データを取得し、最大転送データ単位に基づき、該パケット・データのヘッダ情報を解析することにより、ヘッダ／データ間及びデータ／フッタ間における無効データの有無を解析するパケット解析手段と、パケット・データ内の無効データを削除するとともに、ヘッダ及び該無効データに後続するデータの連結と、データ及び該無効データに後続するフッタの連結とを行う無効データ削除手段とを有する。【選択図】図１０
2013021501.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵがヘッダ、データ及びフッタからなるパケット・データを生成する作業領域であるメモリと、パケット・データを通信装置へ転送するＤＭＡ転送装置と、パケット・データをネットワークへ送信する通信装置とがバスで接続され、前記バスの最大転送データ単位でデータ転送されるデータ転送システムであって、
前記ＤＭＡ転送装置は、
前記メモリで生成され他装置に転送するためのパケット・データを取得し、前記最大転送データ単位に基づき、該パケット・データのヘッダ情報を解析することにより、ヘッダ／データ間及びデータ／フッタ間における無効データの有無を解析するパケット解析手段と、
パケット・データ内の前記無効データを削除するとともに、ヘッダ及び該無効データに後続するデータの連結と、データ及び該無効データに後続するフッタの連結とを行う無効データ削除手段と、
を有することを特徴とするデータ転送システム。
【請求項２】
受信パケットを他装置に転送するとき、
ＣＰＵが前記メモリ上において、ヘッダ／フッタが付加されたままの前記受信パケットに対し、他装置に転送するためのヘッダ／フッタを付加することにより、前記パケット・データを生成するパケット生成手段と、
を有し、
前記パケット解析手段は、さらに前記受信パケットのヘッダ情報を解析することにより、前記受信パケットのヘッダ／フッタを含むヘッダ／データ間及びデータ／フッタ間における無効データの有無を解析すること、
を特徴とする請求項１に記載のデータ転送システム。
【請求項３】
ＣＰＵがヘッダ、データ及びフッタからなるパケット・データを生成する作業領域であるメモリと、パケット・データを通信装置へ転送するＤＭＡ転送装置と、パケット・データをネットワークへ送信する通信装置とがバスで接続され、前記バスの最大転送データ単位でデータ転送されるデータ転送システムにおけるデータ転送方法であって、
前記ＤＭＡ転送装置は、
前記メモリで生成され他装置に転送するためのパケット・データを取得し、前記最大転送データ単位に基づき、該パケット・データのヘッダ情報を解析することにより、ヘッダ／データ間及びデータ／フッタ間における無効データの有無を解析するパケット解析手順と、
パケット・データ内の前記無効データを削除するとともに、ヘッダ及び該無効データに後続するデータの連結と、データ及び該無効データに後続するフッタの連結とを行う無効データ削除手順と、
を有することを特徴とするデータ転送方法。
【請求項４】
受信パケットをネットワーク上の他装置に転送するとき、
ＣＰＵが前記メモリ上において、ヘッダ／フッタが付加されたままの前記受信パケットに対し、他装置に転送するためのヘッダ／フッタを付加することにより、前記パケット・データを生成するパケット生成手順と、
を有し、
前記パケット解析手順は、さらに前記受信パケットのヘッダ情報を解析することにより、前記受信パケットのヘッダ／フッタを含むヘッダ／データ間及びデータ／フッタ間における無効データの有無を解析すること、
を特徴とする請求項１に記載のデータ転送方法。
【請求項５】
請求項３又は４記載のデータ転送方法をコンピュータに実行させるためのデータ転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送システム、データ転送方法及びデータ転送プログラムの分野に関する。
【背景技術】
【０００２】
Ethernet（登録商標）やPCI Express（登録商標）のような通信規格において、その送受信は、ヘッダ／データ部分（転送データ）／フッタから構成されるパケット単位で行われる。ヘッダにはパケットに関する情報（宛先や送信元アドレス、データ長等）が、フッタには通信の信頼性を上げるための情報（エラー訂正等）が格納されている。例えば図１は、Ethernet（ver2）パケットを示す図の一例である。図に示されるように、Ethernet（ver2）パケットは、データ部分はヘッダ／フッタによりカプセル化されてからネットワークへ送出される。
【０００３】
この種のパケットは、送信の場合、ＣＰＵ（Central Processing Unit）により送信側のメモリ上で作成された後、ＤＭＡコントローラ（Direct Memory Access controller）によりメモリから通信装置（送信装置）へ転送される。その後通信装置は、送信バッファにバッファされたパケットをネットワークへ送出する。ここで、ＤＭＡコントローラは、マザーボード上にある各種の装置やメモリがＣＰＵを介すことなくデータ転送を行うＤＭＡ転送において通信の制御を行う専用ＬＳＩである（例えば特許文献１）。
【０００４】
図２は、従来例のパケット作成〜パケット送出迄の流れを示す模式図（その１）である。図を参照しながら説明する。
【０００５】
（１）まずＣＰＵはメモリ上において、転送データに対しヘッダ、フッタを付加的に作成する。ここで各装置を相互に接続するバスは、４バイトのバス幅を有し、最大１回につき４バイト単位でデータ転送を行えるものとする。いうまでもなく転送時間を短縮すべく、最大の４バイト単位でデータ転送を行う。
【０００６】
図３は、ＣＰＵによるメモリ上でのパケット作成を示す模式図（その１）である。例えばここでは仮に、転送データのデータ長が３６バイトであり、送信ヘッダが１２バイト、送信フッタが４バイトのプロトコルであるものとすると、メモリ上、転送データに対し、送信ヘッダと送信フッタとがバス幅の４バイト単位でデータが書き込まれてゆき（転送されてゆき）、最終的にヘッダ／データ部分／フッタから構成されるパケットが生成される。
【０００７】
（２）次にＤＭＡコントローラは装置内のデータ転送を担うので、ＤＭＡコントローラは、メモリ上から生成されたパケットを通信装置へ移動する。ここでもバス幅に従い４バイト単位でデータ転送を行う。
【０００８】
図４は、ＤＭＡによるデータ転送を示す模式図（その１）である。図に示されるように、ＤＭＡコントローラ（DMA転送部）はメモリからパケットをリードし、内部のＦＩＦＯへパケットを格納する。通信装置は、通信装置の送信バッファに空きがある状態になると、ＤＭＡコントローラに対し送信バッファへのデータ転送要求（REQ）を行う。ＤＭＡコントローラはこの要求に応じ(ACK)、送信バッファへパケット(DATA)を転送する。
【０００９】
（３）通信装置は、送信バッファに転送されたパケットをネットワークへ送出する。つまりパケットはそのヘッダの宛先アドレスに従いその送信先へ送信される。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、（１）において、ＣＰＵがメモリ上にて転送データに対しヘッダ、フッタを作成する際、使用されるプロトコルやデータ長によっては、バス幅との兼ね合いから次に示す事象が生じうる。
【００１１】
図５は、従来例のパケット作成〜パケット送出迄の流れを示す模式図（その２）である。図を参照しながら説明する。
【００１２】
（１）まずＣＰＵはメモリ上において、転送データに対しヘッダ、フッタを作成する。ここで各装置を相互に接続するバスは、４バイトのバス幅を有し、最大の４バイト単位でデータ転送を行う。
【００１３】
図６は、ＣＰＵによるメモリ上でのパケット作成を示す模式図（その２）である。例えばここでは仮に、転送データのデータ長が３４バイトであり、送信ヘッダが１０バイト、送信フッタが４バイトのプロトコルであるものとすると、メモリ上、転送データに対し、送信ヘッダと送信フッタとがバス幅の４バイト単位でデータが書き込まれてゆき（転送されてゆき）、最終的にヘッダ／データ部分／フッタから構成されるパケットが生成される。しかしながらこのとき、バス幅の４バイト単位との兼ね合いから、この場合、送信ヘッダ１０バイトに対し４バイト単位で転送され、また転送データ３４バイト対し４バイト単位で転送されたため、図に示されるように、送信ヘッダと転送データ、及び転送データと送信フッタ間において隙間（無効データ）が２バイト分生じている。
【００１４】
図７は、隙間（無効データ）が生じたパケットを別の角度から示す模式図（その１）である。図に示されるように、送信ヘッダと転送データ、及び転送データと送信フッタ間において隙間（無効データ）が２バイト分生じている。送信ヘッダと転送データ、又は転送データと送信フッタ間は連続的に並んでいる必要があるので、隙間により連続的に並ばない場合には、連続的に並ぶよう転送データの再配置が必要である。
【００１５】
（１−２）つまり送信ヘッダと転送データ、又は転送データと送信フッタ間が、連続的に並ばない場合には、ＤＭＡコントローラを使用して転送データの再配置処理を行う。
【００１６】
（２）次は同様に、ＤＭＡコントローラは、メモリ上から再配置されたパケットを通信装置へ移動する。ここでもバス幅に従い４バイト単位でデータ転送を行う。
【００１７】
（３）また同様に、転送装置は、送信バッファに転送されたパケットをネットワークへ送出する。つまりパケットはそのヘッダの宛先アドレスに従いその送信先へ送信される。
【００１８】
このように、使用されるプロトコルやデータ長によっては、バス幅との兼ね合いから、ＣＰＵがメモリ上にて作成したパケットに対し再配置処理（負荷処理である）が必要となるが、再配置処理においては、上述の隙間を埋めるために、再びバス幅より小さな単位（例えば２バイト単位）で転送を行う必要があり、転送回数は本来のバス幅単位の転送回数より多くなる。例えば、３２バイトのデータを転送しバス幅が４バイト（３２ビット）の場合、最大の４バイト単位でデータ転送を行うと８回の転送で完了できるが、２バイト単位でデータ転送を行うと１６回の転送となり、転送回数が多いほど転送時間がかかってしまう。
【００１９】
一方、負荷処理である再配置処理を回避するため、上述の隙間ができないよう最初から１回あたりの転送ビット幅を小さくすることが可能である。
【００２０】
図８は、ＣＰＵによるメモリ上でのパケット作成を示す模式図（その２）である。図６と同様、例えばここでは仮に、転送データのデータ長が３４バイトであり、送信ヘッダが１０バイト、送信フッタが４バイトのプロトコルであるものとする。ここで、バス幅は４バイトであるものの、１回につき２バイト単位でデータ転送を行う。すると、メモリ上、バス幅の２バイト単位でデータが書き込まれてゆき（転送されてゆき）、最終的にヘッダ／データ部分／フッタから構成されるパケットが生成される。この場合、送信ヘッダ１０バイトに対し２バイト単位で転送され、また転送データ３４バイト対し２バイト単位で転送されたため、上述の隙間なくパケットが生成される。つまり送信ヘッダの後、続けて転送データの２バイト分を詰めることができ、結果、送信ヘッダと転送データ、及び転送データと送信フッタ間は連続的に並んでいるので、上述の再配置は不要である。
【００２１】
図９は、隙間（無効データ）が生じないパケットを別の角度から示す模式図（その２）である。図に示されるように、送信ヘッダと転送データ、及び転送データと送信フッタ間において隙間（無効データ）は生じていない。送信ヘッダと転送データ、又は転送データと送信フッタ間は連続的に並んでいるので、上述の再配置は不要である。
【００２２】
しかしながら、このケースでは、１回あたりの転送ビット幅、つまり転送単位（例えば２バイト）を小さくすることにより再配置処理を回避するが、その分バス幅単位（例えば４バイト）での転送回数よりも、その転送回数が増えてしまう。また転送回数が多いほど転送時間がかかる。転送はバス幅単位で転送を行う時が最も転送時間を短縮できるからである。また転送回数や転送時間が増えると、その際バスは占有されるので、他の転送処理にバスを使用することができなくなる。
【００２３】
以上、転送効率を最大化すべくバス幅単位で転送を行うと、ときに上述の再配置処理が発生し、再配置処理を回避すべく転送ビット幅を小さくすると、転送効率が低下するという問題があった。
【００２４】
そこで本発明では上記のような問題に鑑み、メモリ上にて作成されたパケット・データの転送効率を向上させるデータ転送システム、データ転送方法及びデータ転送プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２５】
そこで上記課題を解決するため、本発明に係るデータ転送システムは、ＣＰＵがヘッダ、データ及びフッタからなるパケット・データを生成する作業領域であるメモリと、パケット・データを通信装置へ転送するＤＭＡ転送装置と、パケット・データをネットワークへ送信する通信装置とがバスで接続され、前記バスの最大転送データ単位でデータ転送されるデータ転送システムであって、前記ＤＭＡ転送装置は、前記メモリで生成され他装置に転送するためのパケット・データを取得し、前記最大転送データ単位に基づき、該パケット・データのヘッダ情報を解析することにより、ヘッダ／データ間及びデータ／フッタ間における無効データの有無を解析するパケット解析手段と、パケット・データ内の前記無効データを削除するとともに、ヘッダ及び該無効データに後続するデータの連結と、データ及び該無効データに後続するフッタの連結とを行う無効データ削除手段と、を有することを特徴とする。
【００２６】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、などに適用したものも本発明の態様として有効である。
【発明の効果】
【００２７】
本発明によれば、メモリ上にて作成されたパケット・データの転送効率を向上させるデータ転送システム、データ転送方法及びデータ転送プログラムを提供することができる。
【図面の簡単な説明】
【００２８】
【図１】Ethernet（ver2）パケットを示す図の一例である。
【図２】従来例のパケット作成〜パケット送出迄の流れを示す模式図（その１）である。
【図３】ＣＰＵによるメモリ上でのパケット作成を示す模式図（その１）である。
【図４】ＤＭＡによるデータ転送を示す模式図（その１）である。
【図５】従来例のパケット作成〜パケット送出迄の流れを示す模式図（その２）である。
【図６】ＣＰＵによるメモリ上でのパケット作成を示す模式図（その２）である。
【図７】隙間（無効データ）が生じたパケットを別の角度から示す模式図（その１）である。
【図８】ＣＰＵによるメモリ上でのパケット作成を示す模式図（その２）である。
【図９】隙間（無効データ）が生じないパケットを別の角度から示す模式図（その２）である。
【図１０】本実施形態に係るデータ転送システム１００のシステム構成図である。
【図１１】本実施形態に係るデータ転送システム１００のパケット解析処理を説明するフローチャートである。
【図１２】ＦＩＦＯ２３に格納されたパケットがパケット解析部２４を通過する様子を説明した図である。
【図１３】本実施形態に係るデータ転送システム１００の無効データ削除処理及び連結処理を説明するフローチャートである。
【図１４】ＦＩＦＯ２３に格納されたパケットが無効データ削除部２５を通過する際の無効データ削除及び連結処理を説明した図（その１）である。
【図１５】ＦＩＦＯ２３に格納されたパケットが無効データ削除部２５を通過する際の無効データ削除及び連結処理を説明した図（その２）
【図１６】本実施形態に係るパケット作成〜パケット送出迄の流れを示す模式図である。
【図１７】上述実施形態のＣＰＵによるメモリ上での受信パケットの転送を示す模式図である。
【図１８】本応用例のＣＰＵによるメモリ上での受信パケットの転送を示す模式図である。
【発明を実施するための形態】
【００２９】
本発明を実施するための形態を各実施形態において図面を用いて説明する。
【００３０】
[システム構成]
図１０は、本実施形態に係るデータ転送システム１００のシステム構成図である。本実施形態に係るデータ転送システム１００は、メモリ１０、ＤＭＡ転送装置２０、通信装置３０がバス４０で接続され構成される。
【００３１】
メモリ１０は、ＣＰＵがヘッダ、転送データ及びフッタからなるパケット・データを生成する作業領域である。例えばＲＡＭ（Random Access Memory）等により実現される。
【００３２】
ＤＭＡ転送装置２０は、本実施形態においてパケット（パケット・データ）をメモリ１０から通信装置３０へ転送する。ＤＭＡ転送装置２０のＤＭＡコントローラ２２は、通信装置３０からの送信バッファ３１へのデータ転送要求（REQ）を受信すると、この要求に応じ(ACK)、通信装置３０の送信バッファへパケット(DATA)を転送する。
【００３３】
通信装置３０は、パケットをネットワークへ送信する。本実施形態に係る通信装置３０は、送信バッファ３１を備え、送信バッファ３１に空きがある状態になると、ＤＭＡコントローラ２２に対し送信バッファ３１へのデータ転送要求（REQ）を行う。ＤＭＡコントローラはこの要求に応じ(ACK)、送信バッファへパケット(DATA)を転送する。通信コントローラ３２はパケットをネットワークへ送信する。
【００３４】
バス４０は、各装置を相互に接続するバスである。本実施形態に係るバス４０は４バイトのバス幅を有し、最大１回につき４バイト単位でデータ転送を行えるものとし、また転送時間を短縮すべく最大の４バイト単位でデータ転送を行う。
【００３５】
また本実施形態に係るＤＭＡ転送装置２０は、図に示されるように、レジスタ２１、ＤＭＡコントローラ２２、ＦＩＦＯ２３、パケット解析部２４、無効データ削除部２５を含み構成される。
【００３６】
レジスタ２１は、レジスタはＤＭＡコントローラ２２が内部に保持する少量で高速な記憶装置である。レジスタ２１は、計算結果を一時的に保持したり、メモリ１０のパケットを読み書きする際のアドレスを保持したり、その他転送に関する情報を保持・変更したりする。
【００３７】
ＤＭＡコントローラ２２は、上述の如く基盤（マザーボード）上にある各種の装置やメモリがＣＰＵを介すことなくデータ転送を行うＤＭＡ転送において通信の制御を行う専用ＬＳＩである。本実施形態においては、ＤＭＡ転送装置２０を介してパケットをメモリ１０から通信装置３０へ転送するが、ＤＭＡコントローラ２２はこの転送に係る制御を担う。
【００３８】
ＦＩＦＯ２３は、メモリ１０からリードされたパケットを格納するキューである。ＤＭＡコントローラ２２は、パケットをメモリ１０からＦＩＦＯ２３へリードし、通信装置３０からのデータ転送要求に応じて、ＦＩＦＯ２３に格納されたパケットを通信装置３０の送信バッファ３１へ転送する。
【００３９】
パケット解析部２４は、ＤＭＡコントローラ２２がＦＩＦＯ２３に格納されたパケットを通信装置３０の送信バッファ３１へ転送する際、このパケットを取得し、バス４０の最大転送データ単位に基づき、パケット・データのヘッダ情報を解析することにより、ヘッダ／転送データ間及び転送データ／フッタ間における無効データの有無を解析する。この点、詳細は再度後述する。
【００４０】
無効データ削除部２５は、パケット解析部２４によりヘッダ／転送データ間及び転送データ／フッタ間における無効データの存在が確認されると、パケット・データ内のその無効データを削除するとともに、ヘッダと該無効データに後続するデータとの連結及びデータと該無効データに後続するフッタとの連結を行う。つまり無効データの存在が確認された場合、パケットは無効データ削除処理及び連結処理がなされてから通信装置３０の送信バッファ３１へ転送される。この点、詳細は再度後述する。
【００４１】
また本実施形態に係る通信装置３０は、図に示されるように、送信バッファ３１、通信コントローラ３２を含み構成される。送信バッファ３１は、ＤＭＡ転送装置２０からネットワークへ送出すべきパケットを格納する。通信コントローラ３２は、送信バッファ３１に空きがある状態になると、ＤＭＡコントローラ２２に対し送信バッファ３１へのデータ転送要求（REQ）を行う。また送信バッファ３１のパケットをネットワークへ送出する制御を行う。
【００４２】
なお上述のパケット解析部２４及び無効データ削除部２５は、例えばＤＭＡ転送装置２０内に備えるパケット解析回路及び無効データ削除回路によっても実現でき、また例えばＤＭＡコントローラ２２が実行するパケット解析プログラム及び無効データ削除プログラムにより実現することが可能である。なおまた、本実施形態に係るデータ転送システム１００は、ＳｏＣ（System on a chip）と呼ばれる１つの集積回路上に必要な一連の機能（システム）を集積する集積回路の設計手法により、上述のメモリ１０、ＤＭＡ転送装置２０、通信装置３０を含めて１つのＬＳＩ内部に構成することもできる。
【００４３】
[情報処理]
図１１は、本実施形態に係るデータ転送システム１００のパケット解析処理を説明するフローチャートである。上述の如く、通信装置３０の通信コントローラ３２は、送信バッファ３１に空きがある状態になると、ＤＭＡコントローラ２２に対し送信バッファ３１へのデータ転送要求（REQ）を行い、ＤＭＡコントローラ２２はこのデータ転送要求に応じて、ＦＩＦＯ２３に格納されたパケットを通信装置３０の送信バッファ３１へ転送する。このときまずパケット解析部２４は、ＤＭＡコントローラ２２がＦＩＦＯ２３に格納されたパケットを通信装置３０の送信バッファ３１へ転送する際、このパケットのヘッダ／転送データ間及び転送データ／フッタ間における無効データの有無を解析する。
【００４４】
またここでは、説明上の前提として、メモリ１０上で作成されたパケットは、図６、７に示されるように、送信ヘッダと転送データ、及び転送データと送信フッタ間において隙間（無効データ）が２バイト分生じているものとする。また上述の再配置処理は行われていないものとする。つまり、このパケットはメモリ１０からＦＩＦＯ２３へ、ＦＩＦＯ２３から通信装置３０の送信バッファ３１へデータ転送されるが、このパケットは、図７に示されるように、パケットのヘッダ／転送データ間及び転送データ／フッタ間における無効データ（隙間）が存在している。仮にこの状態のままで通信装置３０は宛先にそのパケットを送出できない。図面を参照しながら説明する。
【００４５】
Ｓ１：パケット解析部２４は、ＦＩＦＯ２３からパケット・データが連続的に転送されてくるので、その転送中のデータ部分がヘッダであるかどうかを判定する。ヘッダであった場合、ヘッダ情報を読み込む。ヘッダ情報を解析するためである。なおヘッダかどうかの判定は例えばイーサネット（登録商標）のフレームの場合、ヘッダの前にはプリアンブルが付加されているので、このプリアンブル等を元に判定できるし、またそれ以外の方法によってもよい。
【００４６】
Ｓ２：次にパケット解析部２４は、ヘッダ情報を解析し、プロトコルを判定する（Ｓ２−１）。ヘッダ情報によればそのプロトコルの種類が判定でき、またプロトコルの種類が判定できれば、そのプロトコルに応じたヘッダ長、フッタ長のサイズも判定できる（Ｓ２−２）。ここでまた、上述の如く４バイト単位でデータ転送を行っているので、ヘッダと転送データ間の無効データサイズも取得できる（Ｓ２−３）。
【００４７】
図１２は、ＦＩＦＯ２３に格納されたパケットがパケット解析部２４を通過する様子を説明した図（その１）である。ＦＩＦＯ２３に格納されたパケットが通信装置３０の送信バッファ３１へ４バイト単位でデータ転送される過程において、パケット解析部２４を通過する際、パケット解析部２４は、（１）〜（３）にてヘッダ情報を読み込みきれるので、この時点でプロトコルの種類、そのプロトコルに応じたヘッダ長、フッタ長、及びヘッダと転送データ間の無効データサイズ判定できる。具体的に、３回目の（３）を読み込んだ時点で、プロトコルの種類は例えばＸであると判定し、そのプロトコルのヘッダ長は１０バイト、フッタ長は４バイトと判定したとする（併せて図６、７参照）。
【００４８】
そして（３）を読み込んだ時点で、４バイト単位でデータ転送を行っていることからすると、合計１２バイトのパケット（一部）がパケット解析部２４を通過し転送されることになるが、プロトコルのヘッダ長は１０バイトであるので、（３）で読み込んだデータにヘッダと転送データ間の無効データの存在（サイズ２バイト分）を判定できる。また図のＡ５までがヘッダであることを判定できる。
【００４９】
Ｓ３：次にパケット解析部２４は、ヘッダ情報を解析し、ヘッダ、フッタ間の転送データのデータ長を判定する（Ｓ３−１）。ヘッダ情報によればそのパケットによる転送データのデータ長を判定できる。ここではデータ長は３４バイトと判定したとする（併せて図６、７参照）。また転送データのデータ長が判定できれば、上述の如く４バイト単位でデータ転送を行っているので、フッタと転送データ間の無効データサイズも取得できる（Ｓ３−２）。
【００５０】
再び図１２を参照する。（１２）を見ると、４バイト単位でデータ転送を行っていることからすると、データ長は３４バイトであるので、（１２）で読み込んだデータにフッタと転送データ間の無効データの存在（サイズ２バイト分）を判定できる。また図のＢ１７までが転送データであることを判定できる。
【００５１】
以上の通り、ＦＩＦＯ２３から通信装置３０の送信バッファ３１へデータ転送されるパケットについて解析が行われる。パケット解析部２４は（３）の４バイトのデータを読み込めばヘッダ情報を解析することができ、この時点で上述の解析結果を得る。（３）の４バイトのデータはパケット解析部２４を通過し次ぐ無効データ削除部２５に転送されるが（図１０参照）、このときパケット解析部２４はここで得た解析結果を無効データ削除部２５に渡すようにする。具体的に例えば、（３）の４バイトのデータ内に無効データあり、無効データサイズ２はバイト、上位２バイトまでがヘッダ、下位２バイトが無効データである旨、また（１２）の４バイトのデータ内に無効データあり、無効データサイズ２はバイト、上位２バイトまでが転送データ、下位２バイトが無効データである旨、解析結果として無効データ削除部２５に渡すことができる。
【００５２】
なお、パケット解析部２４は無効データが存在する場合にのみ、解析結果を無効データ削除部２５に渡すようにしてもよい。無効データが存在しない場合、無効データ削除部２５は何ら機能しなくてよいからである（例えば図３のケース）。
【００５３】
図１３は、本実施形態に係るデータ転送システム１００の無効データ削除処理及び連結処理を説明するフローチャートである。上述の如く、無効データ削除部２５は、パケット解析部２４において無効データの存在が確認された場合、パケットに対し無効データ削除処理及び連結処理を行う。以下図面を参照しながら説明する。
【００５４】
Ｓ１１：無効データ削除部２５は、無効データの有無を確認する。無効データが存在する場合、無効データを削除するからである。無効データの有無は、上述の如くパケット解析部２４からの解析結果により判定する。無効データが存在しない場合、無効データ削除部２５は何ら機能しない。
【００５５】
Ｓ１２：無効データ削除部２５は、無効データが存在する場合、無効データ削除、連結処理を行う。ここでは、パケット解析部２４から、上述の如く例えば（３）の４バイトのデータ内に無効データあり、無効データサイズ２はバイト、上位２バイトまでがヘッダ、下位２バイトが無効データである旨、また（１２）の４バイトのデータ内に無効データあり、無効データサイズ２はバイト、上位２バイトまでが転送データ、下位２バイトが無効データである旨の解析結果を得たものとする。
【００５６】
図１４は、ＦＩＦＯ２３に格納されたパケットが無効データ削除部２５を通過する際の無効データ削除及び連結処理を説明した図（その１）である。
【００５７】
まず（１）〜（２）では、ＦＩＦＯ２３に格納されたパケットの一部データ（「Ａ１」＋「Ａ２」、「Ａ３」＋「Ａ４」）がＦＩＦＯ２３からパケット解析部２４を通過してパケットが無効データ削除部２５を通過し、送信バッファ３１へ転送されていく。無効データ削除部２５はこの時点では解析結果を得ていないからである。
【００５８】
（３）では、ＦＩＦＯ２３からパケット解析部２４を通過してパケットの一部のデータ（「Ａ５」＋「無効データ」）が転送されてくるが、このとき併せて無効データ削除部２５はこの時点で解析結果を得る。つまり（３）のデータ内に無効データの存在を認識する。
【００５９】
無効データ削除部２５は、この無効データの存在するデータ（「Ａ５」＋「無効データ」）に後続のデータ（「Ｂ１」＋「Ｂ２」）を取得し読み込む。そして「無効データ」部分を削除（破棄）し、後続の「Ｂ１」を２バイト分詰めて連結させる。その結果として、データ（「Ａ５」＋「Ｂ１」）が生成されるので、無効データ削除部２５はこれを送信バッファ３１へ転送する。
【００６０】
（４）では、（３）の無効データ削除処理及び連結処理により、２バイト分ずれが生じているので、以降は２バイト分前に詰めてデータを生成し、送信バッファ３１へ転送していく。具体的に、（４）では、データ（「Ｂ１」＋「Ｂ２）と、後続のデータ（「Ｂ３」＋「Ｂ４」）を取得し読み込む。そして「Ｂ１」は既に転送済みであるので、図のように２バイト分を詰めて連結させる。その結果、データ（「Ｂ２」＋「Ｂ３」）が生成されるので、無効データ削除部２５はこれを送信バッファ３１へ転送する。これにより、送信ヘッダと転送データ間は連続的に並んでいる必要があるところ、無効データ削除処理及び連結処理により、無効データ（隙間）は削除され、送信ヘッダと転送データが連続的に並ぶ。
【００６１】
図１５は、ＦＩＦＯ２３に格納されたパケットが無効データ削除部２５を通過する際の無効データ削除及び連結処理を説明した図（その２）である。
【００６２】
（１２）でも、（３）の無効データ削除処理及び連結処理により、２バイト分ずれが生じているので、２バイト分前に詰めてデータを生成し、送信バッファ３１へ転送している。具体的に、データ（「Ｂ１５」＋「Ｂ１６」）と、後続のデータ（「Ｂ１７」＋「無効データ」）を取得し読み込み、図のように２バイト分を詰めて連結させる。その結果、データ（「Ｂ１５」＋「Ｂ１６」）が生成されるので、無効データ削除部２５はこれを送信バッファ３１へ転送する。ここで、無効データ削除部２５は、上述の解析結果により（１２）において上位２バイトまでが転送データ、下位２バイトが無効データであることを認識している。よって、この時点でこれ以上後続を読み込まずにまた２バイト分詰めて連結しないことで、転送データとフッタ間の無効データは削除される。つまり（１３）にて、（１）、（２）と同様、続くフッタ（「Ｃ１」＋「Ｃ２」）はそのまま無効データ削除部２５を通過し、送信バッファ３１へ転送されていけばよい。
【００６３】
以上、本実施形態に係るデータ転送システム１００は、バス幅に基づく４バイト単位の転送を維持しつつも、メモリ１０上、パケットのヘッダ／データ間又はデータ／フッタ間における無効データ（隙間）が存在するものであったとしても、ＤＭＡ転送装置２０においてこの無効データを削除してから通信装置３０の送信バッファ３１へ転送する。このため、バス幅単位での最大転送効率（例えばここでは４バイト）を維持しながら、上述の再配置処理を回避することが可能となっている。
【００６４】
図１６は、本実施形態に係るパケット作成〜パケット送出迄の流れを示す模式図である。
【００６５】
（１）まずＣＰＵはメモリ上において、転送データに対しヘッダ、フッタを作成する。ここで各装置を相互に接続するバスは、４バイトのバス幅を有し、最大の４バイト単位でデータ転送を行う。
【００６６】
再び図６、７を参照する。例えばここでは仮に、転送データのデータ長が３４バイトであり、送信ヘッダが１０バイト、送信フッタが４バイトのプロトコルであるものとすると、メモリ上、転送データに対し、送信ヘッダと送信フッタとがバス幅の４バイト単位でデータが書き込まれてゆき（転送されてゆき）、最終的にヘッダ／データ部分／フッタから構成されるパケットが生成される。しかしながらこのとき、バス幅の４バイト単位との兼ね合いから、この場合、送信ヘッダ１０バイトに対し４バイト単位で転送され、また転送データ３４バイト対し４バイト単位で転送されたため、図に示されるように、送信ヘッダと転送データ、及び転送データと送信フッタ間において隙間（無効データ）が２バイト分生じている。
【００６７】
（２−２）次にＤＭＡコントローラは、メモリ上からパケットを通信装置へ移動する。ここでもバス幅に従い４バイト単位でデータ転送を行う。このとき本実施形態においては、上述したようにＤＭＡコントローラを使用してパケット内の無効データを削除（破棄）しつつ、パケットを送信装置へ移動（４バイト単位）させる。
【００６８】
（３）転送装置は、送信バッファに転送されたパケットをネットワークへ送出する。つまりパケットはそのヘッダの宛先アドレスに従いその送信先へ送信される。
【００６９】
以上のように、本実施形態によれば、パケット内に無効データが存在する場合（図６、７参照）、従来例の図５と比べると、（２−２）において、ＤＭＡコントローラを使用してパケット内の無効データを削除（破棄）しつつパケットを送信装置へ移動（４バイト単位）させるので、（１−２）の再配置処理を省略することができることがわかる。また転送も４バイト単位で行うので、再配置処理を回避可能な２バイト単位で転送する場合と比べ、転送効率も高い（図８、９参照）。
【００７０】
[応用例]
本応用例に係るデータ転送システム１０１について説明する。本応用例に係るデータ転送システム１０１は、ネットワーク上の他装置から受信した受信パケットをそのまま他装置に送信（転送）するケースにおいて、上述のパケット解析処理、無効データ削除処理、連結処理を応用したものである。
【００７１】
図１７は、上述実施形態のＣＰＵによるメモリ上での受信パケットの転送を示す模式図である。受信パケットは通信装置３０により他装置からネットワークを介し受信され、メモリ１０上へ格納されてくる。他装置から受信した受信パケットをそのまま他装置に送信（転送）する場合、受信パケットのデータ部分はそのまま維持するものの、受信パケットのヘッダ／フッタ）を一旦削除し、新たな宛先アドレス等をセットした転送先用のヘッダ／フッタに差換える必要がある。
【００７２】
（ａ１）は、通信装置３０により他装置からネットワークを介し受信した受信パケット図を示す。受信パケットのヘッダ／フッタが付加されている。（ｂ１）は、ＣＰＵがメモリ１０上にて受信パケットからヘッダ／フッタを取り除いた図を示す。受信パケットのデータのみが残り、この残ったデータが他装置に転送される対象となるデータである。（ｃ１）は、ＣＰＵがメモリ１０上にて残ったデータを他装置に転送するための、ヘッダ／フッタを付加しようとする図を示す。（ｄ１）は、ＣＰＵがメモリ１０上にて残ったデータを他装置に転送するための、ヘッダ／フッタを付加した図を示す。ここでは、例えば異なるプロトコルによる転送を行うためヘッダサイズが変更され、上述の実施形態と同じく図に示されるように、送信ヘッダと転送データ間において無効データ（隙間）が生じている。
【００７３】
そしてここで、上述の実施形態を適用するならば、メモリ１０上での再配置処理は行わず、ＤＭＡ転送装置２０において、上述のパケット解析処理、無効データ削除処理、連結処理を行えばよい。これにより、ＤＭＡ転送装置２０のＦＩＦＯ２３から通信装置３０の送信バッファ３１に転送される過程において、ヘッダと転送データ間の無効データは削除（破棄）されるので、図に示される送信ヘッダと転送データ間は連続的に並ぶようになる。
【００７４】
しかしながら一方、本応用例においては、ＤＭＡ転送装置２０は受信パケットのヘッダ／フッタについても無効データとして扱うようにする。以下説明する。
【００７５】
図１８は、本応用例のＣＰＵによるメモリ上での受信パケットの転送を示す模式図である。（ａ２）は、通信装置３０により他装置からネットワークを介し受信した受信パケット図を示す。受信パケットのヘッダ／フッタが付加されている。（ｂ２）は、ＣＰＵがメモリ１０上にて残ったデータを他装置に転送するための、新たなヘッダ／フッタを付加しようとする図を示す。（ｂ１）とは異なり、受信パケットからヘッダ／フッタを取り除くことはない。（ｃ２）は、受信パケットからヘッダ／フッタが付加されたまま、新たなヘッダ／フッタを付加した図を示す。ここでは新たなヘッダの後ろには無効データ（隙間）が生じている。（ｄ２）は、受信パケットからヘッダ／フッタが付加されたまま、新たなヘッダ／フッタを付加した図を示す。本応用例においては、受信パケットのヘッダ／フッタについても無効データとして扱うようにするので、ＤＭＡ転送装置２０は、新たなヘッダの後ろの無効データに加え、受信パケットのヘッダ／フッタの部分についても無効データとして扱う（擬制する）。即ち図に示されるように、新たなヘッダと転送データ（受信パケットのデータ）間、及び転送データ（受信パケットのデータ）と新たなフッタ間は、無効データ（隙間）が生じている。
【００７６】
そして、（ｄ２）の状態において、メモリ１０上での再配置処理は行わず、ＤＭＡ転送装置２０において、上述のパケット解析処理、無効データ削除処理、連結処理を行うようにする。これにより、本応用例のＤＭＡ転送装置２０は、ＦＩＦＯ２３から通信装置３０の送信バッファ３１に転送される過程において、新たなヘッダと転送データ（受信パケットのデータ）間、及び転送データ（受信パケットのデータ）と新たなフッタ間の無効データは削除（破棄）されるので、図に示される新たなヘッダと転送データ（受信パケットのデータ）間、及び転送データ（受信パケットのデータ）と新たなフッタ間は連続的に並ぶようになる。
【００７７】
なお具体的には、本応用例のパケット解析部２４は、受信パケットのヘッダ情報を解析することにより、受信パケットのプロトコル、そのプロトコルのヘッダ長／フッタ長を判定しうる。また転送データ（受信パケットのデータ）のデータ長もまた判定しうる。この解析結果を併せて加味すれば、無効データ削除部２５は、無効データの存在の有無、その位置を認識できる。そして無効データ削除部２５は、受信パケットのヘッダ／フッタの部分を含めた無効データが存在する場合、上述の実施形態のように無効データ削除処理、連結処理を行えばよい。このようにすることにより、少なくとも受信パケットからヘッダ／フッタを取り除く処理を省略できるので、メモリ１０上に格納された受信パケットをそのまま送信データとして利用できる。このため、上述の実施形態による再配置処理不要や転送効率向上等の効果に加え、受信パケットからヘッダ／フッタを取り除く処理が不要となりまたその分メモリ１０の削減にも効果が期待できる。
【００７８】
[総括]
以上、本実施形態によれば、メモリ上にて作成されたパケット・データの転送効率を向上させるデータ転送システム、データ転送方法及びデータ転送プログラムを提供することができる。なお、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００７９】
１０        メモリ
２０        ＤＭＡ転送装置
２１        レジスタ
２２        ＤＭＡコントローラ
２３        ＦＩＦＯ
２４        パケット解析部
２５        無効データ削除部
３０        通信装置
３１        送信バッファ
３２        通信コントローラ
４０        バス
１００    データ転送システム
【先行技術文献】
【特許文献】
【００８０】
【特許文献１】特開２００７−１８９５５０号公報
【図１】
2013021501.tif 000003
【図２】
2013021501.tif 000004
【図３】
2013021501.tif 000005
【図４】
2013021501.tif 000006
【図５】
2013021501.tif 000007
【図６】
2013021501.tif 000008
【図７】
2013021501.tif 000009
【図８】
2013021501.tif 000010
【図９】
2013021501.tif 000011
【図１０】
2013021501.tif 000012
【図１１】
2013021501.tif 000013
【図１２】
2013021501.tif 000014
【図１３】
2013021501.tif 000015
【図１４】
2013021501.tif 000016
【図１５】
2013021501.tif 000017
【図１６】
2013021501.tif 000018
【図１７】
2013021501.tif 000019
【図１８】
2013021501.tif 000020