説明

データ転送システム、データ転送方法及びデータ転送プログラム

【課題】メモリ上にて作成されたパケット・データの転送効率を向上させる。
【解決手段】本発明に係るデータ転送システムは、パケット・データを生成する作業領域であるメモリと、パケット・データを通信装置へ転送するDMA転送装置と、パケット・データをネットワークへ送信する通信装置とがバスで接続され、バスの最大転送データ単位でデータ転送されるデータ転送システムであって、DMA転送装置は、メモリで生成され他装置に転送するためのパケット・データを取得し、最大転送データ単位に基づき、該パケット・データのヘッダ情報を解析することにより、ヘッダ/データ間及びデータ/フッタ間における無効データの有無を解析するパケット解析手段と、パケット・データ内の無効データを削除するとともに、ヘッダ及び該無効データに後続するデータの連結と、データ及び該無効データに後続するフッタの連結とを行う無効データ削除手段とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ転送システム、データ転送方法及びデータ転送プログラムの分野に関する。
【背景技術】
【0002】
Ethernet(登録商標)やPCI Express(登録商標)のような通信規格において、その送受信は、ヘッダ/データ部分(転送データ)/フッタから構成されるパケット単位で行われる。ヘッダにはパケットに関する情報(宛先や送信元アドレス、データ長等)が、フッタには通信の信頼性を上げるための情報(エラー訂正等)が格納されている。例えば図1は、Ethernet(ver2)パケットを示す図の一例である。図に示されるように、Ethernet(ver2)パケットは、データ部分はヘッダ/フッタによりカプセル化されてからネットワークへ送出される。
【0003】
この種のパケットは、送信の場合、CPU(Central Processing Unit)により送信側のメモリ上で作成された後、DMAコントローラ(Direct Memory Access controller)によりメモリから通信装置(送信装置)へ転送される。その後通信装置は、送信バッファにバッファされたパケットをネットワークへ送出する。ここで、DMAコントローラは、マザーボード上にある各種の装置やメモリがCPUを介すことなくデータ転送を行うDMA転送において通信の制御を行う専用LSIである(例えば特許文献1)。
【0004】
図2は、従来例のパケット作成〜パケット送出迄の流れを示す模式図(その1)である。図を参照しながら説明する。
【0005】
(1)まずCPUはメモリ上において、転送データに対しヘッダ、フッタを付加的に作成する。ここで各装置を相互に接続するバスは、4バイトのバス幅を有し、最大1回につき4バイト単位でデータ転送を行えるものとする。いうまでもなく転送時間を短縮すべく、最大の4バイト単位でデータ転送を行う。
【0006】
図3は、CPUによるメモリ上でのパケット作成を示す模式図(その1)である。例えばここでは仮に、転送データのデータ長が36バイトであり、送信ヘッダが12バイト、送信フッタが4バイトのプロトコルであるものとすると、メモリ上、転送データに対し、送信ヘッダと送信フッタとがバス幅の4バイト単位でデータが書き込まれてゆき(転送されてゆき)、最終的にヘッダ/データ部分/フッタから構成されるパケットが生成される。
【0007】
(2)次にDMAコントローラは装置内のデータ転送を担うので、DMAコントローラは、メモリ上から生成されたパケットを通信装置へ移動する。ここでもバス幅に従い4バイト単位でデータ転送を行う。
【0008】
図4は、DMAによるデータ転送を示す模式図(その1)である。図に示されるように、DMAコントローラ(DMA転送部)はメモリからパケットをリードし、内部のFIFOへパケットを格納する。通信装置は、通信装置の送信バッファに空きがある状態になると、DMAコントローラに対し送信バッファへのデータ転送要求(REQ)を行う。DMAコントローラはこの要求に応じ(ACK)、送信バッファへパケット(DATA)を転送する。
【0009】
(3)通信装置は、送信バッファに転送されたパケットをネットワークへ送出する。つまりパケットはそのヘッダの宛先アドレスに従いその送信先へ送信される。
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、(1)において、CPUがメモリ上にて転送データに対しヘッダ、フッタを作成する際、使用されるプロトコルやデータ長によっては、バス幅との兼ね合いから次に示す事象が生じうる。
【0011】
図5は、従来例のパケット作成〜パケット送出迄の流れを示す模式図(その2)である。図を参照しながら説明する。
【0012】
(1)まずCPUはメモリ上において、転送データに対しヘッダ、フッタを作成する。ここで各装置を相互に接続するバスは、4バイトのバス幅を有し、最大の4バイト単位でデータ転送を行う。
【0013】
図6は、CPUによるメモリ上でのパケット作成を示す模式図(その2)である。例えばここでは仮に、転送データのデータ長が34バイトであり、送信ヘッダが10バイト、送信フッタが4バイトのプロトコルであるものとすると、メモリ上、転送データに対し、送信ヘッダと送信フッタとがバス幅の4バイト単位でデータが書き込まれてゆき(転送されてゆき)、最終的にヘッダ/データ部分/フッタから構成されるパケットが生成される。しかしながらこのとき、バス幅の4バイト単位との兼ね合いから、この場合、送信ヘッダ10バイトに対し4バイト単位で転送され、また転送データ34バイト対し4バイト単位で転送されたため、図に示されるように、送信ヘッダと転送データ、及び転送データと送信フッタ間において隙間(無効データ)が2バイト分生じている。
【0014】
図7は、隙間(無効データ)が生じたパケットを別の角度から示す模式図(その1)である。図に示されるように、送信ヘッダと転送データ、及び転送データと送信フッタ間において隙間(無効データ)が2バイト分生じている。送信ヘッダと転送データ、又は転送データと送信フッタ間は連続的に並んでいる必要があるので、隙間により連続的に並ばない場合には、連続的に並ぶよう転送データの再配置が必要である。
【0015】
(1−2)つまり送信ヘッダと転送データ、又は転送データと送信フッタ間が、連続的に並ばない場合には、DMAコントローラを使用して転送データの再配置処理を行う。
【0016】
(2)次は同様に、DMAコントローラは、メモリ上から再配置されたパケットを通信装置へ移動する。ここでもバス幅に従い4バイト単位でデータ転送を行う。
【0017】
(3)また同様に、転送装置は、送信バッファに転送されたパケットをネットワークへ送出する。つまりパケットはそのヘッダの宛先アドレスに従いその送信先へ送信される。
【0018】
このように、使用されるプロトコルやデータ長によっては、バス幅との兼ね合いから、CPUがメモリ上にて作成したパケットに対し再配置処理(負荷処理である)が必要となるが、再配置処理においては、上述の隙間を埋めるために、再びバス幅より小さな単位(例えば2バイト単位)で転送を行う必要があり、転送回数は本来のバス幅単位の転送回数より多くなる。例えば、32バイトのデータを転送しバス幅が4バイト(32ビット)の場合、最大の4バイト単位でデータ転送を行うと8回の転送で完了できるが、2バイト単位でデータ転送を行うと16回の転送となり、転送回数が多いほど転送時間がかかってしまう。
【0019】
一方、負荷処理である再配置処理を回避するため、上述の隙間ができないよう最初から1回あたりの転送ビット幅を小さくすることが可能である。
【0020】
図8は、CPUによるメモリ上でのパケット作成を示す模式図(その2)である。図6と同様、例えばここでは仮に、転送データのデータ長が34バイトであり、送信ヘッダが10バイト、送信フッタが4バイトのプロトコルであるものとする。ここで、バス幅は4バイトであるものの、1回につき2バイト単位でデータ転送を行う。すると、メモリ上、バス幅の2バイト単位でデータが書き込まれてゆき(転送されてゆき)、最終的にヘッダ/データ部分/フッタから構成されるパケットが生成される。この場合、送信ヘッダ10バイトに対し2バイト単位で転送され、また転送データ34バイト対し2バイト単位で転送されたため、上述の隙間なくパケットが生成される。つまり送信ヘッダの後、続けて転送データの2バイト分を詰めることができ、結果、送信ヘッダと転送データ、及び転送データと送信フッタ間は連続的に並んでいるので、上述の再配置は不要である。
【0021】
図9は、隙間(無効データ)が生じないパケットを別の角度から示す模式図(その2)である。図に示されるように、送信ヘッダと転送データ、及び転送データと送信フッタ間において隙間(無効データ)は生じていない。送信ヘッダと転送データ、又は転送データと送信フッタ間は連続的に並んでいるので、上述の再配置は不要である。
【0022】
しかしながら、このケースでは、1回あたりの転送ビット幅、つまり転送単位(例えば2バイト)を小さくすることにより再配置処理を回避するが、その分バス幅単位(例えば4バイト)での転送回数よりも、その転送回数が増えてしまう。また転送回数が多いほど転送時間がかかる。転送はバス幅単位で転送を行う時が最も転送時間を短縮できるからである。また転送回数や転送時間が増えると、その際バスは占有されるので、他の転送処理にバスを使用することができなくなる。
【0023】
以上、転送効率を最大化すべくバス幅単位で転送を行うと、ときに上述の再配置処理が発生し、再配置処理を回避すべく転送ビット幅を小さくすると、転送効率が低下するという問題があった。
【0024】
そこで本発明では上記のような問題に鑑み、メモリ上にて作成されたパケット・データの転送効率を向上させるデータ転送システム、データ転送方法及びデータ転送プログラムを提供することを目的とする。
【課題を解決するための手段】
【0025】
そこで上記課題を解決するため、本発明に係るデータ転送システムは、CPUがヘッダ、データ及びフッタからなるパケット・データを生成する作業領域であるメモリと、パケット・データを通信装置へ転送するDMA転送装置と、パケット・データをネットワークへ送信する通信装置とがバスで接続され、前記バスの最大転送データ単位でデータ転送されるデータ転送システムであって、前記DMA転送装置は、前記メモリで生成され他装置に転送するためのパケット・データを取得し、前記最大転送データ単位に基づき、該パケット・データのヘッダ情報を解析することにより、ヘッダ/データ間及びデータ/フッタ間における無効データの有無を解析するパケット解析手段と、パケット・データ内の前記無効データを削除するとともに、ヘッダ及び該無効データに後続するデータの連結と、データ及び該無効データに後続するフッタの連結とを行う無効データ削除手段と、を有することを特徴とする。
【0026】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、などに適用したものも本発明の態様として有効である。
【発明の効果】
【0027】
本発明によれば、メモリ上にて作成されたパケット・データの転送効率を向上させるデータ転送システム、データ転送方法及びデータ転送プログラムを提供することができる。
【図面の簡単な説明】
【0028】
【図1】Ethernet(ver2)パケットを示す図の一例である。
【図2】従来例のパケット作成〜パケット送出迄の流れを示す模式図(その1)である。
【図3】CPUによるメモリ上でのパケット作成を示す模式図(その1)である。
【図4】DMAによるデータ転送を示す模式図(その1)である。
【図5】従来例のパケット作成〜パケット送出迄の流れを示す模式図(その2)である。
【図6】CPUによるメモリ上でのパケット作成を示す模式図(その2)である。
【図7】隙間(無効データ)が生じたパケットを別の角度から示す模式図(その1)である。
【図8】CPUによるメモリ上でのパケット作成を示す模式図(その2)である。
【図9】隙間(無効データ)が生じないパケットを別の角度から示す模式図(その2)である。
【図10】本実施形態に係るデータ転送システム100のシステム構成図である。
【図11】本実施形態に係るデータ転送システム100のパケット解析処理を説明するフローチャートである。
【図12】FIFO23に格納されたパケットがパケット解析部24を通過する様子を説明した図である。
【図13】本実施形態に係るデータ転送システム100の無効データ削除処理及び連結処理を説明するフローチャートである。
【図14】FIFO23に格納されたパケットが無効データ削除部25を通過する際の無効データ削除及び連結処理を説明した図(その1)である。
【図15】FIFO23に格納されたパケットが無効データ削除部25を通過する際の無効データ削除及び連結処理を説明した図(その2)
【図16】本実施形態に係るパケット作成〜パケット送出迄の流れを示す模式図である。
【図17】上述実施形態のCPUによるメモリ上での受信パケットの転送を示す模式図である。
【図18】本応用例のCPUによるメモリ上での受信パケットの転送を示す模式図である。
【発明を実施するための形態】
【0029】
本発明を実施するための形態を各実施形態において図面を用いて説明する。
【0030】
[システム構成]
図10は、本実施形態に係るデータ転送システム100のシステム構成図である。本実施形態に係るデータ転送システム100は、メモリ10、DMA転送装置20、通信装置30がバス40で接続され構成される。
【0031】
メモリ10は、CPUがヘッダ、転送データ及びフッタからなるパケット・データを生成する作業領域である。例えばRAM(Random Access Memory)等により実現される。
【0032】
DMA転送装置20は、本実施形態においてパケット(パケット・データ)をメモリ10から通信装置30へ転送する。DMA転送装置20のDMAコントローラ22は、通信装置30からの送信バッファ31へのデータ転送要求(REQ)を受信すると、この要求に応じ(ACK)、通信装置30の送信バッファへパケット(DATA)を転送する。
【0033】
通信装置30は、パケットをネットワークへ送信する。本実施形態に係る通信装置30は、送信バッファ31を備え、送信バッファ31に空きがある状態になると、DMAコントローラ22に対し送信バッファ31へのデータ転送要求(REQ)を行う。DMAコントローラはこの要求に応じ(ACK)、送信バッファへパケット(DATA)を転送する。通信コントローラ32はパケットをネットワークへ送信する。
【0034】
バス40は、各装置を相互に接続するバスである。本実施形態に係るバス40は4バイトのバス幅を有し、最大1回につき4バイト単位でデータ転送を行えるものとし、また転送時間を短縮すべく最大の4バイト単位でデータ転送を行う。
【0035】
また本実施形態に係るDMA転送装置20は、図に示されるように、レジスタ21、DMAコントローラ22、FIFO23、パケット解析部24、無効データ削除部25を含み構成される。
【0036】
レジスタ21は、レジスタはDMAコントローラ22が内部に保持する少量で高速な記憶装置である。レジスタ21は、計算結果を一時的に保持したり、メモリ10のパケットを読み書きする際のアドレスを保持したり、その他転送に関する情報を保持・変更したりする。
【0037】
DMAコントローラ22は、上述の如く基盤(マザーボード)上にある各種の装置やメモリがCPUを介すことなくデータ転送を行うDMA転送において通信の制御を行う専用LSIである。本実施形態においては、DMA転送装置20を介してパケットをメモリ10から通信装置30へ転送するが、DMAコントローラ22はこの転送に係る制御を担う。
【0038】
FIFO23は、メモリ10からリードされたパケットを格納するキューである。DMAコントローラ22は、パケットをメモリ10からFIFO23へリードし、通信装置30からのデータ転送要求に応じて、FIFO23に格納されたパケットを通信装置30の送信バッファ31へ転送する。
【0039】
パケット解析部24は、DMAコントローラ22がFIFO23に格納されたパケットを通信装置30の送信バッファ31へ転送する際、このパケットを取得し、バス40の最大転送データ単位に基づき、パケット・データのヘッダ情報を解析することにより、ヘッダ/転送データ間及び転送データ/フッタ間における無効データの有無を解析する。この点、詳細は再度後述する。
【0040】
無効データ削除部25は、パケット解析部24によりヘッダ/転送データ間及び転送データ/フッタ間における無効データの存在が確認されると、パケット・データ内のその無効データを削除するとともに、ヘッダと該無効データに後続するデータとの連結及びデータと該無効データに後続するフッタとの連結を行う。つまり無効データの存在が確認された場合、パケットは無効データ削除処理及び連結処理がなされてから通信装置30の送信バッファ31へ転送される。この点、詳細は再度後述する。
【0041】
また本実施形態に係る通信装置30は、図に示されるように、送信バッファ31、通信コントローラ32を含み構成される。送信バッファ31は、DMA転送装置20からネットワークへ送出すべきパケットを格納する。通信コントローラ32は、送信バッファ31に空きがある状態になると、DMAコントローラ22に対し送信バッファ31へのデータ転送要求(REQ)を行う。また送信バッファ31のパケットをネットワークへ送出する制御を行う。
【0042】
なお上述のパケット解析部24及び無効データ削除部25は、例えばDMA転送装置20内に備えるパケット解析回路及び無効データ削除回路によっても実現でき、また例えばDMAコントローラ22が実行するパケット解析プログラム及び無効データ削除プログラムにより実現することが可能である。なおまた、本実施形態に係るデータ転送システム100は、SoC(System on a chip)と呼ばれる1つの集積回路上に必要な一連の機能(システム)を集積する集積回路の設計手法により、上述のメモリ10、DMA転送装置20、通信装置30を含めて1つのLSI内部に構成することもできる。
【0043】
[情報処理]
図11は、本実施形態に係るデータ転送システム100のパケット解析処理を説明するフローチャートである。上述の如く、通信装置30の通信コントローラ32は、送信バッファ31に空きがある状態になると、DMAコントローラ22に対し送信バッファ31へのデータ転送要求(REQ)を行い、DMAコントローラ22はこのデータ転送要求に応じて、FIFO23に格納されたパケットを通信装置30の送信バッファ31へ転送する。このときまずパケット解析部24は、DMAコントローラ22がFIFO23に格納されたパケットを通信装置30の送信バッファ31へ転送する際、このパケットのヘッダ/転送データ間及び転送データ/フッタ間における無効データの有無を解析する。
【0044】
またここでは、説明上の前提として、メモリ10上で作成されたパケットは、図6、7に示されるように、送信ヘッダと転送データ、及び転送データと送信フッタ間において隙間(無効データ)が2バイト分生じているものとする。また上述の再配置処理は行われていないものとする。つまり、このパケットはメモリ10からFIFO23へ、FIFO23から通信装置30の送信バッファ31へデータ転送されるが、このパケットは、図7に示されるように、パケットのヘッダ/転送データ間及び転送データ/フッタ間における無効データ(隙間)が存在している。仮にこの状態のままで通信装置30は宛先にそのパケットを送出できない。図面を参照しながら説明する。
【0045】
S1:パケット解析部24は、FIFO23からパケット・データが連続的に転送されてくるので、その転送中のデータ部分がヘッダであるかどうかを判定する。ヘッダであった場合、ヘッダ情報を読み込む。ヘッダ情報を解析するためである。なおヘッダかどうかの判定は例えばイーサネット(登録商標)のフレームの場合、ヘッダの前にはプリアンブルが付加されているので、このプリアンブル等を元に判定できるし、またそれ以外の方法によってもよい。
【0046】
S2:次にパケット解析部24は、ヘッダ情報を解析し、プロトコルを判定する(S2−1)。ヘッダ情報によればそのプロトコルの種類が判定でき、またプロトコルの種類が判定できれば、そのプロトコルに応じたヘッダ長、フッタ長のサイズも判定できる(S2−2)。ここでまた、上述の如く4バイト単位でデータ転送を行っているので、ヘッダと転送データ間の無効データサイズも取得できる(S2−3)。
【0047】
図12は、FIFO23に格納されたパケットがパケット解析部24を通過する様子を説明した図(その1)である。FIFO23に格納されたパケットが通信装置30の送信バッファ31へ4バイト単位でデータ転送される過程において、パケット解析部24を通過する際、パケット解析部24は、(1)〜(3)にてヘッダ情報を読み込みきれるので、この時点でプロトコルの種類、そのプロトコルに応じたヘッダ長、フッタ長、及びヘッダと転送データ間の無効データサイズ判定できる。具体的に、3回目の(3)を読み込んだ時点で、プロトコルの種類は例えばXであると判定し、そのプロトコルのヘッダ長は10バイト、フッタ長は4バイトと判定したとする(併せて図6、7参照)。
【0048】
そして(3)を読み込んだ時点で、4バイト単位でデータ転送を行っていることからすると、合計12バイトのパケット(一部)がパケット解析部24を通過し転送されることになるが、プロトコルのヘッダ長は10バイトであるので、(3)で読み込んだデータにヘッダと転送データ間の無効データの存在(サイズ2バイト分)を判定できる。また図のA5までがヘッダであることを判定できる。
【0049】
S3:次にパケット解析部24は、ヘッダ情報を解析し、ヘッダ、フッタ間の転送データのデータ長を判定する(S3−1)。ヘッダ情報によればそのパケットによる転送データのデータ長を判定できる。ここではデータ長は34バイトと判定したとする(併せて図6、7参照)。また転送データのデータ長が判定できれば、上述の如く4バイト単位でデータ転送を行っているので、フッタと転送データ間の無効データサイズも取得できる(S3−2)。
【0050】
再び図12を参照する。(12)を見ると、4バイト単位でデータ転送を行っていることからすると、データ長は34バイトであるので、(12)で読み込んだデータにフッタと転送データ間の無効データの存在(サイズ2バイト分)を判定できる。また図のB17までが転送データであることを判定できる。
【0051】
以上の通り、FIFO23から通信装置30の送信バッファ31へデータ転送されるパケットについて解析が行われる。パケット解析部24は(3)の4バイトのデータを読み込めばヘッダ情報を解析することができ、この時点で上述の解析結果を得る。(3)の4バイトのデータはパケット解析部24を通過し次ぐ無効データ削除部25に転送されるが(図10参照)、このときパケット解析部24はここで得た解析結果を無効データ削除部25に渡すようにする。具体的に例えば、(3)の4バイトのデータ内に無効データあり、無効データサイズ2はバイト、上位2バイトまでがヘッダ、下位2バイトが無効データである旨、また(12)の4バイトのデータ内に無効データあり、無効データサイズ2はバイト、上位2バイトまでが転送データ、下位2バイトが無効データである旨、解析結果として無効データ削除部25に渡すことができる。
【0052】
なお、パケット解析部24は無効データが存在する場合にのみ、解析結果を無効データ削除部25に渡すようにしてもよい。無効データが存在しない場合、無効データ削除部25は何ら機能しなくてよいからである(例えば図3のケース)。
【0053】
図13は、本実施形態に係るデータ転送システム100の無効データ削除処理及び連結処理を説明するフローチャートである。上述の如く、無効データ削除部25は、パケット解析部24において無効データの存在が確認された場合、パケットに対し無効データ削除処理及び連結処理を行う。以下図面を参照しながら説明する。
【0054】
S11:無効データ削除部25は、無効データの有無を確認する。無効データが存在する場合、無効データを削除するからである。無効データの有無は、上述の如くパケット解析部24からの解析結果により判定する。無効データが存在しない場合、無効データ削除部25は何ら機能しない。
【0055】
S12:無効データ削除部25は、無効データが存在する場合、無効データ削除、連結処理を行う。ここでは、パケット解析部24から、上述の如く例えば(3)の4バイトのデータ内に無効データあり、無効データサイズ2はバイト、上位2バイトまでがヘッダ、下位2バイトが無効データである旨、また(12)の4バイトのデータ内に無効データあり、無効データサイズ2はバイト、上位2バイトまでが転送データ、下位2バイトが無効データである旨の解析結果を得たものとする。
【0056】
図14は、FIFO23に格納されたパケットが無効データ削除部25を通過する際の無効データ削除及び連結処理を説明した図(その1)である。
【0057】
まず(1)〜(2)では、FIFO23に格納されたパケットの一部データ(「A1」+「A2」、「A3」+「A4」)がFIFO23からパケット解析部24を通過してパケットが無効データ削除部25を通過し、送信バッファ31へ転送されていく。無効データ削除部25はこの時点では解析結果を得ていないからである。
【0058】
(3)では、FIFO23からパケット解析部24を通過してパケットの一部のデータ(「A5」+「無効データ」)が転送されてくるが、このとき併せて無効データ削除部25はこの時点で解析結果を得る。つまり(3)のデータ内に無効データの存在を認識する。
【0059】
無効データ削除部25は、この無効データの存在するデータ(「A5」+「無効データ」)に後続のデータ(「B1」+「B2」)を取得し読み込む。そして「無効データ」部分を削除(破棄)し、後続の「B1」を2バイト分詰めて連結させる。その結果として、データ(「A5」+「B1」)が生成されるので、無効データ削除部25はこれを送信バッファ31へ転送する。
【0060】
(4)では、(3)の無効データ削除処理及び連結処理により、2バイト分ずれが生じているので、以降は2バイト分前に詰めてデータを生成し、送信バッファ31へ転送していく。具体的に、(4)では、データ(「B1」+「B2)と、後続のデータ(「B3」+「B4」)を取得し読み込む。そして「B1」は既に転送済みであるので、図のように2バイト分を詰めて連結させる。その結果、データ(「B2」+「B3」)が生成されるので、無効データ削除部25はこれを送信バッファ31へ転送する。これにより、送信ヘッダと転送データ間は連続的に並んでいる必要があるところ、無効データ削除処理及び連結処理により、無効データ(隙間)は削除され、送信ヘッダと転送データが連続的に並ぶ。
【0061】
図15は、FIFO23に格納されたパケットが無効データ削除部25を通過する際の無効データ削除及び連結処理を説明した図(その2)である。
【0062】
(12)でも、(3)の無効データ削除処理及び連結処理により、2バイト分ずれが生じているので、2バイト分前に詰めてデータを生成し、送信バッファ31へ転送している。具体的に、データ(「B15」+「B16」)と、後続のデータ(「B17」+「無効データ」)を取得し読み込み、図のように2バイト分を詰めて連結させる。その結果、データ(「B15」+「B16」)が生成されるので、無効データ削除部25はこれを送信バッファ31へ転送する。ここで、無効データ削除部25は、上述の解析結果により(12)において上位2バイトまでが転送データ、下位2バイトが無効データであることを認識している。よって、この時点でこれ以上後続を読み込まずにまた2バイト分詰めて連結しないことで、転送データとフッタ間の無効データは削除される。つまり(13)にて、(1)、(2)と同様、続くフッタ(「C1」+「C2」)はそのまま無効データ削除部25を通過し、送信バッファ31へ転送されていけばよい。
【0063】
以上、本実施形態に係るデータ転送システム100は、バス幅に基づく4バイト単位の転送を維持しつつも、メモリ10上、パケットのヘッダ/データ間又はデータ/フッタ間における無効データ(隙間)が存在するものであったとしても、DMA転送装置20においてこの無効データを削除してから通信装置30の送信バッファ31へ転送する。このため、バス幅単位での最大転送効率(例えばここでは4バイト)を維持しながら、上述の再配置処理を回避することが可能となっている。
【0064】
図16は、本実施形態に係るパケット作成〜パケット送出迄の流れを示す模式図である。
【0065】
(1)まずCPUはメモリ上において、転送データに対しヘッダ、フッタを作成する。ここで各装置を相互に接続するバスは、4バイトのバス幅を有し、最大の4バイト単位でデータ転送を行う。
【0066】
再び図6、7を参照する。例えばここでは仮に、転送データのデータ長が34バイトであり、送信ヘッダが10バイト、送信フッタが4バイトのプロトコルであるものとすると、メモリ上、転送データに対し、送信ヘッダと送信フッタとがバス幅の4バイト単位でデータが書き込まれてゆき(転送されてゆき)、最終的にヘッダ/データ部分/フッタから構成されるパケットが生成される。しかしながらこのとき、バス幅の4バイト単位との兼ね合いから、この場合、送信ヘッダ10バイトに対し4バイト単位で転送され、また転送データ34バイト対し4バイト単位で転送されたため、図に示されるように、送信ヘッダと転送データ、及び転送データと送信フッタ間において隙間(無効データ)が2バイト分生じている。
【0067】
(2−2)次にDMAコントローラは、メモリ上からパケットを通信装置へ移動する。ここでもバス幅に従い4バイト単位でデータ転送を行う。このとき本実施形態においては、上述したようにDMAコントローラを使用してパケット内の無効データを削除(破棄)しつつ、パケットを送信装置へ移動(4バイト単位)させる。
【0068】
(3)転送装置は、送信バッファに転送されたパケットをネットワークへ送出する。つまりパケットはそのヘッダの宛先アドレスに従いその送信先へ送信される。
【0069】
以上のように、本実施形態によれば、パケット内に無効データが存在する場合(図6、7参照)、従来例の図5と比べると、(2−2)において、DMAコントローラを使用してパケット内の無効データを削除(破棄)しつつパケットを送信装置へ移動(4バイト単位)させるので、(1−2)の再配置処理を省略することができることがわかる。また転送も4バイト単位で行うので、再配置処理を回避可能な2バイト単位で転送する場合と比べ、転送効率も高い(図8、9参照)。
【0070】
[応用例]
本応用例に係るデータ転送システム101について説明する。本応用例に係るデータ転送システム101は、ネットワーク上の他装置から受信した受信パケットをそのまま他装置に送信(転送)するケースにおいて、上述のパケット解析処理、無効データ削除処理、連結処理を応用したものである。
【0071】
図17は、上述実施形態のCPUによるメモリ上での受信パケットの転送を示す模式図である。受信パケットは通信装置30により他装置からネットワークを介し受信され、メモリ10上へ格納されてくる。他装置から受信した受信パケットをそのまま他装置に送信(転送)する場合、受信パケットのデータ部分はそのまま維持するものの、受信パケットのヘッダ/フッタ)を一旦削除し、新たな宛先アドレス等をセットした転送先用のヘッダ/フッタに差換える必要がある。
【0072】
(a1)は、通信装置30により他装置からネットワークを介し受信した受信パケット図を示す。受信パケットのヘッダ/フッタが付加されている。(b1)は、CPUがメモリ10上にて受信パケットからヘッダ/フッタを取り除いた図を示す。受信パケットのデータのみが残り、この残ったデータが他装置に転送される対象となるデータである。(c1)は、CPUがメモリ10上にて残ったデータを他装置に転送するための、ヘッダ/フッタを付加しようとする図を示す。(d1)は、CPUがメモリ10上にて残ったデータを他装置に転送するための、ヘッダ/フッタを付加した図を示す。ここでは、例えば異なるプロトコルによる転送を行うためヘッダサイズが変更され、上述の実施形態と同じく図に示されるように、送信ヘッダと転送データ間において無効データ(隙間)が生じている。
【0073】
そしてここで、上述の実施形態を適用するならば、メモリ10上での再配置処理は行わず、DMA転送装置20において、上述のパケット解析処理、無効データ削除処理、連結処理を行えばよい。これにより、DMA転送装置20のFIFO23から通信装置30の送信バッファ31に転送される過程において、ヘッダと転送データ間の無効データは削除(破棄)されるので、図に示される送信ヘッダと転送データ間は連続的に並ぶようになる。
【0074】
しかしながら一方、本応用例においては、DMA転送装置20は受信パケットのヘッダ/フッタについても無効データとして扱うようにする。以下説明する。
【0075】
図18は、本応用例のCPUによるメモリ上での受信パケットの転送を示す模式図である。(a2)は、通信装置30により他装置からネットワークを介し受信した受信パケット図を示す。受信パケットのヘッダ/フッタが付加されている。(b2)は、CPUがメモリ10上にて残ったデータを他装置に転送するための、新たなヘッダ/フッタを付加しようとする図を示す。(b1)とは異なり、受信パケットからヘッダ/フッタを取り除くことはない。(c2)は、受信パケットからヘッダ/フッタが付加されたまま、新たなヘッダ/フッタを付加した図を示す。ここでは新たなヘッダの後ろには無効データ(隙間)が生じている。(d2)は、受信パケットからヘッダ/フッタが付加されたまま、新たなヘッダ/フッタを付加した図を示す。本応用例においては、受信パケットのヘッダ/フッタについても無効データとして扱うようにするので、DMA転送装置20は、新たなヘッダの後ろの無効データに加え、受信パケットのヘッダ/フッタの部分についても無効データとして扱う(擬制する)。即ち図に示されるように、新たなヘッダと転送データ(受信パケットのデータ)間、及び転送データ(受信パケットのデータ)と新たなフッタ間は、無効データ(隙間)が生じている。
【0076】
そして、(d2)の状態において、メモリ10上での再配置処理は行わず、DMA転送装置20において、上述のパケット解析処理、無効データ削除処理、連結処理を行うようにする。これにより、本応用例のDMA転送装置20は、FIFO23から通信装置30の送信バッファ31に転送される過程において、新たなヘッダと転送データ(受信パケットのデータ)間、及び転送データ(受信パケットのデータ)と新たなフッタ間の無効データは削除(破棄)されるので、図に示される新たなヘッダと転送データ(受信パケットのデータ)間、及び転送データ(受信パケットのデータ)と新たなフッタ間は連続的に並ぶようになる。
【0077】
なお具体的には、本応用例のパケット解析部24は、受信パケットのヘッダ情報を解析することにより、受信パケットのプロトコル、そのプロトコルのヘッダ長/フッタ長を判定しうる。また転送データ(受信パケットのデータ)のデータ長もまた判定しうる。この解析結果を併せて加味すれば、無効データ削除部25は、無効データの存在の有無、その位置を認識できる。そして無効データ削除部25は、受信パケットのヘッダ/フッタの部分を含めた無効データが存在する場合、上述の実施形態のように無効データ削除処理、連結処理を行えばよい。このようにすることにより、少なくとも受信パケットからヘッダ/フッタを取り除く処理を省略できるので、メモリ10上に格納された受信パケットをそのまま送信データとして利用できる。このため、上述の実施形態による再配置処理不要や転送効率向上等の効果に加え、受信パケットからヘッダ/フッタを取り除く処理が不要となりまたその分メモリ10の削減にも効果が期待できる。
【0078】
[総括]
以上、本実施形態によれば、メモリ上にて作成されたパケット・データの転送効率を向上させるデータ転送システム、データ転送方法及びデータ転送プログラムを提供することができる。なお、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0079】
10 メモリ
20 DMA転送装置
21 レジスタ
22 DMAコントローラ
23 FIFO
24 パケット解析部
25 無効データ削除部
30 通信装置
31 送信バッファ
32 通信コントローラ
40 バス
100 データ転送システム
【先行技術文献】
【特許文献】
【0080】
【特許文献1】特開2007−189550号公報

