JP5586442B2 - 通信装置、通信装置のデータ転送方法および通信プログラム - Google Patents

通信装置、通信装置のデータ転送方法および通信プログラム Download PDF

Info

Publication number
JP5586442B2
JP5586442B2 JP2010269971A JP2010269971A JP5586442B2 JP 5586442 B2 JP5586442 B2 JP 5586442B2 JP 2010269971 A JP2010269971 A JP 2010269971A JP 2010269971 A JP2010269971 A JP 2010269971A JP 5586442 B2 JP5586442 B2 JP 5586442B2
Authority
JP
Japan
Prior art keywords
data
communication
transfer
memory
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010269971A
Other languages
English (en)
Other versions
JP2012118895A (ja
Inventor
達徳 辻村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2010269971A priority Critical patent/JP5586442B2/ja
Publication of JP2012118895A publication Critical patent/JP2012118895A/ja
Application granted granted Critical
Publication of JP5586442B2 publication Critical patent/JP5586442B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Description

本発明は、例えば、通信データをDMA(Direct Memory Access)で転送する通信装置、通信装置のデータ転送方法および通信プログラムに関するものである。
従来、伝送装置(通信装置)のCPU(Central Processing Unit)は、通信バッファにアクセスし、通信バッファからメモリに受信データを転送し、受信データに対する応答データを生成していた。
しかし、CPUの処理速度が高速になったことに伴い、CPUの性能を有効的に活用するため、通信バッファとメモリとの間のデータ転送をCPUとは別の仕組みによって行うようになった。この仕組みを「DMA転送」という。
例えば、複数の伝送装置が一定周期内で順番に送信を行う「定周期通信」において、伝送装置は、一定周期の通信が終了したときにDMA転送を開始する。
そして、伝送装置のCPUは、DMA転送が終了した後に、受信データに対する応答データを生成する。生成された応答データは次の送信タイミング時に送信される。
DMA転送を早く完了させる方法として、特許文献1には以下のような方法が開示されている。
特許文献1に記載の方法は、一定周期に受信したデータを一定周期の通信が終了したときにまとめてDMA転送するのではなく、データを一定のブロックサイズだけ受信する度にDMA転送を行うものである。
しかし、特許文献1に記載の方法では、ブロックサイズが大きい場合、一定周期の通信が終了した後にブロックサイズ分の大きな受信データをDMA転送しなければいけない。この場合、DMA転送が完了する時刻はあまり早くならない。
また、ブロックサイズが小さい場合、通信バッファやメモリにアクセスする回数が増え、通信バッファやメモリにアクセスするためのオーバーヘッドが大きくなってしまう。この場合、DMA転送に要する時間を短縮できず、DMA転送を早く完了させることができない。
また、従来のDMA転送はDMA転送が完了した後にCPUへの通知を行い、CPUは受信データを処理する割り込みハンドラをDMA転送が完了してから起動していた。
このため、DMA転送が完了しても割り込みハンドラの起動処理が完了するまでは受信データを処理することができなかった。
特開2006−079332号公報
本発明は、例えば、定周期通信においてDMA転送を早く完了できるようにすることを目的とする。
本発明の通信装置は、
データを記憶するメモリと、
通信データを記憶する通信バッファと、
ネットワークを介して通信データを通信するデータ通信部であって、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして前記通信バッファに記憶するデータ通信部と、
前記データ通信部が通信を始めたときから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとして前記メモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送するデータ転送部とを備える。
本発明によれば、例えば、定周期通信においてDMA転送を早く完了させることができる。
実施の形態1における通信システム100の構成図。 実施の形態1における伝送装置200の機能構成図。 実施の形態1における周期データ110の一例を示す図。 実施の形態1における周期データ110の一例を示す図。 実施の形態1における通信処理方法の概要を示すフローチャート。 実施の形態1における転送制御回路223のデータ転送処理(S130)を示すフローチャート。 実施の形態1における割込制御回路224のデータ転送処理(S130)を示すフローチャート。 実施の形態1におけるデータ転送方法を示す概要図。 実施の形態1におけるデータ転送方法(割り込み通知、転送完了通知)を示す概要図。 従来のデータ転送方法を示す概要図。 従来のデータ転送方法を示す概要図。 実施の形態1における伝送装置200のハードウェア資源の一例を示す図。
実施の形態1.
通信速度と転送速度とに基づいて転送待ち時間を決定し、転送待ち時間が経過する度に受信データを通信バッファからメモリにDMA(Direct Memory Access)転送する形態について説明する。
図1は、実施の形態1における通信システム100の構成図である。
実施の形態1における通信システム100の構成について、図1に基づいて説明する。
通信システム100は、バス型のネットワーク101とネットワーク101に接続する複数の伝送装置200(通信装置の一例)とを有する。
各伝送装置200は、バス型のネットワーク101を介して定周期通信(例えば、時分割通信)を行う。
つまり、各伝送装置200は、所定の通信周期毎に他の伝送装置200にパケット111を送信する。また、各伝送装置200の送信順序が決められ、各伝送装置200は送信順序に従ってパケット111を送信する。各伝送装置200によって送信されたパケット111は、他の全ての伝送装置200によって受信される。
例えば、一回の通信周期が複数の単位時間に分割され、各伝送装置200に単位時間が割り当てられる。そして、各伝送装置200は、割り当てられた単位時間にのみパケット111を送信する。
通信システム100のネットワーク101は、バス型以外のネットワーク(スター型、リング型など)であっても構わない。
図2は、実施の形態1における伝送装置200の機能構成図である。
実施の形態1における伝送装置200の機能構成について、図2に基づいて説明する。
伝送装置200(通信装置の一例)は、データ通信部210、DMA転送部220、メモリ230およびCPU240を備える。また、データ通信部210は、バッファ211(通信バッファの一例)を備える。
CPU240(Central Processing Unit)は、メモリ230に記憶されたデータを処理する。
データ通信部210は、ネットワーク101を介して周期データ110(通信データの一例)を通信する。
そして、データ通信部210は、周期データ110を受信し始めてから周期データ110を受信し終わるまで、受信したデータを周期データ110の部分データとしてバッファ211に記憶する。
周期データ110とは、通信周期内に受信する複数のパケット111を含んだデータのことである。周期データ110については別途説明する。
DMA転送部220は、制御レジスタ221、ブロックサイズ設定部222、転送制御回路223および割込制御回路224を備える。
制御レジスタ221は、DMA転送の制御情報を記憶する。DMA転送の制御情報については別途説明する。
ブロックサイズ設定部222は、制御レジスタ221に記憶された制御情報に基づいて後述するブロックサイズや転送待ち時間を算出する。
ブロックサイズ設定部222の詳細については別途説明する。
転送制御回路223(データ転送部の一例)は、データ通信部210が通信を始めたときから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、バッファ211に記憶されている部分データを一つ目のブロックデータとしてメモリ230に転送する。
さらに、転送制御回路223は、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、バッファ211に記憶されている部分データを新たなブロックデータとしてメモリ230に転送する。
ブロックサイズに相当する通信時間および転送時間を転送待ち時間と言い換えた場合、転送制御回路223の上記説明は以下の通りである。
転送制御回路223は、データ通信部210が通信を始めたときから所定の初回の転送待ち時間が経過したときに、バッファ211に記憶されている部分データを初回のブロックデータとしてメモリ230に転送する。
さらに、転送制御回路223は、前回のブロックデータの転送を始めたときから今回の転送待ち時間が経過したときに、バッファ211に記憶されている部分データを今回のブロックデータとしてメモリ230に転送する。今回の転送待ち時間とは、前回の転送待ち時間にネットワーク101の通信速度を乗算して得られるデータサイズ(後述するブロックサイズ)だけ部分データを転送するための時間である。
また、転送制御回路223(転送完了通知部の一例)は、全ての部分データをメモリ230に転送し終えたときに、CPU240に転送完了通知を通知する。
CPU240は、割り込みハンドラの起動処理が完了して転送完了通知を検出したときに、メモリ230に転送された部分データにより構成される周期データ110を割り込みハンドラによって処理する。割り込みハンドラとは、周期データ110を処理するための機能である。
割込制御回路224(割り込み通知部の一例)は、転送制御回路223がCPU240に転送完了通知を通知する前に、CPU240に割り込み通知を通知する。CPU240は、割込制御回路224から通知された割り込み通知を検出したときに割り込みハンドラの起動処理を開始する。
周期データ110は、ネットワーク101を介して通信され、バス201を介してバッファ211からメモリ230に転送される。
ネットワーク101は外部の通信路(または通信ケーブル、信号線)であり、バス201は内部の通信路(または信号線)である。
図3、図4は、実施の形態1における周期データ110の一例を示す図である。
実施の形態1における周期データ110について、図3および図4に基づいて説明する。
図3に示すように、周期データ110とは、各伝送装置200から一回の通信周期に送信された複数のパケット111を含んだデータである。
但し、各伝送装置200が受信する周期データ110には自己の送信パケットを含まない。例えば、伝送装置200Cが受信する周期データ110には、伝送装置200Cが送信するパケット111Cを含まない。
図4において、網掛け部分は自己の送信パケットに相当する部分を示している。
各伝送装置200によって受信された周期データ110は、複数のブロックデータBDに分けてDMA転送される。
また、ブロックデータBDのサイズ(ブロックサイズ)は徐々に小さくなり、最後のブロックデータBDのサイズが最も小さい。但し、ブロックサイズには自己の送信パケットに相当する部分のサイズを含めるものとする。つまり、先頭のブロックデータBDのブロックサイズは自己の送信パケットのサイズ(網掛け部分)を含めると最も大きい。
図5は、実施の形態1における通信処理方法の概要を示すフローチャートである。
実施の形態1における通信処理方法の概要について、図5に基づいて説明する。
制御情報設定処理(S110)において、ブロックサイズ設定部222は、ブロックサイズや転送待ち時間などの制御情報を算出し、算出した制御情報を制御レジスタ221に設定する。
S110の詳細については別途説明する。
データ通信処理(S120)において、データ通信部210は、定周期通信を行う。
定周期通信の周期毎に、特定の伝送装置200のデータ通信部210は同期信号を送信し、他の伝送装置200のデータ通信部210は同期信号を受信する。そして、各伝送装置200のデータ通信部210は同期信号の送受信時に通信を開始する。これにより、各伝送装置200が周期毎に同期して通信を行うことができる。
データ通信部210は、周期データ110を受信し始めてから周期データ110を受信し終わるまで、受信しているデータ(周期データ110の部分データ)をバッファ211に順次記憶する。
データ転送処理(S130)において、DMA転送部220は、S110で設定された制御情報に従って、バッファ211に記憶される周期データ110を複数回に分けてバッファ211からメモリ230に転送する。
S130の詳細については別途説明する。
データ処理(S140)において、CPU240は、メモリ230に転送された周期データ110に対して所定の処理を行う。
例えば、CPU240は、周期データ110に含まれるパケット111に対して応答パケットを生成し、生成した応答パケットをメモリ230に記憶する。
次に、DMA転送部220は、メモリ230に記憶された応答パケットをバッファ211に転送する。
そして、データ通信部210は、自分の送信の順番になったときに応答パケットをネットワーク101に送信する。
S120からS140の処理は、通信周期毎に繰り返し実行される。
次に、制御情報設定処理(図5、S110)について説明する。
利用者は、周期データ110(受信パケットと送信パケットとを含む)のデータサイズTD、ネットワーク101の通信速度TNおよびバス201の転送速度TBを制御レジスタ221に設定する。
また、利用者は、バッファ211のオーバーヘッドOH、メモリ230のオーバーヘッドOHおよび最終ブロックデータのブロックサイズRD(または先頭ブロックデータのブロックサイズRD)を制御レジスタ221に設定する。
また、利用者は、割り込み通知の通知時間NTと転送完了通知の通知時間NTとを制御レジスタ221に設定する。
バッファ211のオーバーヘッドとは、バッファ211のアクセスに要する時間(例えば、バッファ211からブロックデータを読み出すための時間)である。
メモリ230のオーバーヘッドとは、メモリ230のアクセスに要する時間(例えば、メモリ230にブロックデータを書き込むための時間)である。
割り込み通知の通知時間NTとは、割り込み通知をCPU240に通知するために必要な時間(例えば、割込制御回路224が割り込み通知を生成して送信し、CPU240が割り込み通知を検出するための時間)である。
転送完了通知NTとは、転送制御回路223が転送完了通知を生成して送信し、CPU240が転送完了通知を検出するための時間)である。
ブロックサイズ設定部222は、上記の値を用いて以下の関係式(1−1)を計算する。
関係式(1−1)の左辺は、データをi番目のブロックサイズRDだけ受信するために必要な通信時間を意味する。
また、関係式(1−1)の右辺は、データをi−1番目のブロックサイズRDi−1だけ転送するために必要な転送時間を意味する。
ブロックサイズ設定部222は、関係式(1−1)を計算することにより、1番目からN番目(最後)のブロックサイズを算出する。
但し、ブロックサイズ設定部222は、関係式(1−2)を満たすように、つまり、ブロックサイズの合計(左辺)と周期データ110のデータサイズTD(右辺)とが一致するように、ブロックサイズRDを調整する。例えば、次のブロックサイズを加えるとブロックサイズの合計が周期データ110のデータサイズTDを超えてしまう場合、余ったデータサイズを一つ前に算出したブロックサイズに加える。また例えば、越えた分のデータサイズを一つ前に算出したブロックサイズから差し引く。
Figure 0005586442
さらに、ブロックサイズ設定部222は、1番目のブロックサイズRDを用いて以下の式(2−1)を計算し、1番目の転送待ち時間WTを算出する。1番目の転送待ち時間WTは、1番目のブロックサイズRDを受信するために必要な通信時間である。
また、ブロックサイズ設定部222は、以下の式(2−2)を計算し、2番目以降の転送待ち時間WTを算出する。i(≠1)番目の転送待ち時間WTは、i−1番目のブロックサイズRDi−1を転送するために必要な時間である。i−1番目のブロックサイズRDi−1は、i−1番目の転送待ち時間WTi−1に通信速度TNを乗じた値に等しい。
Figure 0005586442
ブロックサイズ設定部222は、算出したブロックサイズRDおよび転送待ち時間WTを制御レジスタ221に設定する。
図6は、実施の形態1における転送制御回路223のデータ転送処理(S130)を示すフローチャートである。
実施の形態1における転送制御回路223のデータ転送処理(図5、S130)(データ転送処理、転送完了通知処理の一例)について、図6に基づいて説明する。
S210において、データ通信部210は同期信号を受信した場合、同期信号の受信(当該周期の通信開始)を転送制御回路223に通知する。
転送制御回路223は、制御レジスタ221を参照し、最初(1番目)の転送待ち時間WTを設定した転送待ちタイマを起動する。
転送待ちタイマは、起動してから設定時間が経過したときにタイムアウトを通知する機能である。
つまり、最初の転送待ち時間WTが設定された転送待ちタイマは、データ通信部210が当該周期の通信を始めたときから周期データ110の部分データを1番目のブロックサイズRDだけ受信するために必要な通信時間(最初の転送待ち時間WT)が経過したときにタイムアウトする。
S210の後、S220に進む。
S220において、転送制御回路223は、転送待ちタイマがタイムアウトするまで待機する。
転送待ちタイマがタイムアウトした場合(YES)、S230に進む。
S230において、転送制御回路223は、制御レジスタ221を参照し、タイムアウトした転送待ちタイマに設定した転送待ち時間WTが最後(N番目)の転送待ち時間WTであるか否かを判定する。
転送待ちタイマに設定した転送待ち時間WTが最後の転送待ち時間WTである場合(YES)、S260に進む。
転送待ちタイマに設定した転送待ち時間WTが最後の転送待ち時間WTでない場合(NO)、S240に進む。
S240において、転送制御回路223は、次の転送待ち時間WTを設定した転送待ちタイマを起動する。
i番目の転送待ち時間WTが設定された転送待ちタイマは、周期データ110の部分データをi−1番目のブロックサイズRDi−1だけバッファ211からメモリ230に転送するために必要な転送時間(i番目の転送待ち時間WT)が経過したときにタイムアウトする。
S240の後、S250に進む。
S250において、転送制御回路223は、バッファ211とメモリ230とにアクセスし、バッファ211に記憶されている周期データ110の部分データをi番目のブロックデータDとしてメモリ230に転送する。メモリ230に転送されたブロックデータDはバッファ211から削除される。
S250の後、S220に戻る。
S260において、転送制御回路223は、バッファ211とメモリ230とにアクセスし、バッファ211に記憶されている周期データ110の部分データを最後(N番目)のブロックデータDとしてメモリ230に転送する。メモリ230に転送されたブロックデータDはバッファ211から削除される。
S260の後、S270に進む。
S270において、転送制御回路223は、周期データ110の転送が完了したことを示す転送完了通知をCPU240に通知する。転送完了通知には、メモリ230内の周期データ110にアクセスするために、メモリ230内の転送先アドレス、周期データ110のデータサイズTDなどの情報を設定する。これらの情報は制御レジスタ221を用いて管理する。
CPU240は、転送完了通知を検出したとき又はその直後に所定の割り込みハンドラの起動処理を完了する。割り込みハンドラの起動については別途説明する。
CPU240は、割り込みハンドラの起動処理を完了して転送完了通知を検出したときに割り込みハンドラを動作させる。割り込みハンドラはメモリ230にアクセスし、メモリ230に記憶されている周期データ110に対して所定のデータ処理を行う(図5、S140)。
S270により、転送制御回路223のデータ転送処理(S130)は終了する。
図7は、実施の形態1における割込制御回路224のデータ転送処理(S130)を示すフローチャートである。
実施の形態1における割込制御回路224のデータ転送処理(図5、S130)(割り込み通知処理の一例)について、図7に基づいて説明する。
S310において、割込制御回路224は、転送制御回路223によるブロックデータDの転送が終了するまで待機する。
例えば、転送制御回路223は、ブロックデータDの転送(図6、S250、S260)が終了したときにブロックデータDの転送終了を割込制御回路224に通知する。
ブロックデータDの転送が終了した場合(YES)、S320に進む。
S320において、割込制御回路224は、制御レジスタ221を参照し、転送済みブロックサイズTDを算出する。i番目のブロックデータDの転送が終了した場合、1番目のi番目までのブロックサイズRD〜RDの合計値が転送済みブロックサイズTDである。
S320の後、S330に進む。
S330において、割込制御回路224は、転送済みブロックサイズTDを以下の割り込み通知条件式(3)に代入し、割り込み通知条件式(3)を満たすか否かを計算する。
割り込み通知条件式(3)において、「周期データ110のデータサイズTD−転送済みブロックサイズTD」は残りのブロックサイズRDの合計値に等しい。
S330の後、S340に進む。
Figure 0005586442
S340において、割り込み通知条件式(3)を満たす場合(YES)、S350に進む。
割り込み通知条件式(3)を満たさない場合(NO)、S310に戻る。
S350において、割込制御回路224は、割り込みハンドラの起動契機であることを通知する割り込み通知をCPU240に通知する。
CPU240は、割り込み通知を検出したときに割り込みハンドラの起動処理を開始する。
S350により、割込制御回路224のデータ転送処理(S130)は終了する。
図8は、実施の形態1におけるデータ転送方法を示す概要図である。
実施の形態1におけるデータ転送方法について、図8に基づいて説明する。
周期データ110は、6回に分けてバッファ211からメモリ230に転送されるものとする。
バッファ211のアクセスに要する時間を「OH」とし、メモリ230のアクセスに要する時間を「OH」とする。
また、伝送装置200に割り当てられた送信時間帯を網掛けで示す。網掛け以外の時間帯は、他の伝送装置200から周期データ110の部分データを受信する時間帯である。
一周期の始めに同期信号120が通信される。
同期信号120を通信してから初回(1番目)の転送待ち時間WTが経過するまでにバッファ211に記憶されたデータが初回のブロックデータBDである。初回の転送待ち時間WTは、周期データ110の部分データを初回のブロックサイズRDだけ受信するために必要な時間である。
DMA転送部220の転送制御回路223は、初回の転送待ち時間WTが経過したときに初回のブロックデータBDをバッファ211からメモリ230に転送する。
初回のブロックデータBDの転送を始めてから2回目(2番目)の転送待ち時間WTが経過するまでにバッファ211に記憶されたデータが2回目のブロックデータBDである。2回目の転送待ち時間WTは、周期データ110の部分データを初回のブロックサイズRDだけ転送するために必要な時間である。
DMA転送部220の転送制御回路223は、2回目の転送待ち時間WTが経過したときに2回目のブロックデータBDをバッファ211からメモリ230に転送する。
以後、最後(6番目)のブロックデータBDを転送するまで処理を繰り返す。
つまり、前回のブロックデータBDi−1の転送を始めてから今回の転送待ち時間WTが経過するまでにバッファ211に記憶されたデータが今回のブロックデータBDである。今回の転送待ち時間WTは、周期データ110の部分データを前回のブロックサイズRDi−1だけ転送するために必要な時間である。
DMA転送部220の転送制御回路223は、今回の転送待ち時間WTが経過したときに今回のブロックデータBDをバッファ211からメモリ230に転送する。
図9は、実施の形態1におけるデータ転送方法(割り込み通知、転送完了通知)を示す概要図であり、図8のうちブロックデータBDを転送している時間帯を拡大した図である。
割り込み通知時および転送完了通知時について、図9に基づいて説明する。
DMA転送部220の割込制御回路224は、ブロックデータBDの転送が終了したときにCPU240に割り込み通知を通知する。但し、ブロックデータBDの転送が終了したときに前記割り込み通知条件式(3)を満たすものとする。
つまり、残りのブロックデータBDの受信に要する通信時間RD/TBに転送完了通知の通知時間TNを加えた時間は、割り込み通知の通知時間NTに割り込みハンドラの起動処理に要する処理時間BTを加えた時間に等しい時間またはより短い時間である。
割り込み通知を検出したCPU240は、割り込みハンドラの起動処理を開始する。
DMA転送部220の転送制御回路223は、最後のブロックデータBDの転送が終了したときに、CPU240に転送完了通知を通知する。
割り込みハンドラの起動処理は、CPU240が転送完了通知を検出したとき又はそのすぐ後に完了する。
転送完了通知を検出したCPU240は割り込みハンドラを動作させ、割り込みハンドラはメモリ230に転送された周期データ110に対して所定のデータ処理を行う。
例えば、割り込みハンドラは、周期データ110に含まれる各パケット111に対する応答パケットを生成し、生成した応答パケットをメモリ230に記憶する。この場合、DMA転送部220は、メモリ230に記憶された応答パケットをバッファ211に転送し、データ通信部210はバッファ211に転送された応答パケットを次周期の送信時間帯に送信する。
図10、図11は、従来のデータ転送方法を示す概要図である。
図10に示すように従来のデータ転送方法では、周期データを全て受信した後に周期データの転送を行い、周期データの転送が全て終わった後に割り込み通知および転送完了通知を行っていた。
また、図11に示すように従来の別のデータ転送方法(特許文献1参照)では、周期データを単一の大きなブロックサイズBD毎に転送し、全てのブロックデータBDの転送が終わった後に割り込み通知および転送完了通知を行っていた。
一方、実施の形態1におけるデータ転送方法(図8、9参照)では、周期データを徐々に小さくなるブロックサイズBD毎に転送し、全てのブロックデータBDの転送が終わる前に割り込み通知を行う。
このため、実施の形態1におけるデータ転送方法は、周期データのDMA転送を従来のデータ転送方法よりも早く完了することができる。
図12は、実施の形態1における伝送装置200のハードウェア資源の一例を示す図である。
図12において、伝送装置200は、CPU240を備えている。CPU240は、バス201を介してROM903、RAM904(メモリ230の一例)、通信ボード905(データ通信部210の一例)、ディスプレイ装置911、キーボード912、マウス913、ドライブ装置914、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。ドライブ装置914は、FD(Flexible Disk Drive)、CD(Compact Disc)、DVD(Digital Versatile Disc)などの記憶媒体を読み書きする装置である。
通信ボード905は、有線または無線で、LAN(Local Area Network)、インターネット、電話回線などの通信網に接続している。
磁気ディスク装置920には、OS921(オペレーティングシステム)、プログラム群922、ファイル群923が記憶されている。
プログラム群922には、実施の形態において「〜部」または「〜ハンドラ」として説明する機能を実行するプログラムが含まれる。プログラムは、CPU240により読み出され実行される。すなわち、プログラムは、「〜部」または「〜ハンドラ」としてコンピュータを機能させるものであり、また「〜部」「〜ハンドラ」の手順や方法をコンピュータに実行させるものである。
ファイル群923には、実施の形態において説明する「〜部」「〜ハンドラ」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
実施の形態1において、例えば、以下のような通信システム100について説明した。
通信システム100は、外部バス(ネットワーク101)に接続された複数の伝送装置200を備え、伝送装置200間で一定の周期で通信を行う。
伝送装置200は、バッファ211、CPU240、メモリ230およびDMA転送部220を備える。
バッファ211はデータを送受信する際にデータを保持し、CPU240は演算を行い、メモリ230はCPU240に使用される。
DMA転送部220は、制御レジスタ221、ブロックサイズ設定部222、転送制御回路223および割込制御回路224を備える。以下、カッコ内に対応する記号または符号を記す。
制御レジスタ221は、転送元アドレス、転送先アドレス、転送データサイズ(TD)、転送データを分割したブロックデータサイズ(RD)、アドレスオフセット、周期、外部バスの転送速度(TN)、内部バスの転送速度(TB)、バッファ211のオーバーヘッド(OH)、CPU240の割込ハンドラの遅延値(BT)を格納したレジスタで構成される。
ブロックサイズ設定部222は、転送データサイズと外部・内部バスの転送速度に基づいてブロックデータサイズを算出する。
転送制御回路223は、制御レジスタ221の値に基づいて転送データ(周期データ110)を複数のブロック(BD)に分割し、ブロック単位でDMA転送を行う。
割込制御回路224は、CPU240に割込通知を行う。
ブロックサイズ設定部222は、通信開始前に、外部バスの転送速度、内部バスの転送速度、バッファ211のオーバーヘッドおよび転送データサイズに基づいて、ブロックサイズ分の転送データをバッファ211に受信する間に1つ前にリードしたデータの転送を完了しているようなブロックデータサイズを制御レジスタ221に設定する。
転送制御回路223は、制御レジスタ221の値に従ってバッファ211からブロックデータサイズのデータを逐次リードして、メモリ230にDMA転送する。
割込制御回路224は、残りの転送データサイズの転送時間((TD−TD)/TB)と割込情報転送時間(NT)との和が、割込通知時間(NT)と割込ハンドラの遅延値(BT)との和に等しくなると、割り込み要因(割り込み通知)をCPU240に通知する。
つまり、DMA転送部220は、リードする転送データのブロックサイズを段階的に小さくすることで、転送データの分割数(ブロック数)を抑えながら、最後に送信するブロックデータのサイズを小さくする。
さらに、DMA転送部220はDMA転送の実行中に割込通知をCPU240に予め通知し、DMA転送を完了したときに割込情報(転送完了通知)を通知する。そして、CPU240は割込情報の通知を受けると直ちに動作する。
これにより、DMA転送部220は、従来技術よりもDMA転送を早く完了させることができる。
実施の形態1における伝送装置200は、以下のような形態であっても構わない。
利用者がブロックサイズや転送待ち時間を算出し、算出したブロックサイズや転送待ち時間を伝送装置200に入力してもよい。ブロックサイズ設定部222は入力されたブロックサイズや転送待ち時間を制御レジスタ221に設定する。
ブロックサイズ設定部222は、一定周期毎にまたは一つのブロックデータの転送が終了する度に、ブロックサイズおよび転送待ち時間を更新しても構わない。
例えば、伝送装置200は、データ通信部210が単位時間当たりに通信したデータサイズに基づいてネットワーク101の通信速度を算出する通信速度算出部を備える。また、伝送装置200は、転送制御回路223が単位時間当たりに転送したデータサイズに基づいてバス201の転送速度を算出する転送速度算出部を備える。そして、ブロックサイズ設定部222は、通信速度算出部により算出された通信速度と転送速度算出部により算出された転送速度とを用いて新たなブロックサイズおよび新たな転送待ち時間を算出する。
CPU240により生成されたデータ(例えば、応答パケット)をメモリ230からバッファ211にDMA転送する際に、実施の形態1で説明したデータ転送方法を用いても構わない。
転送制御回路223は、転送待ち時間が経過したときではなく、周期データ110の部分データがブロックサイズだけバッファ211に記憶されたときに、バッファ211からメモリ230に部分データを転送しても構わない。
つまり、転送制御回路223は、データ通信部210が通信を始めてから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データがバッファ211に記憶されたときに、バッファ211に記憶された部分データをメモリ230に転送する。さらに、転送制御回路223は、次のブロックサイズだけ部分データがバッファ211に記憶されたときに、バッファ211に記憶された部分データをメモリ230に転送する。
例えば、転送制御回路223は定期的にバッファ211にアクセスし、バッファ211に記憶されている部分データのデータサイズを参照し、参照したデータサイズと所定のブロックサイズとを比較して部分データを転送するか否かを判定する。
100 通信システム、101 ネットワーク、110 周期データ、111 パケット、200 伝送装置、201 バス、210 データ通信部、211 バッファ、220 DMA転送部、221 制御レジスタ、222 ブロックサイズ設定部、223 転送制御回路、224 割込制御回路、230 メモリ、240 CPU、903 ROM、904 RAM、905 通信ボード、911 ディスプレイ装置、912 キーボード、913 マウス、914 ドライブ装置、920 磁気ディスク装置、921 OS、922 プログラム群、923 ファイル群。

