(57)【特許請求の範囲】
【請求項１】
プロセッサと、
データを記憶する記憶装置間におけるデータの転送時の読み出し、及び書き込みを前記プロセッサを介さずに制御するメモリ制御部と、
前記データの読み出し先の前記記憶装置、または書込み先の前記記憶装置において前記データが記憶される位置情報、及び前記データのサイズ情報を含む情報であって、前記プロセッサが生成する転送指示情報を記憶する情報記憶部と、
前記転送指示情報を所定のデータサイズ毎に分割して複数の分割転送指示情報を生成する生成部と、
前記メモリ制御部に対し、前記分割転送指示情報を取得するよう指示する指示部と、
を備え、
前記指示部は、前記メモリ制御部に対して、前記生成部が前記転送指示情報のうちどの部分から前記分割転送指示情報を生成するかを決定するための指示内容を指定し、
前記メモリ制御部は、前記指示内容に基づき、前記生成部に、前記分割転送指示情報の取得の要求を出し、
前記生成部は、前記取得の要求に応じて、前記転送指示情報のどの部分から前記分割転送指示情報を生成するかを決定し、当該決定に応じて前記分割転送指示情報を生成する
ことを特徴とするデータ伝送装置。
【請求項２】
前記生成部は、いずれの前記メモリ制御部から参照があったかに応じて、前記分割転送指示情報の形式を異なる態様で生成する
ことを特徴とする請求項１に記載のデータ伝送装置。  
【請求項３】
前記メモリ制御部は、複数設けられており、
前記指示部と複数の前記メモリ制御部とは、それぞれ異なる複数のバスによって接続されてなる
ことを特徴とする請求項２に記載のデータ伝送装置。  
【請求項４】
前記生成部は、複数設けられており、
前記生成部と複数の前記メモリ制御部とは、それぞれ異なる複数のバスによって接続されてなる
ことを特徴とする請求項３に記載のデータ伝送装置。  
【請求項５】
前記指示部は、前記分割転送指示情報を取得し、取得した前記分割転送指示情報に基づいてデータの転送の制御を行う
ことを特徴とする請求項１〜４のいずれか一項に記載のデータ伝送装置。  
【請求項６】
前記生成部は、前記メモリ制御部からの前記分割転送指示情報の取得の要求があった場合に、前記サイズ情報が未定義の状態の前記分割転送指示情報を生成するとともに、前記メモリ制御部による前記データの書き込みの制御の後に、前記メモリ制御部から受理した書き込み時のデータの前記サイズ情報を取得して、前記サイズ情報の値を更新する
ことを特徴とする請求項１〜５のいずれか一項に記載のデータ伝送装置。  
【請求項７】
プロセッサと、データを記憶する記憶装置間におけるデータの転送時の読み出し、及び書き込みを前記プロセッサを介さずに制御するメモリ制御部と、を備える装置におけるデータ伝送方法であって、
前記データの読み出し先の前記記憶装置、または書込み先の前記記憶装置において前記データが記憶される位置情報、及び前記データのサイズ情報を含む情報であって、前記プロセッサが生成する転送指示情報を記憶する情報記憶ステップと、
前記転送指示情報を所定のデータサイズ毎に分割して複数の分割転送指示情報を生成する生成ステップと、
前記メモリ制御部に対し、前記分割転送指示情報を取得するよう指示する指示ステップと、
を含み、
前記指示ステップでは、前記メモリ制御部に対して、前記転送指示情報のうちどの部分から前記分割転送指示情報を生成するかを決定するための指示内容を指定し、
前記メモリ制御部は、前記指示内容に基づき、前記分割転送指示情報の取得の要求を出し、
前記生成ステップでは、前記メモリ制御部からの前記取得の要求に応じて、前記転送指示情報のどの部分から前記分割転送指示情報を生成するかを決定し、当該決定に応じて前記分割転送指示情報を生成する
ことを特徴とするデータ伝送方法。  
【請求項８】
プロセッサと、データを記憶する記憶装置間におけるデータの転送時の読み出し、及び書き込みを前記プロセッサを介さずに制御するメモリ制御部と、を備えるコンピュータに、
前記データの読み出し先の前記記憶装置、または書込み先の前記記憶装置において前記データが記憶される位置情報、及び前記データのサイズ情報を含む情報であって、前記プロセッサが生成する転送指示情報を記憶する情報記憶ステップと、
前記転送指示情報を所定のデータサイズ毎に分割して複数の分割転送指示情報を生成するする生成ステップと、
前記メモリ制御部に対し、前記分割転送指示情報を取得するよう指示する指示ステップと、
を実行させ、
前記指示ステップでは、前記メモリ制御部に対して、前記転送指示情報のうちどの部分から前記分割転送指示情報を生成するかを決定するための指示内容を指定し、
前記メモリ制御部は、前記指示内容に基づき、前記分割転送指示情報の取得の要求を出し、
前記生成ステップでは、前記メモリ制御部からの前記取得の要求に応じて、前記転送指示情報のどの部分から前記分割転送指示情報を生成するかを決定し、当該決定に応じて前記分割転送指示情報を生成する
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ伝送装置、データ伝送方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、ＣＰＵにかわりメモリやハードディスクなどの装置間で直接データの転送制御を行うために、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラが設けられたシステムが知られている。ＤＭＡコントローラは、ＣＰＵが生成した転送元の位置情報、転送先の位置情報、及び転送サイズを指定した転送指示情報に基づいて、装置間のデータ転送を制御する。ＣＰＵがＤＭＡコントローラに対して転送指示情報を出力する方式としては、ＣＰＵが直接ＤＭＡコントローラ内のレジスタに転送指示情報を書き込んだり、ＣＰＵは転送指示情報をメモリに記憶し、ＤＭＡコントローラがメモリに記憶された転送指示情報を読み出したりしたりする方式がある。このように、ＤＭＡコントローラにより、データ転送を行うことで、ＣＰＵにてソフトウェアによる処理が介在しなくなるため、転送処理時間を短くしたり、ＣＰＵを他の処理により活用することができたりといった効果がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１３５０６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＤＭＡコントローラにおいては、一般的には、転送指示情報はデータごとにＣＰＵが生成することから、データが断片化して小さくなっている場合などに、ＣＰＵが転送のたびに、転送指示情報を生成する必要があり、ＣＰＵにかかる負荷が大きくなってしまうという問題が生じていた。
【０００５】
本発明の一側面は、上記に鑑みてなされたものであって、ＣＰＵにかかる負荷を軽減することができるデータ伝送装置を提供することにある。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明の実施形態のデータ伝送装置は、プロセッサと、データを記憶する記憶装置間におけるデータの転送時の読み出し、及び書き込みを前記プロセッサを介さずに制御するメモリ制御部と、を備えている。
【０００７】
また、データ伝送装置は、前記データの読み出し先の前記記憶装置、または書込み先の前記記憶装置において前記データが記憶される位置情報、及び前記データのサイズ情報を含む情報であって、前記プロセッサが生成する転送指示情報を記憶する情報記憶部と、前記転送指示情報を所定のデータサイズ毎に分割して複数の分割転送指示情報を生成する生成部と、前記メモリ制御部に対し、前記分割転送指示情報を取得するよう指示する指示部と、を備えている。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施形態におけるデータ伝送装置のハードウェア構成図である。
【図２】図２は、第１の実施形態における生成部の概要図である。
【図３】図３は、第１の実施形態におけるデータ転送にかかる処理の流れを示すフロー図である。
【図４】図４は、第１の実施形態におけるデータ転送にかかる処理の流れを示すシーケンス図である。
【図５】図５は、第２の実施形態における生成部の概要図である。
【図６】図６は、第３の実施形態におけるデータ伝送装置のハードウェア構成図である。
【図７】図７は、第４の実施形態におけるデータ伝送装置のハードウェア構成図である。
【図８】図８は、第５の実施形態における生成部の概要図である。
【図９】図９は、第５の実施形態におけるデータ転送にかかる処理の流れを示すシーケンス図である。
【発明を実施するための形態】
【０００９】
以下に、実施形態のデータ伝送装置を図面に基づいて詳細に説明する。実施形態においては、データ伝送装置を異なる機器間において、データの送受信を行う通信装置に適用した例を示すが、この発明が実施形態に限定されるものではない。
（第１の実施形態）
【００１０】
図１は、第１の実施形態のデータ伝送装置１００のハードウェア構成図である。データ伝送装置１００は、ＣＰＵ１０１、主記憶部１０２、第１ＤＭＡコントローラ１０３、データ蓄積部１０４、第２ＤＭＡコントローラ１０５、通信部１０６、転送情報記憶部１０７、生成部１１０、転送指示部１０８、転送設定記憶部１０９、及びバッファ部１１１を備えている。本実施形態においては、第１ＤＭＡコントローラ１０３、及び第２ＤＭＡコントローラ１０５が転送制御部に該当し、２つのＤＭＡコントローラが設けられている構成を示している。これらの部位は、それぞれバス１１２によって接続されている。
【００１１】
ＣＰＵ１０１は、データ伝送装置１００内のソフトウェアを実行する部位である。ソフトウェアは、通常データ蓄積部１０４に記憶されており、ＣＰＵ１０１はソフトウェアを実行する際には、通常データ蓄積部１０４から読み出し、主記憶部１０２上にてソフトウェアを実行する。また、ＣＰＵ１０１は、後述するデータ転送用の転送指示情報を生成する。転送指示情報は、あるファイルを、ソフトウェアを通じて操作した場合等に生成され、ファイルを構成するデータのうち連続して記憶されているデータ単位でその記憶位置情報、及びデータのサイズ情報を含んで生成される。したがって、あるファイルからは断片化されているデータの数の分だけ転送指示情報が生成される。
【００１２】
データ伝送装置１００からデータが読み出される場合は、転送指示情報は、読み出し元の記憶装置におけるデータの記憶位置情報、及びサイズ情報を含んでいる。また、データ伝送装置１００が別の装置からデータを受信してデータが装置内の記憶装置に書き出される場合には、転送指示情報は、書き出し先の記憶装置におけるデータの記憶情報、及びデータのサイズ情報を含んでいる。ＣＰＵ１０１によって生成された転送指示情報は、転送情報記憶部１０７に記憶される。
【００１３】
主記憶部１０２は、ＣＰＵ１０１が実行するマシンコードやデータが一時的に記憶される。本実施形態では、ＳＲＡＭやＤＲＡＭといった記憶デバイスが用いられる。データ蓄積部１０４は、不揮発性のデータを記憶する。本実施形態においては、ＨＤＤ（ＨａｒｄＤｉｓｋＤｒｉｖｅ）やＳＳＤ、ＳＤメモリカード等といった大容量の記録メディアが用いられている。上述の転送指示情報も、一旦主記憶部１０２上で生成された後に、転送情報記憶部１０７に記憶される。
【００１４】
第１ＤＭＡコントローラ１０３は、データ蓄積部１０４と他の装置との間でのデータ転送を制御する。第１ＤＭＡコントローラ１０３は、転送指示情報から生成された分割転送指示情報に基づき、分割転送指示情報で指定されたデータ蓄積部１０４のメモリアドレスから取得したデータを、他の装置の指定されたメモリアドレスへと書き出したり、他の装置の指定されたメモリアドレスから取得したデータを、指定されたデータ蓄積部１０４のメモリアドレスへと書き出したりといったデータ転送の制御を行う。分割転送指示情報の詳細については後述する。
【００１５】
通信部１０６は、データ伝送装置１００が外部の通信装置との間でデータの送受信を行うための部位である。本実施形態においては、Ｅｔｈｅｒｎｅｔ（登録商標）、ＵＳＢ、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの通信規格による通信デバイスにより構成されている。第２ＤＭＡコントローラ１０５は、通信部１０６と他の装置との間でのデータ転送を制御する。第２ＤＭＡコントローラ１０５は、転送指示情報から生成された分割転送指示情報に基づき、分割転送指示情報で指定された通信部１０６のメモリアドレスから取得したデータを、他の装置の指定されたメモリアドレスへと書き出したり、他の装置の指定されたメモリアドレスから取得したデータを、指定された通信部１０６のメモリアドレスへと書き出したりといったデータ転送の制御を行う。
【００１６】
転送情報記憶部１０７は、ＣＰＵ１０１が生成した転送指示情報を記憶する。本実施形態においては、ＳＲＡＭやＤＲＡＭといった記憶デバイスにより構成されている。
【００１７】
転送指示部１０８は、第１ＤＭＡコントローラ１０３や第２ＤＭＡコントローラ１０５に対して、データ転送の設定や割り込み制御を行う。具体的には、転送指示部１０８は、各ＤＭＡコントローラに対して、後述する分割転送指示情報を生成する場所としてコールする生成部１１０の内部記憶部のアドレス、及び読み出しであるのか、書き出しであるのかの読み書き方向等を指定する。転送指示部１０８は、ＤＭＡコントローラ毎にコールするアドレスを予め定めている。また、転送指示部１０８は、各ＤＭＡコントローラ１０３、１０５  が出力する割り込み信号がそれぞれ入力されて、ＤＭＡコントローラ１０３、１０５への割り込み制御を行う。
【００１８】
転送設定記憶部１０９は、転送指示部１０８が実行する、各ＤＭＡコントローラ１０３、１０５のデータ転送時における設定や、割り込み制御時の手順を記憶している。転送指示部１０８は、転送設定記憶部１０９を参照して、上述の設定を行う。
【００１９】
生成部１１０は、内部に記憶部を有しており、第１ＤＭＡコントローラ１０３や第２ＤＭＡコントローラ１０５から、指定された内部の記憶部のアドレスへの参照要求を受けると、転送情報記憶部１０７が記憶する転送指示情報から各ＤＭＡコントローラ１０３、１０５に応じたフォーマットで分割転送指示情報を生成し、返信する。具体的には、生成部１１０はどの内部の記憶部のアドレスがコールされたかによって、どのＤＭＡコントローラから参照があったかを判定する。そして、生成部１１０は、ＤＭＡコントローラ毎に定められたデータの分割サイズや、追加する属性情報などを決定して、転送指示情報から、コールされた各アドレス単位で分割転送指示情報を生成する。生成部１１０は、コールされたアドレスによって、転送指示情報のどの部分から分割転送指示情報を生成するかを決定する。
【００２０】
また、分割転送指示情報はＤＭＡコントローラの種類によって、配列構造の場合もあれば、チェーン構造をなす場合もあり、フィールドや属性値の定義も異なってくる。生成部１１０は、ＤＭＡコントローラに応じて、生成する分割転送指示情報の形式を変更することにより、ＤＭＡコントローラ毎に要求される分割転送指示情報の形式の差異を吸収することができる。なお、転送指示部１０８や、生成部１１０は、ＣＰＵ１０１とは異なる回路によって実現されており、したがって、転送指示部１０８や、生成部１１０による処理はＣＰＵ１０１のパフォーマンスに対し影響を与えないようになっている。
【００２１】
バッファ部１１１は、各ＤＭＡコントローラ１０３、１０５間において、データを転送する際に一時的にデータを記憶し、バッファ部１１１を介してデータの受け渡しが行われる。本実施形態においては、バッファ部１１１には、主記憶部１０２と同様にＳＲＡＭやＤＲＡＭといった記憶デバイスが用いられる。
【００２２】
バス１１２は、各部位を接続しており、本実施形態においては、１本のバスで接続された例が示されている。バス１１２は、例えばＰＣＩバスのような規格に基づいて接続されており、それぞれの部位はバス１１２を通じてデータの通信を行う。
【００２３】
図２は、本実施形態における生成部１１０に関する処理の詳細を示した図である。また、図３は、転送指示情報の生成から各ＤＭＡコントローラ１０３、１０５におけるデータ転送の処理までの流れを示したフロー図である。図２、及び図３を用いて、以下処理の流れを説明する。まず、ＣＰＵ１０１は、転送指示情報を主記憶部１０２上にて生成する（ステップＳ１）。次いで、ＣＰＵ１０１は、生成した転送指示情報を転送情報記憶部１０７へと書き込む（ステップＳ２）。図２に示されるように、転送情報記憶部１０７は、図中に転送指示情報テーブル１０７ａを記憶している。上述したＣＰＵ１０２が生成した転送指示情報は、転送指示情報テーブル１０７ａの形式にて記憶されており、転送指示情報テーブル１０７ａは、「先頭アドレス」「転送サイズ」「属性値」の３つのフィールドを有している。先頭アドレスは、上述したデータの記憶位置情報、転送サイズは、サイズ情報にそれぞれ相当する。なお、本実施形態において示した転送指示情報テーブル１０７ａは、データ蓄積部１０４に記憶されたデータを読み出す場合や、データ蓄積部１０４に新たにデータを書き込む場合のデータ転送のための転送指示情報を例示してある。しかしながら、転送指示情報はデータ蓄積部１０４に対するものだけではなく、他のデータを記憶可能な装置に対しても生成されており、記憶装置ごとにデータ構造は異なっている。
【００２４】
図２に示した転送指示情報テーブル１０７ａの１番目のエントリは、アドレス０ｘ３０００を先頭として、１０１００ブロック分のデータが転送対象のデータであることを示している。また、属性値は「０ｘ２」がデータ蓄積部１０４からのデータの読み出しであること、「０ｘ３」がデータ蓄積部１０４へのデータの書き出しであることをそれぞれ示している。なお、転送指示情報テーブル１０７ａにおけるどの転送指示情報のエントリが選択されているかは、生成部１１０によって決定されており、生成部１１０からの信号入力により、セレクタ回路が制御している。
【００２５】
また、属性値としては、エントリが有効であるか否かを示したフラグ等の情報を設定することも出来る。また、さらに、転送指示情報の属性値として、タイマー値を入れ、ある転送指示情報のあるエントリと他のエントリとの間に、データ転送の休息時間を挿入できるようにしてもよい。こうすることによって、間欠的なデータ転送ができるようになり、より低消費電力な動作ができるようになる。
【００２６】
次いで、転送指示部１０８は、第１ＤＭＡコントローラ１０３、又は第２ＤＭＡコントローラ１０５に対するデータの転送設定を行う際、すなわち実際にデータの転送を開始する指示がソフトウェアから出された際に、有効な転送指示情報が１以上存在しているか否かを判定する（ステップＳ３）。有効な転送指示情報が１以上存在している場合（ステップＳ３：Ｙｅｓ）、すなわち、ソフトウェアによって開かれている等の操作により実行中のデータが存在している場合、転送指示部１０８は、データの転送設定情報として、第１ＤＭＡコントローラ１０３、又は第２ＤＭＡコントローラ１０５に対して、生成部１１０のアドレス等の転送に必要な諸条件を設定する（ステップＳ４）。この転送設定情報を設定することで、第１ＤＭＡコントローラ１０３、又は第２ＤＭＡコントローラ１０５がデータの転送を開始しようして生成部１１０に参照要求を行った際には指定の生成部１１０のアドレスの先頭が参照の開始位置となる。
【００２７】
図２は、転送指示情報テーブル１０７ａの１番目のエントリを、生成部１１０が指している状況を示している。なお、どのエントリが指示されているかは生成部１１０により設定されており、生成部１１０が分割転送指示情報を生成し終わったら、次のエントリへとポインタが移行する。この状況において、生成部１１０は、第１ＤＭＡコントローラ１０３、又は第２ＤＭＡコントローラ１０５から分割転送指示情報への参照要求があったか否かを判定する（ステップＳ５）。分割転送指示情報への参照要求があったと判定された場合（ステップＳ５：Ｙｅｓ）、生成部１１０は参照されたアドレスに対応する分割転送指示情報を、転送指示情報に基づき生成する（ステップＳ６）。
【００２８】
次いで、生成部１１０は、生成した分割転送指示情報が、あるエントリにおけるデータの終端のものであったか否かを判定する（ステップＳ７）。エントリにおけるデータの終端のものであったと判定された場合（ステップＳ７：Ｙｅｓ）、生成部１１０は、生成した分割転送指示情報の属性値のフィールドに「０ｘ２３」の値、すなわち、終端であることを示すフラグを設定する（ステップＳ８）。第１ＤＭＡコントローラ１０３、及び第２ＤＭＡコントローラ１０５は、参照した分割転送指示情報の属性値の値を見て、全ての分割転送指示情報を取得済みであるかを判定することができる。
【００２９】
エントリにおけるデータの終端のものないと判定された場合（ステップＳ７：Ｎｏ）、生成部１１０は、終端を示すフラグを設定せずに、生成した分割転送指示情報を参照があったＤＭＡコントローラ１０３、１０５へと出力する（ステップＳ９）。
【００３０】
図２にて示した分割転送指示情報群１１０ａは、転送指示情報の１番目のエントリから生成された複数の分割転送指示情報を示している。本実施形態においては、転送指示情報はデータサイズ６５５３６単位で分割されており、終端の分割転送指示情報は余った「３２７６８」がデータサイズとなっている。分割転送指示情報は、「メモリアドレス」、「転送サイズ」、及び「属性値」の３つのフィールドを有している。本実施形態においては、あるエントリの転送指示情報から生成された分割転送指示情報のうち、終端以外の分割転送指示情報の属性値に「０ｘ２１」を、終端の分割転送指示情報の属性値も「０ｘ２３」を用いている。これら属性値は、ＤＭＡコントローラ毎に定義が異なるので、生成部１１０は、はＤＭＡコントローラに合わせて属性値を決定する。
【００３１】
図２に示されるように、各ＤＭＡコントローラ１０３、１０５は、分割転送指示情報群１１０ａの全てのデータ転送を完了すると、転送完了割り込み信号を転送指示部１０８に対して出力する。各ＤＭＡコントローラ１０３、１０５は、分割転送指示情報における、終端フラグの情報から全ての分割転送指示情報を取得したかを判定する。
【００３２】
図３で示されるように、転送指示部１０８は、ＤＭＡコントローラ１０３、１０５が出力するデータ転送完了を示す割り込み信号の入力があったか否かを判定する（ステップＳ１０）。割り込み信号の入力があった場合（ステップＳ１０：Ｙｅｓ）、転送指示部１０８は、ＤＭＡコントローラ１０３、１０５への割り込み制御を実行する（ステップＳ１１）。一方、割り込み信号の入力がなかった場合（ステップＳ１０：Ｎｏ）、すなわち、まだ全ての分割転送指示情報が参照のあったＤＭＡコントローラ１０３、１０５へと出力されていない場合、ステップＳ５からの処理を再度繰り返し、再度生成部１１０はＤＭＡコントローラ１０３、１０５からの参照要求に従って、分割転送指示情報を生成する。なお生成部１１０は、ＤＭＡコントローラ１０３、１０５からは、前回の処理の流れにおいて参照された生成部１１０のアドレスと連続する次のアドレスに対しての参照要求を受理する。
【００３３】
次いで、転送指示部１０８は、ＤＭＡコントローラ１０３、１０５によるデータ転送の完了を示す割り込み信号から、処理対象の転送指示情報テーブル１０７ａに記憶された１エントリ分のデータ転送が正常に完了したか否かを判定する（ステップＳ１２）。割り込み信号には、転送が正常に終了したか否かの異常検知情報が含まれている。１エントリ分のデータ転送が正常に完了したと判定されると（ステップＳ１２：Ｙｅｓ）、生成部１１０は、転送指示部１０８からの転送完了通知を受け取って、転送指示情報テーブル１０７ａにおけるエントリの位置を次のエントリに更新する（ステップＳ１３）。一方、１エントリ分のデータ転送が正常に完了していないと判定されると（ステップＳ１２：Ｎｏ）、転送指示部１０８は異常処理を行う。異常処理として、画面上にデータ転送のエラーを表示したりする処理である。
【００３４】
次に、第１ＤＭＡコントローラ１０３と、第２ＤＭＡコントローラ１０５との間で、データ転送が行われる場合のシーケンス図である図４を用いてこの場合のデータ転送の処理の流れについて説明する。図４においては、第１ＤＭＡコントローラ１０３から第２ＤＭＡコントローラ１０５へとデータ転送が行われる場合を示す。まず始めに、ＣＰＵ１０１は、データ転送を実行するに際し、転送指示情報を主記憶部１０２において作成し、生成部１１０を通じて転送情報記憶部１０７に書き込む（ステップＳ１０１）。なお、図示していないが、転送指示部１０８が動作するために必要となる諸々の設定、例えば転送の有効化等は、ＣＰＵ１０１により前もって実施されているものとする。
【００３５】
以降、図４における「繰り返しａ」のシーケンスと、「繰り返しｂ」のシーケンスとが順次進んでいく。転送指示部１０８は、転送情報記憶部１０７に有効なエントリが存在していれば、第１ＤＭＡコントローラ１０３と第２ＤＭＡコントローラ１０５の転送設定を行う（ステップＳ１０２、Ｓ１０３）。転送設定がされると、第１ＤＭＡコントローラ１０３と第２ＤＭＡコントローラ１０５は、転送指示部１０８により設定された生成部１１０のアドレスに対して読み込みアクセスを行い、分割転送指示情報を参照する（ステップＳ１０４、Ｓ１０５）。
【００３６】
生成部１１０は、第１ＤＭＡコントローラ１０３、及び第２ＤＭＡコントローラ１０５  から分割転送指示情報の参照要求を受けると、指定されたアドレスに基づいて、どのＤＭＡコントローラから参照があったかを判定する。そして、生成部１１０は、ＤＭＡコントローラの仕様に沿った分割転送指示情報を生成し、それぞれの第１ＤＭＡコントローラ１０３、及び第２ＤＭＡコントローラ１０５へと出力する（ステップＳ１０６、Ｓ１０７）。
【００３７】
第１ＤＭＡコントローラ１０３は、分割転送指示情報に従い、データをバッファ部１１１へ書き込んでいく（ステップＳ１０８）。一方、第２ＤＭＡコントローラ１０５は、バッファ部１１１に書き込まれたデータが存在しない期間はデータ転送を行えないため待機し、バッファ部１１１にデータが書き込まれると、バッファ部１１１にあるデータを読み出すデータ転送を実行する（ステップＳ１０９）。第１ＤＭＡコントローラ１０３、及び第２ＤＭＡコントローラ１０５は、前述したように、参照した分割転送指示情報の属性値の終端フラグが立っていた場合に、この分割転送指示情報によるデータ転送を終えたら、転送完了割り込み信号を転送指示部１０８へ出力する（ステップＳ１１０、Ｓ１１１）。そして、転送指示部１０８は、第１ＤＭＡコントローラ１０３、及び第２ＤＭＡコントローラ１０５に対して割り込み制御を実行する（ステップＳ１１２、Ｓ１１３）。
【００３８】
転送指示部１０８は、転送指示情報のエントリが指定するサイズ分のデータ転送が完了するまで、第１ＤＭＡコントローラ１０３、及び第２ＤＭＡコントローラ１０５への転送設定を繰り返し、転送設定に基づいて、第１ＤＭＡコントローラ１０３、及び第２ＤＭＡコントローラ１０５は、データの転送を繰り返す（繰り返しａ、及び繰り返しｂ）。
【００３９】
第１ＤＭＡコントローラ１０３、及び第２ＤＭＡコントローラ１０５によるデータの転送が完了すると、転送指示部１０８は生成部１１０へ転送完了を通知する（ステップＳ１１４）。最後に、生成部１１０は、転送完了通知を受けると、転送情報記憶部１０７の参照先を次のエントリに移す（ステップＳ１１５）。転送情報記憶部１０７に記憶された全てのエントリに関するデータ転送が完了するまで、ステップＳ１０２〜ステップＳ１１５の処理が繰り返される（繰り返しＡ）。
【００４０】
本実施形態においては、ＣＰＵ１０１とは異なる回路によって実現された転送指示部１０８と生成部１１０において、ＤＭＡコントローラがデータ転送の際に必要とする分割転送指示情報を生成するための処理を行うようにした。そのため、例えばファイルのデータが断片化して、数多くの分割転送指示情報をＣＰＵ１０１自身が生成する必要がなくなり、ＣＰＵ１０１は転送指示情報を生成するのみでよくなることから、ＣＰＵ１０１にかかる処理負担を軽減することができるようになる。
【００４１】
（第２の実施形態）
次に、データ伝送装置の第２の実施形態において説明する。第２の実施形態においては、図５に示されるように、第１ＤＭＡコントローラ１０３と第２ＤＭＡコントローラ１０５に対して、それぞれ別の生成部、及び転送指示部が設けられている例が示される。図５に示されるように、第１ＤＭＡコントローラ１０３に対応して、転送指示部２０８ａ、及び生成部２１０ａが設けられている。また、第２ＤＭＡコントローラ１０５に対応して、転送指示部２０８ｂ、及び生成部２１０ｂが設けられている。生成部２１０ａからは、転送情報記憶部１０７における一つ目のエントリが選択されており、一方、生成部２１０ｂからは、転送情報記憶部１０７における4つ目のエントリが選択されている。
【００４２】
例えば、第１ＤＭＡコントローラ１０３に接続されるデータ蓄積部１０４からデータを読み込んで、第２ＤＭＡコントローラ１０５に接続される通信部１０６からデータを送信するデータ転送の場合、それぞれのデータ転送のスピードや、１回のデータ転送当たりに転送するデータサイズ異なる場合が存在する。このような場合に、1組の生成部と転送指示部とで、記憶装置間のデータ転送を実行すると、低速な側に速度を合わせて処理を行わなければならなくなるため、スループットが犠牲になってしまう。そこで、このようにＤＭＡコントローラ毎に、別の生成部、及び転送指示部が設けられていることにより、それぞれのＤＭＡコントローラが各々の伝送スピードやデータサイズで、データの転送を実行することができるになり、スループットの低下を抑制することができるようになる。
【００４３】
（第３の実施形態）
また、別の第３の実施形態について説明する。第３の実施形態においては、それぞれの通信部１０６とのデータ交換用に第２ＤＭＡコントローラ１０５を設けず、直接データ転送を転送指示部１０８が行う場合が示されている。図６は、第３の実施形態における、データ伝送装置３００のハードウェア構成図を示しており、通信部１０６と、転送指示部３０８は直接バス１１２で接続されている。
【００４４】
本実施形態においては、転送指示部３０８は、通信部１０６とのデータ交換時においては、第１、第２の実施形態とは異なり、第２のＤＭＡコントローラ１０５への分割転送指示情報のアドレスの設定などの転送設定は行わず、直接生成部１１０の所定のアドレスに対して、分割転送指示情報の参照要求を行う。そして、生成部１１０が生成した分割転送指示情報に基づき、転送指示部３０８は通信部１０６とのデータ転送を実行する。
【００４５】
したがって、通信部１０６のための分割転送指示情報を生成する必要はなくなり、１組の生成部と転送指示部とで事足りることとなる。
【００４６】
（第４の実施形態）
第４の実施形態においては、２本のバス４１２ａ、４１２ｂとを用い、転送指示部４０８、生成部４１０、及びバッファ部４１１はそれぞれのバス４１２ａ、４１２ｂごとに、ポートを有している。
【００４７】
図７は、本実施形態のデータ伝送装置の一形態を示した図である。第１のバス４１２ａには、ＣＰＵ１０１、主記憶部１０２、第１ＤＭＡコントローラ１０３、転送指示部４０８の第１ポート、生成部４１０の第１ポート、及びバッファ部４１１の第１のポートが接続されている。第２のバス４１２ｂには、第２ＤＭＡコントローラ１０５、転送指示部４０８の第２ポート、生成部４１０の第２ポート、及びバッファ部４１１の第２のポートが接続されている。本実施形態においては、ＣＰＵ１０１や主記憶部１０２が第２のバス４１２ｂに接続されていないが、ＣＰＵ１０１及び主記憶部１０２は第２のバス４１２ｂにも接続してもよい。
【００４８】
また、生成部４１０の第１、及び第２ポートには、それぞれ別のアドレスがマップされている。第１ＤＭＡコントローラ１０３、及び第２ＤＭＡコントローラ１０５それぞれが接続対象のポートへと適切に接続できるよう、転送指示部４０８は、第１ＤＭＡコントローラ１０３、及び第２ＤＭＡコントローラ１０５に設定する参照先の生成部４１０のアドレスを各ポートと対応したアドレスにする。このようにすることで、生成部４１０は、参照要求を受けたポートに応じて、転送指示情報のどの部位のデータに対して分割転送指示情報を生成するべきかを判定することができるようになる。
【００４９】
このようにバス４１２ａ、４１２ｂの２本にバスを分離し、転送指示部４０８、生成部４１０、及びバッファ部４１１などのデータ転送にかかる装置のポートをバスごとに設けることで、２つのＤＭＡコントローラによって行われるデータ転送や、転送指示部４０８による転送設定を、同時並行して実行できるようになり、データ転送速度をより高速にすることができるようになる。また、所望のデータ転送速度を満たすために要求されるバスの動作周波数を、他の実施形態と比較して低速化できるため、データ伝送装置の消費電力を低減することができる。
【００５０】
（第５の実施形態）
第５の実施形態においては、データを別の装置から通信部１０６を通じて受信し、一旦バッファ部１１１に記憶したあとに、バッファ部１１１からデータ蓄積部１０４へとデータ転送を行う場合の例を示している。この場合、受信側の転送指示部１０８は受信したデータのサイズ情報を有していないことから、生成部５１０が分割転送指示情報を生成する際のデータのサイズ情報が転送設定記憶部１０９に記憶されていない場合について説明する。
【００５１】
図８は、第５の実施形態のデータ伝送装置５００における生成部５１０を示した図である。図８における分割転送指示情情報群５１０ａは、１番目のエントリは転送が完了した状態を示しており、２番目のエントリはまだ転送が完了していない状態を示している。分割転送指示情情報群５１０ａにおけるメモリアドレスとは、データ蓄積部１０４に受信したデータを書き込む位置を示している。１つ目のエントリと、２つ目のエントリとで、メモリアドレスが同様なのは、説明の便宜上ＦＩＦＯ形式の場合を想定している
【００５２】
図９は、本実施形態におけるデータ転送の処理の流れを示すフロー図である。図９においては、図３と同じ処理については、同じ符号を付与し、説明を省略する。以下、図３の処理とか異なる点を中心に説明する。ＤＭＡコントローラ１０３、１０５が受信したデータをデータ蓄積部１０４へデータ転送して、書き込む制御を行う場合、ステップＳ４にて設定された生成部５１０のアドレスへ参照要求が行われる。
【００５３】
生成部５１０は、ＤＭＡコントローラ１０３、１０５から指定されたアドレスへの参照要求があった場合、アドレスに対応する転送指示情報の部位から、転送サイズと、属性値が未定義の分割転送指示情報を生成する（ステップＳ５０６）。ＤＭＡコントローラ１０３、１０５は通信部１０６を通じて受信したデータのデータサイズや属性値を、指定されたアドレスにおいて生成された分割転送指示情報に書き込む。
【００５４】
生成部５１０は、ＤＭＡコントローラから受信したデータの転送サイズ等の通知があったか否かを判定する（ステップＳ５０７）。データサイズ等の通知があったと判定された場合（ステップＳ５０７：Ｙｅｓ）、生成部５１０は、分割転送指示情報の未定義の転送サイズ等のフィールドを更新する（ステップＳ５０８）。一方、データサイズ等の通知がないと判定された場合（ステップＳ５０７：Ｎｏ）、ＤＭＡコントローラからの転送サイズの通知があるまで待機する。生成部５１０は、転送サイズが更新された分割転送指示情報をＤＭＡコントローラ１０３又は１０５へと送信し、ＤＭＡコントローラ１０３又は１０５は受信した分割転送指示情報に従って、バッファ部１１１からデータ蓄積部１０４へのデータ転送を制御する。
【００５５】
次いで、生成部５１０は、分割転送指示情報の転送サイズの合計値が、現在のエントリの転送指示情報の転送サイズの値に達したか否かの判定を行う（ステップＳ５１０）。分割転送指示情報の転送サイズの合計値が、現在のエントリの転送指示情報の転送サイズの値に達したと判定された場合（ステップＳ５１０：Ｙｅｓ）、すなわち、現在のエントリの転送指示情報に関する転送は完了したことになるため、生成部５１０は、転送指示情報のエントリを次に更新する（ステップＳ１３）。一方、分割転送指示情報の転送サイズの合計値が、現在のエントリの転送指示情報の転送サイズの値に達していないと判定された場合（ステップＳ５１０：Ｎｏ）、ステップＳ５０７からの処理を再度繰り返す。
【００５６】
このようにＤＭＡコントローラが実際に受信したデータのデータサイズから、分割転送指示情報の転送サイズの値を更新するようにしたため、受信側の装置において、転送するデータのサイズが不明な場合であっても、データ転送を行うことができるようになる。
【００５７】
なお、上記の各実施の形態のデータ伝送装置における生成部、及び転送指示部の機能はプログラムとして提供してもよい。その場合、プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００５８】
また、プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００５９】
また、プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００６０】
ただし、生成部、及び転送指示部をプログラムとして提供した場合、実際のハードウェアとしてはＣＰＵ（プロセッサ）とは異なる電子回路やプロセッサによって記憶媒体からプログラムを読み出して実行することにより各部が主記憶部上にロードされ、生成部、及び転送指示部が主記憶部上に生成されるようになっている。
【００６１】
本発明の実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６２】
１  データ伝送装置
１０１  ＣＰＵ
１０２  主記憶部
１０３  第１ＤＭＡコントローラ
１０４  データ蓄積部
１０５  第２ＤＭＡコントローラ
１０６  通信部
１０７ａ  転送指示情報テーブル
１０７  転送情報記憶部
１０８  転送指示部
１０９  転送設定記憶部
１１０  生成部
１１０ａ  分割転送指示情報群
１１１  バッファ部
１１２  バス
２０８ａ  転送指示部
２０８ｂ  転送指示部
２１０ａ  生成部
２１０ｂ  生成部
３００  データ伝送装置
３０８  転送指示部
４００  データ伝送装置
４０８  転送指示部
４１０  生成部
４１１  バッファ部
４１２ａ  バス
４１２ｂ  バス
５００  データ伝送装置
５１０  生成部
５１０ａ  分割転送指示情情報群
【図１】
0005651622.tif 000002
【図２】
0005651622.tif 000003
【図３】
0005651622.tif 000004
【図４】
0005651622.tif 000005
【図５】
0005651622.tif 000006
【図６】
0005651622.tif 000007
【図７】
0005651622.tif 000008
【図８】
0005651622.tif 000009
【図９】
0005651622.tif 000010