【特許請求の範囲】
【請求項1】
CPUがヘッダ、データ及びフッタからなるパケット・データを生成する作業領域であるメモリと、パケット・データを通信装置へ転送するDMA転送装置と、パケット・データをネットワークへ送信する通信装置とがバスで接続され、前記バスの最大転送データ単位でデータ転送されるデータ転送システムであって、
前記DMA転送装置は、
前記メモリで生成され他装置に転送するためのパケット・データを取得し、前記最大転送データ単位に基づき、該パケット・データのヘッダ情報を解析することにより、ヘッダ/データ間及びデータ/フッタ間における無効データの有無を解析するパケット解析手段と、
パケット・データ内の前記無効データを削除するとともに、ヘッダ及び該無効データに後続するデータの連結と、データ及び該無効データに後続するフッタの連結とを行う無効データ削除手段と、
を有することを特徴とするデータ転送システム。
【請求項2】
受信パケットを他装置に転送するとき、
CPUが前記メモリ上において、ヘッダ/フッタが付加されたままの前記受信パケットに対し、他装置に転送するためのヘッダ/フッタを付加することにより、前記パケット・データを生成するパケット生成手段と、
を有し、
前記パケット解析手段は、さらに前記受信パケットのヘッダ情報を解析することにより、前記受信パケットのヘッダ/フッタを含むヘッダ/データ間及びデータ/フッタ間における無効データの有無を解析すること、
を特徴とする請求項1に記載のデータ転送システム。
【請求項3】
CPUがヘッダ、データ及びフッタからなるパケット・データを生成する作業領域であるメモリと、パケット・データを通信装置へ転送するDMA転送装置と、パケット・データをネットワークへ送信する通信装置とがバスで接続され、前記バスの最大転送データ単位でデータ転送されるデータ転送システムにおけるデータ転送方法であって、
前記DMA転送装置は、
前記メモリで生成され他装置に転送するためのパケット・データを取得し、前記最大転送データ単位に基づき、該パケット・データのヘッダ情報を解析することにより、ヘッダ/データ間及びデータ/フッタ間における無効データの有無を解析するパケット解析手順と、
パケット・データ内の前記無効データを削除するとともに、ヘッダ及び該無効データに後続するデータの連結と、データ及び該無効データに後続するフッタの連結とを行う無効データ削除手順と、
を有することを特徴とするデータ転送方法。
【請求項4】
受信パケットをネットワーク上の他装置に転送するとき、
CPUが前記メモリ上において、ヘッダ/フッタが付加されたままの前記受信パケットに対し、他装置に転送するためのヘッダ/フッタを付加することにより、前記パケット・データを生成するパケット生成手順と、
を有し、
前記パケット解析手順は、さらに前記受信パケットのヘッダ情報を解析することにより、前記受信パケットのヘッダ/フッタを含むヘッダ/データ間及びデータ/フッタ間における無効データの有無を解析すること、
を特徴とする請求項1に記載のデータ転送方法。
【請求項5】
請求項3又は4記載のデータ転送方法をコンピュータに実行させるためのデータ転送プログラム。

【図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

【図18】
image rotate


【公開番号】特開2013−21501(P2013−21501A)
【公開日】平成25年1月31日(2013.1.31)
【国際特許分類】
【出願番号】特願2011−153188(P2011−153188)
【出願日】平成23年7月11日(2011.7.11)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】