Claims (6)

  1. データを記憶するメモリと、
    通信データを記憶する通信バッファと、
    ネットワークを介して通信データを通信するデータ通信部であって、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして前記通信バッファに記憶するデータ通信部と、
    前記データ通信部が通信を始めたときから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとして前記メモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送するデータ転送部とを備え
    複数のブロックサイズが以下の関係式(A)を満たすことを特徴とする通信装置。
    Figure 0005586442
  2. データを記憶するメモリと、
    通信データを記憶する通信バッファと、
    ネットワークを介して通信データを通信するデータ通信部であって、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして前記通信バッファに記憶するデータ通信部と、
    前記データ通信部が通信を始めたときから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとして前記メモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送するデータ転送部と
    データを処理するCPU(Central Processing Unit)と、
    前記データ転送部が全ての部分データを前記メモリに転送し終えたときに、前記CPUに転送完了通知を通知する転送完了通知部と、
    前記転送完了通知部が前記CPUに転送完了通知を通知する前に、前記CPUに割り込み通知を通知する割り込み通知部とを備え、
    前記CPUは、通信データを処理する割り込みハンドラの起動処理を前記割り込み通知を検出したときに開始し、
    前記CPUは、前記割り込みハンドラの起動処理が完了して前記転送完了通知を検出したときに、前記メモリに転送された部分データにより構成される通信データを前記割り込みハンドラによって処理し、
    前記割り込み通知部は、部分データが前記メモリに以下の関係式(B)を満たす転送済みサイズだけ転送されたときに、前記CPUに割り込み通知を通知する
    ことを特徴とする通信装置。
    Figure 0005586442
  3. データを記憶するメモリと、通信データを記憶する通信バッファと、ネットワークを介して通信データを通信するデータ通信部と、前記通信バッファに記憶された通信データを前記メモリに転送するデータ転送部とを備える通信装置のデータ転送方法において、
    前記データ通信部が、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして前記通信バッファに記憶し、
    前記データ転送部が、前記データ通信部が通信を始めたときから予め順番が定められて以下の関係式(A)を満たす複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとして前記メモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送する
    ことを特徴とする通信装置のデータ転送方法。
    Figure 0005586442
  4. データを記憶するメモリと、通信データを記憶する通信バッファと、ネットワークを介して通信データを通信するデータ通信部と、前記通信バッファに記憶された通信データを前記メモリに転送するデータ転送部と、データを処理するCPU(Central Processing Unit)と、前記データ転送部が全ての部分データを前記メモリに転送し終えたときに前記CPUに転送完了通知を通知する転送完了通知部と、前記転送完了通知部が前記CPUに転送完了通知を通知する前に、前記CPUに割り込み通知を通知する割り込み通知部とを備える通信装置のデータ転送方法において、
    前記データ通信部が、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして前記通信バッファに記憶し、
    前記データ転送部が、前記データ通信部が通信を始めたときから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとして前記メモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送し、
    前記割り込み通知部が、部分データが前記メモリに以下の関係式(B)を満たす転送済みサイズだけ転送されたときに、前記CPUに割り込み通知を通知し、
    前記CPUが、通信データを処理する割り込みハンドラの起動処理を前記割り込み通知を検出したときに開始し、
    前記CPUが、前記割り込みハンドラの起動処理が完了して前記転送完了通知を検出したときに、前記メモリに転送された部分データにより構成される通信データを前記割り込みハンドラによって処理する
    ことを特徴とする通信装置のデータ転送方法。
    Figure 0005586442
  5. ネットワークを介して通信データを通信するデータ通信処理であって、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして通信バッファに記憶するデータ通信処理と、
    前記データ通信処理が通信を始めたときから予め順番が定められて以下の関係式(A)を満たす複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとしてメモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送するデータ転送処理とをコンピュータに実行させることを特徴とする通信プログラム。
    Figure 0005586442
  6. ネットワークを介して通信データを通信するデータ通信処理であって、通信データを受信し始めてから通信データを受信し終わるまで、受信したデータを通信データの部分データとして通信バッファに記憶するデータ通信処理と、
    前記データ通信処理が通信を始めたときから予め順番が定められた複数のブロックサイズのうち一つ目のブロックサイズだけ部分データを受信するために要する通信時間が経過したときに、前記通信バッファに記憶されている部分データを一つ目のブロックデータとしてメモリに転送し、一つ前のブロックデータの転送を始めたときから一つ前のブロックサイズだけ部分データを転送するために要する転送時間が経過したときに、前記通信バッファに記憶されている部分データを新たなブロックデータとして前記メモリに転送するデータ転送処理と
    前記データ転送処理が全ての部分データを前記メモリに転送し終えたときに、CPU(Central Processing Unit)に転送完了通知を通知する転送完了通知処理と、
    前記転送完了通知処理が前記CPUに転送完了通知を通知する前に、部分データが前記メモリに以下の関係式(B)を満たす転送済みサイズだけ転送されたときに、前記CPUに割り込み通知を通知することによって、前記CPUが前記割り込み通知を検出したときに通信データを処理する割り込みハンドラの起動処理を前記CPUに開始させて、前記CPUが前記割り込みハンドラの起動処理を完了して前記転送完了通知を検出したときに前記CPUに前記メモリに転送された部分データにより構成される通信データを前記割り込みハンドラによって処理させる割り込み通知処理と
    をコンピュータに実行させることを特徴とする通信プログラム。
    Figure 0005586442
