(57)【特許請求の範囲】
【請求項１】
データを記憶するメモリと、
通信データを記憶する通信バッファと、
ネットワークを介して通信データを通信するデータ通信部であって、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして前記通信バッファに記憶するデータ通信部と、
前記データ通信部が通信を始めたときから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとして前記メモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送するデータ転送部とを備え、
複数のブロックサイズが以下の関係式（Ａ）を満たすことを特徴とする通信装置。
【数４】
0005586442.tif 000005
【請求項２】
データを記憶するメモリと、
通信データを記憶する通信バッファと、
ネットワークを介して通信データを通信するデータ通信部であって、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして前記通信バッファに記憶するデータ通信部と、
前記データ通信部が通信を始めたときから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとして前記メモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送するデータ転送部と、
データを処理するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、
前記データ転送部が全ての部分データを前記メモリに転送し終えたときに、前記ＣＰＵに転送完了通知を通知する転送完了通知部と、
前記転送完了通知部が前記ＣＰＵに転送完了通知を通知する前に、前記ＣＰＵに割り込み通知を通知する割り込み通知部とを備え、
前記ＣＰＵは、通信データを処理する割り込みハンドラの起動処理を前記割り込み通知を検出したときに開始し、
前記ＣＰＵは、前記割り込みハンドラの起動処理が完了して前記転送完了通知を検出したときに、前記メモリに転送された部分データにより構成される通信データを前記割り込みハンドラによって処理し、
前記割り込み通知部は、部分データが前記メモリに以下の関係式（Ｂ）を満たす転送済みサイズだけ転送されたときに、前記ＣＰＵに割り込み通知を通知する
ことを特徴とする通信装置。
【数５】
0005586442.tif 000006
【請求項３】
データを記憶するメモリと、通信データを記憶する通信バッファと、ネットワークを介して通信データを通信するデータ通信部と、前記通信バッファに記憶された通信データを前記メモリに転送するデータ転送部とを備える通信装置のデータ転送方法において、
前記データ通信部が、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして前記通信バッファに記憶し、
前記データ転送部が、前記データ通信部が通信を始めたときから予め順番が定められて以下の関係式（Ａ）を満たす複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとして前記メモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送する
ことを特徴とする通信装置のデータ転送方法。
【数６】
0005586442.tif 000007
【請求項４】
データを記憶するメモリと、通信データを記憶する通信バッファと、ネットワークを介して通信データを通信するデータ通信部と、前記通信バッファに記憶された通信データを前記メモリに転送するデータ転送部と、データを処理するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、前記データ転送部が全ての部分データを前記メモリに転送し終えたときに前記ＣＰＵに転送完了通知を通知する転送完了通知部と、前記転送完了通知部が前記ＣＰＵに転送完了通知を通知する前に、前記ＣＰＵに割り込み通知を通知する割り込み通知部とを備える通信装置のデータ転送方法において、
前記データ通信部が、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして前記通信バッファに記憶し、
前記データ転送部が、前記データ通信部が通信を始めたときから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとして前記メモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送し、
前記割り込み通知部が、部分データが前記メモリに以下の関係式（Ｂ）を満たす転送済みサイズだけ転送されたときに、前記ＣＰＵに割り込み通知を通知し、
前記ＣＰＵが、通信データを処理する割り込みハンドラの起動処理を前記割り込み通知を検出したときに開始し、
前記ＣＰＵが、前記割り込みハンドラの起動処理が完了して前記転送完了通知を検出したときに、前記メモリに転送された部分データにより構成される通信データを前記割り込みハンドラによって処理する
ことを特徴とする通信装置のデータ転送方法。
【数７】
0005586442.tif 000008
【請求項５】
ネットワークを介して通信データを通信するデータ通信処理であって、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして通信バッファに記憶するデータ通信処理と、
前記データ通信処理が通信を始めたときから予め順番が定められて以下の関係式（Ａ）を満たす複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとしてメモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送するデータ転送処理とをコンピュータに実行させることを特徴とする通信プログラム。
【数８】
0005586442.tif 000009
【請求項６】
ネットワークを介して通信データを通信するデータ通信処理であって、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして通信バッファに記憶するデータ通信処理と、
前記データ通信処理が通信を始めたときから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとしてメモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送するデータ転送処理と、
前記データ転送処理が全ての部分データを前記メモリに転送し終えたときに、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に転送完了通知を通知する転送完了通知処理と、
前記転送完了通知処理が前記ＣＰＵに転送完了通知を通知する前に、部分データが前記メモリに以下の関係式（Ｂ）を満たす転送済みサイズだけ転送されたときに、前記ＣＰＵに割り込み通知を通知することによって、前記ＣＰＵが前記割り込み通知を検出したときに通信データを処理する割り込みハンドラの起動処理を前記ＣＰＵに開始させて、前記ＣＰＵが前記割り込みハンドラの起動処理を完了して前記転送完了通知を検出したときに前記ＣＰＵに前記メモリに転送された部分データにより構成される通信データを前記割り込みハンドラによって処理させる割り込み通知処理と
をコンピュータに実行させることを特徴とする通信プログラム。
【数９】
0005586442.tif 000010
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、通信データをＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）で転送する通信装置、通信装置のデータ転送方法および通信プログラムに関するものである。
【背景技術】
【０００２】
従来、伝送装置（通信装置）のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、通信バッファにアクセスし、通信バッファからメモリに受信データを転送し、受信データに対する応答データを生成していた。
しかし、ＣＰＵの処理速度が高速になったことに伴い、ＣＰＵの性能を有効的に活用するため、通信バッファとメモリとの間のデータ転送をＣＰＵとは別の仕組みによって行うようになった。この仕組みを「ＤＭＡ転送」という。
【０００３】
例えば、複数の伝送装置が一定周期内で順番に送信を行う「定周期通信」において、伝送装置は、一定周期の通信が終了したときにＤＭＡ転送を開始する。
そして、伝送装置のＣＰＵは、ＤＭＡ転送が終了した後に、受信データに対する応答データを生成する。生成された応答データは次の送信タイミング時に送信される。
【０００４】
ＤＭＡ転送を早く完了させる方法として、特許文献１には以下のような方法が開示されている。
【０００５】
特許文献１に記載の方法は、一定周期に受信したデータを一定周期の通信が終了したときにまとめてＤＭＡ転送するのではなく、データを一定のブロックサイズだけ受信する度にＤＭＡ転送を行うものである。
【０００６】
しかし、特許文献１に記載の方法では、ブロックサイズが大きい場合、一定周期の通信が終了した後にブロックサイズ分の大きな受信データをＤＭＡ転送しなければいけない。この場合、ＤＭＡ転送が完了する時刻はあまり早くならない。
また、ブロックサイズが小さい場合、通信バッファやメモリにアクセスする回数が増え、通信バッファやメモリにアクセスするためのオーバーヘッドが大きくなってしまう。この場合、ＤＭＡ転送に要する時間を短縮できず、ＤＭＡ転送を早く完了させることができない。
【０００７】
また、従来のＤＭＡ転送はＤＭＡ転送が完了した後にＣＰＵへの通知を行い、ＣＰＵは受信データを処理する割り込みハンドラをＤＭＡ転送が完了してから起動していた。
このため、ＤＭＡ転送が完了しても割り込みハンドラの起動処理が完了するまでは受信データを処理することができなかった。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−０７９３３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、例えば、定周期通信においてＤＭＡ転送を早く完了できるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
本発明の通信装置は、
データを記憶するメモリと、
通信データを記憶する通信バッファと、
ネットワークを介して通信データを通信するデータ通信部であって、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして前記通信バッファに記憶するデータ通信部と、
前記データ通信部が通信を始めたときから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとして前記メモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送するデータ転送部とを備える。
【発明の効果】
【００１１】
本発明によれば、例えば、定周期通信においてＤＭＡ転送を早く完了させることができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１における通信システム１００の構成図。
【図２】実施の形態１における伝送装置２００の機能構成図。
【図３】実施の形態１における周期データ１１０の一例を示す図。
【図４】実施の形態１における周期データ１１０の一例を示す図。
【図５】実施の形態１における通信処理方法の概要を示すフローチャート。
【図６】実施の形態１における転送制御回路２２３のデータ転送処理（Ｓ１３０）を示すフローチャート。
【図７】実施の形態１における割込制御回路２２４のデータ転送処理（Ｓ１３０）を示すフローチャート。
【図８】実施の形態１におけるデータ転送方法を示す概要図。
【図９】実施の形態１におけるデータ転送方法（割り込み通知、転送完了通知）を示す概要図。
【図１０】従来のデータ転送方法を示す概要図。
【図１１】従来のデータ転送方法を示す概要図。
【図１２】実施の形態１における伝送装置２００のハードウェア資源の一例を示す図。
【発明を実施するための形態】
【００１３】
実施の形態１．
通信速度と転送速度とに基づいて転送待ち時間を決定し、転送待ち時間が経過する度に受信データを通信バッファからメモリにＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送する形態について説明する。
【００１４】
図１は、実施の形態１における通信システム１００の構成図である。
実施の形態１における通信システム１００の構成について、図１に基づいて説明する。
【００１５】
通信システム１００は、バス型のネットワーク１０１とネットワーク１０１に接続する複数の伝送装置２００（通信装置の一例）とを有する。
【００１６】
各伝送装置２００は、バス型のネットワーク１０１を介して定周期通信（例えば、時分割通信）を行う。
つまり、各伝送装置２００は、所定の通信周期毎に他の伝送装置２００にパケット１１１を送信する。また、各伝送装置２００の送信順序が決められ、各伝送装置２００は送信順序に従ってパケット１１１を送信する。各伝送装置２００によって送信されたパケット１１１は、他の全ての伝送装置２００によって受信される。
例えば、一回の通信周期が複数の単位時間に分割され、各伝送装置２００に単位時間が割り当てられる。そして、各伝送装置２００は、割り当てられた単位時間にのみパケット１１１を送信する。
【００１７】
通信システム１００のネットワーク１０１は、バス型以外のネットワーク（スター型、リング型など）であっても構わない。
【００１８】
図２は、実施の形態１における伝送装置２００の機能構成図である。
実施の形態１における伝送装置２００の機能構成について、図２に基づいて説明する。
【００１９】
伝送装置２００（通信装置の一例）は、データ通信部２１０、ＤＭＡ転送部２２０、メモリ２３０およびＣＰＵ２４０を備える。また、データ通信部２１０は、バッファ２１１（通信バッファの一例）を備える。
【００２０】
ＣＰＵ２４０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、メモリ２３０に記憶されたデータを処理する。
【００２１】
データ通信部２１０は、ネットワーク１０１を介して周期データ１１０（通信データの一例）を通信する。
そして、データ通信部２１０は、周期データ１１０を受信し始めてから周期データ１１０を受信し終わるまで、受信したデータを周期データ１１０の部分データとしてバッファ２１１に記憶する。
周期データ１１０とは、通信周期内に受信する複数のパケット１１１を含んだデータのことである。周期データ１１０については別途説明する。
【００２２】
ＤＭＡ転送部２２０は、制御レジスタ２２１、ブロックサイズ設定部２２２、転送制御回路２２３および割込制御回路２２４を備える。
【００２３】
制御レジスタ２２１は、ＤＭＡ転送の制御情報を記憶する。ＤＭＡ転送の制御情報については別途説明する。
【００２４】
ブロックサイズ設定部２２２は、制御レジスタ２２１に記憶された制御情報に基づいて後述するブロックサイズや転送待ち時間を算出する。
ブロックサイズ設定部２２２の詳細については別途説明する。
【００２５】
転送制御回路２２３（データ転送部の一例）は、データ通信部２１０が通信を始めたときから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、バッファ２１１に記憶されている部分データを一つ目のブロックデータとしてメモリ２３０に転送する。
さらに、転送制御回路２２３は、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、バッファ２１１に記憶されている部分データを新たなブロックデータとしてメモリ２３０に転送する。
【００２６】
ブロックサイズに相当する通信時間および転送時間を転送待ち時間と言い換えた場合、転送制御回路２２３の上記説明は以下の通りである。
転送制御回路２２３は、データ通信部２１０が通信を始めたときから所定の初回の転送待ち時間が経過したときに、バッファ２１１に記憶されている部分データを初回のブロックデータとしてメモリ２３０に転送する。
さらに、転送制御回路２２３は、前回のブロックデータの転送を始めたときから今回の転送待ち時間が経過したときに、バッファ２１１に記憶されている部分データを今回のブロックデータとしてメモリ２３０に転送する。今回の転送待ち時間とは、前回の転送待ち時間にネットワーク１０１の通信速度を乗算して得られるデータサイズ（後述するブロックサイズ）だけ部分データを転送するための時間である。
【００２７】
また、転送制御回路２２３（転送完了通知部の一例）は、全ての部分データをメモリ２３０に転送し終えたときに、ＣＰＵ２４０に転送完了通知を通知する。
ＣＰＵ２４０は、割り込みハンドラの起動処理が完了して転送完了通知を検出したときに、メモリ２３０に転送された部分データにより構成される周期データ１１０を割り込みハンドラによって処理する。割り込みハンドラとは、周期データ１１０を処理するための機能である。
【００２８】
割込制御回路２２４（割り込み通知部の一例）は、転送制御回路２２３がＣＰＵ２４０に転送完了通知を通知する前に、ＣＰＵ２４０に割り込み通知を通知する。ＣＰＵ２４０は、割込制御回路２２４から通知された割り込み通知を検出したときに割り込みハンドラの起動処理を開始する。
【００２９】
周期データ１１０は、ネットワーク１０１を介して通信され、バス２０１を介してバッファ２１１からメモリ２３０に転送される。
ネットワーク１０１は外部の通信路（または通信ケーブル、信号線）であり、バス２０１は内部の通信路（または信号線）である。
【００３０】
図３、図４は、実施の形態１における周期データ１１０の一例を示す図である。
実施の形態１における周期データ１１０について、図３および図４に基づいて説明する。
【００３１】
図３に示すように、周期データ１１０とは、各伝送装置２００から一回の通信周期に送信された複数のパケット１１１を含んだデータである。
但し、各伝送装置２００が受信する周期データ１１０には自己の送信パケットを含まない。例えば、伝送装置２００Ｃが受信する周期データ１１０には、伝送装置２００Ｃが送信するパケット１１１Ｃを含まない。
【００３２】
図４において、網掛け部分は自己の送信パケットに相当する部分を示している。
各伝送装置２００によって受信された周期データ１１０は、複数のブロックデータＢＤに分けてＤＭＡ転送される。
また、ブロックデータＢＤのサイズ（ブロックサイズ）は徐々に小さくなり、最後のブロックデータＢＤのサイズが最も小さい。但し、ブロックサイズには自己の送信パケットに相当する部分のサイズを含めるものとする。つまり、先頭のブロックデータＢＤ１のブロックサイズは自己の送信パケットのサイズ（網掛け部分）を含めると最も大きい。
【００３３】
図５は、実施の形態１における通信処理方法の概要を示すフローチャートである。
実施の形態１における通信処理方法の概要について、図５に基づいて説明する。
【００３４】
制御情報設定処理（Ｓ１１０）において、ブロックサイズ設定部２２２は、ブロックサイズや転送待ち時間などの制御情報を算出し、算出した制御情報を制御レジスタ２２１に設定する。
Ｓ１１０の詳細については別途説明する。
【００３５】
データ通信処理（Ｓ１２０）において、データ通信部２１０は、定周期通信を行う。
定周期通信の周期毎に、特定の伝送装置２００のデータ通信部２１０は同期信号を送信し、他の伝送装置２００のデータ通信部２１０は同期信号を受信する。そして、各伝送装置２００のデータ通信部２１０は同期信号の送受信時に通信を開始する。これにより、各伝送装置２００が周期毎に同期して通信を行うことができる。
データ通信部２１０は、周期データ１１０を受信し始めてから周期データ１１０を受信し終わるまで、受信しているデータ（周期データ１１０の部分データ）をバッファ２１１に順次記憶する。
【００３６】
データ転送処理（Ｓ１３０）において、ＤＭＡ転送部２２０は、Ｓ１１０で設定された制御情報に従って、バッファ２１１に記憶される周期データ１１０を複数回に分けてバッファ２１１からメモリ２３０に転送する。
Ｓ１３０の詳細については別途説明する。
【００３７】
データ処理（Ｓ１４０）において、ＣＰＵ２４０は、メモリ２３０に転送された周期データ１１０に対して所定の処理を行う。
例えば、ＣＰＵ２４０は、周期データ１１０に含まれるパケット１１１に対して応答パケットを生成し、生成した応答パケットをメモリ２３０に記憶する。
次に、ＤＭＡ転送部２２０は、メモリ２３０に記憶された応答パケットをバッファ２１１に転送する。
そして、データ通信部２１０は、自分の送信の順番になったときに応答パケットをネットワーク１０１に送信する。
【００３８】
Ｓ１２０からＳ１４０の処理は、通信周期毎に繰り返し実行される。
【００３９】
次に、制御情報設定処理（図５、Ｓ１１０）について説明する。
【００４０】
利用者は、周期データ１１０（受信パケットと送信パケットとを含む）のデータサイズＴＤ、ネットワーク１０１の通信速度ＴＮおよびバス２０１の転送速度ＴＢを制御レジスタ２２１に設定する。
また、利用者は、バッファ２１１のオーバーヘッドＯＨＢ、メモリ２３０のオーバーヘッドＯＨＭおよび最終ブロックデータのブロックサイズＲＤＮ（または先頭ブロックデータのブロックサイズＲＤ１）を制御レジスタ２２１に設定する。
また、利用者は、割り込み通知の通知時間ＮＴＩと転送完了通知の通知時間ＮＴＥとを制御レジスタ２２１に設定する。
【００４１】
バッファ２１１のオーバーヘッドとは、バッファ２１１のアクセスに要する時間（例えば、バッファ２１１からブロックデータを読み出すための時間）である。
メモリ２３０のオーバーヘッドとは、メモリ２３０のアクセスに要する時間（例えば、メモリ２３０にブロックデータを書き込むための時間）である。
割り込み通知の通知時間ＮＴＩとは、割り込み通知をＣＰＵ２４０に通知するために必要な時間（例えば、割込制御回路２２４が割り込み通知を生成して送信し、ＣＰＵ２４０が割り込み通知を検出するための時間）である。
転送完了通知ＮＴＥとは、転送制御回路２２３が転送完了通知を生成して送信し、ＣＰＵ２４０が転送完了通知を検出するための時間）である。
【００４２】
ブロックサイズ設定部２２２は、上記の値を用いて以下の関係式（１−１）を計算する。
関係式（１−１）の左辺は、データをｉ番目のブロックサイズＲＤｉだけ受信するために必要な通信時間を意味する。
また、関係式（１−１）の右辺は、データをｉ−１番目のブロックサイズＲＤｉ−１だけ転送するために必要な転送時間を意味する。
【００４３】
ブロックサイズ設定部２２２は、関係式（１−１）を計算することにより、１番目からＮ番目（最後）のブロックサイズを算出する。
但し、ブロックサイズ設定部２２２は、関係式（１−２）を満たすように、つまり、ブロックサイズの合計（左辺）と周期データ１１０のデータサイズＴＤ（右辺）とが一致するように、ブロックサイズＲＤｉを調整する。例えば、次のブロックサイズを加えるとブロックサイズの合計が周期データ１１０のデータサイズＴＤを超えてしまう場合、余ったデータサイズを一つ前に算出したブロックサイズに加える。また例えば、越えた分のデータサイズを一つ前に算出したブロックサイズから差し引く。
【００４４】
【数１】
0005586442.tif 000002
【００４５】
さらに、ブロックサイズ設定部２２２は、１番目のブロックサイズＲＤ１を用いて以下の式（２−１）を計算し、１番目の転送待ち時間ＷＴ１を算出する。１番目の転送待ち時間ＷＴ１は、１番目のブロックサイズＲＤ１を受信するために必要な通信時間である。
また、ブロックサイズ設定部２２２は、以下の式（２−２）を計算し、２番目以降の転送待ち時間ＷＴを算出する。ｉ（≠１）番目の転送待ち時間ＷＴｉは、ｉ−１番目のブロックサイズＲＤｉ−１を転送するために必要な時間である。ｉ−１番目のブロックサイズＲＤｉ−１は、ｉ−１番目の転送待ち時間ＷＴｉ−１に通信速度ＴＮを乗じた値に等しい。
【００４６】
【数２】
0005586442.tif 000003
【００４７】
ブロックサイズ設定部２２２は、算出したブロックサイズＲＤおよび転送待ち時間ＷＴを制御レジスタ２２１に設定する。
【００４８】
図６は、実施の形態１における転送制御回路２２３のデータ転送処理（Ｓ１３０）を示すフローチャートである。
実施の形態１における転送制御回路２２３のデータ転送処理（図５、Ｓ１３０）（データ転送処理、転送完了通知処理の一例）について、図６に基づいて説明する。
【００４９】
Ｓ２１０において、データ通信部２１０は同期信号を受信した場合、同期信号の受信（当該周期の通信開始）を転送制御回路２２３に通知する。
転送制御回路２２３は、制御レジスタ２２１を参照し、最初（１番目）の転送待ち時間ＷＴ１を設定した転送待ちタイマを起動する。
転送待ちタイマは、起動してから設定時間が経過したときにタイムアウトを通知する機能である。
つまり、最初の転送待ち時間ＷＴ１が設定された転送待ちタイマは、データ通信部２１０が当該周期の通信を始めたときから周期データ１１０の部分データを１番目のブロックサイズＲＤ１だけ受信するために必要な通信時間（最初の転送待ち時間ＷＴ１）が経過したときにタイムアウトする。
Ｓ２１０の後、Ｓ２２０に進む。
【００５０】
Ｓ２２０において、転送制御回路２２３は、転送待ちタイマがタイムアウトするまで待機する。
転送待ちタイマがタイムアウトした場合（ＹＥＳ）、Ｓ２３０に進む。
【００５１】
Ｓ２３０において、転送制御回路２２３は、制御レジスタ２２１を参照し、タイムアウトした転送待ちタイマに設定した転送待ち時間ＷＴｉが最後（Ｎ番目）の転送待ち時間ＷＴＮであるか否かを判定する。
転送待ちタイマに設定した転送待ち時間ＷＴｉが最後の転送待ち時間ＷＴＮである場合（ＹＥＳ）、Ｓ２６０に進む。
転送待ちタイマに設定した転送待ち時間ＷＴｉが最後の転送待ち時間ＷＴＮでない場合（ＮＯ）、Ｓ２４０に進む。
【００５２】
Ｓ２４０において、転送制御回路２２３は、次の転送待ち時間ＷＴｉを設定した転送待ちタイマを起動する。
ｉ番目の転送待ち時間ＷＴｉが設定された転送待ちタイマは、周期データ１１０の部分データをｉ−１番目のブロックサイズＲＤｉ−１だけバッファ２１１からメモリ２３０に転送するために必要な転送時間（ｉ番目の転送待ち時間ＷＴｉ）が経過したときにタイムアウトする。
Ｓ２４０の後、Ｓ２５０に進む。
【００５３】
Ｓ２５０において、転送制御回路２２３は、バッファ２１１とメモリ２３０とにアクセスし、バッファ２１１に記憶されている周期データ１１０の部分データをｉ番目のブロックデータＤｉとしてメモリ２３０に転送する。メモリ２３０に転送されたブロックデータＤｉはバッファ２１１から削除される。
Ｓ２５０の後、Ｓ２２０に戻る。
【００５４】
Ｓ２６０において、転送制御回路２２３は、バッファ２１１とメモリ２３０とにアクセスし、バッファ２１１に記憶されている周期データ１１０の部分データを最後（Ｎ番目）のブロックデータＤＮとしてメモリ２３０に転送する。メモリ２３０に転送されたブロックデータＤＮはバッファ２１１から削除される。
Ｓ２６０の後、Ｓ２７０に進む。
【００５５】
Ｓ２７０において、転送制御回路２２３は、周期データ１１０の転送が完了したことを示す転送完了通知をＣＰＵ２４０に通知する。転送完了通知には、メモリ２３０内の周期データ１１０にアクセスするために、メモリ２３０内の転送先アドレス、周期データ１１０のデータサイズＴＤなどの情報を設定する。これらの情報は制御レジスタ２２１を用いて管理する。
ＣＰＵ２４０は、転送完了通知を検出したとき又はその直後に所定の割り込みハンドラの起動処理を完了する。割り込みハンドラの起動については別途説明する。
ＣＰＵ２４０は、割り込みハンドラの起動処理を完了して転送完了通知を検出したときに割り込みハンドラを動作させる。割り込みハンドラはメモリ２３０にアクセスし、メモリ２３０に記憶されている周期データ１１０に対して所定のデータ処理を行う（図５、Ｓ１４０）。
Ｓ２７０により、転送制御回路２２３のデータ転送処理（Ｓ１３０）は終了する。
【００５６】
図７は、実施の形態１における割込制御回路２２４のデータ転送処理（Ｓ１３０）を示すフローチャートである。
実施の形態１における割込制御回路２２４のデータ転送処理（図５、Ｓ１３０）（割り込み通知処理の一例）について、図７に基づいて説明する。
【００５７】
Ｓ３１０において、割込制御回路２２４は、転送制御回路２２３によるブロックデータＤｉの転送が終了するまで待機する。
例えば、転送制御回路２２３は、ブロックデータＤｉの転送（図６、Ｓ２５０、Ｓ２６０）が終了したときにブロックデータＤｉの転送終了を割込制御回路２２４に通知する。
ブロックデータＤｉの転送が終了した場合（ＹＥＳ）、Ｓ３２０に進む。
【００５８】
Ｓ３２０において、割込制御回路２２４は、制御レジスタ２２１を参照し、転送済みブロックサイズＴＤＥを算出する。ｉ番目のブロックデータＤｉの転送が終了した場合、１番目のｉ番目までのブロックサイズＲＤ１〜ＲＤｉの合計値が転送済みブロックサイズＴＤＥである。
Ｓ３２０の後、Ｓ３３０に進む。
【００５９】
Ｓ３３０において、割込制御回路２２４は、転送済みブロックサイズＴＤＥを以下の割り込み通知条件式（３）に代入し、割り込み通知条件式（３）を満たすか否かを計算する。
割り込み通知条件式（３）において、「周期データ１１０のデータサイズＴＤ−転送済みブロックサイズＴＤＥ」は残りのブロックサイズＲＤの合計値に等しい。
Ｓ３３０の後、Ｓ３４０に進む。
【００６０】
【数３】
0005586442.tif 000004
【００６１】
Ｓ３４０において、割り込み通知条件式（３）を満たす場合（ＹＥＳ）、Ｓ３５０に進む。
割り込み通知条件式（３）を満たさない場合（ＮＯ）、Ｓ３１０に戻る。
【００６２】
Ｓ３５０において、割込制御回路２２４は、割り込みハンドラの起動契機であることを通知する割り込み通知をＣＰＵ２４０に通知する。
ＣＰＵ２４０は、割り込み通知を検出したときに割り込みハンドラの起動処理を開始する。
Ｓ３５０により、割込制御回路２２４のデータ転送処理（Ｓ１３０）は終了する。
【００６３】
図８は、実施の形態１におけるデータ転送方法を示す概要図である。
実施の形態１におけるデータ転送方法について、図８に基づいて説明する。
【００６４】
周期データ１１０は、６回に分けてバッファ２１１からメモリ２３０に転送されるものとする。
バッファ２１１のアクセスに要する時間を「ＯＨＢ」とし、メモリ２３０のアクセスに要する時間を「ＯＨＭ」とする。
また、伝送装置２００に割り当てられた送信時間帯を網掛けで示す。網掛け以外の時間帯は、他の伝送装置２００から周期データ１１０の部分データを受信する時間帯である。
【００６５】
一周期の始めに同期信号１２０が通信される。
【００６６】
同期信号１２０を通信してから初回（１番目）の転送待ち時間ＷＴ１が経過するまでにバッファ２１１に記憶されたデータが初回のブロックデータＢＤ１である。初回の転送待ち時間ＷＴ１は、周期データ１１０の部分データを初回のブロックサイズＲＤ１だけ受信するために必要な時間である。
ＤＭＡ転送部２２０の転送制御回路２２３は、初回の転送待ち時間ＷＴ１が経過したときに初回のブロックデータＢＤ１をバッファ２１１からメモリ２３０に転送する。
【００６７】
初回のブロックデータＢＤ１の転送を始めてから２回目（２番目）の転送待ち時間ＷＴ２が経過するまでにバッファ２１１に記憶されたデータが２回目のブロックデータＢＤ２である。２回目の転送待ち時間ＷＴ２は、周期データ１１０の部分データを初回のブロックサイズＲＤ１だけ転送するために必要な時間である。
ＤＭＡ転送部２２０の転送制御回路２２３は、２回目の転送待ち時間ＷＴ２が経過したときに２回目のブロックデータＢＤ２をバッファ２１１からメモリ２３０に転送する。
【００６８】
以後、最後（６番目）のブロックデータＢＤ６を転送するまで処理を繰り返す。
つまり、前回のブロックデータＢＤｉ−１の転送を始めてから今回の転送待ち時間ＷＴｉが経過するまでにバッファ２１１に記憶されたデータが今回のブロックデータＢＤｉである。今回の転送待ち時間ＷＴｉは、周期データ１１０の部分データを前回のブロックサイズＲＤｉ−１だけ転送するために必要な時間である。
ＤＭＡ転送部２２０の転送制御回路２２３は、今回の転送待ち時間ＷＴｉが経過したときに今回のブロックデータＢＤｉをバッファ２１１からメモリ２３０に転送する。
【００６９】
図９は、実施の形態１におけるデータ転送方法（割り込み通知、転送完了通知）を示す概要図であり、図８のうちブロックデータＢＤ６を転送している時間帯を拡大した図である。
割り込み通知時および転送完了通知時について、図９に基づいて説明する。
【００７０】
ＤＭＡ転送部２２０の割込制御回路２２４は、ブロックデータＢＤ５の転送が終了したときにＣＰＵ２４０に割り込み通知を通知する。但し、ブロックデータＢＤ５の転送が終了したときに前記割り込み通知条件式（３）を満たすものとする。
つまり、残りのブロックデータＢＤ６の受信に要する通信時間ＲＤ６／ＴＢに転送完了通知の通知時間ＴＮＥを加えた時間は、割り込み通知の通知時間ＮＴＩに割り込みハンドラの起動処理に要する処理時間ＢＴを加えた時間に等しい時間またはより短い時間である。
【００７１】
割り込み通知を検出したＣＰＵ２４０は、割り込みハンドラの起動処理を開始する。
【００７２】
ＤＭＡ転送部２２０の転送制御回路２２３は、最後のブロックデータＢＤ６の転送が終了したときに、ＣＰＵ２４０に転送完了通知を通知する。
割り込みハンドラの起動処理は、ＣＰＵ２４０が転送完了通知を検出したとき又はそのすぐ後に完了する。
【００７３】
転送完了通知を検出したＣＰＵ２４０は割り込みハンドラを動作させ、割り込みハンドラはメモリ２３０に転送された周期データ１１０に対して所定のデータ処理を行う。
例えば、割り込みハンドラは、周期データ１１０に含まれる各パケット１１１に対する応答パケットを生成し、生成した応答パケットをメモリ２３０に記憶する。この場合、ＤＭＡ転送部２２０は、メモリ２３０に記憶された応答パケットをバッファ２１１に転送し、データ通信部２１０はバッファ２１１に転送された応答パケットを次周期の送信時間帯に送信する。
【００７４】
図１０、図１１は、従来のデータ転送方法を示す概要図である。
図１０に示すように従来のデータ転送方法では、周期データを全て受信した後に周期データの転送を行い、周期データの転送が全て終わった後に割り込み通知および転送完了通知を行っていた。
また、図１１に示すように従来の別のデータ転送方法（特許文献１参照）では、周期データを単一の大きなブロックサイズＢＤ毎に転送し、全てのブロックデータＢＤの転送が終わった後に割り込み通知および転送完了通知を行っていた。
一方、実施の形態１におけるデータ転送方法（図８、９参照）では、周期データを徐々に小さくなるブロックサイズＢＤ毎に転送し、全てのブロックデータＢＤの転送が終わる前に割り込み通知を行う。
このため、実施の形態１におけるデータ転送方法は、周期データのＤＭＡ転送を従来のデータ転送方法よりも早く完了することができる。
【００７５】
図１２は、実施の形態１における伝送装置２００のハードウェア資源の一例を示す図である。
図１２において、伝送装置２００は、ＣＰＵ２４０を備えている。ＣＰＵ２４０は、バス２０１を介してＲＯＭ９０３、ＲＡＭ９０４（メモリ２３０の一例）、通信ボード９０５（データ通信部２１０の一例）、ディスプレイ装置９１１、キーボード９１２、マウス９１３、ドライブ装置９１４、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。ドライブ装置９１４は、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）などの記憶媒体を読み書きする装置である。
【００７６】
通信ボード９０５は、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続している。
【００７７】
磁気ディスク装置９２０には、ＯＳ９２１（オペレーティングシステム）、プログラム群９２２、ファイル群９２３が記憶されている。
【００７８】
プログラム群９２２には、実施の形態において「〜部」または「〜ハンドラ」として説明する機能を実行するプログラムが含まれる。プログラムは、ＣＰＵ２４０により読み出され実行される。すなわち、プログラムは、「〜部」または「〜ハンドラ」としてコンピュータを機能させるものであり、また「〜部」「〜ハンドラ」の手順や方法をコンピュータに実行させるものである。
【００７９】
ファイル群９２３には、実施の形態において説明する「〜部」「〜ハンドラ」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【００８０】
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
【００８１】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【００８２】
実施の形態１において、例えば、以下のような通信システム１００について説明した。
通信システム１００は、外部バス（ネットワーク１０１）に接続された複数の伝送装置２００を備え、伝送装置２００間で一定の周期で通信を行う。
【００８３】
伝送装置２００は、バッファ２１１、ＣＰＵ２４０、メモリ２３０およびＤＭＡ転送部２２０を備える。
バッファ２１１はデータを送受信する際にデータを保持し、ＣＰＵ２４０は演算を行い、メモリ２３０はＣＰＵ２４０に使用される。
ＤＭＡ転送部２２０は、制御レジスタ２２１、ブロックサイズ設定部２２２、転送制御回路２２３および割込制御回路２２４を備える。以下、カッコ内に対応する記号または符号を記す。
制御レジスタ２２１は、転送元アドレス、転送先アドレス、転送データサイズ（ＴＤ）、転送データを分割したブロックデータサイズ（ＲＤ）、アドレスオフセット、周期、外部バスの転送速度（ＴＮ）、内部バスの転送速度（ＴＢ）、バッファ２１１のオーバーヘッド（ＯＨＢ）、ＣＰＵ２４０の割込ハンドラの遅延値（ＢＴ）を格納したレジスタで構成される。
ブロックサイズ設定部２２２は、転送データサイズと外部・内部バスの転送速度に基づいてブロックデータサイズを算出する。
転送制御回路２２３は、制御レジスタ２２１の値に基づいて転送データ（周期データ１１０）を複数のブロック（ＢＤ）に分割し、ブロック単位でＤＭＡ転送を行う。
割込制御回路２２４は、ＣＰＵ２４０に割込通知を行う。
【００８４】
ブロックサイズ設定部２２２は、通信開始前に、外部バスの転送速度、内部バスの転送速度、バッファ２１１のオーバーヘッドおよび転送データサイズに基づいて、ブロックサイズ分の転送データをバッファ２１１に受信する間に１つ前にリードしたデータの転送を完了しているようなブロックデータサイズを制御レジスタ２２１に設定する。
転送制御回路２２３は、制御レジスタ２２１の値に従ってバッファ２１１からブロックデータサイズのデータを逐次リードして、メモリ２３０にＤＭＡ転送する。
【００８５】
割込制御回路２２４は、残りの転送データサイズの転送時間（（ＴＤ−ＴＤＥ）／ＴＢ）と割込情報転送時間（ＮＴＥ）との和が、割込通知時間（ＮＴＩ）と割込ハンドラの遅延値（ＢＴ）との和に等しくなると、割り込み要因（割り込み通知）をＣＰＵ２４０に通知する。
【００８６】
つまり、ＤＭＡ転送部２２０は、リードする転送データのブロックサイズを段階的に小さくすることで、転送データの分割数（ブロック数）を抑えながら、最後に送信するブロックデータのサイズを小さくする。
さらに、ＤＭＡ転送部２２０はＤＭＡ転送の実行中に割込通知をＣＰＵ２４０に予め通知し、ＤＭＡ転送を完了したときに割込情報（転送完了通知）を通知する。そして、ＣＰＵ２４０は割込情報の通知を受けると直ちに動作する。
これにより、ＤＭＡ転送部２２０は、従来技術よりもＤＭＡ転送を早く完了させることができる。
【００８７】
実施の形態１における伝送装置２００は、以下のような形態であっても構わない。
【００８８】
利用者がブロックサイズや転送待ち時間を算出し、算出したブロックサイズや転送待ち時間を伝送装置２００に入力してもよい。ブロックサイズ設定部２２２は入力されたブロックサイズや転送待ち時間を制御レジスタ２２１に設定する。
【００８９】
ブロックサイズ設定部２２２は、一定周期毎にまたは一つのブロックデータの転送が終了する度に、ブロックサイズおよび転送待ち時間を更新しても構わない。
例えば、伝送装置２００は、データ通信部２１０が単位時間当たりに通信したデータサイズに基づいてネットワーク１０１の通信速度を算出する通信速度算出部を備える。また、伝送装置２００は、転送制御回路２２３が単位時間当たりに転送したデータサイズに基づいてバス２０１の転送速度を算出する転送速度算出部を備える。そして、ブロックサイズ設定部２２２は、通信速度算出部により算出された通信速度と転送速度算出部により算出された転送速度とを用いて新たなブロックサイズおよび新たな転送待ち時間を算出する。
【００９０】
ＣＰＵ２４０により生成されたデータ（例えば、応答パケット）をメモリ２３０からバッファ２１１にＤＭＡ転送する際に、実施の形態１で説明したデータ転送方法を用いても構わない。
【００９１】
転送制御回路２２３は、転送待ち時間が経過したときではなく、周期データ１１０の部分データがブロックサイズだけバッファ２１１に記憶されたときに、バッファ２１１からメモリ２３０に部分データを転送しても構わない。
つまり、転送制御回路２２３は、データ通信部２１０が通信を始めてから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データがバッファ２１１に記憶されたときに、バッファ２１１に記憶された部分データをメモリ２３０に転送する。さらに、転送制御回路２２３は、次のブロックサイズだけ部分データがバッファ２１１に記憶されたときに、バッファ２１１に記憶された部分データをメモリ２３０に転送する。
例えば、転送制御回路２２３は定期的にバッファ２１１にアクセスし、バッファ２１１に記憶されている部分データのデータサイズを参照し、参照したデータサイズと所定のブロックサイズとを比較して部分データを転送するか否かを判定する。
【符号の説明】
【００９２】
１００  通信システム、１０１  ネットワーク、１１０  周期データ、１１１  パケット、２００  伝送装置、２０１  バス、２１０  データ通信部、２１１  バッファ、２２０  ＤＭＡ転送部、２２１  制御レジスタ、２２２  ブロックサイズ設定部、２２３  転送制御回路、２２４  割込制御回路、２３０  メモリ、２４０  ＣＰＵ、９０３  ＲＯＭ、９０４  ＲＡＭ、９０５  通信ボード、９１１  ディスプレイ装置、９１２  キーボード、９１３  マウス、９１４  ドライブ装置、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  プログラム群、９２３  ファイル群。
【図１】
0005586442.tif 000011
【図２】
0005586442.tif 000012
【図３】
0005586442.tif 000013
【図４】
0005586442.tif 000014
【図５】
0005586442.tif 000015
【図６】
0005586442.tif 000016
【図７】
0005586442.tif 000017
【図８】
0005586442.tif 000018
【図９】
0005586442.tif 000019
【図１０】
0005586442.tif 000020
【図１１】
0005586442.tif 000021
【図１２】
0005586442.tif 000022