(57)【要約】【課題】既存の通信インターフェースによって接続された２つのプロセッサにそれぞれ接続されたメモリ間のデータ転送を高速に行なうことの可能な情報処理装置を提供することを目的とする。【解決手段】転送の目的であるデータ上に転送に必要な付加データと最大サイズのedataとを並べたものを重畳し、転送の目的であるデータの付加データに対応する領域を補完用データ、それ以外の領域を直接用データとして扱う。直接用データを最終的に配置したい領域に転送し、別の場所に転送された補完用データを、転送の際に直接用データに付加された付加データの対応する領域にコピーすることで転送の目的であるデータの所望の領域への格納が完了する。これによって付加データのサイズのコピーを行なうのみでよくなるので、コピーの量を低減し、高速にデータの転送処理を行ことが可能である。【選択図】図７
2010128957.tif 000002
【特許請求の範囲】
【請求項１】
第一のプロセッサと、
前記第一のプロセッサに接続され、記憶されたデータを該第一のプロセッサから取り出し可能な第一の記憶媒体と、
第二のプロセッサと、
前記第二のプロセッサに接続され、該第二のプロセッサによりデータを格納可能な第二の記憶媒体と、
前記第一のプロセッサと前記第二のプロセッサ間をデータ転送可能に接続し、データ転送時には転送を行なうデータに通信制御用の付加データを付加してデータ転送する通信手段とを具備し、
前記第一の記憶媒体から転送すべき第一のデータを、前記通信手段を介して前記第二の記憶媒体に転送するとき、
あらかじめ用意された、前記第一のデータの上に前記付加データを重畳した第二のデータを、前記第二の記憶媒体に該付加データも含めてそのままの並びで転送する第一のデータ転送手段と、
前記第一のデータの、前記付加データが重畳された領域に相当する第三のデータを転送する第二のデータ転送手段と、
前記第二の記憶媒体に転送された前記第二のデータの、前記付加データが重畳されたそれぞれの領域に、該領域に相当する前記第三のデータをコピーするコピー手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記転送を行なうより以前に、前記付加データのサイズが決定していること
を特徴とする請求項１記載の情報処理装置。
【請求項３】
前記転送を行なうより以前に、前記第一の記憶媒体に記憶された前記第一のデータから前記第二のデータおよび前記第三のデータを取得する取得手段をさらに具備すること
を特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記第二のデータ転送手段による前記第三のデータの転送を行なった後に、
前記第一のデータ転送手段による前記第二のデータの転送を開始し、
前記第二のデータの転送中に該転送が終了した前記第二のデータ中の前記付加データ領域に、前記コピー手段によるコピーを行なうこと
を特徴とする請求項１乃至請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
第一のプロセッサと、
前記第一のプロセッサに接続され、該第一のプロセッサがデータの取り出し可能な第一の記憶媒体と、
第二のプロセッサと、
前記第二のプロセッサに接続され、該第二のプロセッサがデータを格納可能な第二の記憶媒体と、
前記第一のプロセッサと前記第二のプロセッサ間をデータ転送可能に接続し、データ転送時には転送を行なうデータに通信制御用の付加データを付加してデータ転送を行なう通信手段とを具備し、
前記第一の記憶媒体から転送すべき第一のデータを、前記通信手段を介して前記第二の記憶媒体に転送を行なう情報処理装置において実行されるプログラムであって、
あらかじめ用意された、前記第一のデータの上に前記付加データを重畳した第二のデータを、前記第二の記憶媒体に該付加データも含めてそのままの並びで転送するステップと、
前記第一のデータの、前記付加データが重畳された領域に相当する第三のデータを転送するステップと、
前記第二の記憶媒体に転送された前記第二のデータの、前記付加データが重畳されたそれぞれの領域に、該領域に相当する前記第三のデータをコピーするステップと
を具備することを特徴とするプログラム。
【請求項６】
前記転送を行なうより以前に、前記付加データのサイズが決定している前記情報処理装置において実行されること
を特徴とする請求項５記載のプログラム。
【請求項７】
前記転送を行なう以前に、前記第一の記憶媒体に記憶された前記第一のデータから、前記第二のデータおよび前記第三のデータを取得するステップを
さらに具備することを特徴とする請求項５又は請求項６記載のプログラム。
【請求項８】
前記第三のデータの転送を行なった後に前記第二のデータの転送を開始し、
前記第二のデータの転送中に該転送が終了した該第二のデータ中の前記付加データ領域に前記コピーを行なうこと
を特徴とする請求項５乃至請求項７のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関するものであって、特に情報処理装置内の複数のプロセッサに接続されたそれぞれの記憶媒体間のデータ転送処理を行う情報処理装置に関する。
【背景技術】
【０００２】
近年、情報処理技術の発達によりコンピュータの処理速度が向上している。このコンピュータの処理高速化の一因として、コンピュータ内のデータ転送速度の高速化技術の発達が挙げられる。例えばコンピュータ内のプロセッサ間のデータ転送方法には、CPU処理によってデータを転送するI/O方式と、CPUを介さずに直接メインメモリと外部メモリとの間でデータのやりとりを可能にしたDMA（Direct Memory Access）方式とが存在する。
【０００３】
このDMA方式を用いてデータ転送を行なうとき、大容量のデータと、その前後のデータの転送手段を分けることでDMA方式におけるデータ転送速度をより高速化させるデータ転送方法が提案されている（特許文献１を参照）。
【０００４】
コンピュータ内のプロセッサ同士の接続には汎用バスとしてPCIバスが用いられる場合が多い。しかしながら廉価版の機器向けのプロセッサではPCIバスが用意できないこともあり、その場合にはEthernet（登録商標）等の既存の使用可能な通信インターフェースによってプロセッサ間のデータの転送を行なうこともある。
【特許文献１】特開２００８−８３９７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
通信インターフェースを介してメモリ間のデータ転送を行なう場合には、転送元のメモリ内に格納された実体データに、転送時にだけ必要となるヘッダ、フッタ等の付加データが付加されて送受信される。従来は受信したストリームデータをいったんバッファ領域に格納し、ヘッダ、フッタ等の関係の無い部分を除いて、最終的に本来の転送の目的のデータである実体データのみをコピーしていた。しかしこのデータ転送方法では受信した後に実体データ全体をさらにコピーする必要が生じるため、処理速度の低下を招いていた。
【０００６】
本発明は上記問題に鑑みてなされたもので、高速にデータ転送処理を完了できる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明にかかる情報処理装置は、第一のプロセッサと、前記第一のプロセッサに接続され、記憶されたデータを該第一のプロセッサから取り出し可能な第一の記憶媒体と、第二のプロセッサと、前記第二のプロセッサに接続され、該第二のプロセッサによりデータを格納可能な第二の記憶媒体と、前記第一のプロセッサと前記第二のプロセッサ間をデータ転送可能に接続し、データ転送時には転送を行なうデータに通信制御用の付加データを付加してデータ転送する通信手段とを具備し、前記第一の記憶媒体から転送すべき第一のデータを、前記通信手段を介して前記第二の記憶媒体に転送するとき、あらかじめ用意された、前記第一のデータの上に前記付加データを重畳した第二のデータを、前記第二の記憶媒体に該付加データも含めてそのままの並びで転送する第一のデータ転送手段と、前記第一のデータの、前記付加データが重畳された領域に相当する第三のデータを転送する第二のデータ転送手段と、前記第二の記憶媒体に転送された前記第二のデータの、前記付加データが重畳されたそれぞれの領域に、該領域に相当する前記第三のデータをコピーするコピー手段とを有することを特徴としている。
【０００８】
また本発明にかかるプログラムは、第一のプロセッサと、前記第一のプロセッサに接続され、該第一のプロセッサがデータの取り出し可能な第一の記憶媒体と、第二のプロセッサと、前記第二のプロセッサに接続され、該第二のプロセッサがデータを格納可能な第二の記憶媒体と、前記第一のプロセッサと前記第二のプロセッサ間をデータ転送可能に接続し、データ転送時には転送を行なうデータに通信制御用の付加データを付加してデータ転送を行なう通信手段とを具備し、前記第一の記憶媒体から転送すべき第一のデータを、前記通信手段を介して前記第二の記憶媒体に転送を行なう情報処理装置において実行されるプログラムであって、あらかじめ用意された、前記第一のデータの上に前記付加データを重畳した第二のデータを、前記第二の記憶媒体に該付加データも含めてそのままの並びで転送するステップと、前記第一のデータの、前記付加データが重畳された領域に相当する第三のデータを転送するステップと、前記第二の記憶媒体に転送された前記第二のデータの、前記付加データが重畳されたそれぞれの領域に、該領域に相当する前記第三のデータをコピーするステップとを具備することを特徴としている。
【発明の効果】
【０００９】
本発明によれば、転送する実体データを最終的に配置したいアドレスから格納することでバッファ領域からのデータのコピー量を低減し、高速にデータ転送処理を完了することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態を図面を参照しながら説明する。
【００１１】
図１は本実施形態におけるデータ転送装置の構成の一例を示すブロック図である。図１にはCPU−A（１１０）、CPU−B（１２０）、通信回線１３０、ROM−１A（１１１）、ROM−２A（１１２）、RAM−A（１１３）、Communication Controller−A（１１４）、送信管理部１１５、ROM−B（１２１）、Communication Controller−B（１２２）、RAM−B（１２３）、および受信管理部１２４が示されている。
【００１２】
CPU−A（１１０）は中央演算処理装置（CPU：Central Processing Unit）であり、CPU−B（１２０）と共に情報処理装置全体を制御している。またプログラムを実行し、そのプログラムに応じた所定の処理を実行する機能を有している。
【００１３】
CPU−B（１２０）もまた中央演算処理装置であり、CPU−A（１１０）と通信回線１３０を介して接続されており、CPU−A（１１０）と共に情報処理装置全体の制御を行っている。
【００１４】
通信回線１３０はバスの機能を果たし、CPU−A（１１０）とCPU−B（１２０）を通信可能に接続している。
【００１５】
ROM−１A（１１１）は書き換え可能な半導体メモリによって構成されCPU−A（１１０）およびCPU−B（１２０）の実行するプログラムを格納している。
【００１６】
ROM−２A（１１２）は書き換え不可能な半導体メモリによって構成されCPU−A（１１０）およびCPU−B（１２０）の実行するプログラムを格納している。
【００１７】
RAM−A（１１３）は半導体メモリにより構成され、CPU−A（１１０）がプログラムを処理する際のプログラムおよびデータの格納用領域として利用される。
【００１８】
Communication Controller−A（１１４）は通信回線１３０による通信を制御する機能を有している。
【００１９】
送信管理部１１５は通信回線１３０を介して行なうCPU−B（１２０）へのデータ転送の制御を行なう機能を有している。
【００２０】
ROM−B（１２１）は書き換え不可能な半導体メモリによって構成されCPU−B（１２０）の実行するプログラムを格納している。
【００２１】
Communication Controller−B（１２２）は通信回線１３０による通信を制御する機能を有している。
【００２２】
RAM−B（１２３）は半導体メモリにより構成され、CPU−B（１２０）がプログラムを処理する際のプログラムおよびデータの格納用領域として利用される。
【００２３】
受信管理部１２４は通信回線１３０を介して行なうCPU−A（１１０）からのデータ転送の制御を行なう。
【００２４】
本実施形態ではROM−１A（１１１）内に格納されたデータをRAM−B（１２３）に転送する形態について例示を行なう。しかし、本発明はこの例示した構成に限定されず、コントロールデータが付加されて転送される通信回線を介してデータ転送する場合に適用可能である。
【００２５】
図２は本実施形態においてデータを通信回線１３０を用いて転送を行なうときの転送前のデータ構造と転送後のデータ構造の一例を示す図である。図２には転送前データ２０１および転送後データ２０２が示されている。以後、送受信、転送等は通信回線１３０を介して行なったものを指す。また以降、通信プロトコルはEthernet（登録商標）あるいはIEEE802.3に規定された通信であるとして説明する。
【００２６】
転送前データ２０１は転送を行なう前のデータであって、ROM−１A（１１１）内に一つのデータとして格納されているが転送を行なう際には幾つかの領域に分けられ、それぞれがパケットに格納された状態で転送される。転送後には各パケットはRAM−B（１２３）内の所望のアドレスから順に配置される。転送中は一つのパケットは転送前データ２０１の一部がコピーされたedataと、フレームのヘッダ部であるeheaderから構成され、転送後には一つのパケットはedataと、eheaderと、Communication Controller−B（１２２）が付加するヘッダ情報であるcheaderと、Communication Controller−B（１２２）が付加するフッタ情報であるcfooterとで構成される。図２、図３中で転送中のパケット単位をPacket a、b・・・ｎ、転送後のパケット単位をPacket A、B,・・・Nとして示す。
【００２７】
edataには、転送前データ２０１の一部が格納されており、本実施形態での一つのパケットに格納されたedataのサイズは１５００バイトとする。
【００２８】
eheaderには、送信先アドレス、送信元アドレス、およびプロコトルタイプの情報が格納されており、本実施形態における一つのeheaderのサイズは１４バイトとする。
【００２９】
cheaderには、受信ステータス、およびパケット長の情報が格納されており、本実施形態における一つのcheaderのサイズは４バイトとする。
【００３０】
cfooterには,CRC（Cyclic Redundancy Check）の情報が格納されており、本実施形態におけるcfooterのサイズは４バイトとする。
【００３１】
本実施形態でのパケットのサイズおよび格納される情報は上記のように例示したが、これに限定されるものではなく、実施の際にはそれぞれの実装に依存するものと考えられる。
【００３２】
図３は本実施形態における転送を行なう前のデータのデータ構造の一例を示す図である。図３には転送後データ２０２、変換前データ３０１、および変換後データ３０２が示されている。
【００３３】
変換前データ３０１は実体データ（ここでROM−１A（１１１）からRAM−B（１２３）への転送の目的となる本来の形式のデータを実体データと呼ぶ）であり、転送処理が完了したとき転送されたデータは所望の領域にこの並びと同じように格納される。また、変換前データ３０１は転送前に変換後データ３０２の形式に変換された上で、通信回路１３０を介した転送処理を行なわれる。
【００３４】
変換後データ３０２は補完用データ、直接用データから構成される。
【００３５】
ROM−１A（１１１）からRAM−B（１２３）に通信回路１３０を介してデータの転送を行なう場合、転送を行なうデータは転送データ２０２のcheader、cfooterを除いた形式（eheaderとedataが１パケットとなっているPacket  aのようなパケットが順に並んでいる形式）で送信される。従来は実体データを形式を変更せずにそのまま転送しており、実体データは先頭から順に所定のサイズ（本実施形態ならば１５００バイト）毎に各パケットに格納され、Packet aのような形式で先頭のパケットより順に転送される。転送後、eheaderとedataからなるパケットにはCommunication Controller−B（１２２）によってcheader、cfooterがそれぞれのパケットにさらに付加され全体として転送後データ２０２の形式となる。転送後データ２０２はRAM−B（１２３）内の最終的に実体データを格納する領域とは異なる領域に一時的にパケット毎に格納されてき、全体として転送後データ２０２の格納終了後、最終的に実体データを配置するアドレスの先頭から転送後データ２０２中のedataを最初から順にコピーしていき、全てのedataのコピーを行なうことで元の実体データの形式が完成し、データ転送処理が完了する。
【００３６】
本実施形態では、ROM−１A（１１１）の格納される変換前データ３０１のデータ形式を変換後データ３０２の形式に変換する。変換前データ３０１を転送後データ２０２のデータ形式と先頭から照合し、変換前データ３０１の、転送後データ２０２のヘッダ、フッタ部に対応する部分を補完用データ、それ以外のedataに対応する部分（図中斜線部）を直接用データとする。変換前データ３０１の途切れ途切れに存在する補完用データを最初から並べ、その次に変換前データ３０１の直接用データを同様に最初から順に並べることで変換後データ３０２への変換を行なう。
【００３７】
この変換作業はROM−１A（１１１）に格納する前にこの形式に変換されて格納されてもよい。本実施形態では変換前データ３０１としてROM−１A（１１１）への格納がなされているデータについて送信管理部１１５が変換作業を行うものとする。
【００３８】
図４は本実施形態におけるROM−１A（１１１）に格納されたデータの一例を示す図である。図４には転送用データ４０１、イメージヘッダ４０２、補完用データ４０３、直接用データ４０４、ロード方式４０５、補完用データ転送先アドレス４０６、転送先アドレス４０７、補完用データオフセット４０８、直接用データオフセット４０９、補完用データサイズ４１０、直接用データサイズ４１１、補完用パケット数４１２、直接用パケット数４１３、ACK間隔パケット数４１４、および次のイメージヘッダオフセット４１５が示されている。
【００３９】
転送用データ４０１はROM−１A（１１１）内に格納され、上記変換作業が完了しているデータである。転送用データ４０１はイメージヘッダ４０２、補完用データ４０３、直接用データ４０４から構成される。
【００４０】
イメージヘッダ４０２は転送用データ４０１の情報を格納している。イメージヘッダ４０２にはロード方式４０５（TYPE_LOAD）、補完用データ転送先アドレス４０６（ADDR_CDEST）、転送先アドレス４０７（ADDR_DEST）、補完用データオフセット４０８（OFFSET_C）、直接用データオフセット４０９（OFFSET_D）、補完用データサイズ４１０（SIZE_C）、直接用データサイズ４１１（SIZE_D）、補完用パケット数４１２（N_CP）、直接用パケット数４１３（N_DP）、ACK間隔パケット数４１４（N_ACK）、および次のイメージヘッダオフセット４１５（OFFSET_NEXT）が格納されている。
【００４１】
ロード方式４０５（TYPE_LOAD）は転送用データ４０１が転送後に伸長処理されるデータか否か、また転送後にデコード処理を行うデータか否かの情報を有している。転送後RAM−B（１２３）上にCPU−B（１２０）によって伸長処理を施して展開されるようなデータの場合は、データ転送と並行してCPU−B（１２０）がデータの先頭より順次リードし、キャッシュ上で伸張処理すると効率が良いため、従来の方法でデータ転送を行なう。また、伸張処理の他、暗号のデコード処理でも同様である。
【００４２】
補完用データ転送先アドレス４０６（ADDR_CDEST）は転送後、RAM−B（１２３）上の補完用データ４０３を配置するアドレスを示している。この補完用転送先アドレス４０６（ADDR_CDEST）は転送用アドレス４０７（ADDR_DEST）とは異なるアドレスに設定されている。
【００４３】
転送先アドレス４０７（ADDR_DEST）は転送後に実体データを最終的に配置したいアドレスを示している。
【００４４】
補完用データオフセット４０８（OFFSET_C）はROM−１A（１１１）上でイメージヘッダ４０２先頭のアドレスから、補完用データ４０３が存在するアドレスまでのオフセットである。
【００４５】
直接用データオフセット４０９（OFFSET_D）はROM−１A（１１１）上でイメージヘッダ４０２先頭のアドレスから、直接用データ４０４が存在するアドレスまでのオフセットである。
【００４６】
補完用データサイズ４１０（SIZE_C）は補完用データ４０３のバイト数を示している。
【００４７】
直接用データサイズ４１１（SIZE_D）は直接用データ４０４のバイト数を示している。
【００４８】
補完用パケット数４１２（N_CP）は補完用データ４０３を通信回路１３０を介して転送する際に、補完用データ４０３を転送可能な最大サイズ（本実施形態では１５００バイト）のパケットとして転送するときのパケット数である。
【００４９】
直接用パケット数４１３（N_DP）は直接用データ４０４を通信回路１３０を介して転送する際に、直接用データ４０４を転送可能な最大サイズ（本実施形態では１５００バイト）のパケットとして転送するときのパケット数である。
【００５０】
ACK間隔パケット数４１４（N_ACK）は補完用データ４０３および直接用データ４０４をパケットとして転送する際、送信管理部１１５と受信管理部１２４が同期をとる間隔のパケット数である。パケットをACK間隔パケット数４１４（N_ACK）個分、転送するごとに送信管理部１１５と受信管理部１２４は同期をとり、受信管理部１２４がデータ転送先の受信アドレスを調整する必要がある場合にはアドレスを調整することが可能である。
【００５１】
次のイメージヘッダオフセット４１５（OFFSET_NEXT）はROM−１A（１１１）上での現在のイメージヘッダ先頭から、次のイメージヘッダ先頭へのオフセットである。もしオフセットが０である場合は現在のデータがROM−１A（１１１）上の最後のデータである。
【００５２】
図５は本実施形態においてRAM−B（１２３）に補完用データ４０３を転送する手順の一例を示す図である。図５中斜線部はパケットとして受信した後に付加されているヘッダ、フッタ部であり、以後付加データと呼ぶ。
【００５３】
RAM−B（１２３）上の補完用データ転送先アドレス４０６（ADDR_CDEST）が示すアドレスにパケットとして転送される補完用データ４０３は最初のパケットから順次転送され先頭より並べられる。図５（A）、（B）、（C）の順にパケット１から順次格納され、補完用パケット数N_CP分転送されると補完用データ４０３は全て転送され、補完用データ４０３の転送は終了となる。
【００５４】
図６は本実施形態においてRAM−B（１２３）に直接用データ４０４を転送する手順の一例を示す図である。図６中斜線部は付加データである。
【００５５】
補完用データ４０３の転送終了後に、直接用データ４０４はRAM−B（１２３）上の最終的に実体データを配置したいアドレスである転送先アドレス４０７（ADDR_DEST）が示すアドレスから最初のパケットより順次転送される。図６（A）、（B）、（C）の順にパケット１から順次格納され、直接用パケット数N_DP分転送されると直接用データ４０４は全て転送され、直接用データ４０４の転送は終了となる。以上で補完用データ４０３と直接用データ４０４はRAM−B（１２３）上の異なる場所に転送が完了となる。ここで、補完用データ４０３を転送する領域はRAM−B（１２３）上の異なる場所と例示したが、これに限定されるものではなく、他に一時的に転送データを格納するバッファ領域等が存在すれば、そちらに補完用データ４０３の転送を行なってもよい。
【００５６】
図７は本実施形態において補完用データ４０３と直接用データ４０４転送完了後の実体データを構成する手順の一例を示す図である。
【００５７】
図７（A）、（A´）は図６（C）の補完用データ４０３格納領域と直接用データ４０４格納領域をそれぞれ示したものであり、RAM−B（１２３）上の別の領域である。補完用データ４０３は図７（A´）中の斜線部に対応するデータを最初から並べられたデータであるため、補完用データ４０３を先頭から図７（A´）中の斜線部に順にコピーしていくと本来RAM−B（１２３）への転送の目的であったデータである実体データが完成する。よって受信管理部１２４が図７（A´）の付加データが格納されている斜線部のサイズに対応するサイズ分補完用データ４０３の最初から切り取り、対応する付加データの格納されている斜線部に順次コピーをしていくことにより最終的に実体データの格納を行ないたいかったアドレスである転送先アドレス４０７（ADDR_DEST）に、実体データを格納できる。
【００５８】
図８は本実施形態におけるデータ送受信処理の一例を示すシーケンス図である。ここでは、データ送受信処理開始から完了までを開始要求フェーズ、補完用データフェーズ、直接用データフェーズの３つの段階に分けて説明する。
【００５９】
ROM−１A（１１１）からRAM−B（１２３）へデータを転送する際、まず開始要求フェーズとして、送信管理部１１５がCPU−B（１２０）に対して転送開始要求Packetを送信する。CPU−B（１２０）はこれを受け取り、受信管理部１２４が転送開始要求Packetから情報を読み取り、RAM−B（１２３）およびCPU−B（１２０）が転送開始可能な状態であれば転送開始要求Ack PacketをCPU−A（１１０）に送信する。またこのとき転送開始要求Packet内に該データが後に伸長処理を行うデータであるという情報が格納されている場合には本実施形態に示されるデータ転送は行なわず、従来のデータ転送を行なう。
【００６０】
転送開始要求Ack Packetには、転送開始要求を受け付けたか否かの可否ステータスが格納される。CPU−B（１２０）が転送開始要求Ack Packetを受信すると、送信管理部１１５は受信転送開始要求Ack Packet内に格納された可否ステータスを読み込む。ここで開始要求フェーズは終了となる。
【００６１】
CPU−B（１２０）が可否ステータスを読み込んだ結果、転送開始可能であったとき補完用データPacketを送信し、ここより補完用データフェーズに入る。補完用データPacketは補完用データ４０３の一部のデータと付加データからなる。補完用データPacketはCPU−B（１２０）からの返信を待つことなくN_ACK分の個数までは一度に連続して送信することができる。受信管理部１２４はN_ACK分の個数の補完用データPacketを受信すると、次に補完用データAck PacketをCPU−A（１１０）に対し送信する。この補完用データAck Packetにはそれが補完用データPacketの転送を継続するか終了するか（継続／終了）を示すステータスが格納されている。CPU−A（１１０）はN_ACK分の個数の補完用データPacketを連続して送信した後、CPU−B（１２０）よりこの補完用データAck Packetを受信するまで、次の補完用データPacketを送信することはできない。そこで、CPU−B（１２０）は補完用データAck Packetを送信するまではCPU−A（１１０）からの補完用データPacketを受信しないため、続きの補完用データPacketを受信するアドレスを他のアドレスに設定することが可能である。CPU−A（１１０）は補完用データAck Packetを受信し、送信管理部１１５がそれが最後の補完用データAck Packetであるか否かを読みとり、継続のステータスが格納されていれば、補完用データPacketの送信を再開する。以後、同様に補完用データPacketの送信継続し、補完用データPacketの送信数が個数N_CPに達すると、受信管理部１２４が終了のステータスを格納した補完用データAck PacketをCPU−A（１１０）に送信する。以上で補完用データフェーズは終了となり、次に直接用データ４０４を転送する直接用データフェーズに入る。
【００６２】
直接用データフェーズでは補完用データフェーズと同様のシーケンスでデータを転送し、CPU−A（１１０）が直接用データPacketをN_DP個送信すると、終了のステータスの格納された直接用データAck PacketをCPU−B（１２０）が送信し直接用データフェーズが終了する。以上でデータの送受信処理が終了する。
【００６３】
以上のように本実施形態では補完用データAck Packet、直接用データAck Packetを用いることで送受信処理中にCPU−A（１１０）と、CPU−B（１２０）との同期をさせ、その間に格納先のアドレスを変更可能とする。しかし、この補完用データAck Packet、直接用データAck Packetの送受信を行なわなくてもデータの送受信処理は可能であり、格納先のアドレスを変更する必要のない場合は補完用データAck Packet、直接用データAck Packetの送受信を行なわず、連続的に補完用データPacket、直接用データPacketの転送を行なうことも可能である。
【００６４】
図９は本実施形態における転送開始要求Packetの構成の一例を示す図である。
【００６５】
転送開始要求Packetはイメージヘッダ４０２のサブセットとなっており、転送開始要求Packetにはロード方式（TYPE_LOAD）、補完用データ転送先アドレス（ADDR_CDEST）、転送先アドレス（ADDR_DEST）、補完用データサイズ（SIZE_C）、直接用データサイズ（SIZE_D）、補完用パケット数（N_CP）、直接用パケット数（N_DP）、ACK間隔パケット数（N_ACK）、および次のイメージヘッダオフセット（OFFSET_NEXT）が格納されている。転送開始要求Packetはイメージヘッダ４０２から補完用データオフセット４０８（OFFSET_C）および直接用データオフセット４０９（OFFSET_D）を除いたものである。
【００６６】
図１０は本実施形態におけるデータ転送処理の転送開始要求フェーズの一例を示したフロー図である。
【００６７】
本実施形態におけるデータ転送処理を行うとき、まず転送開始要求フェーズの開始として送信管理部１１５が転送用データ４０１のイメージヘッダ４０２を読み込み（S０１）、転送開始要求Packetを定義する。次に転送開始要求PacketをCPU−B（１２０）に対し送信する（S０２）。CPU−B（１２０）が転送開始要求Packetを受信すると（S０３）、受信管理部１２４はこの転送開始要求Packetに格納された情報を読み込み、RAM−B（１２３）に転送用データ４０１が転送可能か否かの判別を行なう（S０４）。転送が不可能な状態であるならば（No）、送信管理部１１５が転送開始不可能であるという情報を格納した転送開始要求Ack PacketをCPU−A（１１０）に対し送信する（S０５）。そしてCPU−A（１１０）は転送開始要求Ack Packetを受信し（S０６）、転送が不可能であるので転送処理フローは終了となる。
【００６８】
S０４において転送が可能な状態であれば（Yes）、受信管理部１２４は転送開始要求Packetに格納される情報を参照して、RAM−B（１２３）の転送先のアドレスをADDR_CDESTに設定する（S０７）。次に送信管理部１１５は転送開始可能であるという情報を格納した転送開始要求Ack PacketをCPU−A（１１０）に対し送信する（S０８）。CPU−A（１１０）はその転送開始要求Ack Packetを受信し（S０９）、転送開始要求フェーズは終了となり、次に補完用データフェーズに移る。
【００６９】
図１１は本実施形態におけるデータ転送処理の補完用データフェーズの一例を示したフロー図である。
【００７０】
補完用データフェーズでは、まず送信管理部１１５が補完用データPacketをCPU−B（１２０）に対し送信する（S１１）。CPU−B（１２０）は補完用データPacketを受信し（S１２）、受信管理部１２４がRAM−B（１２３）のアドレスADDR_CDESTから順にパケットを格納していく。また受信管理部１２４は補完用データPacketの受信数が転送開始要求Packetに格納されていた情報である個数N_CPに達したか否かを監視し（S１３）、達していない間には（No）、また補完用データPacket の受信数が、転送開始要求Packetに格納されていた情報であるACK間隔パケット数N_ACKの倍数か否かの判別を行なう（S１４）。個数N_ACKの倍数でなければ（No）、フローはS１１に戻り補完用データPacketの転送を継続する。倍数であれば（S１４、Yes）、受信管理部１２４はRAM−B（１２３）上の受信アドレスを変更する場合はアドレスの変更を行なった後に、変更しない場合はそのまま転送継続のステータスを格納した補完用データAck PacketをCPU−A（１１０）に対し送信する（S１５）。CPU−A（１１０）が補完用データAck Packetを受信すると（S１６）、フローはS１１に戻り補完用データPacketの転送を継続する。S１３において、補完用データPacketの受信数が個数N_CPに達すると（Yes）、受信管理部１２４は転送開始要求Packetに格納される情報を参照して、RAM−B（１２３）の転送先のアドレスをADDR_DESTに設定し（S１７）、CPU−A（１１０）に対して終了のステータスを格納した補完用データAck Packetを送信する（S１８）。最後にCPU−A（１１０）が補完用データAck Packetを受信して（S１９）、補完用データフェーズは終了となり、次に直接データフェーズへと移る。
【００７１】
図１２は本実施形態におけるデータ転送処理の直接用データフェーズの一例を示したフロー図である。
【００７２】
直接用データフェーズは補完用データフェーズとほぼ同様の処理フローとなる。直接用データフェーズにおける直接用データPacket、ADDR_DEST、N_DP、直接用データAck Packetが補完用データフェーズにおける補完用データPacket、ADDR_CDEST、N_CP、補完用データAck Packetとそれぞれ対応しており、それらに関する処理フローは同様のものとなる。
【００７３】
特に補完用データフェーズと異なる点としては、送受信に関する処理は直接用データフェーズをもって終了となるので、S２７において受信管理部１２４がRAM−B（１２３）の転送先のアドレスを通常のデータを転送する際に指定するアドレスに設定を行なうということが挙げられる。
【００７４】
直接用データフェーズにおいてS２９が終了すると直接用データフェーズは終了となり、次にデータコピーフェーズに移る。
【００７５】
図１３は本実施形態におけるデータ転送処理のデータコピーフェーズの一例を示したフロー図である。
【００７６】
データコピーフェーズにおいて、受信管理部１２４はRAM−B（１２３）上のADDR_CDESTに格納された補完用データ４０３を、ADDR_DESTに格納された直接用データ４０４に付加された付加データの対応する領域に最初から順次コピーする（S３１）。コピーが最後まで終了すると、RAM−B（１２３）上の最終的に実体データを配置するアドレスADDR_DESTに、転送の目的である実体データの格納が終了する。次にADDR_CDESTに格納された補完用データ４０３および付加データの削除を行い（S３２）、データ転送処理フローは終了となる。ここでADDR_CDESTに格納された補完用データ４０３および付加データは削除を行なうように例示したが、これに限定されるものではなく削除を行なわずに格納されたままであってもよい。
【００７７】
また、本実施形態の順序でデータ転送処理を行った場合、直接用データフェーズにおいて直接用データ４０４の転送中に、直接用データ４０４の転送を完了した領域について、順次補完用データ４０３のコピーを開始することもできる。この場合には直接用データフェーズとデータコピーフェーズを並行して処理ができるためより高速にデータ転送処理を完了させることも可能である。
【００７８】
あるいは本実施形態では補完用データフェーズの後に直接用データフェーズの処理を行うように例示したがこれに限定されるものではなく、直接用データ４０４を先に転送し補完用データ４０３を後に転送するようにしても良い。
【００７９】
本発明にかかる実施形態の構成とすれば、いったん受信したデータの全てをバッファに読み込んでからコピーする従来のデータ転送方法と比較して、受信したデータの多くを最終的に配置したいアドレスへ直接読み込むことが可能である。一方、付加データのサイズは転送データのサイズと比べれば十分小さいため、別領域に格納するデータの量も受信したデータと比較し十分小さいものとなる。よって読み込み後にしなければならなかったコピー処理量の低減が可能であるため従来のデータ転送より、データ転送速度の高速化が実現できる。
【００８０】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具現化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００８１】
【図１】本実施形態におけるデータ転送装置の構成の一例を示すブロック図。
【図２】本実施形態においてデータを通信回路を用いて転送を行なうときの転送前のデータ構造と転送後のデータ構造の一例を示す図。
【図３】本実施形態における転送を行なう前のデータのデータ構造の一例を示す図。
【図４】本実施形態におけるROM−１Aに格納されたデータの一例を示す図。
【図５】本実施形態においてRAM−Bに補完用データを転送する手順の一例を示す図。
【図６】本実施形態においてRAM−Bに直接用データを転送する手順の一例を示す図。
【図７】本実施形態において補完用データと直接用データ転送完了後の実体データを構成する手順の一例を示す図。
【図８】本実施形態におけるデータ送受信処理の一例を示すシーケンス図。
【図９】本実施形態における転送開始要求Packetの構成の一例を示す図。
【図１０】本実施形態におけるデータ転送処理の転送開始要求フェーズの一例を示したフロー図。
【図１１】本実施形態におけるデータ転送処理の補完用データフェーズの一例を示したフロー図。
【図１２】本実施形態におけるデータ転送処理の直接用データフェーズの一例を示したフロー図。
【図１３】本実施形態におけるデータ転送処理のデータコピーフェーズの一例を示したフロー図。
【符号の説明】
【００８２】
１１０：CPU−A
１２０：CPU−B
１３０：通信回路
１１１：ROM−１A
１１２：ROM−２A
１１３：RAM−A
１１４：Communication Controller−A
１１５：送信管理部
１２１：ROM−B
１２２：Communication Controller−B
１２３：RAM−B
１２４：受信管理部
２０１：転送前データ
２０２：転送後データ
３０１：変換前データ
３０２：変換後データ
４０１：転送用データ
４０２：イメージヘッダ
４０３：補完用データ
４０４：直接用データ
４０５：ロード方式
４０６：補完用データ転送先アドレス
４０７：転送先アドレス
４０８：補完用データオフセット
４０９：直接用データオフセット
４１０：補完用データサイズ
４１１：直接用データサイズ
４１２：補完用パケット数
４１３：直接用パケット数
４１４：ACK間隔パケット数
４１５：次のイメージヘッダオフセット
【図１】
2010128957.tif 000003
【図２】
2010128957.tif 000004
【図３】
2010128957.tif 000005
【図４】
2010128957.tif 000006
【図５】
2010128957.tif 000007
【図６】
2010128957.tif 000008
【図７】
2010128957.tif 000009
【図８】
2010128957.tif 000010
【図９】
2010128957.tif 000011
【図１０】
2010128957.tif 000012
【図１１】
2010128957.tif 000013
【図１２】
2010128957.tif 000014
【図１３】
2010128957.tif 000015