JP2010269971A 2010-12-03 2010-12-03 通信装置、通信装置のデータ転送方法および通信プログラム Expired - Fee Related JP5586442B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010269971A JP5586442B2 (ja) 2010-12-03 2010-12-03 通信装置、通信装置のデータ転送方法および通信プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010269971A JP5586442B2 (ja) 2010-12-03 2010-12-03 通信装置、通信装置のデータ転送方法および通信プログラム

Publications (2)

Publication Number Publication Date
JP2012118895A JP2012118895A (ja) 2012-06-21
JP5586442B2 true JP5586442B2 (ja) 2014-09-10

Family

ID=46501608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010269971A Expired - Fee Related JP5586442B2 (ja) 2010-12-03 2010-12-03 通信装置、通信装置のデータ転送方法および通信プログラム

Country Status (1)

Country Link
JP (1) JP5586442B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07210500A (ja) * 1994-01-25 1995-08-11 Fujitsu Ltd データ転送制御装置
JPH0981497A (ja) * 1995-09-12 1997-03-28 Toshiba Corp 実時間ストリームサーバ並びに実時間ストリームデータの格納方法および転送方法
JP2000069430A (ja) * 1998-08-20 2000-03-03 Matsushita Electric Ind Co Ltd ビデオサーバ装置およびそのデータ転送制御方法
JP2003303168A (ja) * 2002-04-10 2003-10-24 Hitachi Ltd 通信制御用半導体集積回路
JP2006252015A (ja) * 2005-03-09 2006-09-21 Nec Engineering Ltd データ転送制御装置

