以下に添付図面を参照して、送信装置、通信装置、通信システム、送信方法、およびプログラムの実施の形態を詳細に説明する。
(第1の実施の形態)
図1は、本実施の形態の通信システム1の一例を示す模式図である。
通信システム1は、通信装置10と、受信装置12と、を備える。通信装置10と受信装置12とは、ネットワークNを介して通信可能に接続されている。
通信装置10は、フレームデータを受信装置12へ送信する装置である。フレームデータは、デジタルデータ転送の構成単位である。フレームデータを、以下では、単にフレームと称して説明する場合がある。受信装置12は、通信装置10からフレームを受信する。
ネットワークNは、例えばEthernet(登録商標)である。ネットワークNは、IEEE 802.1で定義されるAVB(Audio Video Bridging)及びTSN(Time-Sensitive Networking)規格等に対応したネットワークである。ネットワークNの種類は任意でよい。ネットワークNは、例えばオフィスネットワーク、データセンタ内部のネットワーク、車載ネットワーク、工場内ネットワーク、および、携帯基地局のネットワーク等である。
通信装置10は、メモリ14と、ホストプロセッサ16と、ストレージ18と、送信装置20と、を備える。
メモリ14は、各種データを記憶する。メモリ14は、例えばDRAM(Dynamic Random Access Memory)などである。
ホストプロセッサ16は、メモリバスを用いてメモリ14と接続されている。また、ホストプロセッサ16は、PCI Express(登録商標)等のバスを用いて、ストレージ18と接続されている。また、ホストプロセッサ16は、PCI Express(登録商標)等のバスを用いて、送信装置20と接続されている。
ホストプロセッサ16は、ストレージ18から読出したプログラムをメモリ14に展開することで、メモリ14上の命令およびデータを読みながら処理を実行する。処理は、ホストプロセッサ16に備えられた1つまたは複数のコアにより実行される。ホストプロセッサ16は、例えば、CPU(Central Processing Unit)などである。
ストレージ18は、例えばHDD(Hard Disk Drive)およびSSD(Solid State Drive)等である。
送信装置20は、ホストプロセッサ16をネットワークNに接続する。送信装置20は、具体的には、ネットワークインタフェースコントローラである。
送信装置20は、例えばASIC(Application Specific Integrated Circuit)、および、FPGA(Field-Programmable Gate Array)等により実現される。また、送信装置20は、ASIC、FPGA及び汎用プロセッサの組み合わせによって実現してもよい。また、送信装置20は、ホストプロセッサ16とは別のチップとして実装してもよいし、SoC(System-on-a-Chip)として1つのチップとして実装してもよい。
図2は、送信装置20のハードウェア構成の一例を示す模式図である。
送信装置20は、バスブリッジ20Aと、メモリ20Bと、DMA(Direct Memory Access)コントローラ20Cと、プロセッサ20Dと、MAC(Media Access Controller)20Eと、PHY(PHYsical layer interface)20Fと、を備える。
バスブリッジ20Aは、ホストプロセッサ16に接続されたバスと、送信装置20内部のメモリ20B、DMAコントローラ20C、およびプロセッサ20Dの各々のバスと、の橋渡しを行う。DMAコントローラ20Cは、ホストプロセッサ16に接続されたメモリ14(図1参照)と、送信装置20内のメモリ20Bと間でデータ転送を行う。
プロセッサ20Dは、ホストプロセッサ16とのやり取りや、MAC20EやPHY20Fの設定および制御を行う。プロセッサ20Dは、FPGA、ASIC、またはCPUなどで実現される。
メモリ20Bは、送信するフレームや後述する付随情報などを記憶する。メモリ20Bは、SRAMなどによって実現される。MAC20Eは、データリンク層のプロトコルの処理を行うハードウェアである。PHY20Fは、物理層のプロトコルの処理を行うハードウェアである。PHY20Fは、例えば、Ethernet(登録商標)の送信処理を行う。メモリ20B、MAC20E、およびおPHY20Fは、例えば、FPGAやASICなどで実現する。
図3は、ホストプロセッサ16および送信装置20の機能的構成の一例を示す模式図である。なお、図3中、実線矢印はデータの流れを示し、点線矢印は、制御の流れを示す。
ホストプロセッサ16は、送信指示部30と、第1記憶部31と、送信スケジュール指示部32と、第3記憶部33と、第1管理部34と、を備える。送信指示部30、送信スケジュール指示部32、および第1管理部34の少なくとも1つは、例えば、1または複数のプロセッサにより実現される。例えば、上記各部は、CPUなどのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のIC(Integrated Circuit)などのプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち1つを実現してもよいし、各部のうち2以上を実現してもよい。
送信装置20は、転送部40と、第2記憶部41と、受付部42と、第4記憶部43と、送信判定部44と、第2管理部45と、送信処理部46と、を備える。転送部40、受付部42、送信判定部44、第2管理部45、および送信処理部46の少なくとも1つは、例えば、1または複数のプロセッサにより実現される。例えば、上記各部は、CPUなどのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のICなどのプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち1つを実現してもよいし、各部のうち2以上を実現してもよい。
ホストプロセッサ16は、ホストプロセッサ16上で動作するアプリケーションプログラム(以下、アプリケーションと称する場合がある)が、受信装置12へ送信する送信対象のフレームを第1記憶部31へ書込み、送信指示部30へ該フレームの送信を指示する。
上記アプリケーションは、送信指示部30へフレーム送信指示を送信することで、送信指示部30へフレームの送信を指示する。
フレーム送信指示は、送信対象のフレームの第1記憶部31における格納場所を示す開始アドレスと、該フレームのデータ長と、該フレームの優先度と、を含む。優先度は、該フレームの受信装置12への送信の優先度を示す情報である。優先度は、例えば、アプリケーションによって設定される。また、優先度は、優先度そのものでも良いし、例えば優先度に対応したキューの識別子であってもよい。識別子にはIEEE 802.1Qで定義されるトラヒッククラスを用いてもよい。
送信指示部30は、フレームの送信を指示する。送信指示部30は、アプリケーションからフレーム送信指示を受付けると、転送指示を転送部40へ通知する。転送指示は、アプリケーションから受付けたフレーム送信指示に含まれる開始アドレスによって示される場所に格納されたフレームを、第1記憶部31から送信装置20の第2記憶部41へ転送することを示す。送信指示部30は、第3記憶部33にデスクリプタ33Aを書込み、送信装置20の転送部40へ該デスクリプタ33Aの番号を通知することで、転送指示を行う。
図4は、デスクリプタ33Aの構造の一例を示す模式図である。図4に示すように、第3記憶部33には、複数のデスクリプタ33Aが配列された構造となっている。各デスクリプタ33Aには、フレームID、転送元の開始アドレス、転送先の開始アドレス、データ長、が含まれる。
フレームIDは、フレームを一意に識別可能な識別子である。送信指示部30は、同じフレームIDが異なるフレームに割当てられる事の無いように、フレームごとにフレームIDを割当てる。このため、送信指示部30は、一度使用したフレームIDをホストプロセッサ16および送信装置20で使用しないことが確定した場合に、再利用して他のフレームに割当てる。
転送元の開始アドレスは、第1記憶部31に記憶されたフレームの先頭アドレスを示す。転送先の開始アドレスは、フレームの転送先である第2記憶部41における、フレームを書込む場所の先頭アドレスを示す。データ長は、フレームのデータ長を示す。なお、送信指示部30は、転送先の開始アドレスを、フレームIDとして用いてもよい。
図3に戻り説明を続ける。送信装置20の転送部40は、送信対象のフレームを第2記憶部41へ転送する。転送部40は、ホストプロセッサ16の送信指示部30から転送指示を受付けると、転送指示によって示されるフレームを、ホストプロセッサ16の第1記憶部31から送信装置20の第2記憶部41へ転送する。
詳細には、転送部40は、転送指示に示されるデスクリプタ33Aの番号に対応するデスクリプタ33Aを、第3記憶部33から読取る。そして、転送部40は、読取ったデスクリプタ33Aに含まれる転送元の開始アドレスから、該デスクリプタ33Aに含まれるデータ長のデータを、第1記憶部31から読取る。この処理により、転送部40は、読取ったデスクリプタ33Aに含まれるフレームIDによって識別されるフレームを、第1記憶部31における転送元の開始アドレスからデータ長分読取る。そして、転送部40は、読取ったフレームを、第2記憶部41における、読取ったデスクリプタ33Aに含まれる転送先の開始アドレスによって示される領域に書込む。これらの処理により、転送部40は、転送指示によって示される送信対象のフレームを、第1記憶部31から第2記憶部41のフレーム記憶領域41Aへ転送する。
図5Aは、第2記憶部41のフレーム記憶領域41Aのデータ構造の一例を示す模式図である。
転送部40は、第1記憶部31から読取ったフレームを、第2記憶部41における、読取ったデスクリプタ33Aに含まれる転送先の開始アドレスによって示される領域に書込む。この処理により、第2記憶部41のフレーム記憶領域41Aに、送信対象のフレームが書込まれる。
転送部40は、第2記憶部41のフレーム記憶領域41Aへのフレームの書込みが完了すると、付随情報記憶領域41Bへ付随情報を書込む。
図5Bは、第2記憶部41の付随情報記憶領域41Bのデータ構造の一例を示す模式図である。
付随情報記憶領域41Bは、第2記憶部41における、付随情報を記憶するための記憶領域である。付随情報は、フレームIDと、データ開始位置と、データ長と、有効フラグと、を含み、フレームIDに対応したデータ開始位置、データ長、有効フラグを管理する。転送部40は、読取ったデスクリプタ33Aに含まれる、フレームID、転送先の開始アドレス、およびデータ長を、各々、付随情報におけるフレームID、データ開始位置、およびデータ長として付随情報記憶領域41Bに書込む。
有効フラグは、対応するフレームIDによって識別されるフレームが有効であるか否かを示す。図5Aには、有効フラグ“1”は有効を示し、有効フラグ“0”は無効を示す場合を一例として示した。なお、初期状態では、有効フラグは、無効“0”であるものとする。転送部40は、付随情報記憶領域41Bの初期化時に、有効フラグを全て無効“0”にすればよい。なお、付随情報記憶領域41Bに有効フラグを含まない構成とし、対応するデータ長が“0”より大きい場合には有効とみなし、データ長が“0”である場合には無効とみなしてもよい。
図3に戻り説明を続ける。上記フレーム記憶領域41Aへのフレームの書込み、および、付随情報記憶領域41Bへの付随情報の書込みにより、転送部40は、送信対象のフレームの、ホストプロセッサ16の第1記憶部31から送信装置20の第2記憶部41への転送を完了する。
転送部40は、第1記憶部31から第2記憶部41へのフレームの転送を完了すると、転送完了をホストプロセッサ16の送信指示部30へ通知する。転送完了の通知は、転送を完了したフレームのデスクリプタ33Aの番号を通知することで行われる。
送信指示部30は、転送部40へフレームの転送指示を通知した後に、該転送指示によって示される送信装置20へ転送したフレームの、送信スケジュール処理を実行する。すなわち、本実施の形態では、送信指示部30は、受信装置12へ送信する対象のフレームを第1記憶部31から送信装置20の第2記憶部41へ転送指示した後に、該フレームの送信スケジュール処理を実行する。送信スケジュール処理は、フレームの、受信装置12への送信スケジュールを設定する処理である。
送信指示部30は、アプリケーションから受付けたフレーム送信指示に応じて、転送部40へ通知した転送指示によって示される、送信対象のフレームの優先度と、該フレームのデータ長と、該フレームに付与したフレームIDと、を送信スケジュール指示部32へ通知する。フレームの優先度は、アプリケーションから受付けたフレーム送信指示に含まれる優先度である。
送信スケジュール指示部32は、送信指示部30から受付けた、フレームの優先度、データ長、およびフレームIDを用いて送信スケジュール情報を生成し、送信装置20へ通知する。
詳細には、送信スケジュール指示部32は、時刻を管理する第1管理部34から現在時刻を取得する。そして、送信スケジュール指示部32は、フレームの優先度、データ長、およびフレームIDと、現在時刻と、を用いて、送信スケジュール情報を生成する。
送信スケジュール情報は、送信スケジュールIDと、フレームIDと、送信時刻と、を含む。なお、送信スケジュール情報は、フレームIDと送信時刻とを少なくとも含む情報であればよい。
送信スケジュールIDは、送信スケジュール情報を一意に識別するための識別子である。送信スケジュール指示部32は、送信スケジュール情報ごとに、一意に識別可能な識別子を送信スケジュールIDとして割当てればよい。なお、送信スケジュール指示部32は、同時期に、同じIDが異なる送信スケジュール情報に割当てられる事の無いように、送信スケジュールIDの割当てを行えばよい。
送信時刻は、送信パラメータの一例である。送信パラメータは、フレームの送信タイミングに関する情報である。送信パラメータは、送信時刻、送信順、などによって表される。本実施の形態では、送信パラメータは、送信時刻である場合を一例として説明する。送信時刻は、詳細には、送信装置20がフレームの送信を開始する時刻である。
送信スケジュール指示部32は、フレームの優先度、データ長、およびフレームIDと、現在時刻と、を用いて、該フレームIDによって識別されるフレームの送信時刻を算出する。
例えば、送信スケジュール指示部32は、フレーム送信の制御情報にゲート制御リストを用いることで、IEEE 802.1Qbvで定義される送信制御であるタイム・アウェア・シェーピングを行うこともできる。また、送信スケジュール指示部32は、制御情報としてクレジット値を用いることにより、IEEE 802.1Qavで定義されるクレジットベースのシェーピングを行うこともできる。なお、送信スケジュール指示部32は、IEEE 802.1ASで定義される時間をそのまま送信時刻として用いてもよい。また、送信スケジュール指示部32は、循環を考慮した上で、任意の下位ビットを用いて送信時刻を算出してもよい。
なお、送信スケジュール指示部32は、フレームIDごとに、フレームIDによって識別されるフレームの送信時刻を算出すればよい。すなわち、送信スケジュール指示部32は、送信スケジュール情報ごとに、送信時刻を算出すればよい。
そして、送信スケジュール指示部32は、1または複数の送信スケジュール情報を含む送信情報を、送信装置20の受付部42へ通知する。すなわち、送信情報は、フレームIDと送信時刻との組を含む送信スケジュール情報を、1つ含んだものであってもよいし、複数含んだものであってもよい。本実施の形態では、送信情報が、送信スケジュール情報を1つ含む構成である場合を、一例として説明する。また、本実施の形態では、送信スケジュール情報は、送信スケジュールIDと、フレームIDと、送信時刻と、を含む形態を一例として説明する。なお、送信情報は、更に、該送信情報を識別するための送信IDを含んでいてもよい。
送信装置20の受付部42は、ホストプロセッサ16の送信スケジュール指示部32から、送信スケジュール情報を受付ける。すなわち、受付部42は、送信情報を送信スケジュール指示部32から受付けることで、送信情報に含まれる送信スケジュール情報を受付ける。
本実施の形態では、受付部42は、送信スケジュールIDと、フレームIDと、送信時刻と、の各々に対応したレジスタインタフェースを、送信スケジュール指示部32に対して提供する。このため、送信スケジュール指示部32は、受付部42の各々のレジスタに対して、送信スケジュールID、フレームID、および送信時刻を、この順に順次書込むことで、送信スケジュール情報を受付部42に設定する。なお、受付部42と送信スケジュール指示部32とのインタフェースは、上記形態に限定されない。例えば、受付部42は、転送部40と同様に、メモリに送信スケジュール情報を一旦記憶しておき、DMA転送などにより、送信スケジュール情報を送信スケジュール指示部32から取得してもよい。
受付部42は、送信スケジュール指示部32から受付けた送信スケジュール情報を、第4記憶部43のスケジュールDB43Aに登録する。
図6は、スケジュールDB43Aのデータ構成の一例を示す模式図である。スケジュールDB43Aは、送信スケジュール情報を格納するデータベースである。なお、スケジュールDB43Aのデータ形式は、データベースに限定されない。
受付部42は、送信スケジュール指示部32から送信スケジュール情報を受付けるごとに、受付けた送信スケジュール情報を第4記憶部43のスケジュールDB43Aに順次登録する。このため、スケジュールDB43Aには、例えば、図6に示すように、送信スケジュール情報が順次登録される。
図3に戻り説明を続ける。送信判定部44は、送信スケジュール情報に含まれる送信時刻に応じて、受信装置12へ送信するフレームを判定する。
詳細には、送信判定部44は、第4記憶部43のスケジュールDB43Aから、送信スケジュール情報を読出す。なお、送信判定部44によるスケジュールDB43Aの読出しは、受付部42によるスケジュールDB43Aへの書込みと重複しないように、適切に排他処理がなされるものとする。
送信判定部44は、現在時刻と一致する送信時刻を含む送信スケジュール情報を、スケジュールDB43Aから読出す。なお、送信判定部44は、現在時刻を、第2管理部45から取得すればよい。第2管理部45は、ホストプロセッサ16の第1管理部34と同期して時刻を管理する。このため、送信判定部44は、ホストプロセッサ16と同じ時刻をカウントするように管理された第2管理部45から現在時刻を取得する。なお、送信時刻は送信処理部46の処理にかかる時間を考慮し、一定の時間を引いた値としてもよい。
なお、送信判定部44は、送信時刻および現在時刻の各々の分解能によって、現在時刻の一定の範囲内に含まれる送信時刻の有無を判定することで、現在時刻と一致する送信時刻を判定すればよい。現在時刻と一致する送信時刻を含む送信スケジュール情報がスケジュールDB43Aに含まれていたと想定する。この場合、送信判定部44は、該送信スケジュール情報に含まれるフレームIDに対応する有効フラグを、付随情報記憶領域41Bから読出す。そして、送信判定部44は、読出した有効フラグが有効“1”を示す場合、該フレームを第2記憶部41のフレーム記憶領域41Aから読出し、該フレームの送信を送信処理部46へ指示する。
送信処理部46は、送信スケジュール情報に含まれる送信時刻に応じて、フレームIDによって識別されるフレームを受信装置12へ送信する。送信処理部46は、MAC20EやPHY20Fを用いて(図2参照)、フレームを、ネットワークNを介して受信装置12へ送信する。すなわち、送信処理部46は、送信判定部44によって送信すると判定されたフレームを、受信装置12へ送信する。この処理により、送信処理部46は、送信スケジュール情報に含まれる送信時刻に、該送信スケジュール情報に含まれるフレームIDによって識別されるフレームを、受信装置12へ送信する。
送信処理部46によるフレームの送信が完了すると、送信判定部44は、付随情報記憶領域41Bにおける送信したフレームのフレームIDに対応する有効フラグを、無効“0”に設定する。また、送信判定部44は、送信結果情報を通知部47へ通知する。通知部47は、送信判定部44から受付けた送信結果情報を、ホストプロセッサ16の送信スケジュール指示部32へ通知する。
送信結果は、送信成功または送信失敗を示す送信結果と、送信スケジュールIDと、を含む。送信成功は、送信スケジュール情報に含まれる送信時間までに受信装置12への送信が完了したことを示す。送信失敗は、スケジュール情報に含まれる送信時間までに受信装置12への送信が完了しなかったことを示す。
そして、送信判定部44は、送信成功したフレームのフレームIDと送信時刻を含む送信スケジュール情報を、スケジュールDB43Aから削除する。
ホストプロセッサ16の送信スケジュール指示部32は、送信結果情報を受付けると、後処理を実行する。詳細には、送信スケジュール指示部32は、送信結果情報に含まれる送信結果が送信成功を示す場合、送信結果情報に含まれる送信スケジュールIDに対応するフレームIDを取得する。そして、送信スケジュール指示部32は、取得した送信スケジュールIDおよびフレームIDを、他の送信スケジュールID用やフレームID用に再利用可能とする。
一方、送信スケジュール指示部32は、送信結果情報に含まれる送信結果が送信失敗を示す場合、該送信結果情報に含まれる送信スケジュールIDを再利用し、送信時刻を再度算出し、再度算出した送信時刻と該送信スケジュールIDと、該送信スケジュールIDに対応付けられていたフレームIDとを含む送信スケジュール情報を、送信装置20の受付部42へ通知する。このため、送信スケジュール指示部32は、送信失敗したフレームに対する送信時刻を新たに算出し、該フレームに関する送信スケジュール情報を、再度、受付部42へ通知することができる。なお、送信スケジュールIDは上述のように再利用してもよいし、送信に失敗した場合には送信スケジュール情報を削除し、その送信スケジュールIDを再利用可能とし、新たに送信スケジュールIDを使って通知を行ってもよい。
なお、送信スケジュール指示部32が、通知部47から送信成功を示す送信結果を含む送信結果情報を受付けたときに、送信成功したフレームのフレームIDと送信時刻とを含む送信スケジュール情報を、スケジュールDB43Aから削除してもよい。この場合、送信スケジュール指示部32は、削除対象の送信スケジュールIDを受付部42へ通知することで、受付部42が該送信スケジュールIDによって識別される送信スケジュール情報をスケジュールDB43Aから削除すればよい。
次に、本実施の形態のホストプロセッサ16および送信装置20の各機能部で実行する情報処理の手順の一例を説明する。なお、送信指示部30、送信スケジュール指示部32、転送部40、受付部42、第4記憶部43、送信判定部44、および送信処理部46は、以下の各機能部で実行する処理を、並列に実行する。このため、これらの機能部が実行する処理の一部が、互いに重複する期間に並列して実行されることとなる。
図7は、送信指示部30が実行するフレーム送信処理の手順の一例を示すフローチャートである。
送信指示部30は、アプリケーションからフレーム送信指示を受付けると、転送指示を送信装置20の転送部40へ通知する(ステップS100)。送信指示部30は、第3記憶部33にデスクリプタ33Aを書込み、送信装置20の転送部40へ該デスクリプタの番号を通知することで、転送指示を行う。
次に、送信指示部30は、送信スケジュール処理を実行する(ステップS102)。送信スケジュール処理の詳細は後述する。そして、本ルーチンを終了する。
次に、転送部40が実行する転送処理の手順の一例を説明する。図8は、転送部40が実行する転送処理の手順の一例を示す、フローチャートである。
転送部40は、ホストプロセッサ16の送信指示部30から転送指示を受付けると、転送指示に示される番号に対応するデスクリプタ33Aを、第3記憶部33から読取る(ステップS200)。そして、転送部40は、第1記憶部31における、読取ったデスクリプタ33Aに含まれる転送元の開始アドレスから、該デスクリプタ33Aに含まれるデータ長分のデータを読取ることで、送信対象のフレームを第1記憶部31から読取る。
そして、転送部40は、読取ったフレームを、第2記憶部41における、ステップS200で読取ったデスクリプタ33Aに含まれる転送先の開始アドレスによって示される領域に書込む(ステップS202)。
次に、転送部40は、付随情報記憶領域41Bへ付随情報を書込む(ステップS204)。このとき、転送部40は、ステップS202で第2記憶部41へ転送したフレームのフレームIDに対応する有効フラグを有効“1”に設定する(ステップS206)。
ステップS200~ステップS206の処理により、転送部40は、送信対象のフレームを、第1記憶部31から第2記憶部41のフレーム記憶領域41Aへ転送する。
次に、転送部40は、転送完了をホストプロセッサ16の送信指示部30へ通知する(ステップS208)。そして、本ルーチンを終了する。
次に、送信スケジュール指示部32が実行する送信スケジュール処理(図7のステップS102)を詳細に説明する。
図9は、送信スケジュール指示部32が実行する送信スケジュール処理の手順の一例を示すフローチャートである。
まず、送信スケジュール指示部32は、送信指示部30から受付けた、フレームの優先度、データ長、およびフレームIDと、第1管理部34から受付けた現在時刻と、を用いて、該フレームの送信時刻を算出する(ステップS300)。
次に、送信スケジュール指示部32は、送信スケジュールIDを付与し、該送信スケジュールIDと、フレームIDと、ステップS300で算出した送信時刻を含む送信スケジュール情報を生成する(ステップS302)。
そして、送信スケジュール指示部32は、ステップS302で生成した1または複数の送信スケジュール情報を含む送信情報を、送信装置20の受付部42へ通知する(ステップS304)。そして、本ルーチンを終了する。
次に、受付部42が実行する送信スケジュール設定処理の手順の一例を説明する。
図10は、受付部42が実行する送信スケジュール設定処理の手順の一例を示す、フローチャートである。
受付部42は、送信装置23から送信スケジュール情報を受付けると、受付けた送信スケジュール情報を、第4記憶部43へ書込む(ステップS400)。受付部42は、送信スケジュール情報を、第4記憶部43のスケジュールDB43Aに登録することで、第4記憶部43へ該送信スケジュールを書込む。そして、本ルーチンを終了する。
次に、送信判定部44および送信処理部46が実行する送信処理の手順の一例を説明する。
図11は、送信判定部44および送信処理部46が実行する送信処理の手順の一例を示す、フローチャートである。
まず、送信判定部44が、第4記憶部43のスケジュールDB43Aから、送信スケジュール情報を読出す(ステップS500)。そして、送信判定部44は、ステップS500で読出した送信スケジュール情報に含まれる送信時刻が、現在時刻と一致するか否かを判断する(ステップS502)。ステップS502で否定判断すると(ステップS502:No)、上記ステップS500へ戻る。ステップS502で肯定判断すると(ステップS502:Yes)、ステップS504へ進む。
ステップS504では、送信判定部44は、ステップS500~ステップS502の処理によって読出した、現在時刻が送信時刻と一致する送信スケジュール情報に含まれるフレームIDに対応する有効フラグが、有効であるか無効であるかを判断する(ステップS504)。送信判定部44は、付随情報記憶領域41Bにおける、該フレームIDに対応する有効フラグを判別することで、ステップS504の判断を行う。
有効フラグが有効であると判断すると(ステップS504:Yes)、ステップS506へ進む。ステップS506では、送信判定部44は、該フレームIDによって識別されるフレームを、第2記憶部41のフレーム記憶領域41Aから読出し、該フレームの送信を送信処理部46へ指示する(ステップS506)。
ステップS506の処理によって、送信処理部46は、該フレームを受信装置12へ送信する。すなわち、送信処理部46は、送信スケジュール情報に含まれる送信時刻に、該送信スケジュール情報に含まれるフレームIDによって識別されるフレームを、受信装置12へ送信する。
次に、送信判定部44は、ステップS506で送信を指示したフレームの受信装置12への送信が完了したと判断するまで否定判断を繰返す(ステップS508:No)。ステップS508で肯定判断すると(ステップS508:Yes)、ステップS510へ進む。
ステップS510では、送信判定部44は、付随情報記憶領域41Bにおける、ステップS508で送信したフレームのフレームIDに対応する有効フラグを、無効“0”に設定する(ステップS510)。
次に、送信判定部44は、ステップS508で送信したフレームのフレームIDと送信時刻との組からなる送信スケジュール情報を、スケジュールDB43Aから削除する(ステップS512)。このとき、送信判定部44は、該フレームIDに対応する、送信スケジュールIDに対応する送信スケジュール情報を、スケジュールDB43Aから削除する。そして、送信判定部44は、送信成功を示す送信結果を含む送信結果情報を、通知部47を介してホストプロセッサ16の送信スケジュール指示部32へ通知する(ステップS514)。そして、本ルーチンを終了する。
一方、上記ステップS504で否定判断すると(ステップS516:No)、ステップS516へ進む。ステップS516では、送信判定部44は、送信失敗を示す送信結果を含む送信結果情報を、通知部47を介してホストプロセッサ16の送信スケジュール指示部32へ通知する(ステップS516)。そして、本ルーチンを終了する。
次に、送信スケジュール指示部32が実行する後処理の手順の一例を説明する。
図12は、送信スケジュール指示部32が実行する後処理の手順の一例を示すフローチャートである。
ホストプロセッサ16の送信スケジュール指示部32は、送信装置20の通知部47から送信結果情報を受付けると、送信結果情報に含まれる送信結果が送信成功を示すか否かを判断する(ステップS600)。
送信結果が送信成功を示す場合(ステップS600:Yes)、ステップS602へ進む。ステップS602では、送信スケジュール指示部32は、送信結果情報に含まれる送信スケジュールIDに対応するフレームIDを取得する(ステップS602)。そして、送信スケジュール指示部32は、取得した送信スケジュールIDおよびフレームIDを、他の送信スケジュールID用やフレームID用に再利用可能とする(ステップS604)。そして、本ルーチンを終了する。
一方、送信スケジュール指示部32は、送信結果情報に含まれる送信結果が送信失敗を示す場合(ステップS600:No)、ステップS606へ進む。ステップS606では、送信スケジュール指示部32は、該送信結果情報に含まれる送信スケジュールIDを再利用可能とする(ステップS606)。そして、送信スケジュール指示部32は、送信失敗したフレームの送信時刻を再度算出する(ステップS608)。
そして、送信スケジュール指示部32は、再度算出した送信時刻と、該送信スケジュールIDと、該送信スケジュールIDに対応付けられていたフレームIDと、を含む送信スケジュール情報を、送信装置20の受付部42へ通知する(ステップS610)。そして、本ルーチンを終了する。
以上説明したように、本実施の形態の送信装置20は、受付部42と、送信処理部46と、を備える。受付部42は、送信対象のフレームのフレームID(フレーム識別子)と、フレームの送信タイミングに関する送信パラメータと、を含む送信スケジュール情報を受け付ける。送信処理部46は、送信スケジュール情報に含まれる送信パラメータに応じて、フレームIDによって識別されるフレームを受信装置12へ送信する。
このように、本実施の形態の送信装置20では、受付部42は、送信対象のフレームのフレームIDと、送信時刻と、を含む送信スケジュール情報を受付ける。言い換えると、受付部42は、フレームIDを含むが、フレームIDによって識別されるフレームを含まない送信スケジュール情報を受付ける。そして、送信処理部46は、送信パラメータに応じて、フレームIDによって識別されるフレームを受信装置12へ送信する。
すなわち、本実施の形態の送信装置20では、送信対象のフレームとは別に、フレームIDと送信時刻とを含む送信スケジュール情報を受付ける。このため、本実施の形態の送信装置20は、後から送信の優先度の高いフレームが発生した場合であっても、柔軟に送信順序を変更してフレームを送信することができる。すなわち、本実施の形態の送信装置20では、フレームを受信装置12へ送信する直前まで、後からフレームの送信順序を変更することが可能となる。
従って、本実施の形態では、送信順序の変更に柔軟に対応可能な送信装置20を提供することができる。
また、本実施の形態では、送信装置20の受付部42は、転送部40によって送信対象のフレームが第2記憶部41へ転送指示した後に、フレームIDと送信時刻(送信パラメータ)とを含む送信スケジュール情報を受付ける。そして、送信処理部46は、受付けた送信スケジュールに含まれる送信パラメータに応じて、フレームIDによって識別されるフレームを受信装置12へ送信する。
このため、本実施の形態の送信装置20は、送信対象のフレームを送信装置20の第2記憶部41へ転送した後であっても、該フレームの送信時間の変更に柔軟に対応することができる。従って、本実施の形態の送信装置20は、上記効果に加えて、送信順序の変更に更に柔軟に対応可能とすることができる。また、本実施の形態の送信装置20は、優先度の高いフレームを低遅延で受信装置12へ送信することができる。
(第2の実施の形態)
本実施の形態では、送信スケジュール情報が、送信スケジュール情報の有効条件を更に含む形態を一例として説明する。
図13は、本実施の形態のホストプロセッサ17および送信装置21の機能的構成の一例を示す模式図である。なお、第1の実施の形態のホストプロセッサ16および送信装置20と同じ機能については、同じ番号を付与し、詳細な説明を省略する。
ホストプロセッサ17は、送信指示部30と、第1記憶部31と、送信スケジュール指示部52と、第3記憶部33と、第1管理部34と、を備える。ホストプロセッサ17は、送信スケジュール指示部32に代えて送信スケジュール指示部52を備える点以外は、第1の実施の形態のホストプロセッサ16と同様である。
送信装置21は、転送部40と、第2記憶部41と、第2管理部45と、受付部62と、第4記憶部63と、送信判定部64と、送信処理部66と、を備える。第2記憶部41、第2記憶部41、および第2管理部45は、第1の実施の形態と同様である。
ホストプロセッサ17の送信スケジュール指示部52は、第1の実施の形態の送信スケジュール指示部32と同様に、送信指示部30から受付けた、データ長、およびフレームIDを用いて、送信スケジュール情報を送信装置20へ通知する。
但し、本実施の形態の送信スケジュール情報は、送信スケジュール情報の有効条件を更に含む。
詳細には、本実施の形態の送信スケジュール情報は、送信スケジュールIDと、フレームIDと、送信時刻と有効条件と、を含む。
有効条件は、送信情報が有効か否かを判別するための条件である。有効条件は、例えば、送信情報を送信装置20の受付部42で受付ける受付時刻の期限を示す。この場合、有効条件は、受付時刻の期限を示す時刻によって表される。
このため、この場合、受付部42が有効条件によって示される受付時刻までに対応する送信スケジュールを受付けた場合には、該送信スケジュールは有効条件を満たすものとなる。また、受付部42が有効条件によって示される受付時刻を過ぎて対応する送信スケジュールを受付けた場合、該送信スケジュールは有効条件を満たさないものとなる。
なお、有効条件の種類は、予め定めればよく、受付時刻の期限に限定されない。例えば、有効条件は、送信スケジュール情報が第4記憶部43のスケジュールDB43Aに書込まれる書込時刻の期限であってもよい。
送信スケジュール指示部52は、第1の実施の形態の送信スケジュール指示部32と同様にして、データ長、およびフレームIDと、現在時刻と、を用いて、該フレームIDによって識別されるフレームの送信時刻を算出する。
また、送信スケジュール指示部52は、予め定めた規則を用いて、フレームの有効条件を生成すればよい。
例えば、送信スケジュール指示部52は、算出した送信時刻より所定時間前の時刻を、有効条件として生成する。この所定時間は、例えば、送信装置21が送信スケジュール情報を受付けてからネットワークNを介して受信装置12へ送信するまでに要する最低時間以上の時間を予め定めればよい。
そして、送信スケジュール指示部52は、送信情報ごとに、送信情報に含まれる送信スケジュール情報の有効条件を生成する。また、送信スケジュール指示部52は、第1の実施の形態と同様にして送信スケジュールIDをフレームIDごとに割当てる。これらの処理により、送信スケジュール指示部52は、送信スケジュールIDと、フレームIDと、送信時刻と、を含む送信スケジュール情報を生成する。なお、1つの送信スケジュール情報には、1つの送信スケジュールIDと、1つのフレームIDと、1つの送信時刻と、が含まれる。また、1つの送信情報には1つまたは複数の送信スケジューリング情報と、1つの有効条件と、1つの受付時刻と、が含まれる。なお、有効条件と、受付時刻を送信スケジュール情報毎できるようにしてもよい。
そして、送信スケジュール指示部52は、1または複数の送信スケジュール情報を含む送信情報を、送信装置21の受付部62へ通知する。第1の実施の形態と同様に、送信情報は、更に、該送信情報を識別するための送信IDを含んでいてもよい。この場合、送信情報は、送信IDと、1または複数の送信スケジュール情報と、を含む。なお、送信情報は、送信IDを含まない形態であってもよい。本実施の形態では、送信情報が、1つの送信IDと、複数の送信スケジュール情報と、を含む構成である場合を、一例として説明する。
送信装置21の受付部62は、ホストプロセッサ16の送信スケジュール指示部52から、送信スケジュール情報を受付ける。すなわち、受付部62は、送信情報を送信スケジュール指示部52から受付けることで、送信情報に含まれる送信スケジュール情報を受付ける。
本実施の形態では、受付部62は、送信IDと、送信スケジュールIDと、フレームIDと、送信時刻と、有効条件と、の各々に対応したレジスタインタフェースを、送信スケジュール指示部52に対して提供する。このため、送信スケジュール指示部52は、送信IDを書き込んだ後、受付部62の各々のレジスタに対して、送信スケジュール情報ごとに、送信スケジュールID、フレームID、送信時刻、この順に順次書込むことで、複数の送信スケジュール情報の各々を受付部62に設定し、最後に有効条件を書くことで送信情報を登録する。有効条件が書き込まれるとその送信情報の登録を終えることを示す。
なお、受付部62と送信スケジュール指示部52とのインタフェースは、上記形態に限定されない。例えば、受付部62は、転送部40と同様に、メモリに送信スケジュール情報を一旦記憶しておき、DMA転送などにより、送信スケジュール情報を送信スケジュール指示部52から取得してもよい。
受付部62は、送信スケジュール指示部52から受付けた送信スケジュール情報を、第4記憶部63のスケジュールDB63Aに登録する。
図14は、スケジュールDB63Aのデータ構成の一例を示す模式図である。スケジュールDB63Aは、送信スケジュール情報を格納するデータベースである。なお、スケジュールDB63Aのデータ形式は、データベースに限定されない。
図14には、スケジュールDB63Aとして、送信情報に含まれる送信IDと、該送信情報に含まれる1または複数の送信スケジュール情報と、送信情報の有効条件と、送信情報の受付時刻と、を対応づけたデータベースを一例として示した。
受付部42は、送信スケジュール指示部32から送信情報を受付けるごとに、受付けた送信情報に含まれる送信IDと、該送信情報に含まれる送信スケジュール情報と、を対応付けてスケジュールDB63Aに順次登録する。このため、スケジュールDB63Aには、例えば、図14に示すように、送信スケジュール情報順次登録される。そして、すべての送信情報の受付が完了した時間を受付時刻として登録する。
図13に戻り説明を続ける。選択部67は、受付部62で受付けた複数の送信スケジュールについて、送信時刻ごとに、1つの送信スケジュール情報を選択する。
詳細には、選択部67は、受付部62で受付けた複数の送信スケジュール情報の内、有効条件を満たす送信スケジュール情報を選択する。すなわち、選択部67は、含まれる送信時刻が同じ1または複数の送信スケジュール情報ごとに、有効条件を満たす送信スケジュール情報を選択する。
例えば、有効条件が受付時刻の期限であると想定する。この場合、選択部67は、スケジュールDB63Aに登録されている複数の送信スケジュール情報の内、受付時刻が有効条件によって示される時刻以前を示す送信スケジュール情報を選択すればよい。
なお、有効条件を満たす複数の送信スケジュール情報に、同じ送信時刻を含む複数の送信スケジュール情報が含まれる場合がある。この場合、選択部67は、有効条件を満たし且つ含まれる送信時刻が同じ複数の送信スケジュール情報の内、受付部62による受付時刻が最新の送信スケジュール情報を選択すればよい。
なお、選択部67が選択した送信スケジュール情報に含まれるフレームIDによって識別されるフレームの第2記憶部41への転送が、該選択時に未完了である場合がある。選択部67は、付随情報記憶領域41Bにおける、選択した送信スケジュール情報に含まれるフレームIDに対応する有効フラグが無効“0”を示すか否かを判別することで、転送が未完了であるか否かを判断すればよい。なお、選択部67は、選択した送信スケジュール情報に含まれるフレームIDが付随情報記憶領域41Bに登録されていない場合にも、転送が未完了であると判断してもよい。
この場合、選択部67は、選択した送信スケジュール情報に代えて、該送信スケジュール情報の次に受付部62が受付けた他の送信スケジュール情報を選択する。詳細には、選択部67は、有効条件を満たし且つ選択した送信スケジュール情報と同じ送信時刻を含む送信スケジュール情報の内、選択した送信スケジュールの次の受付時刻を示す、他の送信スケジュール情報を選択する。
このように、選択部67は、有効条件に基づいて、次に送信する対象のフレームのフレームIDを含む送信スケジュール情報を選択する。
図15は、選択部67による選択の具体例を示す説明図である。
例えば、受付部62が、5つの送信情報(送信情報A~送信情報Eとする)を受付けたと想定する。これらの送信情報は、図14に示す、送信ID“A”~“E”の各々の送信情報に相当する。なお、図14および図15における時刻は、値が大きいほどより未来の時刻であり、値が小さいほどより過去の時刻を示すものとして説明する。
これらの送信情報の受付時刻は、送信情報Aの受付時刻“T9”、送信情報Bの受付時刻“T10”、送信情報Cおよび送信情報Dの受付時刻“T11”、送信情報Eの受付時刻“T12”であったと想定する。
そして、図14および図15に示すように、送信情報Aには、複数の送信スケジュール情報(送信スケジュール情報S1~送信スケジュール情報S3)が含まれる。送信情報Aに含まれるこれらの送信スケジュール情報は、何れも、受付時刻“T9”、有効条件“T10”であったと想定する。有効条件“T10”は、受付部62による受付期限が時刻“T10”であることを示す。
送信スケジュール情報S1~送信スケジュール情報S3には、それぞれ、送信時刻“T12”およびフレームID“D1”、送信時刻“T13”およびフレームID“D2”、並びに送信時刻“T14”およびフレームID“D3”が含まれている。
送信情報Bには、送信スケジュール情報S4が含まれる。送信スケジュール情報S4は、受付時刻“T10”、有効条件“T14”であったと想定する。有効条件“T14”は、受付部62による受付期限が時刻“T14”であることを示す。
送信スケジュール情報S4には、送信時刻“T15”およびフレームID“D4”が含まれている。
送信情報Cには、複数の送信スケジュール情報(送信スケジュール情報S5~送信スケジュール情報S7)が含まれる。送信情報Cに含まれるこれらの送信スケジュール情報は、何れも、受付時刻“T11”、有効条件“T12”であったと想定する。有効条件“T12”は、受付部62による受付期限が時刻“T12”であることを示す。
送信スケジュール情報S5~送信スケジュール情報S7には、それぞれ、送信時刻“T13”およびフレームID“D4”、送信時刻“T14”およびフレームID“D2”、並びに送信時刻“T15”およびフレームID“D3”が含まれている。
送信情報Dには、送信スケジュール情報S8が含まれる。送信スケジュール情報S8は、受付時刻“T11”、有効条件“T15”であったと想定する。有効条件“T15”は、受付部62による受付期限が時刻“T15”であることを示す。
送信スケジュール情報S8には、送信時刻“T16”およびフレームID“D5”が含まれている。
また、送信情報Eには、複数の送信スケジュール情報(送信スケジュール情報S9~送信スケジュール情報S12)が含まれる。送信情報Eに含まれるこれらの送信スケジュール情報は、何れも、受付時刻“T12”、有効条件“T11”であったと想定する。有効条件“T11”は、受付部62による受付期限が時刻“T11”であることを示す。
送信スケジュール情報S9~送信スケジュール情報S12には、それぞれ、送信時刻“T13”およびフレームID“D5”、送信時刻“T14”およびフレームID“D4”、送信時刻“T15”およびフレームID“D2”、並びに送信時刻“T16”およびフレームID“D3”が含まれている。
この場合、受付部62が送信情報A~送信情報Eを、各々の上記受付時間に、ホストプロセッサ17の送信スケジュール指示部52から受付けたと想定する(図15中、受付状況P参照)。すると、スケジュールDB63Aには、これらの送信情報が順次登録される(図14、および図15中のスケジュールDB63Aの状態Q参照)。
上述したように、選択部67は、受付部62で受付けた複数の送信スケジュール情報の内、有効条件を満たす送信スケジュール情報を選択する。
送信スケジュール情報S1~送信スケジュール情報S12の内、受付時刻“T12”が有効条件“T11”より後の時刻を示す、送信情報Eに含まれる送信スケジュール情報S9~送信スケジュール情報S12は、有効条件を満たさない。このため、選択部67は、送信情報Eに含まれる、送信スケジュール情報S9~送信スケジュール情報S12は、選択対象外とする。
そして、選択部67は、送信スケジュール情報S1~送信スケジュール情報S12の内、受付時刻が有効条件以前の時刻を示す、送信情報A~送信情報Dに含まれる送信スケジュール情報S1~送信スケジュール情報S8を、選択対象とする。
そして、選択部67は、選択対象とした送信スケジュール情報S1~送信スケジュール情報S8について、含まれる送信時刻ごとに、受付部62による受付時刻が最新の送信スケジュール情報を選択する。
このため、選択部67は、送信時刻“T12”に対応する送信スケジュール情報として、フレームID“D1”を含む送信スケジュール情報S1を選択する。
また、選択部67は、送信時刻“T13”に対応する送信スケジュール情報として、有効条件を満たす送信スケジュール情報S2および送信スケジュール情報S5の内、受付時刻が最新の(現在時刻に最も近い)フレームのフレームID(例えば、フレームID“D4”)を含む送信スケジュール情報S5を選択する。なお、受付時刻が最新、とは、ホストプロセッサ16が最後に書込んだものであることを示す。
また、選択部67は、送信時刻“T14”に対応する送信スケジュール情報として、有効条件を満たす送信スケジュール情報S3および送信スケジュール情報S6の内、優先度の最も高いフレームのフレームID“D2”を含む送信スケジュール情報S6を選択する。
また、選択部67は、送信時刻“T15”に対応する送信スケジュール情報として、有効条件を満たす送信スケジュール情報S4および送信スケジュール情報S7の内、受付時刻が最新のフレームのフレームID“D3”を含む送信スケジュール情報S7を選択する。
また、選択部67は、送信時刻“T16”に対応する送信スケジュール情報として、有効条件を満たす送信スケジュール情報S8を選択する(フレームID“D5”を含む)。
図13に戻り説明を続ける。このように、選択部67は、各送信時刻に送信する送信対象の送信スケジュール情報を、有効条件、および受付時刻に基づいて選択する。
送信判定部64は、現在時刻と一致する送信時刻に送信する対象として選択部67によって選択された、送信スケジュール情報を、選択部67から受付ける。そして、送信判定部64は、該送信スケジュール情報に含まれるフレームIDによって識別されるフレームを第2記憶部41のフレーム記憶領域41Aから読出し、該フレームの送信を送信処理部66へ指示する。
送信処理部66は、選択部67によって選択された送信スケジュール情報に含まれるフレームIDによって識別されるフレームを、受信装置12へ送信する。すなわち、送信処理部66は、送信判定部64から受付けたフレームを、ネットワークNを介して送信する。
そして、送信判定部64は、第1の実施の形態の送信判定部44と同様に、送信されたフレームのフレームIDに対応する有効フラグを、無効“0”に設定する。また、送信判定部44と同様に、送信判定部64は、送信結果情報を通知部47へ通知する。
次に、本実施の形態の選択部67、送信判定部64、および送信処理部66が実行する情報処理の手順の一例を説明する。
図16は、選択部67、送信判定部64および送信処理部66が実行する送信処理の手順の一例を示す、フローチャートである。
まず、選択部67が、第4記憶部63のスケジュールDB63Aから、送信スケジュール情報を読出す(ステップS700)。そして、選択部67は、ステップS700で読出した送信スケジュール情報に含まれる送信時刻が、現在時刻と一致するか否かを判断する(ステップS702)。ステップS702で否定判断すると(ステップS702:No)、上記ステップS700へ戻る。ステップS702で肯定判断すると(ステップS702:Yes)、ステップS704へ進む。
ステップS704では、選択部67は、ステップS700~ステップS702の処理によって読出した、現在時刻が送信時刻と一致する送信スケジュール情報の内、有効条件を満たし、且つ受付時刻が最新の送信スケジュール情報を選択する(ステップS704)。
次に、選択部67は、ステップS704で選択した送信スケジュール情報に含まれるフレームIDに対応する有効フラグが、有効であるか無効であるかを判断する(ステップS706)。
有効フラグが有効であると判断すると(ステップS706:Yes)、ステップS708へ進む。ステップS708では、送信判定部64は、該フレームIDによって識別されるフレームを、第2記憶部41のフレーム記憶領域41Aから読出し、該フレームの送信を送信処理部66へ指示する(ステップS708)。ステップS708の処理によって、送信処理部66は、該フレームを受信装置12へ送信する。
次に、送信判定部64は、ステップS708で送信を指示したフレームの受信装置12への送信が完了したと判断するまで否定判断を繰返す(ステップS710:No)。ステップS710で肯定判断すると(ステップS710:Yes)、ステップS712へ進む。
ステップS712では、送信判定部64は、付随情報記憶領域41Bにおける、ステップS710で送信したフレームのフレームIDに対応する有効フラグを、無効“0”に設定する(ステップS712)。そして、送信判定部64は、送信成功を示す送信結果を含む送信結果情報を、通知部47を介してホストプロセッサ17の送信スケジュール指示部52へ通知する(ステップS714)。
次に、送信判定部64は、ステップS710で送信したフレームのフレームIDと送信時刻との組からなる送信スケジュール情報を、スケジュールDB63Aから削除する(ステップS716)。なお、送信情報に含まれる送信スケジューリング情報の送信がすべて終わったら送信情報も削除する。そして、本ルーチンを終了する。
なお、送信スケジュール指示部52が、通知部47から送信成功を示す送信結果を含む送信結果情報を受付けたときに、送信成功したフレームのフレームIDと送信時刻とを含む送信スケジュール情報を、スケジュールDB63Aから削除してもよい。この場合、送信スケジュール指示部52は、削除対象の送信スケジュールIDを受付部62へ通知することで、受付部62が該送信スケジュールIDによって識別される送信スケジュール情報をスケジュールDB63Aから削除すればよい。また、送信情報に含まれる送信スケジューリング情報の送信がすべて終わったら、送信スケジュール指示部52は、削除対象の送信IDを受付部62へ通知することで、受付部62が該送信IDによって識別される送信情報をスケジュールDB63Aから削除すればよい。
一方、上記ステップS706で否定判断すると(ステップS706:No)、ステップS718へ進む。ステップS718では、選択部67は、他に有効条件を満たす送信スケジュール情報が有るか否かを判断する(ステップS718)。ステップS718で肯定判断すると(ステップS718:Yes)、上記ステップS704へ戻る。一方、ステップS718で否定判断すると(ステップS718:No)、ステップS720へ進む。
ステップS720では、送信判定部64は、送信失敗を示す送信結果を含む送信結果情報を、通知部47を介してホストプロセッサ17の送信スケジュール指示部52へ通知する(ステップS720)。そして、本ルーチンを終了する。
以上説明したように、本実施の形態の送信装置21は、受付部62で受付けた1または複数の送信スケジュール情報の内、有効条件を満たす送信スケジュール情報を選択する。そして、送信処理部66は、選択された送信スケジュール情報に含まれる送信パラメータ(送信時刻)に応じて、該送信スケジュール情報に含まれるフレームID(フレーム識別子)によって識別されるフレームを受信装置12へ送信する。
このように、本実施の形態の送信装置21は、有効条件に応じて選択された送信スケジュール情報に含まれるフレームIDによって識別されるフレームを、受信装置12へ送信する。すなわち、本実施の形態の送信装置21は、有効条件を含む送信スケジュール情報を用いる。このため、本実施の形態の送信装置21は、上記実施の形態の効果に加えて、送信不可能なフレームの発生による遅延を抑制することができ、低遅延なスケジューリングを実現することができる。
このため、本実施の形態の送信装置21は、一度送信時刻が設定された後に優先度の高いフレームが発生した場合であっても、優先度の高いフレームを低遅延で優先的に受信装置12へ送信することが可能となる。また、送信情報が有効条件を含むため、有効条件を満たさないフレームによる送信遅延を抑制することができ、優先度の高いフレームを低遅延で受信装置12へ送信することが可能となる。また、本実施の形態の送信装置21は、優先度の高いフレームを優先して送信することが出来なかった場合には、他の送信スケジュール情報に含まれるフレームIDによって識別されるフレームを送信することで、最初に指示されたフレームを送信できるため、柔軟にフレームを送信することができる。
(変形例1)
なお、上記実施の形態では、送信スケジュール指示部32および送信スケジュール指示部52は、フレーム送信指示を受付けるごとに、送信装置20の受付部42または送信装置21の受付部62へ、送信スケジュール情報を通知する形態を一例として説明した。
しかし、送信スケジュール指示部32および送信スケジュール指示部52は、送信スケジュール情報の変更が必要となった場合のみ、受付部42または受付部62へ、送信スケジュール情報を通知してもよい。
図17は、本変形例のホストプロセッサ19および送信装置23の機能的構成の一例を示す模式図である。なお、第2の実施の形態のホストプロセッサ17および送信装置21と同じ機能については、同じ番号を付与し、詳細な説明を省略する。
ホストプロセッサ19は、送信指示部80と、第1記憶部31と、送信スケジュール指示部82と、第3記憶部33と、第1管理部34と、を備える。ホストプロセッサ19は、送信指示部30および送信スケジュール指示部52に代えて、送信指示部80および送信スケジュール指示部82を備える点以外は、第2の実施の形態のホストプロセッサ17と同様である。
送信装置23は、転送部70と、第2記憶部41と、第2管理部45と、受付部62と、第4記憶部63と、送信判定部64と、送信処理部66と、を備える。送信装置23は、転送部40に代えて転送部70を備える点以外は、第2の実施の形態の送信装置21と同様である。
ホストプロセッサ19の送信指示部80は、送信指示部30とは異なり、アプリケーションからフレーム送信指示を受付けたときに、転送指示を転送部40へ通知しない。なお、送信指示部80は、送信指示部30と同様に、アプリケーションからフレーム送信指示を受付けたときに、フレーム送信指示によって示される、送信対象のフレームの優先度と、該フレームのデータ長と、該フレームに付与したフレームIDと、を送信スケジュール指示部82へ通知する。
ホストプロセッサ19の送信スケジュール指示部82は、送信指示部80から該通知を受付けると、第2の実施の形態の送信スケジュール指示部52と同様にして、フレームIDごとに送信時刻を算出し、送信スケジュール情報を生成する。
そして、送信スケジュール指示部82は、算出した送信時刻を更に含むデスクリプタ33Aを第3記憶部33へ書込み、送信装置23の転送部70へ転送指示を通知する。このため、本変形例では、転送指示は、送信時刻を更に含むデスクリプタ33Aの番号を含むものとなる。
送信装置23の転送部70は、第2の実施の形態の転送部40と同様に、送信対象のフレームを第2記憶部41へ転送する。転送部70は、ホストプロセッサ17の送信スケジュール指示部82から転送指示を受付けると、転送指示によって示されるフレームを、ホストプロセッサ17の第1記憶部31から送信装置23の第2記憶部41へ転送する。
そして、転送部70は、転送時に読取ったデスクリプタ33Aに含まれる、フレームIDと送信情報を含む送信スケジュール情報を、第4記憶部63のスケジュールDB63Aに登録する。このとき、送信スケジュール指示部82は、デスクリプタ33Aに、フレームの有効条件を更に登録すればよい。この処理により、転送部70は、フレームIDと送信情報と有効条件とを含む、送信スケジュール情報を、スケジュールDB63Aに登録することができる。
なお、送信スケジュール指示部82は、通常処理においては、送信ID、送信スケジュールID、送信時刻、および有効条件を含むデスクリプタ33Aを第3記憶部33へ書込む。
そして、送信スケジュール指示部82は、転送部70へ転送指示したフレームのために算出した送信時刻を変更する必要が生じた場合に、新たな送信時刻を算出することで、上記第2の実施の形態の送信スケジュール指示部52と同様にして送信スケジュール情報を生成し、送信装置20の受付部62へ通知すればよい。
また、有効条件を受付部62の受付時刻の期限とする場合、1つの送信情報に含まれる複数の送信スケジュール情報の各々の有効条件(受付時刻の期限)は、同じであることが好ましい。この場合、送信スケジュール指示部52は、同じ有効条件を示す複数の送信スケジュール情報と、送信IDと、からなる送信情報を生成し、送信装置21の受付部62へ通知してもよい。
以上説明したように、本変形例では、ホストプロセッサ19の送信スケジュール指示部82は、通常処理においては、送信時刻を含むデスクリプタ33Aを第3記憶部33へ書込み、デスクリプタ33Aの番号を転送部70へ通知することで、転送部70へ転送指示を通知する。そして、送信スケジュール指示部82は、送信時刻を変更する必要が生じた場合に、変更後の送信時刻を付与した新たな送信スケジュール情報を生成し、送信装置20の受付部62へ通知する。
このため、本変形例では、通常処理時と、送信時刻の変更が発生した場合と、で処理を切替えて、受信装置12へのフレームの送信を実行することができる。
(変形例2)
なお、上記実施の形態および上記変形例1における受付部42および受付部62は、転送部40および転送部70とは異なるバスインターフェースを介して、送信スケジュール情報を受付けてもよい。
この場合、送信装置20ハードウェア構成を、図18に示す構成とすればよい。なお、送信装置21および送信装置23についても、図18に示すハードウェア構成とすればよい。
図18は、送信装置20のハードウェア構成の一例を示す模式図である。
送信装置20は、バスブリッジ20Aと、メモリ20Bと、DMAコントローラ20Cと、プロセッサ20Dと、MAC20Eと、PHY20Fと、バスブリッジ20Gと、メモリ20Hと、を備える。バスブリッジ20A、メモリ20B、DMAコントローラ20C、プロセッサ20D、MAC20E、およびPHY20Fは、第1の実施の形態と同様である。なお、メモリ20Bは、第2記憶部41に相当する(図3参照)。また、メモリ20Hは、第4記憶部43に相当する(図3参照)。
本変形例では、第2記憶部41に相当するメモリ20Bは、バスブリッジ20AおよびバスB1を介して、ホストプロセッサ16の第1記憶部31(図3参照)に接続されている。すなわち、バスB1は、フレーム転送用の専用バスである。
また、第4記憶部43に相当するメモリ20Hは、バスブリッジ20Gを介して、ホストプロセッサ16の送信スケジュール指示部32(図3参照)に接続されている。すなわち、バスB2は、送信スケジュール情報送信用の専用バスである。
なお、バスB1およびバスB2の種類は、同じ種類であってもよく、また、異なる種類であってもよい。
また、図18に示すように、第4記憶部43に相当するメモリ20Hと、第2記憶部41に相当するメモリ20Bと、を異なるメモリで構成してもよい。
本変形例で説明したように、フレーム転送用のバスB1と、送信スケジュール情報送信用のバスB2と、を物理的に異なるバスで構成することで、送信スケジュール情報の送信装置20への通知がフレームの転送によって遅延することを抑制することができる。
なお、フレーム転送用のバスB1と、送信スケジュール情報送信用のバスB2と、を物理的に同じバスで構成する場合には、フレームの転送によってバスが占有されることを防ぐために、転送方法を調整することが好ましい。例えば、ホストプロセッサ16は、一定期間ごとに、フレームの転送を中断し、中断期間に送信スケジュール情報を送信装置20へ通知するように制御することが好ましい。
なお、上記実施の形態および変形例の送信装置20、送信装置21、および送信装置23は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることで、実現してもよい。すなわち、上記実施の形態および変形例の送信装置20、送信装置21、および送信装置23の機能構成のうち、プログラムにより実現させることができる機能を、コンピュータ装置に搭載されたプロセッサに当該プログラムを実行させることにより実現させることができる。このとき、上記実施の形態および変形例の送信装置20、送信装置21、および送信装置23は、例えばプログラムをコンピュータ装置にあらかじめインストールすることで実現されてもよい。また例えば、上記実施の形態および変形例の送信装置20、送信装置21、および送信装置23は、CD-ROM等の記憶媒体に記憶されたプログラムをコンピュータ装置に適宜インストールすることで実現されてもよい。また例えば、上記実施の形態および変形例の送信装置20、送信装置21、および送信装置23は、ネットワークを介して配布されたプログラムをコンピュータ装置に適宜インストールすることで実現されてもよい。
なお、上記には、本発明の実施の形態および変形例を説明したが、上記実施の形態および変形例は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施の形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
例えば、上記実施の形態および変形例では、ホストプロセッサ16、ホストプロセッサ17、およびホストプロセッサ19が第1記憶部31を備えた形態を一例として説明した。しかし、第2記憶部41は、ホストプロセッサ16、ホストプロセッサ17、およびホストプロセッサ19の各々の外部に設けられた構成であってもよい。また、上記実施の形態および変形例では、送信装置20、送信装置21、および送信装置23が、第2記憶部41を備えた形態を一例として説明した。しかし、第2記憶部41は、送信装置20、送信装置21、および送信装置23の各々の外部に設けられた構成であってもよい。