(57)【要約】【課題】通信部からデータが送信されるタイミングを考慮して、通信部にデータを転送する制御を行う。【解決手段】実施形態の転送制御装置は、通信装置に記憶されたデータの転送を制御する転送制御装置であって、制御部と判定部とを備える。制御部は、前記データを第１送信バッファに転送する制御を行う。判定部は、前記通信装置の状態に応じて、転送が制限されるデータを決定する。前記制御部は、転送が制限される場合、転送が制限されているデータの転送を遅延させる。【選択図】図１
2019165380.tif 000002
【特許請求の範囲】
【請求項１】
通信装置に記憶されたデータの転送を制御する転送制御装置であって、
前記データを第１送信バッファに転送する制御を行う制御部と、
前記通信装置の状態に応じて、転送が制限されるデータを決定する判定部と、を備え、
前記制御部は、転送が制限される場合、転送が制限されているデータの転送を遅延させる、
転送制御装置。
【請求項２】
前記判定部は、転送元の記憶部、前記第１送信バッファ、及び、前記記憶部と前記第１送信バッファとを接続するバスの少なくとも１つのアクセス負荷がアクセス閾値よりも高い状態である場合、優先度が優先度閾値より小さいデータを、転送が制限されるデータに決定する、
請求項１に記載の転送制御装置。
【請求項３】
前記判定部は、前記第１送信バッファに記憶された優先度閾値以上のデータの数がデータ数閾値よりも小さい状態である場合、優先度が優先度閾値より小さいデータを、転送が制限されるデータに決定し、前記第１送信バッファに記憶された前記優先度閾値以上のデータの数がデータ数閾値以上の状態である場合、前記優先度が前記優先度閾値以上のデータを、転送が制限されるデータに決定しない、
請求項１に記載の転送制御装置。
【請求項４】
前記判定部は、前記第１送信バッファに記憶された優先度閾値以上のデータのサイズがデータサイズ閾値よりも小さい状態である場合、優先度が優先度閾値より小さいデータを、転送が制限されるデータに決定し、前記第１送信バッファに記憶された前記優先度閾値以上のデータのサイズがデータサイズ閾値以上の状態である場合、前記優先度が前記優先度閾値以上のデータを、転送が制限されるデータに決定しない、
請求項１に記載の転送制御装置。
【請求項５】
前記判定部は、前記第１送信バッファに記憶されたデータ、及び、第２送信バッファに記憶されたデータの送信タイミングのスケジュールを示すスケジューリング情報に応じて、転送が制限されるデータを決定し、
前記制御部は、優先度が優先度閾値以上のデータを、すぐに前記第１送信バッファに転送するように制御し、前記優先度が優先度閾値より小さいデータは、転送が制限されていない場合、すぐに前記第２送信バッファに転送するように制御する、
請求項１に記載の転送制御装置。
【請求項６】
前記判定部は、前記スケジューリング情報を参照して、次の送信タイミングで前記第１送信バッファから送信可能なデータの数を算出し、前記第１送信バッファに記憶されているデータの数が、前記送信可能なデータの数よりも少ない場合、前記優先度が優先度閾値より小さいデータを、転送が制限されるデータに決定し、
前記制御部は、前記優先度が優先度閾値より小さいデータの転送が制限されている場合、前記優先度が優先度閾値より小さいデータの転送を遅延させる、
請求項５に記載の転送制御装置。
【請求項７】
前記スケジューリング情報は、ＩＥＥＥ  ８０２．１Ｑｂｖのゲートコントロールリストである、
請求項５に記載の転送制御装置。
【請求項８】
通信装置に記憶されたデータの転送を制御する転送制御装置の転送制御方法であって、
前記データを第１送信バッファに転送する制御を行うステップと、
前記通信装置の状態に応じて、転送が制限されるデータを決定するステップと、
転送が制限される場合、転送が制限されているデータの転送を遅延させるステップと、
を含む転送方法。
【請求項９】
通信装置に記憶されたデータの転送を制御するコンピュータを、
前記データを第１送信バッファに転送する制御を行う制御部と、
前記通信装置の状態に応じて、転送が制限されるデータを決定する判定部として機能させ、
前記制御部は、転送が制限される場合、転送が制限されているデータの転送を遅延させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は転送制御装置、転送制御方法及びプログラムに関する。
【背景技術】
【０００２】
工場内の各産業用機器間を接続する産業用ネットワーク、及び、車内の制御コントローラを接続する車載ネットワークなどの分野では、高いリアルタイム性が求められる。近年、産業用ネットワーク及び車載ネットワークなどでは、イーサネット（登録商標）などの通信規格の利用が進んでおり、様々なリアルタイムイーサネット規格が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−８２３６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、通信部からデータが送信されるタイミングを考慮して、通信部にデータを転送する制御ができなかった。
【課題を解決するための手段】
【０００５】
実施形態の転送制御装置は、通信装置に記憶されたデータの転送を制御する転送制御装置であって、制御部と判定部とを備える。制御部は、前記データを第１送信バッファに転送する制御を行う。判定部は、前記通信装置の状態に応じて、転送が制限されるデータを決定する。前記制御部は、転送が制限される場合、転送が制限されているデータの転送を遅延させる。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態の通信装置の機能構成の例を示す図。
【図２】第１実施形態のアプリケーション部の動作の例を示すフローチャート。
【図３】第１実施形態の制御部の動作の例を示す図。
【図４】第１実施形態の制御部の機能構成の例を示す図。
【図５】第１実施形態の発行処理部及び判定部の動作（ステップＳ１１）の詳細を示すフローチャート。
【図６】第１実施形態の発行処理部の動作（ステップＳ２４及びＳ２８）の詳細を示すフローチャート。
【図７】第１実施形態の送信完了処理部の動作（ステップＳ１２）の詳細を示すフローチャート。
【図８】第２実施形態の通信装置の機能構成の例を示す図。
【図９Ａ】第２実施形態の判定方法の例を示す図。
【図９Ｂ】第２実施形態の判定方法の例を示す図。
【図１０】第２実施形態の発行処理部及び判定部の動作（ステップＳ１１）の詳細を示すフローチャート。
【図１１】第３実施形態の通信装置の機能構成の例を示す図。
【図１２】第３実施形態の判定方法の例を示す図。
【図１３Ａ】第３実施形態の転送制御の例を説明するための図。
【図１３Ｂ】第３実施形態の転送制御の例を説明するための図。
【図１４】第３実施形態の発行処理部及び判定部の動作（ステップＳ１１）の詳細を示すフローチャート。
【図１５】第１乃至第３実施形態の通信装置及び転送制御装置のハードウェア構成の例を示す図。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、転送制御装置、転送制御方法及びプログラムの実施形態を詳細に説明する。
【０００８】
（第１実施形態）
はじめに、高いリアルタイム性が求められる産業用ネットワーク及び車載ネットワークなどの分野で利用されている規格の例について説明する。
【０００９】
例えば、イーサネット（登録商標）上でリアルタイム性を実現する規格として、ＴＳＮ（Ｔｉｍｅ−Ｓｅｎｓｉｔｉｖｅ  Ｎｅｔｗｏｒｋｉｎｇ）の規格化が、ＩＥＥＥ  ８０２．１  ＴＳＮ  Ｔａｓｋで進んでいる。ＴＳＮは複数の規格から構成される。ＴＳＮは、プロオーディオなどで用いられている低遅延性を実現するＡＶＢ（Ａｕｄｉｏ／Ｖｉｄｅｏ  Ｂｒｉｄｇｉｎｇ）を拡張した規格である。ＴＳＮは、産業用ネットワーク及び車載ネットワークなどにも適用できるようにするため、ＡＶＢよりも高いリアルタイム性に加えて、高信頼性の実現を目指す規格である。
【００１０】
ＴＳＮ規格の１つにＩＥＥＥ  ８０２．１Ｑｂｖがある。ＩＥＥＥ  ８０２．１Ｑｂｖは、優先度が異なる複数の送信バッファ（ＩＥＥＥ  ８０２．１Ｑｂｖでは、送信キュー）を事前に設定したスケジューリング情報（ゲートコントロールリスト）に従って制御することで、優先度ごとにデータ（フレーム）の送信タイミングを厳密に制御することが可能になる。各送信バッファにはデータの送信を許可するゲートを設ける。ゲートが開いている場合（オープン）は、データの送信が許可され、閉じている場合（クローズ）はデータの送信は禁止される。
【００１１】
ゲートコントロールリストには、一周期分の各ゲートの状態が格納される。ＩＥＥＥ  ８０２．１Ｑｂｖに対応したＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）などは、現在時刻、ゲートコントロールリスト、及び、ゲートコントロールの開始時刻などから、現在送信可能な優先度の送信バッファを選択してデータの送信処理を実施する。このように、データ送信タイミングが、ゲートコントロールリストに従って、厳密に制御されることで、優先度が異なるデータ間での送信タイミングの衝突を防ぎ、送信遅延時間及び送信時間の揺らぎを小さくすることが可能になる。
【００１２】
ただし、ＩＥＥＥ  ８０２．１Ｑｂｖの送信制御は、ＮＩＣに利用される送信バッファに投入された後のイーサネットフレームに対して実行される。また、ＭＡＣなどよりも上位のプロトコル処理を担当するネットワークスタックやアプリケーションは、ＩＥＥＥ  ８０２．１Ｑｂｖの送信制御とは独立に処理される。つまり、メインメモリなどから、ＮＩＣにより利用される送信バッファへデータを転送するＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）処理などは、ＩＥＥＥ  ８０２．１Ｑｂｖの送信制御のタイミングとは非同期に実行される。このため、メモリ及びバス等へのアクセスが混雑している場合、低優先度データのＤＭＡ処理が高優先度データのＤＭＡ処理に影響を与える可能性がある。低優先度データのＤＭＡ処理がメモリ及びバス等を占有してしまうと、例えばアプリケーションや上位ネットワークスタック等では高優先度データの準備が完了しているにも関わらず、ゲートが開くタイミングまでにデータを送信バッファに投入できないといった問題（課題）が発生する。
【００１３】
次に、実施形態の通信装置の機能構成の例について説明する。
【００１４】
［機能構成の例］
図１は第１実施形態の通信装置１０の機能構成の例を示す図である。第１実施形態の通信装置１０は、例えば外部の機器へデータを送信する装置である。具体的には、第１実施形態の通信装置１０は、例えばパーソナルコンピュータ、サーバ装置、専用ＬＳＩ（Ｌａｒｇｅ−Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）、及び、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などの装置である。
【００１５】
第１実施形態の通信装置１０は、アプリケーション部１、記憶部２、送信バッファ３、転送部４、転送制御装置５及び通信部６を備える。転送制御装置５は、制御部５１及び判定部５２を備える。
【００１６】
アプリケーション部１は、任意の機能を実行するアプリケーションにより実現される。アプリケーション部１は、外部の機器へ送信されるデータを生成する。アプリケーション部１は、外部の機器へデータを送信する送信要求を制御部５１に入力する。送信要求は、データ送信を制御する制御情報を含む。
【００１７】
制御情報は、例えば読み出しアドレス、書き込みアドレス、データサイズ、及び、優先度（属性）などを含む。読み出しアドレスは、読み出し元の領域の先頭アドレスを示す。書き込みアドレスは、書き込み先の領域の先頭アドレスを示す。データサイズは、送信対象のデータのサイズを示す。優先度（属性）は、データ送信の優先度を示す。第１実施形態の通信装置１０では、優先度は、例えばリアルタイム又はベストエフォートなどである。
【００１８】
なお、アプリケーション部１は複数あってもよい。例えば、車載システムを例にすると、ブレーキ制御などのリアルタイム性が求められるアプリケーション、カーナビなどのインフォテインメント、及び、走行記録などのデータを送信するアプリケーションなどのように、複数のアプリケーションが動作することが想定される。
【００１９】
記憶部２はデータを記憶する。記憶部２に記憶されるデータは、例えばアプリケーション部１により生成されたデータである。また例えば、記憶部２に記憶されるデータは、アプリケーション部１及び制御部５１で実行されるプログラム、転送部４の制御情報、及び、外部の機器と通信するためのセッション情報などである。
【００２０】
具体的には、記憶部２は、例えばＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、及びＳＤカードなどの記憶装置である。なお、記憶部２は、物理的に分離された複数の記憶装置により構成してもよい。
【００２１】
送信バッファ３はデータを記憶する。送信バッファ３は、例えば外部の機器に送信されるデータ（フレーム）を一時的に記憶する。
【００２２】
具体的には、送信バッファ３は、例えばＳＲＡＭ、ＳＤＲＡＭ、ＳＳＤ、ＨＤＤ及びＳＤカードなどの記憶装置である。なお、送信バッファ３は、物理的に分離された複数の記憶装置により構成してもよい。また、記憶部２及び送信バッファ３を、論理的に分離された単一の記憶装置により構成してもよい。
【００２３】
転送部４は、制御部５１から、上述の送信要求で指定されたデータの転送を要求する転送要求を受け付けると、記憶部２と送信バッファ３との間のデータ転送を行う。
【００２４】
具体的には、転送部４は、例えばＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）である。転送要求は、例えばＤＭＡ要求である。
【００２５】
制御部５１は、データを送信バッファ３に転送する制御を行う。具体的には、制御部５１は、アプリケーション部１から、上述の送信要求を受け付けると、記憶部２に記憶された当該データを送信バッファ３に転送する転送要求を転送部４に入力する（転送要求の発行）。制御部５１は、転送部４から転送完了通知を受け付けると、転送が完了したデータの送信要求を通信部６に入力する。通信部６に入力される送信要求は、例えば送信されるデータ（フレーム）のアドレス及びデータサイズなどを含む。
【００２６】
なお、制御部５１は、転送要求の発行の他に、データに対するプロトコル処理を更に実行してもよい。プロトコル処理は、例えば記憶部２に記憶されたデータから、１フレーム分のデータを抽出し、当該データにＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ヘッダ、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）ヘッダ、及び、イーサネットヘッダなどを付加する処理などである。
【００２７】
また、制御部５１は、転送が制限されているデータを示す通知を判定部５２から受け付けた場合、例えば、当該転送が制限されているデータの転送を遅延させる。なお、転送が制限されているデータの転送制御方法は任意でよい。例えば、制御部５１は、転送が制限されているデータの転送を禁止してもよい。また例えば、制御部５１は、転送が制限されている複数のデータのうち、一部のデータの転送を許可し、一部のデータの転送を遅延させてもよい（又は一部のデータの転送を禁止してもよい）。
【００２８】
判定部５２は、通信装置１０の状態に応じて、転送が制限されるデータを決定する。具体的には、判定部５２は、例えばメモリ及びバスのアクセス負荷などの状態から、低優先度データの転送要求の発行を許可するか否かを判定する。低優先度データは、例えば優先度が優先度閾値より小さいデータである。
【００２９】
なお、アクセス負荷の判定方法は任意でよい。例えば、アクセス負荷は、転送部４により現在受け付けている転送要求の数により判定されてもよい。また例えば、アクセス負荷は、通信装置１０のメモリコントローラ、及び、バスコントローラ等に、現在のデータ転送量、及び、現在のアクセス回数などを取得する専用回路などを設け、当該専用回路により得られた情報から判定されてもよい。
【００３０】
通信部６は、制御部５１からデータ（フレーム）の送信要求を受け付けると、送信バッファ３に記憶された当該データを外部の機器へ送信する。具体的には、通信部６は、例えばイーサネット（登録商標）のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）処理、及び、ＰＨＹ（ｐｈｙｓｉｃａｌ  Ｌａｙｅｒ）などの処理を実行する。通信部６は、データの送信が完了すると、送信完了通知を制御部５１に入力する。送信完了通知の通知方法は任意でよい。送信完了通知の通知方法は、例えば割り込み信号による通知、及び、ディスクリプタによる通知などである。
【００３１】
［アプリケーション部の動作］
図２は第１実施形態のアプリケーション部１の動作の例を示すフローチャートである。具体的には、図２のフローチャートは、アプリケーション部１の送信要求処理の動作を示す。
【００３２】
はじめに、アプリケーション部１は、通信先の外部の機器との間でデータを送受信するための初期化を行う（ステップＳ１）。具体的には、アプリケーション部１は、通信先の外部の機器の指定、通信に使用されるネットワークインタフェースの指定、及び、通信に使用される通信プロトコルの指定などを制御部５１に指示する。
【００３３】
ここで、第１実施形態の通信装置１０では、送信されるデータの優先度が指定される。優先度の指定方法は任意でよい。例えば、優先度の指定方法は、ＩＥＥＥ  ８０２．１ｐのＰＣＰ（Ｐｒｉｏｒｉｔｙ  Ｃｏｄｅ  Ｐｏｉｎｔ）を直接指定する方法でもよい。また例えば、優先度の指定方法は、ベストエフォートトラフィック又はリアルタイムトラフィックなどを指定する方法でもよい。また例えば、優先度の指定方法は、データの送信保留時に許容される遅延時間などを指定する方法でもよい。
【００３４】
また、送信されるデータに優先度が指定されるタイミングは任意でよい。例えば、優先度が指定されるタイミングは、ステップＳ１の初期化処理時でもよい。また例えば、優先度が指定されるタイミングは、ステップＳ３の処理で、データの送信要求が発行される際に、その都度指定されてもよい。
【００３５】
次に、アプリケーション部１は、送信対象のデータを記憶部２に記憶する（ステップＳ２）。ステップＳ２の処理により記憶されるデータは任意でよい。例えば、アプリケーション部１がセンサを制御するアプリケーションの場合、ステップＳ２の処理により記憶されるデータは、当該センサから取得されたセンサデータである。また例えば、アプリケーション部１がカメラを制御するアプリケーションの場合、ステップＳ２の処理により記憶されるデータは、当該カメラから取得された動画データである。また例えば、アプリケーション部１がデータを解析するアプリケーションの場合、ステップＳ２の処理により記憶されるデータは、解析結果を示すデータである。また例えば、アプリケーション部１が外部の機器を制御するアプリケーションの場合、ステップＳ２の処理により記憶されるデータは、当該外部の機器を制御する制御データである。
【００３６】
次に、アプリケーション部１は、ステップＳ２の処理により記憶されたデータの送信を要求する送信要求を発行することにより、当該データの送信を制御部５１に指示する（ステップＳ３）。送信要求は、例えば送信されるデータが記憶された記憶部２のアドレス、送信されるデータのサイズ、及び、書き込み先のアドレスなどを含む。また、前述のとおり、送信要求にデータの優先度が含まれていてもよい。
【００３７】
次に、アプリケーション部１は、制御部５１から送信完了通知を受信したか否かを判定する（ステップＳ４）。送信完了通知を受信していない場合（ステップＳ４，Ｎｏ）、アプリケーション部１は、制御部５１からの送信完了通知待ち状態となる。送信完了通知を受信した場合（ステップＳ４，Ｙｅｓ）、アプリケーション部１は送信要求処理を終了する。
【００３８】
なお図では、説明の簡略化のために、送信要求処理は、送信完了通知を受けた場合に終了しているが、送信要求処理は、送信完了通知を受けた場合に終了せずに継続してもよい。この場合、アプリケーション部１の送信要求処理は、ステップＳ２の処理に戻る。
【００３９】
［制御部の動作］
図３は第１実施形態の制御部５１の動作の例を示す図である。制御部５１は、アプリケーション部１から初期化要求を受け付けると、インタフェースの設定、通信部６の初期化、及び、通信プロトコルの設定等の初期化処理を実行後、転送部４及び通信部６の制御処理を開始する。
【００４０】
転送部４及び通信部６の制御処理は、要求発行処理（ステップＳ１１）、及び、送信完了処理（ステップＳ１２）を含む。
【００４１】
要求発行処理は、アプリケーション部１から受け付けられた送信要求を基に、転送要求を発行する処理である。要求発行処理の詳細は、図５を参照して後述する。
【００４２】
送信完了処理は、通信部６から受け付けられた送信完了通知を処理する。送信完了処理の詳細は、図７を参照して後述する。
【００４３】
図４は第１実施形態の制御部５１の機能構成の例を示す図である。第１実施形態の制御部５１は、発行処理部５１１、送信完了処理部５１２、送信要求キュー５１３、一時キュー５１４及び完了待ちキュー５１５を備える。
【００４４】
発行処理部５１１は、転送部４への転送要求、及び、通信部６への送信要求を発行する上述の要求発行処理を実行する。
【００４５】
送信完了処理部５１２は、通信部６から送信完了通知を受け付けると、上述の送信完了処理を実行する。
【００４６】
送信要求キュー５１３は、アプリケーション部１から受け付けられた送信要求を保持する。
【００４７】
一時キュー５１４は、アプリケーション部１から受け付けられた送信要求のうち、記憶部２から送信バッファ３への転送が制限されたデータの送信要求を一時的に保持する。
【００４８】
完了待ちキュー５１５は、転送要求が完了済みで、通信部からの送信完了通知待ち状態の送信要求を保持する。
【００４９】
［要求発行処理の例］
図５は第１実施形態の発行処理部５１１及び判定部５２の動作（ステップＳ１１）の詳細を示すフローチャートである。はじめに、発行処理部５１１が、処理を後回しにされた送信要求が、一時キュー５１４にあるか否かを判定する（ステップＳ２１）。
【００５０】
一時キュー５１４に送信要求がある場合（ステップＳ２１，Ｙｅｓ）、発行処理部５１１は、最も古くに一時キュー５１４へ退避された送信要求を確認し、退避時に設定された遅延時間を経過しているか否かを判定する（ステップＳ２２）。
【００５１】
遅延時間を経過している場合（ステップＳ２２，Ｙｅｓ）、発行処理部５１１は、一時キュー５１４から、遅延時間が経過している送信要求を取得する（ステップＳ２３）。次に、発行処理部５１１は、ステップＳ２３の処理により取得された送信要求で指定されたデータの転送要求を発行し（ステップＳ２４）、処理を終了する（次の送信要求の処理に移る）。なお、ステップＳ２４の処理の詳細は、図６を参照して後述する。
【００５２】
一時キュー５１４に送信要求がない場合（ステップＳ２１，Ｎｏ）、または、一時キュー５１４に送信要求があるが遅延時間を経過していない場合（ステップＳ２２，Ｎｏ）、発行処理部５１１は、送信要求キュー５１３に送信要求があるか否かを判定する（ステップＳ２５）。なお、例えばステップＳ１の初期化処理（図２参照）の直後は、一時キュー５１４に送信要求がない状態となる。
【００５３】
送信要求キュー５１３に送信要求がない場合（ステップＳ２５，Ｎｏ）、処理を終了する（次の送信要求の処理に移る）。ここで、送信要求キュー５１３に送信要求がない場合は、次の送信要求の処理を開始しても、処理すべき要求はない。そのため、発行処理部５１１は、アプリケーション部１が送信要求を発行するまで処理を中断してもよい。
【００５４】
送信要求キュー５１３に送信要求がある場合（ステップＳ２５，Ｙｅｓ）、発行処理部５１１が、当該送信要求が、高優先度データの送信要求であるか否かを判定する（ステップＳ２６）。高優先度データは、例えば優先度が優先度閾値以上のデータである。
【００５５】
高優先度データの送信要求である場合（ステップＳ２６，Ｙｅｓ）、発行処理部５１１は、送信要求キュー５１３から、当該送信要求を取得する（ステップＳ２７）。次に、発行処理部５１１は、ステップＳ２７の処理により取得された送信要求で指定されたデータの転送要求を発行し（ステップＳ２８）、処理を終了する（次の送信要求の処理に移る）。なお、ステップＳ２８の処理の詳細は、図６を参照して後述する。
【００５６】
高優先度データの送信要求でない場合（ステップＳ２６，Ｎｏ）、判定部５２が、通信装置１０の状態を取得する（ステップＳ２９）。第１実施形態では、通信装置１０の状態は、例えば記憶部２、送信バッファ３、及び、記憶部２と前送信バッファ３とを接続するバスの少なくとも１つのアクセス状態である。
【００５７】
次に、判定部５２は、高優先度でないデータ（すなわち低優先度データ）の転送を制限するか否かを判定する（ステップＳ３０）。具体的には、判定部５２は、例えば記憶部２、送信バッファ３、及び、記憶部２と前送信バッファ３とを接続するバスの少なくとも１つのアクセス負荷がアクセス閾値よりも高い状態である場合、高優先度でないデータの転送を制限することを決定する。
【００５８】
転送を制限しない場合（ステップＳ３０，Ｎｏ）、上述のステップＳ２７及びＳ２８の処理が実行された後、処理は終了する（次の送信要求の処理に移る）。
【００５９】
転送を制限する場合（ステップＳ３０，Ｙｅｓ）、発行処理部５１１は、送信要求キュー５１３から、高優先度でないデータの送信要求を取得し、当該送信要求に、データの送信保留時に許容される遅延時間（送信要求を一時キュー５１４に退避させておく時間）を設定する（ステップＳ３１）。なお、遅延時間の設定方法は任意でよい。例えば、遅延時間は、ステップＳ１の初期化処理（図２参照）で指定された固定時間である。また例えば、遅延時間は、メモリ及びバスの利用帯域を基に、その都度計算で算出される。
【００６０】
次に、発行処理部５１１は、ステップＳ３１の処理により遅延時間が設定された送信要求を、一時キュー５１４に退避し（ステップＳ３２）、処理を終了する（次の送信要求の処理に移る）。
【００６１】
図６は第１実施形態の発行処理部５１１の動作（ステップＳ２４及び２８）の詳細を示すフローチャートである。はじめに、発行処理部５１１は、送信要求から読み出しアドレス、書き込みアドレス及びデータサイズなどの制御情報を取得する（ステップＳ４１）。次に、発行処理部５１１は、１フレームに格納可能なサイズのデータの転送要求を発行することにより、当該データの転送を転送部４に指示する（ステップＳ４２）。なお、１フレームの最大サイズは、ステップＳ１の初期化処理（図２参照）などで設定された値が使用される。
【００６２】
次に、発行処理部５１１は、転送部４から転送完了通知を受け付けたか否かを判定する（ステップＳ４３）。転送完了通知を受け付けていない場合（ステップＳ４３，Ｎｏ）、発行処理部５１１は、転送完了通知待ちとなる。
【００６３】
転送完了通知を受け付けた場合（ステップＳ４３，Ｙｅｓ）、発行処理部５１１は、転送が完了したデータの送信要求を通信部６へ発行することにより、当該データの送信を通信部６へ指示する（ステップＳ４４）。
【００６４】
次に、発行処理部５１１は、送信要求で指定された全データの転送要求の発行が完了したか否かを判定する（ステップＳ４５）。
【００６５】
全データの転送要求の発行が完了していない場合（ステップＳ４５，Ｎｏ）、発行処理部５１１は、転送要求を発行したサイズ分だけ、読み出しアドレス及び書き込みアドレスを進めることにより、次の転送要求のアドレスを計算する（ステップＳ４６）。ステップＳ４６の処理の後、処理はステップＳ４２に戻る。
【００６６】
全データの転送要求の発行が完了した場合（ステップＳ４５，Ｙｅｓ）、発行処理部５１１は、送信要求キュー５１３（ステップＳ２８の場合）、又は、一時キュー５１４（ステップＳ２４の場合）から、送信要求を完了待ちキュー５１５へ移動し（ステップＳ４７）、処理を終了する。
【００６７】
［送信完了処理］
図７は第１実施形態の送信完了処理部５１２の動作（ステップＳ１２）の詳細を示すフローチャートである。はじめに、送信完了処理部５１２が、完了待ちキュー５１５から送信要求を取得する（ステップＳ５１）。次に、送信完了処理部５１２は、通信部６から送信完了通知を受け付けたか否かを判定する（ステップＳ５２）。送信完了通知を受け付けていない場合（ステップＳ５２，Ｎｏ）、送信完了処理部５１２は、送信完了通知待ちとなる。
【００６８】
送信完了通知を受け付けた場合（ステップＳ５２，Ｙｅｓ）、送信完了処理部５１２は、送信が完了したデータ（フレーム）が記憶されていた送信バッファ３の領域を解放する（ステップＳ５３）。ここで、送信バッファ３の領域の解放は、通信部６により実行されてもよい。送信バッファ３の領域の解放が、通信部６により実行される場合、送信完了処理部５１２は、送信バッファ３の領域を解放しない。
【００６９】
次に、送信完了処理部５１２は、送信要求でアプリケーションから指定された全てのデータのフレーム送信が完了したか否かを判定する（ステップＳ５４）。全てのデータのフレーム送信が完了していない場合（ステップＳ５４，Ｎｏ）、ステップＳ５２の処理に戻る。
【００７０】
全てのデータのフレーム送信が完了した場合（ステップＳ５４，Ｙｅｓ）、送信完了処理部５１２は、完了待ちキュー５１５から送信要求を削除する（ステップＳ５５）。次に、送信完了処理部５１２は、アプリケーション部１に送信完了通知を入力する（ステップＳ５６）。
【００７１】
以上説明したように、第１実施形態の転送制御装置５では、制御部５１が、データを送信バッファ３（第１送信バッファ）に転送する制御を行う。判定部５２は、通信装置１０の状態に応じて、転送が制限されるデータを決定する。制御部５１は、転送が制限される場合、転送が制限されているデータの転送を遅延させる。
【００７２】
これにより第１実施形態の転送制御装置５によれば、通信部６からデータが送信されるタイミングを考慮して、通信部６（送信バッファ３）にデータを転送する制御をすることができる。具体的には、記憶部２、送信バッファ３、及び、記憶部２と前送信バッファ３とを接続するバスの少なくとも１つのアクセス負荷がアクセス閾値よりも高い状態である場合、低優先度データの転送を遅延させることができる。これにより、低優先度データの転送によるメモリ及びバス等の占有を防ぐことができるので、通信部６から高優先度データを遅延なく送信することができる。
【００７３】
（第２実施形態）
次に第２実施形態について説明する。第２実施形態の説明では、第１実施形態と同様の説明については省略し、第１実施形態と異なる箇所について説明する。
【００７４】
［機能構成の例］
図８は第２実施形態の通信装置１０−２の機能構成の例を示す図である。第２実施形態の通信装置１０−２は、アプリケーション部１、記憶部２、送信バッファ３ａ、送信バッファ３ｂ、転送部４、転送制御装置５及び通信部６を備える。転送制御装置５は、制御部５１及び判定部５２を備える。
【００７５】
送信バッファ３ａは、高優先度データを記憶する。高優先度データは、例えば優先度が優先度閾値以上のデータである。具体的には、第２実施形態では、高優先度データはリアルタイムフレームである。
【００７６】
送信バッファ３ｂは、低優先度データを記憶する。低優先度データは、例えば優先度が優先度閾値より小さいデータである。具体的には、第２実施形態では、低優先度データはベストエフォートフレームである。
【００７７】
なお、優先度の種類は２以上であれば任意でよい。例えば、優先度の種類が２種類（０又は１）であり、値が大きいほど優先度が高い場合、送信バッファ３ａは、優先度１のデータを記憶し、送信バッファ３ｂは、優先度０のデータを記憶する。なお、第２実施形態の通信装置１０では、送信バッファ３の数は、優先度の種類と同じにする。
【００７８】
送信バッファ３ａ及び３ｂは、例えばＳＲＡＭ、ＳＤＲＡＭ、ＳＳＤ、ＨＤＤ及びＳＤカードなどの記憶装置である。なお、送信バッファ３ａ及び３ｂは、物理的に分離された複数の記憶装置により構成してもよい。また、送信バッファ３ａ及び３ｂを、論理的に分離された単一の記憶装置により構成してもよい。
【００７９】
通信部６は、送信バッファ３ａ及び３ｂに記憶されたデータ（フレーム）を外部の機器へ送信する。この時、通信部６は、優先度を考慮してデータの送信処理を実行する。優先度が考慮されたデータの送信処理は任意でよい。例えば、通信部６は、Ｓｔｒｉｃｔ  Ｐｒｉｏｒｉｔｙのように、送信バッファ３ａに高優先度データが記憶されている場合は、常に、送信バッファ３ａの高優先度データを送信してもよい。また例えば、通信部６は、ＩＥＥＥ  ８０２．１  ＱａｖのＣｒｅｄｉｔ  Ｓｈａｐｅｒのようなアルゴリズムを使用して、送信バッファ３ａ及び３ｂのどちらからデータを送信するかをその都度決定してもよい。
【００８０】
判定部５２は、通信装置１０−２の送信バッファ３ａ及び３ｂの状態から、低優先度データの転送要求を許可するか否かを判定し、判定結果を制御部５１へ通知する。
【００８１】
［判定方法の例］
図９Ａ及び９Ｂは、第２実施形態の判定方法の例を示す図である。判定部５２は、送信バッファ３ａに記憶された優先度閾値以上のデータ（リアルタイムフレーム）の数がデータ数閾値以上の状態である場合、優先度が優先度閾値より小さいデータ（ベストエフォートフレーム）を、転送が制限されるデータに決定しない（図９Ａ参照）。
【００８２】
一方、判定部５２は、送信バッファ３ａに記憶された優先度閾値以上のデータ（リアルタイムフレーム）の数がデータ数閾値よりも小さい状態である場合、優先度が優先度閾値より小さいデータ（ベストエフォートフレーム）を、転送が制限されるデータに決定する（図９Ｂ参照）。
【００８３】
これにより、送信バッファ３ａにリアルタイムフレームを記憶する処理を優先させることができるので、送信バッファ３ａに記憶されるリアルタイムフレームの数を増大させることができる。具体的には、例えば送信バッファ３ａにリアルタイムフレームが存在しない場合、ベストエフォートフレームの転送要求は、すぐに処理されずに抑制される。これによりアプリケーション部１がリアルタイムフレームの送信要求を発行したら、転送部４は、送信バッファ３ａへの当該リアルタイムフレームの転送を即座に開始することが可能になる。
【００８４】
なお、判定に使用される優先度閾値及びデータ数閾値は、例えばステップＳ１の初期化処理（図２参照）などで設定された値が使用される。
【００８５】
また、判定部５２は、データ（フレーム）の数ではなく、送信バッファ３ａに記憶されているデータのサイズを判定してもよい。具体的には、判定部５２は、送信バッファ３ａに記憶された優先度閾値以上のデータのサイズがデータサイズ閾値以上の状態である場合、優先度が優先度閾値より小さいデータを、転送が制限されるデータに決定しない（図９Ａ参照）。一方、判定部５２は、送信バッファ３ａに記憶された優先度閾値以上のデータのサイズがデータサイズ閾値よりも小さい状態である場合、優先度が優先度閾値より小さいデータを、転送が制限されるデータに決定する（図９Ｂ）。
【００８６】
［発行要求処理の例］
図１０は第２実施形態の発行処理部５１１及び判定部５２の動作（ステップＳ１１）の詳細を示すフローチャートである。図１０に示すフローチャートのうち、第１実施形態との違いは、ステップＳ２９−２及びＳ３０−２の処理のため、ステップＳ２９−２及びＳ３０−２について説明する。
【００８７】
＜ステップＳ２９−２＞
高優先度データの送信要求でない場合（ステップＳ２６，Ｎｏ）、判定部５２は、通信装置１０の状態を取得する（ステップＳ２９−２）。第２実施形態では、通信装置１０の状態は、例えば送信バッファ３ａに記憶された優先度閾値以上のデータ（リアルタイムフレーム）の数又はデータサイズである。
【００８８】
＜ステップＳ３０−２＞
判定部５２は、高優先度でないデータ（すなわち低優先度データ）の転送を制限するか否かを判定する（ステップＳ３０−２）。具体的には、判定部５２は、例えば送信バッファ３ａに記憶された優先度閾値以上のデータの数（サイズ）がデータ数（データサイズ）閾値よりも小さい状態である場合、高優先度でないデータ（ベストエフォートフレーム）の転送を制限することを決定する。
【００８９】
以上、説明したように、第２実施形態の通信装置１０−２（転送制御装置５）は、高優先度データ（リアルタイムフレーム）が送信バッファ３ａに十分投入されていない場合に、低優先度データ（ベストエフォートフレーム）の転送要求の発行を遅らせる。これにより、送信バッファ３ａに十分な高優先度データが記憶されていない時に、アプリケーション部１が高優先度データの送信要求を発行した場合、転送部４が、低優先度データの転送処理に影響を受けることなく、即座に高優先度データの転送を実行することが可能になる。
【００９０】
（第３実施形態）
次に第３実施形態について説明する。第３実施形態の説明では、第２実施形態と同様の説明については省略し、第２実施形態と異なる箇所について説明する。
【００９１】
［機能構成の例］
図１１は第３実施形態の通信装置１０の機能構成の例を示す図である。第３実施形態の通信装置１０−３は、アプリケーション部１、記憶部２、送信バッファ３ａ、送信バッファ３ｂ、転送部４、転送制御装置５、通信部６及びスケジューリング情報記憶部７を備える。転送制御装置５は、制御部５１及び判定部５２を備える。
【００９２】
送信バッファ３ａには、例えばリアルタイム通信で送信されるリアルタイムデータが記憶される。リアルタイムデータは、例えば周期的に送られる必要がある制御信号及びストリーミングデータ等である。ストリーミングデータは、例えば動画データ及び音声データなどである。
【００９３】
送信バッファ３ｂには、例えばログ情報などのベストエフォート通信で送信するデータなどを記憶する。
【００９４】
スケジューリング情報記憶部７は、スケジューリング情報を記憶する。スケジューリング情報は、送信バッファ３ａに記憶されたデータ、及び、送信バッファ３ｂに記憶されたデータの送信タイミングのスケジュールを示す。スケジューリング情報は、ステップＳ１の初期化処理（図２参照）などで事前に設定されてもよし、動作中にその都度更新されてもよい。
【００９５】
判定部５２は、スケジューリング情報に応じて、転送が制限されるデータを決定する。そして、制御部５１は、優先度が優先度閾値以上のデータを、すぐに送信バッファ３ａに転送するように制御し、優先度が優先度閾値より小さいデータは、転送が制限されていない場合、すぐに送信バッファ３ｂに転送するように制御する。
【００９６】
具体的には、判定部５２は、例えばスケジューリング情報を参照して、次の送信タイミングで送信バッファ３ａから送信可能なデータの数を算出し、送信バッファ３ａに記憶されているデータの数が、送信可能なデータの数よりも少ない場合、優先度が優先度閾値より小さいデータを、転送が制限されるデータに決定する。そして、制御部５１は、優先度が優先度閾値より小さいデータの転送が制限されている場合、優先度が優先度閾値より小さいデータの転送を遅延させる。
【００９７】
スケジューリング情報は、例えばＩＥＥＥ  ８０２．１Ｑｂｖのゲートコントロールリストである。スケジューリング情報がゲートコントロールリストの場合、通信部６は、現在時刻とスケジューリング情報とを参照し、現在送信が許可されている（ゲートがオープンになっている）優先度を特定し、特定された優先度のデータの送信処理を実行する。通信部６は、例えば、送信バッファ３ａのゲートがオープンであり、かつ、送信バッファ３ａにデータが存在している場合、送信バッファ３ａに記憶されたデータの送信処理を実行する。また例えば、通信部６は、送信バッファ３ａにデータが存在し、かつ、送信バッファ３ａのゲートがクローズであり、かつ、送信バッファ３ｂのゲートがオープンであり、かつ、送信バッファ３ｂにデータが存在している場合、送信バッファ３ｂに記憶されたデータの送信処理を実行する。
【００９８】
なお、第３実施形態では、優先度の種類が２つであるが、優先度の種類は３種類以上でもよい。スケジューリング情報には、優先度の種類に対応した送信タイミングの情報が定義される。
【００９９】
通信部６は、スケジューリング情報を参照して、送信バッファ３ａ及び３ｂからデータ（フレーム）を送信することにより、外部の機器へ決められた時刻に当該データを送ることが可能になる。これにより、リアルタイム通信が必要なデータの送信タイミングを保証することが可能になる。
【０１００】
なお、スケジューリング情報は、データ送信（フレーム送信）が発生する可能性があることを示しており、実際にデータの送信処理が発生するか否かは、送信バッファ３ａ又は３ｂにデータが書き込まれているか否かによって決まる。つまり、転送制御装置５、及び、当該転送制御装置５の上位に位置するアプリケーション部１の動作によって、実際にデータ送信が発生するか否かが決定される。
【０１０１】
なお、アプリケーション部１の具体的な例は、車載システム及びファクトリーオートメーションシステムなどである。
【０１０２】
車載システムでは、自動運転及びブレーキ制御などに係わるリアルタイム性が求められるデータは、送信バッファ３ａに記憶される。一方、カーナビなどのインフォテイメント及び走行記録などのデータは、送信バッファ３ｂに記憶される。
【０１０３】
ファクトリーオートメーションでは、各制御機器の制御信号などのリアルタイム性が求められるデータは、送信バッファ３ａに記憶される。制御機器は、例えばＰＬＣ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｃｏｎｔｒｏｌｌｅｒ）、及び、Ｉ／Ｏ機器などである。一方、各機器の動作状況、及び、生産管理などの情報は、送信バッファ３ｂに記憶される。
【０１０４】
［判定方法の例］
図１２は第３実施形態の判定方法の例を示す図である。ＲＴ１は、リアルタイムフレームを示す。また、ＢＥ１〜ＢＥ３は、ベストエフォートフレームを示す。送信バッファ３ａには、既にＲＴ１が記憶されている。また、送信バッファ３ｂには、既にＢＥ１及びＢＥ２が記憶されている。
【０１０５】
判定部５２は、送信バッファ３ａの状態とスケジューリング情報とを参照して、低優先度データ（ベストエフォートフレーム）の転送要求を制限するか否かを判定し、判定結果を制御部５１へ通知する。図１２の例は、送信バッファ３ａに記憶されているベストエフォートフレームの数が１つ（ＲＴ１）であり、次の送信タイミングで送信可能なデータの数よりも少ない場合を示す。また、図１２の例は、ＢＥ３の転送要求が発行された時点のスケジューリング情報の状態（ゲートの状態）が、送信バッファ３ａがオープンであり、かつ、送信バッファ３ｂがクローズである場合を示す。
【０１０６】
図１２のような例では、優先度が優先度閾値より小さいデータ（図１２ではＢＥ３）の転送を遅延させた方がよいことを、図１３Ａ及び１３Ｂを参照して説明する。
【０１０７】
図１３Ａ及び１３Ｂは、第３実施形態の転送制御の例を説明するための図である。図１３Ａ及び１３Ｂでは、発行処理部５１１が、アプリケーション部１から、ＲＴ１、ＢＥ３、ＲＴ２の順でデータの送信要求を受け付けた場合を示す。図１３Ａの例は、転送要求が、送信要求を受け付けた順序で発行された場合を示す。一方、図１３Ｂの例は、第３実施形態の発行処理部５１１が、ＢＥ３の転送要求をＲＴ２の転送要求の後に、発行する場合を示す。
【０１０８】
図１３Ａの横軸は、ＲＴ１、ＢＥ３及びＲＴ２を送信バッファ３ａ（３ｂ）へ投入するための転送時間と、ＢＥ１、ＲＴ１及びＢＥ３を送信するための送信時間と、送信バッファ３ａ及び３ｂのゲートの状態とを示す時間軸である。
【０１０９】
図１３Ａの例では、転送部４が、ＢＥ３の転送要求の処理中に、ＲＴ２の転送要求が発行されている。したがって、図１３Ａの例では、ＢＥ３の転送処理が終わるまで、ＲＴ２の転送処理を開始できない。そのため、通信部６は、次のリアルタイムフレームの送信タイミング（Ｔ１）で、ＲＴ１と同時にＲＴ２を送信できるリソースがある場合でも、ＲＴ２の転送処理が間に合わないため、次のリアルタイムフレームの送信タイミングでＲＴ２を送信することができない。
【０１１０】
一方、第３実施形態の発行処理部５１１の動作例を示す図１３Ｂでは、送信バッファ３ｂへのＢＥ３の転送を遅らせることにより、先にＲＴ２を送信バッファ３ａに転送することができる。これにより通信部６が、次のリアルタイムフレームの送信タイミング（Ｔ１）で、ＲＴ１と同時にＲＴ２を送信することができる。
【０１１１】
つまり、図１３Ａでは、次の送信バッファ３ａのゲートオープン時に送信できる十分なリアルタイムフレームが、送信バッファ３ａに記憶されていない状態で、ベストエフォートフレーム（ＢＥ３）の転送が開始されてしまった結果、リアルタイムフレーム（ＲＴ２）の送信ができなくなってしまったと言える。
【０１１２】
図１３Ａのような問題を回避するために、第３実施形態の判定部５２は、送信バッファ３ａのゲートが次にオープンになるタイミングで送信可能な数のリアルタイムフレームが、送信バッファ３ａに記憶されているか否かを判定する。送信可能な数のリアルタイムフレームが記憶されていない場合、判定部５２は、ベストエフォートフレームの転送を制限することを決定し、当該判定結果を制御部５１へ通知する。一方、送信可能な数のリアルタイムフレームが記憶されている場合、判定部５２は、ベストエフォートフレームの転送を制限しないことを決定し、当該判定結果を制御部５１へ通知する。
【０１１３】
これにより、例えばゲートオープン時に送信可能なリアルタイムフレームが送信バッファ３ａに記憶されていない状態で、アプリケーション部１により高優先度データの送信要求が発行された場合は、転送部４が、当該高優先度データを含むリアルタイムフレームを即座に送信バッファ３ａに転送することが可能になる。
【０１１４】
判定部５２が、送信バッファ３ａに十分なリアルタイムフレームが記憶されているか否かを判定する具体的な方法としては、例えば、ゲートオープン時に送信可能な最大リアルタイムフレーム数をスケジューリング情報に定義しておき、送信バッファ３ａに記憶されたリアルタイムフレームの数が、当該最大リアルタイムフレーム数より小さければ、ベストエフォートフレームの転送を制限することが考えられる。また、別の方法としては、判定部５２が、転送の速度（例えば、ＤＭＡ転送速度など）を基に、現在時刻からＸ秒間の間にゲートがオープンされる総時間で送信可能なバイト数から閾値を算出し、送信バッファ３ａに記憶されたリアルタイムフレームのバイト数が、その閾値より小さければ、ベストエフォートフレームの転送を制限することが考えらえる。
【０１１５】
ここで、判定部５２は、ベストエフォートフレームの転送を遅延させる遅延時間を算出し、当該遅延時間を制御部５１へ通知してもよい。例えば、遅延時間は、スケジューリング情報を基に、次に送信バッファ３ａのゲートがオープンになるまでの時間、及び、送信バッファ３ｂのゲートがオープンになるまでの時間などから算出される。この場合、制御部５１は、一時キュー５１４へ送信要求を退避する際に、当該送信要求に遅延時間を設定する。
【０１１６】
［発行要求処理の例］
図１４は第３実施形態の発行処理部５１１及び判定部５２の動作（ステップＳ１１）の詳細を示すフローチャートである。図１４に示すフローチャートのうち、第２実施形態との違いは、ステップＳ２９−３及びＳ３０−３の処理のため、ステップＳ２９−３及びＳ３０−３について説明する。
【０１１７】
＜ステップＳ２９−３＞
高優先度データの送信要求でない場合（ステップＳ２６，Ｎｏ）、判定部５２は、通信装置１０の状態を取得する（ステップＳ２９−３）。第３実施形態では、通信装置１０の状態は、例えば送信バッファ３ａに記憶されているデータの数（サイズ）及びスケジューリング情報である。
【０１１８】
＜ステップＳ３０−３＞
判断部５２は、高優先度でないデータ（すなわち低優先度データ）の転送を制限するか否かを判定する（ステップＳ３０−３）。具体的には、判定部５２は、例えばスケジューリング情報を参照して、次の送信タイミングで送信バッファ３ａから送信可能なデータの数（サイズ）を算出し、送信バッファ３ａに記憶されているデータの数（サイズ）が、送信可能なデータの数（サイズ）よりも少ない場合、高優先度でないデータ（ベストエフォートフレーム）の転送を制限することを決定する。
【０１１９】
以上、説明したように、第３実施形態の通信装置１０−３（転送制御装置５）では、発行処理部５１１が、スケジューリング情報により定義されたタイミングで送信可能な高優先度データ（リアルタイムフレーム）が送信バッファ３ａに十分投入されていない場合に、低優先度フレーム（ベストエフォートフレーム）の転送要求の発行を遅らせる。これにより、送信バッファ３ａに十分な高優先度データが格納されていない時に、アプリケーション部１が高優先度データの送信要求を発行した場合、転送部４が、低優先度データの転送処理に影響を受けることなく、即座に高優先度データの転送を実行することが可能になる。
【０１２０】
最後に第１乃至第３実施形態の通信装置１０及び転送制御装置５のハードウェア構成の例について説明する。
【０１２１】
［ハードウェア構成の例］
図１５は第１乃至第３実施形態の通信装置１０及び転送制御装置５のハードウェア構成の例を示す図である。第１乃至第３実施形態の通信装置１０及び転送制御装置５は、制御装置３０１、主記憶装置３０２、補助記憶装置３０３、表示Ｉ／Ｆ３０４、入力Ｉ／Ｆ３０５及び通信Ｉ／Ｆ３０６を備える。主記憶装置３０２、補助記憶装置３０３、表示Ｉ／Ｆ３０４、入力Ｉ／Ｆ３０５及び通信Ｉ／Ｆ３０６は、バス３１０を介して接続されている。
【０１２２】
なお、通信装置１０及び転送制御装置５は、同一のハードウェアにより構成されてもよいし、別々のハードウェアにより実現されてもよい。通信装置１０及び転送制御装置５が別々のハードウェアにより実現される場合は、例えば、転送制御装置５は、通信装置１０の製造時に通信装置１０に取り付けられる部品として実現されてもよい。また例えば、転送制御装置５は、通信装置１０の拡張スロット等にオプションとして接続される拡張モジュールとして実現されてもよい。
【０１２３】
制御装置３０１は、補助記憶装置３０３から主記憶装置３０２に読み出されたプログラムを実行する。主記憶装置２０２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリである。補助記憶装置３０３は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びメモリカード等である。
【０１２４】
表示Ｉ／Ｆ３０４には、通信装置１０及び転送制御装置５の状態等を表示する表示装置と接続するためのインタフェースである。表示装置は、例えば液晶ディスプレイ等である。
【０１２５】
入力Ｉ／Ｆ３０５には、通信装置１０及び転送制御装置５を操作するための入力装置と接続するためのインタフェースである。入力装置は、例えばキーボード及びマウス等である。
【０１２６】
通信Ｉ／Ｆ３０６は、外部の機器等と通信するためのインタフェースである。
【０１２７】
第１乃至第３実施形態の通信装置１０及び転送制御装置５で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、メモリカード、ＣＤ−Ｒ及びＤＶＤ等のコンピュータで読み取り可能な記憶媒体に記録されてコンピュータ・プログラム・プロダクトとして提供される。
【０１２８】
また第１乃至第３実施形態の通信装置１０及び転送制御装置５で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また第１乃至第３実施形態の通信装置１０及び転送制御装置５で実行されるプログラムをダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【０１２９】
また第１乃至第３実施形態の通信装置１０及び転送制御装置５のプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１３０】
第１乃至第３実施形態の通信装置１０及び転送制御装置５で実行されるプログラムは、通信装置１０及び転送制御装置５の機能ブロックのうち、プログラムによっても実現可能な機能ブロックを含むモジュール構成となっている。当該各機能ブロックは、実際のハードウェアとしては、制御装置３０１が記憶媒体からプログラムを読み出して実行することにより、上記各機能ブロックが主記憶装置３０２上にロードされる。すなわち上記各機能ブロックは主記憶装置３０２上に生成される。
【０１３１】
なお各機能ブロックの一部又は全部をソフトウェアにより実現せずに、ＩＣ等のハードウェアにより実現してもよい。
【０１３２】
また複数のプロセッサを用いて各機能を実現する場合、各プロセッサは、各機能のうち１つを実現してもよいし、各機能のうち２以上を実現してもよい。
【０１３３】
また第１乃至第３実施形態の通信装置１０及び転送制御装置５の動作形態は任意でよい。第１乃至第３実施形態の通信装置１０及び転送制御装置５を、例えばネットワーク上のクラウドシステムを構成する装置として動作させてもよい。
【０１３４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３５】
１  アプリケーション部
２  記憶部
３  送信バッファ
４  転送部
５  転送制御装置
６  通信部
７  スケジューリング情報記憶部
１０  通信装置
５１  制御部
５２  判定部
３０１  制御装置
３０２  主記憶装置
３０３  補助記憶装置
３０４  表示Ｉ／Ｆ
３０５  入力Ｉ／Ｆ
３０６  通信Ｉ／Ｆ
３１０  バス
５１１  発行処理部
５１２  送信完了処理部
５１３  送信要求キュー
５１４  一時キュー
５１５  完了待ちキュー
【図１】
2019165380.tif 000003
【図２】
2019165380.tif 000004
【図３】
2019165380.tif 000005
【図４】
2019165380.tif 000006
【図５】
2019165380.tif 000007
【図６】
2019165380.tif 000008
【図７】
2019165380.tif 000009
【図８】
2019165380.tif 000010
【図９Ａ】
2019165380.tif 000011
【図９Ｂ】
2019165380.tif 000012
【図１０】
2019165380.tif 000013
【図１１】
2019165380.tif 000014
【図１２】
2019165380.tif 000015
【図１３Ａ】
2019165380.tif 000016
【図１３Ｂ】
2019165380.tif 000017
【図１４】
2019165380.tif 000018
【図１５】
2019165380.tif 000019