Also Published As

Publication number Publication date
JP2012118895A (ja) 2012-06-21

Similar Documents

Publication Publication Date Title
TWI276965B (en) Processor system, DMA control circuit, DMA control method, control method for DMA controller, graphic processing method, and graphic processing circuit
JP2011150397A (ja) バス調停装置
JP2006195823A (ja) Dma装置
JP5460156B2 (ja) データ処理装置
JP2019053591A (ja) 通知制御装置、通知制御方法及びプログラム
JP2021119386A (ja) データ転送装置およびデータ転送方法
JP5586442B2 (ja) 通信装置、通信装置のデータ転送方法および通信プログラム
JP6402576B2 (ja) 通信装置、情報処理装置、情報処理システム及び通信装置の制御方法
JP2008146541A (ja) Dma転送システム、dmaコントローラ及びdma転送方法
JP2009187313A (ja) ディスクリプタ制御方法、ダイレクトメモリ転送装置およびプログラム
JP2009188508A (ja) データ送受信装置
KR20140042420A (ko) 반도체 장치 및 그 동작 방법
JP5334173B2 (ja) データ転送システム及びリトライ制御方法
JP5374543B2 (ja) Dma制御装置、画像形成装置、および、dma制御方法
JP2009048298A (ja) 情報処理装置、情報処理方法、当該情報処理方法を実行するためのプログラム及び当該プログラムを記録した媒体、並びにdmaコントローラ、dma転送方法、当該dma転送方法を実行するためのプログラム及び当該プログラムを記録した媒体
JP2008108126A (ja) データ転送制御装置及びそのバスアクセス調停方法
JP4541007B2 (ja) ネットワーク割り込み制御方法、情報処理装置及び画像形成装置
CN113934671B (zh) 一种接口控制芯片及网络设备
CN112543917A (zh) 中断控制装置、中断控制方法及中断控制程序
JP7226084B2 (ja) 情報処理装置
JP6213003B2 (ja) 通信制御装置、画像処理装置、通信制御プログラム
JP6213029B2 (ja) 通信装置、及び通信システム
JP2006195607A (ja) バルクアウト転送終了判定方法および回路
JP2005182505A (ja) データ転送制御装置および画像形成装置
JP4151449B2 (ja) チャネルコントロール装置、データ転送装置、チャネルコントロール方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140423

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140507

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140527

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140624

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140722

R150 Certificate of patent or registration of utility model

Ref document number: 5586442

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees