(57)【要約】【課題】高精度な送信タイミング制御のためのスケジューリングが可能となる。【解決手段】情報処理装置１０は、先読部２０と、スケジューリング部２６と、を備える。先読部２０は、１つ以上の送信キューの各々の送信可否状態（ゲートステート）と送信可否状態の維持タイミングとを規定した１つ以上のエントリ３４Ｄを含む送信スケジューリング情報３４Ａにおける、現在時刻より未来の維持タイミングに対応するエントリ３４Ｄを、先読みする。スケジューリング部２６は、先読みしたエントリ３４Ｄに基づいて、送信キューに保持されている送信待機中のフレームの、送信開始予定時刻をスケジューリングする。将来時刻と現在時刻との時間差と、１つ以上の閾値との比較結果に基づいて、先読み処理のタイミング、および、送信開始予定時刻をスケジューリングするタイミングの少なくとも一方が決定される。【選択図】図１
2020149503.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上の送信キューの各々の送信可否状態と前記送信可否状態の維持タイミングとを規定した１つ以上のエントリを含む送信スケジューリング情報における、現在時刻より先の前記維持タイミングに対応する前記エントリを先読みする先読み処理を実行する先読部と、
先読みした前記エントリに基づいて、前記送信キューに保持されている送信待機中のフレームの、送信開始予定時刻をスケジューリングするスケジューリング部と、を備え、
次の前記送信開始予定時刻の候補となる将来時刻と現在時刻との時間差と、１つ以上の閾値と、の比較結果に基づいて、前記先読み処理のタイミング、および、前記送信開始予定時刻をスケジューリングするタイミングの少なくとも一方が決定される、
情報処理装置。
【請求項２】
前記時間差が第１閾値より大きい場合に、前記送信キューに保持されている送信待機中の前記フレームのうち、前記送信開始予定時刻をスケジューリング可能な前記フレームを判定する判定部をさらに備え、
前記スケジューリング部は、スケジューリング可能と判定された前記フレームの、前記送信開始予定時刻をスケジューリングする、
請求項１に記載の情報処理装置。
【請求項３】
前記判定部は、
前記時間差が前記第１閾値より大きく、かつ、前記第１閾値より大きい第３閾値以下の場合に、前記送信キューに保持されている送信待機中の前記フレームのうち、前記送信開始予定時刻をスケジューリング可能な前記フレームを判定し、
前記時間差が前記第１閾値以下の場合、または、前記時間差が前記第３閾値より大きい場合、スケジューリング可能な前記フレームを判定する処理を実行しない、
請求項２に記載の情報処理装置。
【請求項４】
前記将来時刻に前記送信キューに割当てられている送信可能時間に基づいて、前記送信スケジューリング情報から次の前記エントリを先読みする先読指示を前記先読部へ通知し、前記時間差が第１閾値以下である場合に、前記送信可能時間を減少させる指示部をさらに備える、
請求項１に記載の情報処理装置。
【請求項５】
前記指示部は、現在時刻、将来時刻、前記閾値、および、オフセット値のうち少なくとも一部の組み合わせに基づいて計算した値の分、前記送信可能時間を減少させる、
請求項４に記載の情報処理装置。
【請求項６】
前記時間差が前記第１閾値より大きい場合に、前記送信キューに保持されている送信待機中の前記フレームのうち、前記送信開始予定時刻をスケジューリング可能な前記フレームを判定する判定部をさらに備え、
前記スケジューリング部は、スケジューリング可能と判定された前記フレームの、前記送信開始予定時刻をスケジューリングし、
前記指示部は、前記時間差が前記第１閾値より大きく、かつ、前記時間差が前記第１閾値より大きい第２閾値以下であり、かつ、スケジューリング可能と判定された前記フレームが存在しない場合に、前記送信可能時間を減少させる、
請求項４に記載の情報処理装置。
【請求項７】
前記時間差が前記閾値以下である場合に、前記将来時刻を先にすすめるように更新する指示部をさらに備える、
請求項１に記載の情報処理装置。
【請求項８】
前記指示部は、現在時刻、将来時刻、前記閾値、および、オフセット値のうち少なくとも一部の組み合わせに基づいて計算した値となるように前記将来時刻を更新する、
請求項７に記載の情報処理装置。
【請求項９】
前記先読部による処理、前記スケジューリング部による処理、スケジューリングに係わる判定処理、および、スケジューリングされた前記フレームを転送する処理、のうち少なくとも一部の処理の遅延時間を計測する計測部と、
前記遅延時間に基づいて前記閾値を算出する閾値算出部と、をさらに備える、
請求項１に記載の情報処理装置。
【請求項１０】
スケジューリングされた前記送信開始予定時刻に基づいて、前記フレームの送信を開始する送信部をさらに備える、
請求項１に記載の情報処理装置。
【請求項１１】
１つ以上の送信キューの各々の送信可否状態と前記送信可否状態の維持タイミングとを規定した１つ以上のエントリを含む送信スケジューリング情報における、現在時刻より先の前記維持タイミングに対応する前記エントリを先読みする先読み処理を実行するステップと、
先読みした前記エントリに基づいて、前記送信キューに保持されている送信待機中のフレームの、送信開始予定時刻をスケジューリングするステップと、を含み、
次の前記送信開始予定時刻の候補となる将来時刻と現在時刻との時間差と、１つ以上の閾値と、の比較結果に基づいて、前記先読み処理のタイミング、および、前記送信開始予定時刻をスケジューリングするタイミングの少なくとも一方が決定される、
情報処理方法。
【請求項１２】
１つ以上の送信キューの各々の送信可否状態と前記送信可否状態の維持タイミングとを規定した１つ以上のエントリを含む送信スケジューリング情報における、現在時刻より先の前記維持タイミングに対応する前記エントリを先読みする先読み処理を実行するステップと、
先読みした前記エントリに基づいて、前記送信キューに保持されている送信待機中のフレームの、送信開始予定時刻をスケジューリングするステップと、をコンピュータに実行させ、
次の前記送信開始予定時刻の候補となる将来時刻と現在時刻との時間差と、１つ以上の閾値と、の比較結果に基づいて、前記先読み処理のタイミング、および、前記送信開始予定時刻をスケジューリングするタイミングの少なくとも一方が決定される、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施の形態は、情報処理装置、情報処理方法、およびプログラムに関する。
【背景技術】
【０００２】
工場内の各産業用機器間を接続する産業用ネットワーク、及び、車内の制御コントローラを接続する車載ネットワーク等の分野では、高いリアルタイム性が求められる。近年、産業用ネットワーク及び車載ネットワーク等では、イーサネット（登録商標）の利用が進んでおり、様々なリアルタイムイーサネット規格が提案されている。例えば、優先度や保証帯域、フレームの送信周期または送信間隔などに基づいて、送信制御を行う技術が開示されている。
【０００３】
しかしながら、従来技術では、送信キューに予め割り当てられた送信スケジューリング情報に基づいて動的に変化する送信可能時間の範囲内で、フレーム単位の厳密な送信タイミング制御を行うためのスケジューリングは困難であった。すなわち、従来では、高精度な送信タイミング制御を行うためのスケジューリングを行うことは困難であった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１２４９８５号公報
【特許文献２】特開２００５−２６０７８０号公報
【特許文献３】特開２０１１−２４０２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、高精度な送信タイミング制御のためのスケジューリング可能な、情報処理装置、情報処理方法、およびプログラムを提供することである。
【課題を解決するための手段】
【０００６】
実施の形態の情報処理装置は、先読部と、スケジューリング部と、を備える。先読部は、１つ以上の送信キューの各々の送信可否状態と送信可否状態の維持タイミングとを規定した１つ以上のエントリを含む送信スケジューリング情報における、現在時刻より未来の維持タイミングに対応するエントリを先読みする。スケジューリング部は、先読みしたエントリに基づいて、送信キューに保持されている送信待機中のフレームの、送信開始予定時刻をスケジューリングする。将来時刻と現在時刻との時間差と、１つ以上の閾値との比較結果に基づいて、先読み処理のタイミング、および、送信開始予定時刻をスケジューリングするタイミングの少なくとも一方が決定される。
【図面の簡単な説明】
【０００７】
【図１】情報処理システムの機能構成を示す図。
【図２】送信スケジューリング情報のデータ構成を示す模式図。
【図３】将来時刻情報および送信可能時間情報を示す模式図。
【図４】情報処理の手順を示すフローチャート。
【図５】先読処理・スケジューリング処理の詳細フローチャート。
【図６】初期化処理の詳細フローチャート。
【図７】初期化処理の流れを示す模式図。
【図８】先読処理の詳細フローチャート。
【図９】先読処理の流れを示す模式図。
【図１０】判定処理の詳細フローチャート。
【図１１】判定処理の流れを示す模式図。
【図１２】スケジューリング処理の詳細フローチャート。
【図１３】スケジューリング処理の流れを示す模式図。
【図１４】第１後処理の詳細フローチャート。
【図１５】第１後処理の流れを示す模式図。
【図１６】第２後処理の詳細フローチャート。
【図１７】第２後処理の流れを示す模式図。
【図１８】送信処理の詳細フローチャート。
【図１９】送信処理の流れを示す模式図。
【図２０】ゲートステートの典型的な周期性の例を示す図。
【図２１】ゲートステートの典型的な周期性の例を示す図。
【図２２】初期化直後を示す図。
【図２３】初期化直後を示す図。
【図２４】初期化から０．００１秒後を示す図。
【図２５】初期化から０．００１秒後を示す図。
【図２６】初期化から０．００２秒後を示す図。
【図２７】初期化から０．００２秒後を示す図。
【図２８】初期化から０．００３秒後を示す図。
【図２９】初期化から０．００３秒後を示す図。
【図３０】初期化から０．００４秒後を示す図。
【図３１】初期化から０．００４秒後を示す図。
【図３２】初期化から０．００５秒後を示す図。
【図３３】初期化から０．００５秒後を示す図。
【図３４】初期化から０．００６秒後を示す図。
【図３５】初期化から０．００６秒後を示す図。
【図３６】初期化から０．００７秒後を示す図。
【図３７】初期化から０．００７秒後を示す図。
【図３８】初期化から０．００８秒後を示す図。
【図３９】初期化から０．００８秒後を示す図。
【図４０】初期化から０．００９秒後を示す図。
【図４１】初期化から０．００９秒後を示す図。
【図４２】初期化から０．０１０秒後を示す図。
【図４３】初期化から０．０１０秒後を示す図。
【図４４】初期化から０．０１１秒後を示す図。
【図４５】初期化から０．０１１秒後を示す図。
【図４６】初期化から０．０１２秒後を示す図。
【図４７】初期化から０．０１２秒後を示す図。
【図４８】初期化から０．０１３秒後を示す図。
【図４９】初期化から０．０１３秒後を示す図。
【図５０】初期化から０．０１４秒後を示す図。
【図５１】初期化から０．０１４秒後を示す図。
【図５２】初期化から０．０１５秒後を示す図。
【図５３】初期化から０．０１５秒後を示す図。
【図５４】初期化から０．０１６秒後を示す図。
【図５５】初期化から０．０１６秒後を示す図。
【図５６】初期化から０．０１７秒後を示す図。
【図５７】初期化から０．０１７秒後を示す図。
【図５８】初期化から０．９９９９８５秒後を示す図。
【図５９】初期化から０．９９９９８５秒後を示す図。
【図６０】初期化から０．９９９９８６秒後を示す図。
【図６１】初期化から０．９９９９８６秒後を示す図。
【図６２】初期化から０．９９９９８７秒後を示す図。
【図６３】初期化から０．９９９９８７秒後を示す図。
【図６４】初期化から０．９９９９８７５秒後を示す図。
【図６５】初期化から０．９９９９８７５秒後を示す図。
【図６６】初期化から０．９９９９８８秒後を示す図。
【図６７】初期化から０．９９９９８８秒後を示す図。
【図６８】初期化から０．９９９９８８５秒後を示す図。
【図６９】初期化から０．９９９９８８５秒後を示す図。
【図７０】初期化から０．９９９９８９秒後を示す図。
【図７１】初期化から０．９９９９８９秒後を示す図。
【図７２】初期化から０．９９９９８９５秒後を示す図。
【図７３】初期化から０．９９９９８９５秒後を示す図。
【図７４】第２の実施の形態の情報処理システム機能構成を示す図。
【図７５】第２の実施の形態の情報処理の手順を示すフローチャート。
【図７６】第２の実施の形態の計測処理・閾値算出処理の詳細フローチャート。
【図７７】算出される第１閾値の例を示す図。
【図７８】算出される第１閾値の例を示す図。
【図７９】第２の実施の形態の判定処理の詳細フローチャート。
【図８０】第２の実施の形態の第２後処理の詳細フローチャート。
【図８１】更新された将来時刻の一例を示す図。
【図８２】変形例にかかる情報処理システムの機能構成を示す図。
【図８３】第３の実施の形態の情報処理システムの機能構成を示す図。
【図８４】第３の実施の形態の計測処理・閾値算出処理の詳細フローチャート。
【図８５】第３の実施の形態の計測処理・閾値算出処理の詳細フローチャート。
【図８６】算出される第１閾値および第２閾値の例を示す図。
【図８７】第３の実施の形態の判定処理の詳細フローチャート。
【図８８】第３の実施の形態の第２後処理の詳細フローチャート。
【図８９】更新された将来時刻の一例を示す図。
【図９０】更新された将来時刻の一例を示す図。
【図９１】第４の実施の形態の情報処理システムの機能構成を示す図。
【図９２】第４の実施の形態の初期化処理の詳細フローチャート。
【図９３】第４の実施の形態の先読処理の詳細フローチャート。
【図９４】第４の実施の形態の計測処理・閾値算出処理の詳細フローチャート。
【図９５】第４の実施の形態の計測処理・閾値算出処理の詳細フローチャート。
【図９６】算出される第１閾値、第２閾値および第３閾値の例を示す図。
【図９７】第４の実施の形態の判定処理の詳細フローチャート。
【図９８】第４の実施の形態の第２後処理の詳細フローチャート。
【図９９】更新された将来時刻の一例を示す図。
【図１００】更新された将来時刻の一例を示す図。
【図１０１】ハードウェア構成図。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、情報処理装置、情報処理方法、およびプログラムを詳細に説明する。本実施の形態の情報処理装置は、特に、高いリアルタイム性の求められる分野に好適に適用される。
【０００９】
はじめに、高いリアルタイム性が求められる分野で利用されている規格の例について、説明する。高いリアルタイム性とは、例えば低遅延性や高い時刻同期精度を示す。高いリアルタイム性が求められる分野とは、例えば、産業用ネットワークや、車載ネットワークなどである。
【００１０】
例えば、イーサネット（登録商標）上でリアルタイム性を実現する規格として、ＴＳＮ（Ｔｉｍｅ−Ｓｅｎｓｉｔｉｖｅ  Ｎｅｔｗｏｒｋｉｎｇ）の規格化が、ＩＥＥＥ  ８０２．１  ＴＳＮ  Ｔａｓｋで進んでいる。ＴＳＮは複数の規格から構成される。ＴＳＮは、プロオーディオ等で用いられている低遅延性を実現するＡＶＢ（Ａｕｄｉｏ／Ｖｉｄｅｏ  Ｂｒｉｄｇｉｎｇ）を拡張した規格である。ＴＳＮは、産業用ネットワーク及び車載ネットワーク等にも適用できるようにするため、ＡＶＢよりも高いリアルタイム性に加えて、高信頼性の実現を目指す規格である。
【００１１】
ＴＳＮ規格の１つであるＩＥＥＥ  ８０２．１Ｑｂｖは、エンドノードまたは中継ノード（スイッチ）の送信キューを、予め決められたスケジュールに基づいて制御するための通信規格である。具体的には、ＩＥＥＥ  ８０２．１Ｑｂｖは、トラフィッククラスごとに割当てられた複数の送信キューの各々を、個別に有効（オープン）または無効（クローズ）の状態に適切に切り替えることで、各送信キューからのフレーム送信のタイミングを制御する。
【００１２】
ＩＥＥＥ  ８０２．１Ｑｂｖ規格には、ゲートコントロールリストと称される送信スケジューリング情報を用いて、複数の送信キューの各々の状態を制御することが定められている。ゲートコントロールリストは、ゲートステートとタイムインターバルとを含むゲートコントロールエントリから構成される。ゲートステートは、送信キューの送信可否状態を示す。送信可否状態は、送信可を示す有効（オープン）、または、送信不可を示す無効（クローズ）で表される。タイムインターバルは、対応するゲートステートを維持する時間を示す。ゲートコントロールリストは、上位レイヤのアプリケーションやネットワーク全体の通信要件などに応じて、予め設定される。
【００１３】
ゲートコントロールリストに設定されたタイミングで、複数の送信キューおよび送信キューの各々に対応するゲートの開閉処理が制御される。これにより、ゲートコントロールリストによってスケジューリングされたタイミングで、各送信キューからの送信タイミングが制御される。例えば、ネットワーク上の各ノードでは、時間の経過とともに変化する各送信キューの送信可否状態を、予め定められたスケジュールに基づいて制御することが可能となる。このため、各送信キューからのフレーム送信を許可するタイミングを厳密に制御することで、高いリアルタイム性が求められるデータ送信における、ネットワーク遅延やジッタを小さくすることが可能になる。
【００１４】
ここで、ＩＥＥＥ  ８０２．１Ｑｂｖ規格で定められている送信制御方法を有効に機能させるためには、数ナノ秒〜数マイクロ秒オーダーの精度のタイムインターバルを、正確に制御することが求められる。しかし、従来技術では、このような要求精度を実現することは困難であり、高精度な送信タイミング制御のためのスケジューリングを行うことは困難であった。
【００１５】
（第１の実施の形態）
そこで、第１の実施の形態の情報処理装置では、以下の構成とすることで、高精度な送信タイミング制御のためのスケジューリングを実現する。
【００１６】
なお、本実施の形態の情報処理装置は、送信スケジューリング情報に基づいて、送信キューから送信されるフレームの送信タイミング制御を行う。本実施の形態では、送信制御に用いる規格として、ＩＥＥＥ  ８０２．１Ｑｂｖを用いる場合を、一例として説明する。しかし、本実施の形態の情報処理装置が送信制御に用いる規格は、ＩＥＥＥ  ８０２．１Ｑｂｖに限定されない。
【００１７】
［機能構成の例］
次に、本実施の形態の情報処理装置１０について具体的に説明する。
【００１８】
図１は、本実施の形態の情報処理システム１の機能構成の例を示す図である。情報処理システム１は、情報処理装置１０と、通信装置２と、を備える。情報処理装置１０は、ネットワーク等を介して、通信装置２へフレームを出力する。
【００１９】
本実施の形態では、情報処理装置１０は、ホスト１２と、送信装置１４と、を備える。ホスト１２と送信装置１４とは、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓおよびバスなどを介して接続されている。
【００２０】
通信装置２は、送信装置１４に接続された機器である。通信装置２は、例えば、通信機器である。送信装置１４と通信装置２との接続方式は、無線方式であってもよいし、有線方式であってもよい。また、送信装置１４に接続された通信装置２の数は、１つに限定されず、２つ以上であってもよい。
【００２１】
なお、情報処理装置１０を、ホスト１２のみから構成してもよい。すなわち、情報処理装置１０は、送信装置１４を含まない構成であってもよい。また、情報処理装置１０を、送信装置１４のみから構成してもよい。この場合、送信装置１４に、ホスト１２の後述する機能部を搭載した構成とすればよい。本実施の形態では、情報処理装置１０が、ホスト１２と送信装置１４とを含む場合を、一例として説明する。
【００２２】
ホスト１２は、処理部３１と、記憶部３０と、を備える。処理部３１と記憶部３０とは、データや信号を授受可能に接続されている。
【００２３】
処理部３１は、ホスト１２全体を制御する。具体的には、処理部３１は、フレームの送信開始予定時刻をスケジューリングする（詳細後述）。
【００２４】
処理部３１の具体的な形態は任意でよい。処理部３１は、例えばソフトウェア、パーソナルコンピュータ、サーバ装置、専用ＬＳＩ（Ｌａｒｇｅ−Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）、及び、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等である。処理部３１をソフトウェアにより実現する場合、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、および、ＭＰＵ（Ｍｉｃｒｏ−ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等に当該ソフトウェアを実行させることにより、処理部３１を実現する。
【００２５】
また、処理部３１による制御の対象となる具体的なアプリケーションは、任意でよい。具体的なアプリケーションは、例えば、車載システムおよびファクトリーオートメーションシステム等である。車載システムでは、例えば自動運転の各種制御等に係わるリアルタイム性が求められる通信を制御する。また、ファクトリーオートメーションシステムでは、例えばＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）、およびＩ／Ｏ機器等の各制御機器の制御信号等のリアルタイム性が求められる通信を制御する。
【００２６】
記憶部３０は、各種のデータを記憶する。記憶部３０の具体的な形態は任意でよい。記憶部３０は、例えばＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、及び、ＳＤカード等の記憶装置である。
【００２７】
本実施の形態では、記憶部３０は、送信フレーム記憶部３２と、送信スケジューリング情報記憶部３４と、送信可能時間記憶部３６と、将来時刻記憶部３８と、を含む。
【００２８】
なお、送信フレーム記憶部３２、送信スケジューリング情報記憶部３４、送信可能時間記憶部３６、および将来時刻記憶部３８は、物理的に異なる複数の記憶装置から構成されてもよい。また、送信フレーム記憶部３２、送信スケジューリング情報記憶部３４、送信可能時間記憶部３６、および将来時刻記憶部３８は、同一の記憶装置の領域を論理的に分離することにより実現されてもよい。
【００２９】
また、記憶部３０の少なくとも一部と、処理部３１と、を、物理的に分離した別体として構成してもよい。例えば、記憶部３０を、ネットワークに接続されたサーバ装置に記憶してもよい。また、例えば、記憶部３０に記憶されている少なくとも一部の情報を、サーバ装置に記憶してもよい。
【００３０】
送信フレーム記憶部３２は、１つ以上の送信キューを含む。本実施の形態では、送信フレーム記憶部３２が、Ｎ個（Ｎは２以上の整数）の送信キュー（
送信キュー０〜送信キューＮ−１）を含む場合を一例として説明する。送信キューの各々は、フレームを記憶する。フレームは、例えば、リアルタイム性を要求されるトラフィックのデータなどである。フレームは、後述する処理によって、通信装置２に送信される。
【００３１】
送信フレーム記憶部３２には、フレームが、フレームの属するトラフィッククラスに基づいて、送信キュー０〜送信キューＮ−１の何れかに記憶される。例えば、上位レイヤのアプリケーションが、任意のタイミングで各送信キューに新しいフレームを書込む。
【００３２】
送信スケジューリング情報記憶部３４は、送信スケジューリング情報３４Ａを記憶する。送信スケジューリング情報３４Ａは、送信キューからのフレーム送信を許可するタイミングを、厳密に制御するために必要となる情報を含む。
【００３３】
なお、送信スケジューリング情報３４Ａは、あくまでも、送信キューからのフレーム送信を許可するタイミングを示すものであり、実際にフレームの送信が発生するか否かは、送信キューにフレームが書込まれているか否かによって定まる。すなわち、実際にフレームの送信が発生するか否かは、上位に位置するアプリケーションの動作等によって決定される。
【００３４】
具体的には、送信スケジューリング情報３４Ａは、１つ以上のエントリを含む。本実施の形態では、送信スケジューリング情報３４Ａが、複数のエントリを含む場合を、一例として説明する。
【００３５】
エントリは、１つ以上の送信キューの各々の送信可否状態と、送信可否状態の維持タイミングと、を規定したものである。例えば、エントリは、ＩＥＥＥ  ８０２．１Ｑｂｖ規格に規定されたゲートコントロールエントリに相当する。
【００３６】
送信可否状態は、送信可を示す有効（オープン）、または、送信不可を示す無効（クローズ）で表される。例えば、送信可否状態は、ＩＥＥＥ  ８０２．１Ｑｂｖ規格に規定されたゲートステートに相当する。
【００３７】
送信可否状態の維持タイミングは、対応する送信可否状態を維持するタイミングを示す。具体的には、維持タイミングは、対応する送信可否状態を維持する期間の開始時刻および終了時刻、または、対応する送信可否状態を維持する期間および該期間の開始時刻によって規定される、対応する送信可否状態を維持する期間は、ＩＥＥＥ  ８０２．１Ｑｂｖ規格に規定されたタイムインターバルに相当する。また、該期間の開始時刻は、ＩＥＥＥ  ８０２．１Ｑｂｖ規格に規定された、ゲートコントロール開始時刻に相当する。
【００３８】
本実施の形態では、送信スケジューリング情報３４Ａは、ＩＥＥＥ  ８０２．１Ｑｂｖ規格に規定された情報を含む場合を一例として説明する。すなわち、本実施の形態では、送信スケジューリング情報３４Ａが、ゲートコントロールリストと、ゲートコントロール開始時刻などの他のパラメータと、を含む形態を、一例として説明する。また、以下では、送信可否状態をゲートステートと称し、送信可否状態を維持する期間をタイムインターバルと称して説明する場合がある。
【００３９】
図２は、送信スケジューリング情報３４Ａのデータ構成の一例を示す模式図である。
【００４０】
本実施の形態では、送信スケジューリング情報３４Ａは、ゲートコントロールリスト３４Ｂと、その他のパラメータ３４Ｃと、を含む。
【００４１】
ゲートコントロールリスト３４Ｂは、複数のエントリ３４Ｄを含む。エントリ３４Ｄは、リストインデックスと、ゲートステートと、タイムインターバルと、を含む。リストインデックスは、エントリ３４Ｄのインデックスを示す情報である。図２のゲートコントロールリスト３４Ｂには、８つのエントリ３４Ｄ（エントリ３４Ｄ０〜エントリ３４Ｄ７）が登録されている場合を、一例として示した。
【００４２】
エントリ３４Ｄは、リストインデックスと、ゲートステートと、タイムインターバルと、を含む。送信可否状態を示すゲートステートは、上述したように、トラフィッククラスごとに割当てられた複数の送信キューの各々に対する、送信可否状態を示す。図２中、ゲートステートに示される“ｏ”は、送信可を示す有効（オープン）を示し、“Ｃ”は、送信不可を示す無効（クローズ）を示す。
【００４３】
具体的には、例えば、図２に示すリストインデックス“７”のエントリ３４Ｄ７のゲートステート“ＣＣＣＣＣＣＣｏ”は、送信フレーム記憶部３２における複数の送信キューの各々の送信可否状態（オープンまたはクローズ）を示している。上述したように、本実施の形態では、送信フレーム記憶部３２は、８個の送信キュー（送信キュー０〜送信キュー７）を含む場合を説明する。このため、リストインデックス“７”のエントリ３４Ｄ７のゲートステート“ＣＣＣＣＣＣＣｏ”は、送信キュー１〜送信キュー７が無効（クローズ）であり、送信キュー０が有効（オープン）であることを示す。そして、対応するインターバル“２５００ナノ秒”は、送信キュー０を有効とする期間が２５００ナノ秒であることを示す。
【００４４】
その他のパラメータ３４Ｃは、例えば、ゲートコントロール開始時刻、ゲートコントロール周期時間、ゲートコントロールリスト３４Ｂのエントリ数などを含む。ゲートコントロール周期時間は、ゲートコントロールリスト３４Ｂに示される１周期分の時間を示す。例えば、ゲートコントロール周期時間として、ゲートコントロールリスト３４Ｂに示されるタイムインターバルの合計値を設定してもよい。
【００４５】
図１に戻り説明を続ける。将来時刻記憶部３８は、将来時刻情報３８Ａを記憶する。送信可能時間記憶部３６は、送信可能時間情報３６Ａを記憶する。
【００４６】
図３は、将来時刻情報３８Ａおよび送信可能時間情報３６Ａの一例を示す模式図である。
【００４７】
将来時刻情報３８Ａは、将来時刻を示す情報である。
【００４８】
将来時刻は、次の送信開始予定時刻の候補となる時刻であって、現在時刻より将来の（未来の）時刻である。送信開始予定時刻とは、フレームの送信を開始する予定時刻であって、処理部３１による後述する処理によってスケジューリングされる（詳細後述）。次の送信開始予定時刻とは、後述するスケジューリング部２６が次にスケジューリングするフレームの、送信開始予定時刻の候補となる時刻である。
【００４９】
なお、現在時刻には、情報処理装置１０のローカルクロックを用いればよい。また、現在時刻には、情報処理装置１０と他の装置との装置間、または、ネットワーク内で同期している時刻を用いてもよい。
【００５０】
将来時刻は、次のフレームの送信開始予定時刻をスケジューリングする際に用いられる（詳細後述）。
【００５１】
なお、将来時刻情報３８Ａは、１つの将来時刻を示す。すなわち、本実施の形態における“将来時刻”は、将来時刻記憶部３８に記憶されている１つの将来時刻を示す。この将来時刻は、後述する処理部３１の処理によって、更新される（詳細後述）。
【００５２】
送信可能時間情報３６Ａは、送信キューごとの送信可能時間を示す情報である。詳細には、送信可能時間は、対応する送信キューからフレームを送信することの可能な残り時間を示す。送信可能時間は、送信キューごとに割当てられ、現在時刻や将来時刻の変化に連動する形で値が変化する。具体的には、各送信キューの送信可能時間は、後述する処理部３１の処理によって更新される（詳細後述）。
【００５３】
図１に戻り説明を続ける。次に、処理部３１について説明する。処理部３１は、先読部２０と、判定部２２と、指示部２４と、スケジューリング部２６と、を備える。
【００５４】
先読部２０は、送信スケジューリング情報３４Ａにおける、現在時刻より未来の維持タイミングに対応する、エントリ３４Ｄを先読みする。言い換えると、先読部２０は、現在時刻より未来のタイミングにおいて送信制御の対象となるエントリ３４Ｄを、先読みする。なお、先読みする、とは、現在より未来の時刻において送信制御の対象となるエントリ３４Ｄを、該未来の時刻より前に、事前に読み込むことを意味する。
【００５５】
本実施の形態では、先読部２０は、指示部２４から先読指示を受付けたときに、送信スケジューリング情報記憶部３４から次のエントリ３４Ｄを先読みする。
【００５６】
先読部２０は、先読みした次のエントリ３４Ｄに基づいて、後述するスケジューリング部２６が次にスケジューリングするフレームの送信開始予定時刻の候補となる将来時刻、および該将来時刻において送信キューに割当てられる送信可能時間、を更新する。
【００５７】
例えば、先読部２０は、先読みしたエントリ３４Ｄに含まれるゲートステートが有効（オープン）状態の送信キューに対して、先読みしたエントリ３４Ｄに含まれるタイムインターバルの値を送信可能時間として割り当てる。
【００５８】
なお、ゲートコントロールリスト３４Ｂに、同じ送信キューに対して送信可を示す有効（オープン）が複数のエントリ３４Ｄに連続して設定されている場合がある。この場合、先読部２０は、これらの複数のエントリ３４Ｄを先読みすることとなる。このため、この場合、先読部２０は、先読みした複数のエントリ３４Ｄの各々に含まれるタイムインターバルの合計値を当該送信キューの送信可能時間として割り当てればよい。
【００５９】
指示部２４は、先読指示を、先読部２０へ通知する。
【００６０】
例えば、指示部２４は、将来時刻に送信キューに割当てられている送信可能時間に基づいて、先読指示を先読部２０へ通知する。
【００６１】
詳細には、例えば、指示部２４は、送信可能時間記憶部３６に記憶されている将来時刻において、送信可能時間記憶部３６に記憶されている送信キューの各々に割当てられている送信可能時間の全てがゼロ“０”である場合、先読指示を先読部２０へ通知する。
【００６２】
また、指示部２４は、後述する判定部２２によって各送信キューのスケジューリングが不可能と判定された場合に、先読指示を先読部２０へ通知してもよい。
【００６３】
なお、指示部２４は、各送信キューの送信可能時間、および将来時刻と現在時刻との時間差に基づいて、先読指示を先読部２０へ通知してもよい。
【００６４】
詳細には、指示部２４は、将来時刻と現在時刻との時間差の閾値を予め定める。そして、指示部２４は、将来時刻と現在時刻との時間差が、該閾値以下である場合、先読指示を先読部２０へ通知する。
【００６５】
また、指示部２４は、将来時刻と現在時刻との時間差に基づいて、各送信キューの送信可能時間を更新し、更新後の送信可能時間に応じて、先読指示を先読部２０へ通知してもよい。
【００６６】
この場合、指示部２４は、将来時刻と現在時刻との時間差に基づいて、該将来時刻において送信キューに割当てられる送信可能時間を更新する。例えばスケジューリング可能なフレームが存在する場合、この更新処理は、後述するスケジューリング部２６によってスケジューリング処理が実行された後の、後処理として実行される。以下では、指示部２４による、この更新処理を、第２後処理と称して説明する場合がある。
【００６７】
例えば、指示部２４は、将来時刻記憶部３８に記憶されている将来時刻と、現在時刻との時間差が閾値以下であり、且つ、時間差が前回のイテレーションで計算した値より小さい場合、送信可能時間情報３６Ａにおける送信キューの各々に対応する送信可能時間を、減少させる。例えば、指示部２４は、送信可能時間情報３６Ａにおける送信可能時間から、予め定めた値を減算することで、送信可能時間を減少させる。減算に用いる値は、現在時刻が将来時刻に追いつく前に、各送信キューの送信可能時間をゼロにする条件を満たす値であればよい。具体的には、第２後処理時における、該減算に用いる値として、予め定めた固定値を用いてもよい。また、予め複数の固定値を設定した上で、前記時間差の値に応じて、該減算に用いる値を動的に選んでもよい。さらには、該減算に用いる値自体を動的に算出してもよい。一例として、前記閾値と前記時間差の差分に応じて、送信可能時間を減少させてもよい。
【００６８】
そして、指示部２４は、第２後処理によって減算された後の、送信可能時間情報３６Ａに示される各送信キューの送信可能時間の全てがゼロ“０”となった場合に、先読指示を先読部２０へ通知してもよい。
【００６９】
次に、判定部２２について説明する。
【００７０】
判定部２２は、送信キューに保持されている送信待機中のフレームの内、送信開始予定時刻をスケジューリング可能なフレームを判定する。
【００７１】
例えば、判定部２２は、送信キューに保持されている送信待機中のフレームの内、送信所要時間が、次の送信開始予定時刻の候補となる将来時刻において該送信キューに割当てられている送信可能時間より小さいフレームを、送信開始予定時刻をスケジューリング可能なフレームとして判定する。
【００７２】
送信所要時間とは、送信部２８から通信装置２へのフレームの送信に要する時間である。判定部２２は、送信所要時間の算出に用いるパラメータを送信フレーム記憶部３２から読取り、送信フレーム記憶部３２に記憶されているフレーム毎に、送信所要時間を算出すればよい。送信所要時間の算出に用いるパラメータは、例えば、フレームサイズ、再送信の有無、送信リトライ回数・間隔、などである。
【００７３】
なお、判定部２２は、送信待機中に代えて、送信キューに保持されている“送信可能な状態”にあるフレームの内、送信所要時間が将来時刻において送信キューに割当てられている送信可能時間より小さいフレームを、スケジューリング可能なフレームとして判定してもよい。例えば、特定の送信キューに対して何かしらのトラフィック・シェーピング・アルゴリズムを適用し、その結果として送信が許可されたフレームを“送信可能な状態”と見なしてもよい。また、前記トラフィック・シェーピング・アルゴリズムの具体例としては、例えばＩＥＥＥ  ８０２．１Ｑａｖ規格で定められているＣｒｅｄｉｔ  Ｂａｓｅｄ  Ｓｈａｐｅｒを用いてもよい。しかし、前記トラフィック・シェーピング・アルゴリズムは、ＩＥＥＥ  ８０２．１Ｑａｖに限定されない。
【００７４】
次に、スケジューリング部２６について説明する。
【００７５】
スケジューリング部２６は、先読部２０が先読みしたエントリ３４Ｄに基づいて、送信キューに保持されている送信待機中のフレームの、送信開始予定時刻をスケジューリングする。
【００７６】
具体的には、スケジューリング部２６は、判定部２２によってスケジューリング可能と判定されたフレームの、送信開始予定時刻をスケジューリングする。詳細には、スケジューリング部２６は、判定部２２によってスケジューリング可能と判定されたフレームを、送信フレーム記憶部３２から読込む。そして、スケジューリング部２６は、読込んだフレームの送信開始予定時刻をスケジューリングする。
【００７７】
本実施の形態では、スケジューリング部２６は、判定部２２によってスケジューリング可能と判定されたフレームから、スケジューリング対象のフレームを選択する。このとき、スケジューリング可能と判定されたフレームが複数存在する場合、スケジューリング部２６は、情報処理装置１０に設けられた送信部２８の数と同じ数のフレームを選択することができる。本実施の形態では、情報処理装置１０は、１つの送信部２８を備える形態を一例として説明する。このため、本実施の形態では、スケジューリング部２６は、判定部２２によってスケジューリング可能と判定されたフレームから、１つのフレームをスケジューリング対象として選択する。この選択の際に用いるアルゴリズムは任意でよい。選択アルゴリズムの具体例としては、例えば固定優先度のアルゴリズムやラウンドロビン方式のアルゴリズムを用いてもよい。しかし、これらに限定されるものではない。
【００７８】
そして、スケジューリング部２６は、選択したフレームに、送信開始予定時刻をスケジューリングする。
【００７９】
例えば、スケジューリング部２６は、将来時刻記憶部３８に記憶されている将来時刻を、選択したフレームの送信開始予定時刻としてスケジューリングする。すなわち、スケジューリング部２６は、先読みしたエントリ３４Ｄに基づいて先読部２０によって設定または更新され、または前回のスケジューリング処理後の第１後処理（詳細後述）によって更新された将来時刻を、選択したフレームの送信開始予定時刻としてスケジューリングする。
【００８０】
このように、スケジューリング部２６は、送信スケジューリング情報３４Ａによって定義された制約を満たす範囲で、各フレームの送信開始予定時刻をスケジューリングすることができる。
【００８１】
また、上述したように、スケジューリング部２６は、先読部２０によって先読みされたエントリ３４Ｄに基づいて、フレームの送信開始予定時刻をスケジューリングする。このため、スケジューリング部２６は、高精度な送信タイミング制御のための、送信開始予定時刻のスケジューリングを行うことができる。
【００８２】
スケジューリング部２６は、スケジューリング可能と判定されたフレームの送信開始予定時刻をスケジューリングすると、後処理として、第１後処理を実行する。
【００８３】
第１後処理は、スケジューリング後に、スケジューリングしたフレームの送信所要時間を用いて、次の送信開始予定時刻の候補となる将来時刻、および該将来時刻において送信キューの各々に割当てられる送信可能時間、を更新する処理である。
【００８４】
例えば、スケジューリング部２６は、将来時刻記憶部３８に記憶されている将来時刻に、送信開始予定時刻をスケジューリングしたフレームの送信所要時間を加算した時刻を、更新後の将来時刻として計算する。
【００８５】
また、例えば、スケジューリング部２６は、送信可能時間記憶部３６に記憶されている各送信キューに割当てられている送信可能時間から、送信開始予定時刻をスケジューリングしたフレームの送信所要時間を減算した時間を、更新後の送信可能時間として計算する。
【００８６】
そして、スケジューリング部２６は、送信可能時間記憶部３６および将来時刻記憶部３８の各々に記憶されている送信可能時間と将来時刻を、それぞれ、計算した更新後の送信可能時間と更新後の将来時刻に更新する。このようにして、スケジューリング部２６は、送信開始予定時刻のスケジューリング後に、第１後処理を実行する。
【００８７】
次に、送信装置１４について説明する。
【００８８】
送信装置１４は、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。送信装置１４は、送信部２８を含む。
【００８９】
送信部２８は、スケジューリング部２６によってスケジューリングされた送信開始予定時刻に基づいて、フレームの送信を開始する。本実施の形態では、送信部２８は、通信装置２へフレームを送信する。
【００９０】
送信部２８は、スケジューリング部２６によって送信開始予定時刻をスケジューリングされたフレームについて、送信開始条件を満たした場合に、フレームの送信を開始する。
【００９１】
送信開始条件は、例えば、現在時刻と送信開始予定時刻とが一致した場合や、現在時刻と送信開始予定時刻との時間差が所定の閾値を下回った場合や、現在時刻と送信開始予定時刻との時間差が所定の閾値以内であり、且つ、現在時刻が送信開始予定時刻を過ぎた場合などである。以下では、送信開始条件が、現在時刻と送信開始予定時刻とが一致した場合であることを、一例として説明する。
【００９２】
すなわち、本実施の形態では、送信部２８は、スケジューリング部２６によってフレームにスケジューリングされた送信開始予定時刻と、現在時刻と、が一致したときに、該フレームを通信装置２へ送信する。言い換えると、送信部２８は、送信開始予定時刻と現在時刻とが一致したときに、該送信開始予定時刻をスケジューリングされたフレームの送信を開始する。
【００９３】
なお、スケジューリング部２６および送信部２８は、フレームを一時的にバッファリングする領域を備えていてもよい。
【００９４】
このように、送信部２８は、スケジューリング部２６によってスケジューリングされた送信開始予定時刻に基づいて、該送信開始予定時刻をスケジューリングされたフレームの送信を開始する。このため、情報処理装置１０は、各フレームを、スケジューリングされた送信開始予定時刻に通信装置２へ送信することができる。すなわち、本実施の形態の情報処理装置１０は、リアルタイム通信が要求されるデータの送信タイミングを保証することができる。
【００９５】
次に、情報処理装置１０が実行する情報処理の手順の一例を説明する。
【００９６】
＜情報処理＞
図４は、本実施の形態の情報処理装置１０が実行する、情報処理の手順の一例を示すフローチャートである。情報処理装置１０は、処理部３１による先読処理・スケジューリング処理（ステップＳ１００）と、送信部２８による送信処理（ステップＳ１０２）と、を同時に並列に実行する。
【００９７】
＜先読処理・スケジューリング処理＞
図５は、ステップＳ１００（図４参照）の処理の詳細フローチャートである。図５に示すように、まず、先読部２０が初期化処理を実行する（ステップＳ２００）。ステップＳ２００では、先読部２０は、初期値として用いる、送信可能時間および将来時刻を計算する。ステップ２００の初期化処理の詳細フローチャートは、後述する。
【００９８】
次に、先読部２０は、先読処理を実行する（ステップＳ２０２）。ステップＳ２０２の処理によって、先読部２０は、次のエントリ３４Ｄの先読みと、送信可能時間および将来時刻の更新を行う。ステップＳ２０２の先読処理の詳細フローチャートは、後述する。
【００９９】
次に、ステップＳ２０２の先読処理時に、指示部２４から先読指示が通知されたか否かを判定する（ステップＳ２０４）。先読指示が通知されたと判定した場合（ステップＳ２０４：Ｙｅｓ）、ステップＳ２０２へ戻る。
【０１００】
ステップＳ２０４で肯定判断（ステップＳ２０４：Ｙｅｓ）する場合とは、例えば、ゲートコントロールリスト３４Ｂに、同じ送信キューに対して送信可を示す有効（オープン）が複数のエントリ３４Ｄに連続して設定されている場合である。この場合、先読部２０は、ステップＳ２０２の先読処理を繰返すことで、これらの複数のエントリ３４Ｄを先読みすることとなる。
【０１０１】
一方、先読指示が通知されなかったと判定した場合（ステップＳ２０４：Ｎｏ）、ステップＳ２０６へ進む。ステップＳ２０６では、判定部２２が、判定処理を実行する（ステップＳ２０６）。ステップＳ２０６の判定処理によって、判定部２２は、スケジューリング可能なフレームが有るか否かを判定する。ステップＳ２０６の判定処理の詳細フローチャートは、後述する。
【０１０２】
ステップＳ２０６の判定処理によって、スケジューリング可能なフレームが無いと判定された場合（ステップＳ２０８：Ｎｏ）、後述するステップＳ２１４へ進む。一方、ステップＳ２０６の判定処理によって、スケジューリング可能なフレームが有ると判定された場合（ステップＳ２０８：Ｙｅｓ）、ステップＳ２１０へ進む。
【０１０３】
ステップＳ２１０では、スケジューリング部２６が、スケジューリング処理を実行する（ステップＳ２１０）。ステップＳ２１０の処理によって、スケジューリング部２６は、フレームの送信開始予定時刻をスケジューリングする。ステップＳ２１０のスケジューリング処理の詳細フローチャートは、後述する。
【０１０４】
次に、スケジューリング部２６は、第１後処理を実行する（ステップＳ２１２）。ステップＳ２１２の処理によって、スケジューリング部２６は、ステップＳ２１０でスケジューリングしたフレームの送信所要時間を用いて、次の送信開始予定時刻の候補となる将来時刻、および該将来時刻において送信キューの各々に割当てられる送信可能時間、を更新する。ステップＳ２１２の第１後処理の詳細フローチャートは、後述する。そして、ステップＳ２１４へ進む。
【０１０５】
ステップＳ２１４では、指示部２４が、第２後処理を実行する（ステップＳ２１４）。ステップＳ２１４の処理によって、指示部２４は、将来時刻と現在時刻との時間差に基づいて、該将来時刻において送信キューに割当てられる送信可能時間を更新する。ステップＳ２１４の第２後処理の詳細フローチャートは後述する。
【０１０６】
そして、ステップＳ２１４の処理によって、図５のフローチャートにおける、先読み処理・スケジューリング処理に係るループ１回分の処理が終了する。そして、上記ステップＳ２０２へ戻り、情報処理装置１０は、上記処理を繰り返し実行する。この処理により、情報処理装置１０は、継続的に、先読処理およびスケジューリング処理を実行することができる。
【０１０７】
＜初期化処理＞
図６は、ステップＳ２００（図５参照）の初期化処理の詳細フローチャートである。また、図７は、初期化処理の流れを示す模式図である。
【０１０８】
まず、先読部２０が、送信スケジューリング情報記憶部３４から送信スケジューリング情報３４Ａを読込む（ステップＳ３００）。詳細には、先読部２０は、ゲートコントロールリスト３４Ｂと、その他のパラメータ３４Ｃ（図２参照）と、を含む送信スケジューリング情報３４Ａを読込む。
【０１０９】
次に、先読部２０は、ステップＳ３００で読込んだ送信スケジューリング情報３４Ａを用いて、送信可能時間および将来時刻の初期値を決定する（ステップＳ３０２）。
【０１１０】
例えば、先読部２０は、その他のパラメータ３４Ｃに含まれるゲートコントロール開始時刻（図２参照）を、将来時刻の初期値として設定する。
【０１１１】
また、例えば、先読部２０は、エントリ３４Ｄに含まれる、各送信キューのゲートステートおよびタイムインターバルに基づいて、該将来時刻において各送信キューに割当てる送信可能時間を設定する。
【０１１２】
具体的には、例えば、先読部２０は、ゲートコントロールリスト３４Ｂにおける、最初に送信制御するエントリ３４Ｄ（例えば、エントリ３４Ｄ０）を特定する（図２も参照）。そして、先読部２０は、該エントリ３４Ｄ０のゲートステートに示される、有効（オープン）の設定されている送信キュー（例えば、送信キュー７）に対して、該エントリ３４Ｄ０に示されるタイムインターバル（例えば、２５００ナノ秒）を、送信可能時間の初期値として決定する。
【０１１３】
また、例えば、先読部２０は、最初に送信制御するエントリ３４Ｄのゲートステートに示される、有効（オープン）の設定されている送信キュー以外の送信キュー（例えば、送信キュー６〜送信キュー０）に対して、ゼロ“０”を、送信可能時間の初期値として決定する。
【０１１４】
次に、先読部２０は、ステップＳ３０２で決定した、送信可能時間および将来時刻の初期値を、それぞれ、送信可能時間情報３６Ａおよび将来時刻情報３８Ａに書込む（ステップＳ３０４）。そして、本ルーチンを終了する。
【０１１５】
＜先読処理＞
図８は、ステップＳ２０２（図５参照）の先読処理の詳細フローチャートである。また、図９は、先読処理の流れを示す模式図である。
【０１１６】
まず、指示部２４は、送信可能時間記憶部３６から各送信キューに割当てられている送信可能時間を読込む（ステップＳ４００）。
【０１１７】
次に、指示部２４は、ステップＳ４００で読込んだ送信可能時間がゼロ“０”であるか否かを判断する（ステップＳ４０２）。すなわち、指示部２４は、各送信キューについて、フレームを送信することの可能な残り時間がゼロであるか否かを判断する。残り時間がゼロであるとは、残り時間が無い事を示す。
【０１１８】
何れかの送信キューについて、送信可能時間が残っていると判断した場合（ステップＳ４０２：Ｎｏ）、本ルーチンを終了する。一方、すべての送信キューについて、送信可能時間がゼロであると判断した場合（ステップＳ４０２：Ｙｅｓ）、ステップＳ４０４へ進む。
【０１１９】
なお、本実施の形態では、有効（オープン）の設定がなされている送信キュー以外の送信キューに対しては、送信可能時間としてゼロ“０”が設定されている場合を説明する。すなわち、無効（クローズ）の設定がなされている送信キューの送信可能時間はゼロ“０”となる。このため、指示部２４は、送信可能時間情報３６Ａに登録されている全ての送信キューの各々に割当てられている送信可能時間が、全てゼロ“０”と判断した場合、ステップＳ４０２で肯定判断（ステップＳ４０２：Ｙｅｓ）をする。
【０１２０】
ステップＳ４０４では、指示部２４が、先読指示を先読部２０へ通知する（ステップＳ４０４）。すなわち、指示部２４は、送信可能時間記憶部３６に記憶されている将来時刻において、送信キューに送信可能時間が残っていない場合に、先読指示を通知する。
【０１２１】
先読指示を受付けた先読部２０は、送信スケジューリング情報記憶部３４から次のエントリ３４Ｄを先読みする（ステップＳ４０６）。次のエントリ３４Ｄとは、ゲートコントロールリスト３４Ｂにおける、直前に処理したエントリ３４Ｄの次のエントリ３４Ｄである。先読処理の順序は、例えば、リストインデックスに示される値によって表される。なお、初期状態では、先読部２０は、リストインデックスに示される最初のエントリ３４Ｄ（例えば、図２のエントリ３４Ｄ０）を、先読みすればよい。
【０１２２】
次に、先読部２０は、ステップＳ４０４で先読みした次のエントリ３４Ｄに基づいて、次にスケジューリングするフレームの送信開始予定時刻の候補となる将来時刻、および該将来時刻において送信キューに割当てられる送信可能時間、を計算する（ステップＳ４０８）。
【０１２３】
例えば、先読部２０は、ステップＳ４０６で先読みしたエントリ３４Ｄの開始時刻を、将来時刻記憶部３８に記憶する更新後の将来時刻として計算してもよい。
【０１２４】
また、例えば、先読部２０は、ステップＳ４０６で先読みしたエントリ３４Ｄに含まれるタイムインターバルの値を、該エントリ３４Ｄのゲートステートに示される、有効（オープン）の設定されている送信キューに割当てる送信可能時間として計算する。なお、先読部２０が、複数のエントリ３４Ｄを先読みした場合、先読みした複数のエントリ３４Ｄの各々に含まれるタイムインターバルの合計値を、送信可能時間として計算すればよい。
【０１２５】
次に、先読部２０は、ステップＳ４０８で計算した送信可能時間および将来時刻の各々を、それぞれ、送信可能時間情報３６Ａおよび将来時刻情報３８Ａに書込む。この書込みによって、先読部２０は、送信可能時間情報３６Ａおよび将来時刻情報３８Ａにおける送信可能時間および将来時刻を更新する（ステップＳ４１０）。
【０１２６】
詳細には、先読部２０は、ステップＳ４０８で計算した将来時刻を、将来時刻記憶部３８の将来時刻情報３８Ａに上書きすることで、将来時刻を更新する。また、先読部２０は、ステップＳ４０８で計算した送信可能時間を、該送信可能時間に対応する送信キューに割当てる。そして、本ルーチンを終了する。
【０１２７】
＜判定処理＞
図１０は、ステップＳ２０６（図５参照）の判定処理の詳細フローチャートである。また、図１１は、判定処理の流れを示す模式図である。
【０１２８】
まず、判定部２２は、各送信キューのステート情報を、送信フレーム記憶部３２から読込む（ステップＳ５００）。
【０１２９】
ステート情報は、送信キューに保持されている、送信待機中のフレームの有無や、各送信キューに保持されているフレームの送信所要時間の算出、に用いるパラメータである。ステート情報は、例えば、フレームサイズ、再送信の有無、送信リトライ回数・間隔、などである。
【０１３０】
なお、判定部２２は、送信開始予定時刻をスケジューリング可能なフレームが複数存在する場合に備えて、各送信キューの優先度判断に用いる情報を更に含む、ステート情報を読込んでもよい。各送信キューの優先度判断に用いる情報は、例えば、予め定めた固定値であってもよいし、動的に変化する値であってもよい。具体的には、各送信キューの優先度判断に用いる情報は、ＩＥＥＥ  ８０２．１Ｑｂｖ規格に示される各送信キューのトラフィッククラスに応じた値であってもよい。
【０１３１】
次に、判定部２２は、送信可能時間記憶部３６から、各送信キューに割当てられた送信可能時間を読込む（ステップＳ５０２）。すなわち、判定部２２は、将来時刻記憶部３８に記憶されている将来時刻において、各送信キューに割当てられている送信可能時間を、送信可能時間記憶部３６から読込む。
【０１３２】
次に、判定部２２は、ステップＳ５００で読込んだステート情報を用いて、各送信キューに保持されているフレームの各々について、送信所要時間を計算する（ステップＳ５０４）。
【０１３３】
次に、判定部２２は、送信キューに保持されている送信待機中のフレームの各々について、送信開始予定時刻をスケジューリング可能か否かを判定する（ステップＳ５０６）。例えば、判定部２２は、送信キューに保持されている送信待機中のフレームの内、ステップＳ５０４で計算した送信所要時間が、ステップＳ５０２で読込んだ送信可能時間より小さいフレームを、送信開始予定時刻をスケジューリング可能なフレームとして判定する。すなわち、送信所要時間が送信キューに割当てられている送信可能時間以下である場合、判定部２２は、スケジューリング可能なフレームとして判定する。
【０１３４】
次に、判定部２２は、スケジューリング不可能なフレームが有るか否かを判断する（ステップＳ５０８）。判定部２２は、ステップＳ５０６の判定結果に、スケジューリング不可能と判定したフレームが含まれるか否かを判断することで、ステップＳ５０８の判断を行う。
【０１３５】
判定部２２が、スケジューリング不可能なフレームが無いと判断した場合（ステップＳ５０８：Ｎｏ）、ステップＳ５１２へ進む。
【０１３６】
一方、判定部２２が、スケジューリング不可能なフレームが有ると判断した場合（ステップＳ５０８：Ｙｅｓ）、ステップＳ５１０へ進む。ステップＳ５１０では、判定部２２は、送信可能時間情報３６Ａにおける（図３参照）、スケジューリング不可能と判定したフレームを保持する送信キューに割当てられている送信可能時間を、ゼロ“０”に変更する（ステップＳ５１０）。
【０１３７】
すなわち、ステップＳ５１０の処理は、送信所要時間が送信キューに割当てられている送信可能時間を超えている場合に実行される。このため、判定部２２は、送信可能時間内にフレームの送信が完了しないフレームに対して、誤った送信開始予定時刻をスケジューリングすることを抑制することができる。このため、本実施の形態の情報処理装置１０は、例えば、ＩＥＥＥ  ８０２．１Ｑｂｖ規格において定義されているガードバンドの制約を満たした送信制御を行うことができる。
【０１３８】
次に、判定部２２は、スケジューリング可能なフレームが有るか否かを判断する（ステップＳ５１２）。判定部２２は、ステップＳ５０６の判定結果に、スケジューリング可能と判定したフレームが含まれるか否かを判断することで、ステップＳ５１２の判断を行う。
【０１３９】
スケジューリング可能なフレームが無いと判断した場合（ステップＳ５１２：Ｎｏ）、本ルーチンを終了する。一方、スケジューリング可能なフレームが有ると判断した場合（ステップＳ５１２：Ｙｅｓ）、ステップＳ５１４へ進む。
【０１４０】
ステップＳ５１４では、判定部２２は、スケジューリング可能と判定したフレームを、スケジューリング部２６へ通知する（ステップＳ５１４）。そして、本ルーチンを終了する。
【０１４１】
＜スケジューリング処理＞
図１２は、ステップＳ２１０（図５参照）のスケジューリング処理の詳細フローチャートである。また、図１３は、スケジューリング処理の流れを示す模式図である。
【０１４２】
スケジューリング部２６は、判定部２２からスケジューリング可能なフレームの通知を受付ける（ステップＳ６００）。
【０１４３】
具体的には、スケジューリング部２６は、スケジューリング可能なフレームを保持している送信キュー、フレームが保持されているアドレス、フレームサイズ、等の情報を、判定部２２から受付ける。このとき、スケジューリング部２６は、判定部２２によって計算されたフレームの送信所要時間を更に受付けてもよい。また、スケジューリング可能なフレームが複数ある場合、スケジューリング部２６は、複数のフレームの各々の通知を、判定部２２から受付けてもよい。また、スケジューリング部２６は、複数のフレームの各々を保持する送信キューの優先度に関する情報を、更に、判定部２２から受付けてもよい。
【０１４４】
次に、スケジューリング部２６は、ステップＳ６００で受付けた、スケジューリング可能なフレームを、送信フレーム記憶部３２から読込む（ステップＳ６０２）。なお、スケジューリング可能なフレームが複数通知される場合がある。この場合、スケジューリング部２６は、読込むフレームを選択してもよいし、判定部２２から受付けた指示に従ってフレームを選択してもよい。
【０１４５】
次に、スケジューリング部２６は、将来時刻記憶部３８から将来時刻を読込む（ステップＳ６０４）。
【０１４６】
次に、スケジューリング部２６は、ステップＳ６０４で読込んだ将来時刻に基づいて、ステップＳ６０２で読込んだフレームの送信開始予定時刻をスケジューリングする（ステップＳ６０６）。上述したように、例えば、スケジューリング部２６は、ステップＳ６０４で読込んだ将来時刻を、ステップＳ６０２で読込んだフレームの送信開始予定時刻としてスケジューリングする。そして、本ルーチンを終了する。
【０１４７】
＜第１後処理＞
図１４は、ステップＳ２１２（図５参照）の第１後処理の詳細フローチャートである。また、図１５は、第１後処理の流れを示す模式図である。
【０１４８】
まず、スケジューリング部２６は、送信可能時間記憶部３６に保持されている各送信キューに割当てられている送信可能時間の減少処理を実行する（ステップＳ７００）。
【０１４９】
例えば、スケジューリング部２６は、送信可能時間記憶部３６に記憶されている各送信キューに割当てられている送信可能時間から、直前のスケジューリング処理によって送信開始予定時刻をスケジューリングしたフレームの送信所要時間を、減算した時間を、更新後の送信可能時間として計算する。
【０１５０】
なお、更新前の送信可能時間から減算する値は、送信所要時間に限定されない。例えば、スケジューリング部２６は、送信所要時間に応じた値を、減算する値として用いてもよい。また、例えば、スケジューリング部２６は、送信部２８および物理レイヤのプロトコル処理等に起因するオーバーヘッドに基づいて、減算する値を調整してもよい。オーバーヘッドは、例えば、イーサネットフレームを送信する際のプリアンブルや、インターフレームギャップなどである。また、スケジューリング部２６は、安全マージンを設ける目的で、減少する値を調整してもよい。
【０１５１】
次に、スケジューリング部２６は、更新後の将来時刻を計算する（ステップＳ７０２）。すなわち、スケジューリング部２６は、将来時刻記憶部３８に記憶されている将来時刻を、更に将来に向かって先に進めた時刻に更新するために、更新後の将来時刻を計算する。
【０１５２】
例えば、スケジューリング部２６は、将来時刻記憶部３８に記憶されている将来時刻に、直前のスケジューリング処理によってスケジューリングしたフレームの送信所要時間を加算した時刻を、更新後の将来時刻として計算する。
【０１５３】
なお、更新前の将来時刻に加算する値は、送信所要時間に限定されない。例えば、スケジューリング部２６は、送信所要時間に応じた値を、加算する値として用いてもよい。また、例えば、スケジューリング部２６は、直前のスケジューリング処理によってスケジューリングしたフレームの送信開始予定時刻に、該フレームの送信所要時間を加算した時刻を、更新後の将来時刻として計算してもよい。
【０１５４】
また、例えば、スケジューリング部２６は、送信部２８および物理レイヤのプロトコル処理等に起因するオーバーヘッドに基づいて、更新後の将来時刻を調整してもよい。
【０１５５】
そして、スケジューリング部２６は、ステップＳ７００で算出した送信可能時間、および、ステップＳ７０２で算出した将来時刻を、各々、送信可能時間情報３６Ａおよび将来時刻情報３８Ａへ書込む。この処理によって、スケジューリング部２６は、送信可能時間および将来時刻を更新する（ステップＳ７０４）。
【０１５６】
次に、スケジューリング部２６は、直前のスケジューリング処理によって、送信開始予定時間をスケジューリングしたフレームと、該フレームにスケジューリングした送信開始予定時刻と、を、送信部２８へ通知する（ステップＳ７０６）。そして、本ルーチンを終了する。
【０１５７】
＜第２後処理＞
図１６は、ステップＳ２１４（図５参照）の第２後処理の詳細フローチャートである。また、図１７は、第２後処理の流れを示す模式図である。
【０１５８】
まず、指示部２４は、将来時刻記憶部３８から将来時刻を読込む（ステップＳ８００）。次に、指示部２４は、ステップＳ８００で読込んだ将来時刻と、現在時刻と、の時間差を計算する（ステップＳ８０２）。
【０１５９】
次に、指示部２４は、ステップＳ８０２で計算した時間差が閾値以下であるか否かを判断する（ステップＳ８０４）。例えば、この閾値には、予め定められた固定値を用いてもよいし、実行時に動的に変化する値を用いてもよい。また、複数の閾値を設定してもよい。何れの閾値を設定する場合であっても、現在時刻が将来時刻に迫るほど時間差が減少し、現在時刻が一定のラインを越えた時点で、時間差が閾値以下となる。
【０１６０】
時間差が閾値より大きい場合（ステップＳ８０４：Ｎｏ）、本ルーチンを終了する。一方、時間差が閾値以下である場合（ステップＳ８０４：Ｙｅｓ）、ステップＳ８０６へ進む。
【０１６１】
ステップＳ８０６では、ステップＳ８０２で計算した時間差が、前回のイテレーションで計算した値より小さいか否かを判断する。すなわち、時間差が縮まっているか否かを判断する（ステップＳ８０６）。縮まっていない場合（ステップＳ８０６：Ｎｏ）、本ルーチンを終了する。一方、縮まっている場合（ステップＳ８０６：Ｙｅｓ）、ステップＳ８０８へ進む。
【０１６２】
ステップＳ８０８では、指示部２４は、送信可能時間情報３６Ａにおける送信キューの各々に対応する送信可能時間を、減少させる（ステップＳ８０８）。そして、本ルーチンを終了する。
【０１６３】
ここで、上述したように、将来時刻は、新しいフレームのスケジューリング、または、送信スケジューリング情報３４Ａにおけるエントリ３４Ｄの先読みが行われた際に、適切な値に更新される。このため、スケジューリングや先読処理が行われない状態が継続すると、将来時刻の更新はストップしてしまう。一方、現在時刻は、時間の経過に応じて、徐々に将来時刻に近づいていく。これにより、現在時刻と将来時刻との時間差が、ステップＳ８０４の判断に用いる閾値以下となる場合がある。そこで、上述したように、本実施の形態では指示部２４は、送信可能時間情報３６Ａに登録されている各送信キューの送信可能時間を強制的に減少させる（上記ステップＳ８０８参照）。
【０１６４】
この処理により、判定部２２によってスケジューリング可能なフレームが１つも存在しないと判定された場合であっても、現在時刻が将来時刻に追いつく前に、各送信キューの送信可能時間を減少させることができる。
【０１６５】
上述したように、各送信キューの送信可能時間がゼロ“０”となると、指示部２４から先読指示を受付けた先読部２０が次のエントリ３４Ｄの先読みを行い、将来時刻記憶部３８に記憶されている将来時刻を更新する。このため、将来時刻と現在時刻との間に、常に一定のマージンを確保することが可能となる。
【０１６６】
＜送信処理＞
図１８は、ステップＳ１０２（図４参照）の送信処理の詳細フローチャートである。また、図１９は、送信処理の流れを示す模式図である。
【０１６７】
送信部２８は、スケジューリング済のフレームが有るか否かを判断する（ステップＳ９００）。例えば、送信部２８は、スケジューリング部２６からスケジューリングを完了したフレームと送信開始予定時刻の通知を受付けたか否かを判断することで、ステップＳ９００の判断を行う。また、送信部２８は、スケジューリング部２６から受付けたフレームおよび送信開始予定時刻をバッファリングしておいてもよい。
【０１６８】
スケジューリング済のフレームが無い場合（ステップＳ９００：Ｎｏ）、本ルーチンを終了する。一方、スケジューリング済のフレームが有る場合（ステップＳ９００：Ｙｅｓ）、ステップＳ９０２へ進む。
【０１６９】
ステップＳ９０２では、送信部２８は、現在時刻と送信開始予定時刻とを比較する（ステップＳ９０２）。送信部２８で用いる現在時刻は、ホスト１２で用いる現在時刻と同じ時刻であるものとする。そして、送信部２８は、ステップＳ９０２の比較結果が、送信開始条件を満たすか否かを判断する（ステップＳ９０４）。送信開始条件は、上述したため、ここでは説明を省略する。例えば、送信部２８は、現在時刻と送信開始予定時刻とが一致したか否かを判断する。
【０１７０】
送信開始条件を満たす場合（ステップＳ９０４：Ｙｅｓ）、送信部２８は、該送信開始予定時刻をスケジューリングされたフレームについて、該フレームの送信を開始する（ステップＳ９０６）。
【０１７１】
例えば、送信部２８は、現在時刻が送信開始予定時刻に一致したときに、フレームの送信を開始する。また、送信部２８は、現在時刻が送信開始予定時刻を過ぎたときに、フレームの送信を開始してもよい。また、送信部２８は、現在時刻が送信開始予定時刻を過ぎており、且つ、現在時刻と送信開始予定時刻との時間差が所定値以下の場合に、フレームの送信を開始してもよい。
【０１７２】
また、送信部２８は、現在時刻が送信開始予定時刻を過ぎており、且つ、現在時刻と送信開始予定時刻との時間差が所定値以上の場合に、フレームの送信をキャンセルしてもよい。この場合、送信部２８は、送信をキャンセルしたフレームについて、何らかの例外処理を実行してもよい。具体的には、送信部２８は、送信をキャンセルしたフレームを破棄してもよいし、該フレームを送信フレーム記憶部３２の送信キューに入れ直してもよい。また、この場合、送信部２８は、送信をキャンセルしたフレームに関する情報を、上位のアプリケーションに通知してもよい。
【０１７３】
そして、本ルーチンを終了する。なお、送信装置１４は、図１８に示す送信処理を繰り返し実行する。すなわち、ステップＳ９００で否定判断（ステップＳ９００：Ｎｏ）、ステップＳ９０４で否定判断（ステップＳ９０４：Ｎｏ）、またはステップＳ９０６の処理終了後には、再度、ステップＳ９００へ戻り、ステップＳ９００〜ステップＳ９０６の処理を繰返し実行する。このため、送信装置１４は、継続的に、送信処理を繰り返し実行することができる。
【０１７４】
以上説明したように、本実施の形態の情報処理装置１０は、先読部２０と、スケジューリング部２６と、を備える。先読部２０は、１つ以上の送信キューの各々の送信可否状態（ゲートステート）と送信可否状態の維持タイミングとを規定した１つ以上のエントリ３４Ｄを含む送信スケジューリング情報３４Ａにおける、現在時刻より未来の維持タイミングに対応するエントリ３４Ｄを、先読みする。スケジューリング部２６は、先読みしたエントリ３４Ｄに基づいて、送信キューに保持されている送信待機中のフレームの、送信開始予定時刻をスケジューリングする。
【０１７５】
このように、本実施の形態の情報処理装置１０では、スケジューリング部２６が、送信スケジューリング情報３４Ａにおける、先読部２０によって先読みされたエントリ３４Ｄに基づいて、フレームの送信開始予定時刻をスケジューリングする。
【０１７６】
従って、本実施の形態の情報処理装置１０では、高精度な送信タイミング制御のためのスケジューリングが可能となる。
【０１７７】
また、送信部２８は、スケジューリング部２６によってスケジューリングされた送信開始予定時刻に基づいて、フレームの送信を開始する。このため、本実施の形態の情報処理装置１０は、上記効果に加えて、送信スケジューリング情報３４Ａに基づいた厳密な送信制御を実現することができる。すなわち、本実施の形態の情報処理装置１０は、上記効果に加えて、リアルタイム通信を要求されるデータの、送信タイミングを保証することが可能となる。
【０１７８】
また、本実施の形態の情報処理装置１０では、処理部３１の各機能（先読部２０、判定部２２、指示部２４、スケジューリング部２６）の少なくとも一部を、ソフトウェアで実現することができる。
【０１７９】
このため、本実施の形態の情報処理装置１０では、処理部３１の全ての機能をハードウェアで実現する場合に比べて、改良や変更等に柔軟に対応可能な、情報処理装置１０を提供することができる。また、本実施の形態の情報処理装置１０では、複雑なスケジューリング処理を実現することができ、設計や実装の難易度の低下や、必要なハードウェアリソースの削減を図ることができる。また、本実施の形態の情報処理装置１０では、任意のトラフィック・シェーピング・アルゴリズム（例えば、ＩＥＥＥ  ８０２．１ＱａｖのＣｒｅｄｉｔ  Ｂａｓｅｄ  Ｓｈａｐｅｒ）と、ＩＥＥＥ  ８０２．１Ｑｂｖ規格のゲートコントロールによる送信制御と、を組み合わせることが可能となる。
【０１８０】
また、本実施の形態の情報処理装置１０では、先読部２０がエントリ３４Ｄの先読みを行い、スケジューリング部２６がフレームの送信予定時刻をスケジューリングし、送信部２８がフレームを送信する。このため、本実施の形態の情報処理装置１０では、エントリ３４Ｄを先読みするタイミングと、送信開始予定時刻をスケジューリングするタイミングと、フレームを実際に送信するタイミングと、の各々を明確に分離し、個別に実装することができる。このため、本実施の形態の情報処理装置１０は、実装時の柔軟性の確保と、厳密な送信タイミング制御と、の両立を図ることができる。
【０１８１】
また、各送信キューを、ホスト１２に設けられた送信フレーム記憶部３２に保持することで、各送信キューのサイズや送信キューの数を、必要に応じて柔軟に変更することが可能となる。
【０１８２】
また、本実施の形態の情報処理装置１０では、送信部２８の機能をハードウェアで実現することができる。このため、本実施の形態の情報処理装置１０では、送信部２８をソフトウェアで実現する場合に比べて、より高精度に送信タイミングを制御することができる。
【０１８３】
＜具体例＞
次に、本実施の形態の情報処理装置１０が実行する情報処理について、具体的な例を挙げて説明する。なお、本具体例では、送信スケジューリング情報として、ＩＥＥＥ  ８０２．１Ｑｂｖ規格で定められているゲートコントロールリストを例に取り説明するが、本発明は、これに限定されるものではない。また同様に、本具体例では、ゲートコントロールリストの一例としてゲートコントロールリスト３４Ｂを用いて説明するが、本発明はこれに限定されない。
【０１８４】
―送信スケジューリング情報―
まず、送信スケジューリング情報３４Ａの一例を説明する。送信スケジューリング情報３４Ａは、例えば、図２に示したものである。
【０１８５】
図２を用いて上記で説明したように、図２に示す例では、送信スケジューリング情報３４Ａは、ゲートコントロールリスト３４Ｂおよびその他のパラメータ３４Ｃを含む。
【０１８６】
図２に示す例では、送信スケジューリング情報３４Ａは、８つのエントリ３４Ｄ（エントリ３４Ｄ０〜エントリ３４Ｄ７）から構成されており、各エントリ３４Ｄには、各々、０〜７のリストインデックスが付与されている。上述したように、ゲートステートに示される“ｏ”は、送信可を示す有効（オープン）を示し、“Ｃ”は、送信不可を示す無効（クローズ）を示す。
【０１８７】
例えば、図２に示すリストインデックス“７”のエントリ３４Ｄ７のゲートステート“ＣＣＣＣＣＣＣｏ”は、送信フレーム記憶部３２における複数の送信キューの各々の送信可否状態（オープンまたはクローズ）を示している。上述したように、本実施の形態では、送信フレーム記憶部３２は、８個の送信キュー（送信キュー０〜送信キュー７）を含む場合を説明する。このため、リストインデックス“７”のエントリ３４Ｄ７のゲートステート“ＣＣＣＣＣＣＣｏ”は、送信キュー１〜送信キュー７が無効（クローズ）であり、送信キュー０が有効（オープン）であることを示す。
【０１８８】
すなわち、この場合、送信キュー０にのみ、送信許可が与えられていることを意味する。
【０１８９】
なお、図２に示す例では、各エントリ３４Ｄのゲートステートは、１つの送信キューのみを有効（オープン：ｏ）とした例を示した。しかし、より一般的なケースでは、各エントリ３４Ｄのゲートステートは、複数の送信キューについて、有効（オープン：ｏ）としたものであってもよい。
【０１９０】
また、図２に示す例では、複数のエントリ３４Ｄに含まれるタイムインターバルが、全て同じ値（２５００ナノ秒）に設定されている場合を示した。しかし、より一般的なケースでは、複数のエントリ３４Ｄの間で、互いに異なる値のタイムインターバルが設定されていてもよい。また、図２には、一例として、ゲートコントロールリスト３４Ｂが、８個のエントリ３４Ｄを含む場合を示した。しかし、ゲートコントロールリスト３４Ｂに含まれるエントリ３４Ｄの数は、８個に限定されない。
【０１９１】
また、図２には、ＩＥＥＥ  ８０２．１Ｑｂｖ規格に従い、８個の送信キューを想定した場合を示した。しかし、任意の数の送信キューを想定してもよい。
【０１９２】
―ゲートステートの周期性―
次に、ゲートステートの周期性について説明する。図２０および図２１は、ゲートステートの典型的な周期性の例を示す図である。ゲートステートの周期性は、送信スケジューリング情報３４Ａに基づいて定義される。例えば、図２０は、図２に示す送信スケジューリング情報３４Ａに基づいて定義されており、各送信キューの第１周期目および第２周期目のゲートステートの例を示す。各周期の開始時刻は、図２の送信スケジューリング情報３４Ａに含まれる、ゲートコントロール開始時刻（２０１７年１０月１６日１２時００分００秒）、および、ゲートコントロール周期時間（２０マイクロ秒）によって求めることができる。
【０１９３】
また、ｎ周期目の開始時刻は、下記式（１）で表すことができる。
【０１９４】
ｎ周期目の開始時刻＝ゲートコントロール開始時刻＋（ｎ−１）×ゲートコントロール周期時間      ・・・式（１）
【０１９５】
なお、式（１）中、ｎは、１以上の整数である。
【０１９６】
図２０の例では、第１周期目の開始時刻は、ゲートコントロール開始時刻として指定されている２０１７年１０月１６日１２時００分００秒となる。また、第２周期目の開始時刻は、ゲートコントロール開始時刻から２０マイクロ秒後の１２時００分００．００００２００００秒となる。
【０１９７】
図２１は、各送信キューの第３周期目および第４周期目のゲートステートの例を示す。第３周期目の開始時刻は、ゲートコントロール開始時刻から４０マイクロ秒後の１２時００分００．００００４００００秒となる。また、第４周期目の開始時刻は、ゲートコントロール開始時刻から６０マイクロ秒後の１２時００分００．００００６００００秒となる。
【０１９８】
各周期の送信処理が開始されると、ゲートコントロールリスト３４Ｂのエントリ３４Ｄに設定された順番に基づき、各送信キューのゲートステートが定まる。図２０の例では第１周期の開始時刻（１２時００分００秒）から２５００ナノ秒間の間は、各送信キューの送信可否状態は、リストインデックス“０”のゲートステート（ｏＣＣＣＣＣＣＣ）により定まる。次に、１２時００分００．０００００２５００秒から２５００ナノ秒間の間は、各送信キューの送信可否状態は、リストインデックス“１”のゲートステート（ＣｏＣＣＣＣＣＣ）により定まる。
【０１９９】
さらに１２時００分００．０００００５０００秒から２５００ナノ秒間の間は、各送信キューの送信可否状態は、リストインデックス“２”のゲートステート（ＣＣｏＣＣＣＣＣ）により定まる。
【０２００】
このように、ゲートコントロールリスト３４Ｂに示される、リストインデックス“０”からリストインデックス“７”までの順序に従い、各送信キューのゲートステートと各ステートのタイムインターバルが定まる。
【０２０１】
最後に、図２０の例では、１２時００分００．００００１７５００秒から２５００ナノ秒間の間は、各送信キューの送信可否状態は、リストインデックス“７”のゲートステート（ＣＣＣＣＣＣＣｏ）によって決定され定まり、これをもって第１周期目が終了する。
【０２０２】
−先読みおよびスケジューリング処理−
次に、典型的な動作シナリオにおける、先読処理およびスケジューリング処理について説明する。
【０２０３】
図２２は、初期化直後の現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ０参照）。また、図２３は、初期化直後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。
【０２０４】
初期化の際には、先読部２０が、図６および図７を用いて説明した初期化処理を実行する。図２２および図２３に示す例では、先読部２０は、送信スケジューリング情報３４Ａに含まれるゲートコントロール開始時刻を、将来時刻ｔｆとして設定し、送信キュー７に２５００ナノ秒の送信可能時間を割り当てる。
【０２０５】
−スケジューリング処理の具体例１−
図２４は、初期化から０．００１秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ１参照）。また、図２５は、初期化から０．００１秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図２５は、初期化から０．００１秒後において、送信キュー７に送信所要時間１０００ナノ秒のフレームｆ０が書き込まれた場合の例を示した。
【０２０６】
図２５に示す例では、フレームｆ０の送信所要時間は、送信キュー７の送信可能時間以下である。このため、判定部２２は、フレームｆ０の送信開始予定時刻をスケジューリング可能と判定する（図２５の符号６０参照）。その結果、スケジューリング部２６は、初期化０．００１秒後時点の将来時刻（２０１７年１０月１６日１２時００分００．０００００００００秒）を、フレームｆ０の送信開始予定時刻としてスケジューリングする。
【０２０７】
図２６は、初期化から０．００２秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ２参照）。また、図２７は、初期化から０．００２秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図２７は、初期化から０．００２秒後にフレームｆ０がスケジューリングされた後の例を示す。
【０２０８】
スケジューリングの際には、判定部２２およびスケジューリング部２６が、図１０〜図１５を用いて説明した、判定処理、スケジューリング処理、および第１後処理の各々を実行する。
【０２０９】
−スケジューリング処理の具体例２−
図２８は、初期化から０．００３秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ３参照）。また、図２９は、初期化から０．００３秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図２９には、初期化０．００３秒後において、送信キュー７に送信所要時間１２００ナノ秒のフレームｆ１が書き込まれた例を示した。
【０２１０】
図２９の例では、フレームｆ１の送信所要時間は、送信キュー７の送信可能時間以下である（符号６２参照）。このため、判定部２２は、フレームｆ１の送信開始予定時刻をスケジューリング可能と判定する。その結果、スケジューリング部２６は、初期化０．００３秒後時点の将来時刻（２０１７年１０月１６日１２時００分００．０００００１０００秒）を、フレームｆ１の送信開始予定時刻としてスケジューリングする。
【０２１１】
図３０は、初期化から０．００４秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ４参照）。また、図３１は、初期化から０．００４秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図３１は、初期化０．００４秒後に、フレームｆ１がスケジューリングされた後の例を示す。
【０２１２】
なお、スケジューリングの際には、判定部２２およびスケジューリング部２６が、図１０〜図１５を用いて説明した、判定処理、スケジューリング処理、および第１後処理の各々を実行する。
【０２１３】
―送信可能時間をゼロクリアする具体例―
図３２は、初期化から０．００５秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ５参照）。また、図３３は、初期化から０．００５秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図３３は、初期化０．００５秒後に、送信キュー７に送信所要時間１５００ナノ秒のフレームｆ２が書き込まれた例を示す。
【０２１４】
図３３に示す例では、フレームｆ２の送信所要時間が、送信キュー７の送信可能時間以上である。このため、判定部２２は、フレームｆ２の送信開始予定時刻のスケジューリングを不可能と判定する。
【０２１５】
図３４は、初期化から０．００６秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ６参照）。また、図３５は、初期化から０．００６秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図３５は、初期化０．００６秒後に、送信キュー７の送信可能時間がゼロ“０”にクリアされた後の例を示している。ゼロクリア処理の際には、判定部２２が、図１０および図１１を用いて説明した、送信可能時間をゼロに変更する処理を含む、一連の処理を実行する。
【０２１６】
−先読処理の具体例１−
図３６は、初期化から０．００７秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ７参照）。また、図３７は、初期化から０．００７秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図３７は、初期化０．００７秒後に、ゲートコントロールリスト３４Ｂにおける、リストインデックス“１”のエントリ３４Ｄ１が先読処理された後の例を示す。
【０２１７】
先読処理の際には、先読部２０および指示部２４が、図８および図９を用いて説明した一連の処理を実行する。
【０２１８】
図３６および図３７に示す例では、先読部２０が、将来時刻を２０１７年１０月１６日１２時００分００．０００００２５００秒に更新し、送信キュー６に２５００ナノ秒の送信可能時間を割り当てる。
【０２１９】
−スケジューリング処理の具体例３−
図３８は、初期化から０．００８秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ８参照）。また、図３９は、初期化から０．００８秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図３９は、初期化０．００８秒後に、送信キュー６に送信所要時間１０００ナノ秒のフレームｆ３が書き込まれた例を示した。
【０２２０】
図３９に示す例では、フレームｆ３の送信所要時間は、送信キュー６の送信可能時間以下である。このため、判定部２２は、フレームｆ３をスケジューリング可能と判定する。その結果、スケジューリング部２６は、初期化０．００８秒後の時点の将来時刻（２０１７年１０月１６日１２時００分００．０００００２５００秒）を、フレームｆ３の送信開始予定時刻としてスケジューリングする。
【０２２１】
図４０は、初期化から０．００９秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ９参照）。また、図４１は、初期化から０．００９秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図４１は、初期化０．００９秒後に、フレームｆ３がスケジューリングされた後の例を示す。
【０２２２】
スケジューリングの際には、判定部２２およびスケジューリング部２６が、図１０〜図１５を用いて説明した、判定処理、スケジューリング処理、および第１後処理の各々を実行する。
【０２２３】
−スケジューリング処理の具体例４−
図４２は、初期化から０．０１０秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ１０参照）。また、図４３は、初期化から０．０１０秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図４３は、初期化０．０１０秒後に、送信キュー６に送信所要時間１５００ナノ秒のフレームｆ４が書込まれた例を示す。
【０２２４】
図４３に示す例では、フレームｆ４の送信所要時間が、送信キュー６の送信可能時間と等しい。このため、判定部２２は、フレームｆ４の送信開始予定時刻を、スケジューリング可能と判定する。その結果、スケジューリング部２６は、初期化０．０１０秒後の将来時刻（２０１７年１０月１６日１２時００分００．０００００３５００秒）を、フレームｆ４の送信開始予定時刻としてスケジューリングする。
【０２２５】
図４４は、初期化から０．０１１秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ１１参照）。また、図４５は、初期化から０．０１１秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図４５は、初期化０．０１１秒後に、フレームｆ４がスケジューリングされた後の例を示す。
【０２２６】
スケジューリングの際には、判定部２２およびスケジューリング部２６が、図１０〜図１５を用いて説明した、判定処理、スケジューリング処理、および第１後処理の各々を実行する。
【０２２７】
−先読処理の具体例２−
図４６は、初期化から０．０１２秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ１２参照）。また、図４７は、初期化から０．０１２秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図４７は、初期化０．０１２秒後に、ゲートコントロールリスト３４Ｂにおけるリストインデックス“２”のエントリ３４Ｄ２が先読みされた後の例を示す。
【０２２８】
先読処理の際には、先読部２０および指示部２４が、図８および図９を用いて説明した一連の処理を実行する。
【０２２９】
−スケジューリング可能なフレームが存在しない場合の具体例−
図４８は、初期化から０．０１３秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ１３参照）。また、図４９は、初期化から０．０１３秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図４９は、初期化０．０１３秒後に、スケジュール可能なフレームが１つも存在しない例を示す。
【０２３０】
図４９に示す例では、送信キュー７の送信可能時間がゼロとなっている（符号７４参照）。このため、スケジューリング部２６は、送信キュー７に保持されているフレームｆ２を、スケジューリングすることは出来ない。
【０２３１】
また、送信キュー５には、２５００ナノ秒の送信可能時間が割り当てられている。このため、送信キュー５には、十分な送信可能時間が残されている。しかし、送信キュー５にはフレームが保持されていないため、新しいフレームをスケジューリングすることができない。
【０２３２】
このため、初期化０．０１３秒後の時点では、スケジュール可能なフレームが１つも存在しないことになる。
【０２３３】
−将来時刻の更新がストップしてしまう場合の具体例−
図５０は、初期化から０．０１４秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ１４参照）。また、図５１は、初期化から０．０１４秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図５１は、初期化０．０１４秒後において、将来時刻の更新がストップしてしまう場合の例を示す。
【０２３４】
将来時刻は、新しいフレームのスケジューリング、または、送信スケジューリング情報３４Ａにおけるエントリ３４Ｄの先読みが行われた際に、適切な値に更新される。このため、スケジューリングや先読処理が行われない状態が継続すると、将来時刻の更新は、ストップする。
【０２３５】
図５１に示す例では、初期化０．０１４秒後以降、新しいフレームのスケジューリングおよびエントリ３４Ｄの先読みが行われていないため、将来時刻の更新は完全にストップしている。
【０２３６】
図５２は、初期化から０．０１５秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ１５参照）。また、図５３は、初期化から０．０１５秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図５４は、初期化から０．０１６秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ１６参照）。また、図５５は、初期化から０．０１６秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図５６は、初期化から０．０１７秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ１７参照）。また、図５７は、初期化から０．０１７秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。
【０２３７】
なお、図５３、図５５、および図５７は、それぞれ、初期化０．０１５秒後、０．０１６秒後、および０．０１７秒後において、将来時刻の更新がストップしてしまう場合の例を示す。図５３、図５５、および図５７の例では、現在時刻の進行に伴い、現在時刻が徐々に将来時刻に近づいている。その結果として、現在時刻と将来時刻の時間差が、徐々に縮まっている。
【０２３８】
−現在時刻と将来時刻の時間差が縮まった場合の具体例−
図５８は、初期化から０．９９９９８５秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ１８参照）。また、図５９は、初期化から０．９９９９８５秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図５９は、現在時刻と将来時刻の時間差の閾値が２０マイクロ秒に設定された場合の例を示す。
【０２３９】
なお、上述したように、この時間差の閾値には、任意の値を設定してよい。図５９の例では、現在時刻（２０１７年１０月１６日１１時５９分５９．９９９９８５０００秒）と将来時刻（２０１７年１０月１６日１２時００分００．０００００５０００秒）との時間差が、閾値（２０マイクロ秒）以下の値となっている。このため、送信キューの送信可能時間を強制的に減少させる、第２後処理を実行する条件が成立した状態となる。
【０２４０】
―第２後処理の具体例１−
図６０は、初期化から０．９９９９８６秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ１９参照）。また、図６１は、初期化から０．９９９９８６秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図６１は、初期化０．９９９９８６秒後に、送信キュー５の送信可能時間を強制的に減少させる、第２後処理の例を示す。
【０２４１】
図６１の例では、現在時刻と将来時刻の時間差（０．００００１９０００秒＝１９マイクロ秒）が、閾値（２０マイクロ秒）以下の値になっている。このため、指示部２４が、送信可能時間の減少処理を実行している。上述したように、減算に用いる値は、現在時刻が将来時刻に追いつく前に、各送信キューの送信可能時間をゼロにする条件を満たす値であればよい。図６１に示す例では、初期化０．９９９９８５秒後の時間差（２０マイクロ秒）と初期化０．９９９９８６秒後の時間差（１９マイクロ秒）との差分（１マイクロ秒）、送信キュー５に割り当てられた送信可能時間を減少させている。その結果、送信キュー５の送信可能時間は、０．０００００１５００秒に更新される。
【０２４２】
なお、送信キューの送信可能時間を減少させる第２後処理の際には、指示部２４が、図１６および図１７を用いて説明した一連の処理を実行する。
【０２４３】
−第２後処理の具体例２−
図６２は、初期化から０．９９９９８７秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ２０参照）。また、図６３は、初期化から０．９９９９８７秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図６３は、初期化０．９９９９８７秒後に、送信キュー５の送信可能時間を強制的に減少させる、第２後処理の例を示す。
【０２４４】
図６３に示す例では、現在時刻と将来時刻の時間差（０．００００１８０００秒＝１８マイクロ秒）が、閾値（２０マイクロ秒）以下の値となっている。このため、指示部２４は、送信キュー５に割り当てられた送信可能時間を、強制的に減少させる。この例では、指示部２４は、初期化０．９９９９８６秒後の時間差（１９マイクロ秒）と初期化０．９９９９８７秒後の時間差（１８マイクロ秒）との差分（１マイクロ秒）、送信キュー５に割り当てられた送信可能時間を減少させる。その結果、指示部２４は、送信キュー５の送信可能時を０．００００００５００秒に更新する。
【０２４５】
送信キューの送信可能時間を減少させる第２後処理の際には、指示部２４が、図１６および図１７を用いて説明した一連の処理を実行する。
【０２４６】
−第２後処理の具体例３−
図６４は、初期化から０．９９９９８７５秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ２１参照）。また、図６５は、初期化から０．９９９９８７５秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図６５は、初期化０．９９９９８７５秒後に、送信キュー５の送信可能時間を強制的に減少させる処理の例を示す。
【０２４７】
図６５に示す例では、現在時刻と将来時刻の時間差（０．００００１７５００秒＝１７．５マイクロ秒）は、閾値（２０マイクロ秒）以下の値である。このため、指示部２４は、送信キュー５に割り当てられた送信可能時間を、強制的に減少させる。この例では、指示部２４は、初期化０．９９９９８７秒後の時間差（１８マイクロ秒）と初期化０．９９９９８７５秒後の時間差（１７．５マイクロ秒）との差分（０．５マイクロ秒）、送信キュー５に割り当てられた送信可能時間を減少させる。その結果、指示部２４は、送信キュー５の送信可能時を０．０００００００００秒に更新する。
【０２４８】
送信キューの送信可能時間を減少させる第２後処理の際には、指示部２４が、図１６および図１７を用いて説明した一連の処理を実行する。
【０２４９】
―先読処理の具体例３―
図６６は、初期化から０．９９９９８８秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ２２参照）。また、図６７は、初期化から０．９９９９８８秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図６７は、初期化０．９９９９８８秒後に、送信キュー５の送信可能時間がゼロになった後の例を示す。
【０２５０】
図６７に示す例では、各送信キューに割り当てられた送信可能時間が、すべてゼロになっている。このため、次のエントリ３４Ｄを先読みするための条件が成立している。
【０２５１】
図６８は、初期化から０．９９９９８８５秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ２３参照）。また、図６９は、初期化から０．９９９９８８５秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図６９は、初期化０．９９９９８８５秒後に、送信スケジューリング情報３４Ａのゲートコントロールリスト３４Ｂにおける、リストインデックス“３”のエントリ３４Ｄ３が先読みされた後の例を示す。
【０２５２】
先読処理の際には、先読部２０および指示部２４が、図８および図９を用いて説明した一連の処理を実行する。
【０２５３】
図６８および図６９の例では、先読部２０が、将来時刻を２０１７年１０月１６日１２時００分００．０００００７５００秒に更新し、送信キュー４に２５００ナノ秒の送信可能時間を割り当てる。
【０２５４】
−スケジューリング処理の具体例５−
図７０は、初期化から０．９９９９８９秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ２４参照）。また、図７１は、初期化から０．９９９９８９秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図７１は、初期化０．９９９９８９秒後において、送信キュー４に送信所要時間１０００ナノ秒のフレームｆ５が書き込まれた例を示す。
【０２５５】
図７１に示す例では、現在時刻と将来時刻の時間差（０．００００１８５００秒＝１８．５マイクロ秒）が閾値（２０マイクロ秒）以下の値になっている。このため、この場合、指示部２４が、送信キュー４に割り当てられた送信可能時間を強制的に減少させる。この例では、指示部２４は、初期化０．９９９９８８５秒後の時間差（１９マイクロ秒）と初期化０．９９９９８９秒後の時間差（１８．５マイクロ秒）との差分（０．５マイクロ秒）、送信キュー４に割り当てられた送信可能時間を減少させる。その結果、送信キュー４の送信可能時間は、０．０００００２０００秒に更新される。
【０２５６】
また、図７１の例では、フレームｆ５の送信所要時間は、送信キュー４の送信可能時間以下である（符号８０参照）。このため、判定部２２は、フレームｆ５をスケジューリング可能と判定する。その結果、スケジューリング部２６は、初期化０．９９９９８９秒後時点の将来時刻（２０１７年１０月１６日１２時００分００．０００００７５００秒）を、フレームｆ５の送信開始予定時刻としてスケジューリングする。
【０２５７】
図７２は、初期化から０．９９９９８９５秒後の、現在時刻ｔｃ、将来時刻ｔｆ、および、現在時刻ｔｃと将来時刻ｔｆとの時間差ｔｄを示す図である（タイミングＴ２５参照）。また、図７３は、初期化から０．９９９９８９５秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図７３は、初期化０．９９９９８９５秒後に、フレームｆ５がスケジューリングされた後の例を示す。
【０２５８】
スケジューリングの際には、判定部２２およびスケジューリング部２６が、図１０〜図１５を用いて説明した、判定処理、スケジューリング処理、および第１後処理の各々を実行する。
【０２５９】
以上、具体的な例を挙げて説明したように、本実施の形態の情報処理装置１０は、スケジューリング部２６が、送信スケジューリング情報３４Ａにおける、先読部２０によって先読みされたエントリ３４Ｄに基づいて、フレームの送信開始予定時刻をスケジューリングする。
【０２６０】
従って、本実施の形態の情報処理装置１０では、高精度な送信タイミング制御のためのスケジューリングが可能となる。すなわち、本実施の形態の情報処理装置１０では、送信スケジューリング情報３４Ａに基づいた動的なスケジューリングによる、送信制御を実現することができる。
【０２６１】
（第２の実施の形態）
第１の実施の形態では、現在時刻ｔｃと将来時刻ｔｆの時間差ｔｄとの比較対象となる閾値が、主に固定値（例えば２０マイクロ秒）として、予め与えられている場合の例を示した。以降の説明では、この閾値を「第１閾値ｔｈ１」と呼ぶ。
【０２６２】
第１閾値ｔｈ１を固定値にすると、処理時間の動的な変動への対応が不十分になる可能性がある。例えば、第１の実施の形態で示した送信制御をソフトウェアで実現する場合、ホスト１２内で発生する各種処理時間（主にスケジューリング処理時間とＤＭＡ（Direct  Memory  Access）転送時間）の変動が大きくなる。非常に高いリアルタイム性が求められるタイムセンシティブなフレームをタイムリーに送信する仕組みを実現するためには、処理時間の変動に対して適切且つ柔軟に対応することが求められる。処理時間の変動を完全に予測または抑制することは非常に困難であるため、変動が発生することを前提とし、変動に対処する機能を実装する必要がある。
【０２６３】
そこで第２の実施の形態では、処理時間の動的な変動に対処する一つの方法として、第１閾値ｔｈ１を動的に更新する方式を採用する。これにより、第１の実施の形態と比べてスケジューリング処理のタイミング精度が高まり、結果としてリアルタイム性が求められるフレームをよりタイムリーに送信することが可能となる。
【０２６４】
［機能構成の例］
図７４は、第２の実施の形態の情報処理システム１−２の機能構成の例を示す図である。情報処理システム１−２は、第１の実施の形態の各処理部に、計測部４０−２と閾値算出部４２−２が追加される。また、情報処理システム１−２は、ホスト１２−２が備える判定部２２−２および指示部２４−２の機能が、第１の実施の形態と異なっている。その他の構成は第１の実施の形態と同様であるため同一の符号を付し説明を省略する。
【０２６５】
＜情報処理＞
図７５は、第２の実施の形態の情報処理装置（ホスト１２−２、送信装置１４）が実行する、情報処理の手順の一例を示すフローチャートである。第２の実施の形態の情報処理装置（ホスト１２−２、送信装置１４）は、計測部４０−２および閾値算出部４２−２による計測処理・閾値算出処理（ステップＳ１００３）と、先読部２０、判定部２２−２、指示部２４−２、および、スケジューリング部２６による先読処理・スケジューリング処理（ステップＳ１００１）と、送信部２８による送信処理（ステップＳ１００２）と、を並列に実行する。
【０２６６】
第１の実施の形態と比較すると、第２の実施の形態では、計測処理・閾値算出処理が追加されている。また、先読処理・スケジューリング処理は、判定処理（図５のステップＳ２０６）、および、第２後処理（図５のステップＳ２１４）が変更される。第２の実施の形態の判定処理および第２後処理の詳細は後述する。送信処理は第１の実施の形態と同様であるため説明を省略する。
【０２６７】
＜計測処理・閾値算出処理＞
図７６は、ステップＳ１００３の計測処理・閾値算出処理の詳細フローチャートである。
【０２６８】
まず、計測部４０−２は、スケジューリング部２６から送信部２８へフレームを転送する際に要する時間（第１遅延時間）をモニタリング（計測）する（ステップＳ１１００）。例えば、第１遅延時間に大きく影響する要素としては、ＤＭＡ転送に係わる一連の処理が挙げられる。そこで計測部４０−２は、例えば、ＤＭＡ転送のオーバーヘッドとＤＭＡ転送による実際のデータコピーにかかる時間の合計を第１遅延時間としてモニタリングしてもよい。
【０２６９】
次に、計測部４０−２は、モニタリング結果を閾値算出部４２−２に通知する（ステップＳ１１０２）。例えば、計測部４０−２は、共有メモリにモニタリング結果を書き込み、その後、閾値算出部４２−２に対してモニタリング結果を更新したことを知らせるシグナルを送ってもよい。共有メモリは、例えば、記憶部３０、または、記憶部３０とは異なる記憶媒体により構成できる。
【０２７０】
次に、計測部４０−２から通知を受けた閾値算出部４２−２は、第１遅延時間に基づいて第１閾値ｔｈ１を算出する（ステップＳ１１０４）。閾値算出部４２−２が第１閾値ｔｈ１を算出する方法は、どのような方法であってもよい。例えば、閾値算出部４２−２は、最悪実行時間に基づいて第１閾値ｔｈ１を算出してもよい。具体的には、閾値算出部４２−２は、計測部４０−２から通知されたすべてのモニタリング結果の中から最大の値を第１遅延時間として採用してもよい。この場合、閾値算出部４２−２は、例えば、第１遅延時間の最大値をそのまま第１閾値ｔｈ１としてもよいし、第１遅延時間の最大値に一定の安全マージンを加算した値を第１閾値ｔｈ１としてもよい。例えば、この算出方法は、決められた時間内に必ず処理を完了しなければならないようなハードリアルタイム性が要求されるアプリケーションに適用することができる。
【０２７１】
また、別の算出方法として、例えば閾値算出部４２−２は、計測部４０−２から通知されたすべてのモニタリング結果の平均値、中央値、または、移動平均等を算出し、算出した値を第１閾値ｔｈ１としてもよい。また、例えば閾値算出部４２−２は、平均値、中央値、または、移動平均等に一定の安全マージンを加算した値を第１閾値ｔｈ１としてもよい。例えばこの方法は、仮にデッドラインミスが発生しても直ちに深刻な問題に直結しないようなソフトリアルタイム性が要求されるアプリケーションに適応することができる。
【０２７２】
最悪実行時間に基づいて閾値を算出する方法では、高いリアルタイム性が確保できるが、その引き換えにスループットが犠牲になる場合がある。一方、平均値、中央値、または、移動平均等を用いる方法では、リアルタイム性が多少犠牲となる場合があるが、その代わりに全体的なスループットの向上が可能となる。
【０２７３】
最後に、閾値算出部４２−２は、第１閾値ｔｈ１を判定部２２−２及び指示部２４−２に通知する（ステップＳ１１０６）。例えば、閾値算出部４２−２は、共有メモリに第１閾値ｔｈ１を書き込み、その後、判定部２２−２及び指示部２４−２に対して第１閾値ｔｈ１を更新したことを知らせるシグナルを送ってもよい。
【０２７４】
なお、計測部４０−２および閾値算出部４２−２は、図７６に示す計測処理・閾値算出処理を繰り返し実行する。すなわち、計測部４０−２は継続的にモニタリングを行い、閾値算出部４２−２は最新のモニタリング結果を反映させるように、第１閾値ｔｈ１を算出する。
【０２７５】
図７７および図７８は、算出される第１閾値ｔｈ１の例を示す図である。モニタリング結果が比較的小さい場合は、例えば図７７に示すように、比較的小さい第１閾値ｔｈ１が算出される。一方、モニタリング結果が急激に大きくなった場合は、図７８に示すように、相対的に大きな第１閾値ｔｈ１が算出される。このように、第２の実施の形態では、処理時間の動的な変動に対応するように、第１閾値ｔｈ１を更新することが可能となる。
【０２７６】
＜判定処理＞
図７９は、第２の実施の形態の判定処理の詳細フローチャートである。
【０２７７】
まず、判定部２２−２は、将来時刻記憶部３８から将来時刻ｔｆを読み込む（ステップＳ１２００）。判定部２２−２は、将来時刻ｔｆと現在時刻ｔｃとの時間差ｔｄを算出する（ステップＳ１２０２）。判定部２２−２は、閾値算出部４２−２から通知された第１閾値ｔｈ１と時間差ｔｄとを比較し、時間差ｔｄが第１閾値ｔｈ１以下であるか否かを判定する（ステップＳ１２０４）。時間差ｔｄが第１閾値ｔｈ１以下である場合（ステップＳ１２０４：Ｙｅｓ）は、判定処理を終了する。
【０２７８】
時間差ｔｄが第１閾値ｔｈ１より大きい場合（ステップＳ１２０４：Ｎｏ）、判定部２２−２は、第１の実施の形態の判定処理（図１０のステップＳ５００〜ステップＳ５１４）に相当するステップＳ１２０６〜ステップＳ１２２０を実行する。
【０２７９】
＜第２後処理＞
図８０は、第２の実施の形態の第２後処理の詳細フローチャートである。ステップＳ１３００およびステップＳ１３０２は、第１の実施の形態の第２後処理に含まれるステップＳ８００およびステップＳ８０２と同様であるため説明を省略する。
【０２８０】
次に、指示部２４−２は、閾値算出部４２−２から通知された第１閾値ｔｈ１と時間差ｔｄを比較し、時間差ｔｄが第１閾値ｔｈ１以下であるか否かを判定する（ステップＳ１３０４）。時間差ｔｄが第１閾値ｔｈ１より大きい場合（ステップＳ１３０４：Ｎｏ）、第２後処理を終了する。
【０２８１】
時間差ｔｄが第１閾値ｔｈ１以下の場合（ステップＳ１３０４：Ｙｅｓ）、指示部２４−２は、各送信キューに対応する送信可能時間を一定量減少させて、送信可能時間記憶部３６に記憶された送信可能時間情報３６Ａを更新する（ステップＳ１３０６）。
【０２８２】
例えば、指示部２４−２は、現在時刻ｔｃと第１閾値ｔｈ１の合計から将来時刻ｔｆを差し引いた値（ｔｃ＋ｔｈ１−ｔｆ）に一定のオフセット（ｏｆｆｓｅｔ）を加算した値（ｔｃ＋ｔｈ１−ｔｆ＋ｏｆｆｓｅｔ）を各送信キューの送信可能時間から差し引くように減少させてもよい。オフセットは、例えば、静的又は動的に決定される０以上の値である。送信可能時間から減算する値の算出する方法はこれに限られず、例えば、現在時刻ｔｃ、将来時刻ｔｆ、閾値ｔｈ１、および、オフセットのうち少なくとも一部の組み合わせに基づく方法であってもよい。例えば、現在時刻ｔｃと将来時刻ｔｆの時間差にオフセットを加算した値を減算してもよい。
【０２８３】
最後に、指示部２４−２は、送信可能時間の減少量に基づいて、将来時刻ｔｆを先に進め（ステップＳ１３０８）、第２後処理を終了する。例えば、指示部２４−２は、将来時刻ｔｆと現在時刻ｔｃとの時間差ｔｄが第１閾値ｔｈ１以上（ｔｄ≧ｔｈ１）になるように、将来時刻ｔｆを更新してもよい。例えば、指示部２４−２は、送信可能時間の減少値（ｔｃ＋ｔｈ１−ｔｆ＋ｏｆｆｓｅｔ）を将来時刻ｔｆに加算するように更新してもよい。この場合、新しい将来時刻ｔｆｎｅｗは、ｔｆｎｅｗ＝ｔｆｏｌｄ＋ｔｃ＋ｔｈ１−ｔｆｏｌｄ＋ｏｆｆｓｅｔ＝ｔｃ＋ｔｈ１＋ｏｆｆｓｅｔとなる。ｔｆｏｌｄは、更新前の将来時刻を表す。図８１は、このようにして更新された将来時刻の一例を示す図である。将来時刻の更新方法はこれに限られず、例えば、現在時刻ｔｃ、将来時刻ｔｆ、閾値ｔｈ１、および、オフセットのうち少なくとも一部の組み合わせに基づく方法であってもよい。例えば、送信可能時間の減少値と同じ値を将来時刻ｔｆに加算して更新してもよい。また、例えば、将来時刻ｔｆにオフセットを加算した値となるように将来時刻ｔｆを更新してもよい。
【０２８４】
なお、計測部４０−２はホスト１２−２内に備える必要はない。図８２は、第２の実施の形態の変形例にかかる情報処理システム１−２ｂの機能構成の例を示す図である。情報処理システム１−２ｂは、ホスト１２−２ｂと、送信装置１４−２の構成が、第２の実施の形態と異なっている。具体的には、ホスト１２−２ｂは、計測部４０−２を備えず、送信装置１４−２が、計測部４０−２を備えている。このような構成でも、第２の実施の形態と同様の機能を実現できる。
【０２８５】
（第３の実施の形態）
第２の実施の形態では、処理時間の動的な変動に対処する機能として、第１閾値ｔｈ１を動的に更新する例を示した。しかし第２の実施の形態では、単一の閾値（第１閾値ｔｈ１）が想定されており、現在時刻ｔｃと将来時刻ｔｆの時間差ｔｄと第１閾値ｔｈ１の２つの値を単純に比較することで全体の動作を制御している。このため、時間差ｔｄが第１閾値ｔｈ１より大きい場合と小さい場合のそれぞれについて合計２パターンの対応に限定されることとなり、処理時間の変動に対して十分に対応することができない場合がある。
【０２８６】
そこで、本実施の形態では、２つの閾値（第１閾値ｔｈ１、及び、第２閾値ｔｈ２）を用いる。これにより、第２の実施の形態と比べてスケジューリング処理のタイミング精度が高まり、結果としてリアルタイム性が求められるフレームをよりタイムリーに送信することが可能となる。
［機能構成の例］
図８３は、第３の実施の形態の情報処理システム１−３の機能構成の例を示す図である。情報処理システム１−３は、第１の実施の形態の各処理部に、計測部４０−３と閾値算出部４２−３が追加される。また、情報処理システム１−３は、ホスト１２−３が備える判定部２２−３および指示部２４−３の機能が、第１の実施の形態と異なっている。その他の構成は第１の実施の形態と同様であるため同一の符号を付し説明を省略する。
【０２８７】
＜情報処理＞
第３の実施の形態の情報処理装置（ホスト１２−３、送信装置１４）情報処理の全体の流れは、第２の実施の形態の情報処理を示す図７５と同様である。第２の実施の形態と比較すると、第３の実施の形態では、計測処理・閾値算出処理（図７５のステップＳ１００３）、先読処理・スケジューリング処理内の判定処理（図５のステップＳ２０６）、および、第２後処理（図５のステップＳ２１４）が変更される。
【０２８８】
＜計測処理・閾値算出処理＞
図８４は、第３の実施の形態の計測処理・閾値算出処理の詳細フローチャートである。
【０２８９】
まず、計測部４０−３は、スケジューリング部２６から送信部２８へフレームを転送する際に要する時間（第１遅延時間）をモニタリングする（ステップＳ１４００）。この処理は、第２の実施の形態のステップＳ１１００と同様である。
【０２９０】
次に、計測部４０−３は、先読部２０の処理に要する時間（第２遅延時間）をモニタリングする（ステップＳ１４０２）。例えば、送信スケジューリング情報記憶部３４から必要な情報を読み出す際のオーバーヘッド等が遅延の原因となりうる。計測部４０−３は、このような遅延の時間を第２遅延時間として計測する。また、計測部４０−３は、送信可能時間記憶部３６の情報を更新する際のオーバーヘッド等を第２遅延時間として計測してもよい。また、計測部４０−３は、例えば、先読部２０が行う一連の処理にかかる合計時間を第２遅延時間としてもよい。
【０２９１】
次に、計測部４０−３は、判定部２２−３の処理に要する時間（第３遅延時間）をモニタリングする（ステップＳ１４０４）。例えば、送信フレーム記憶部３２の送信キューの状態を確認する際のオーバーヘッド等が遅延の原因となりうる。計測部４０−３は、このような遅延の時間を第３遅延時間として計測する。また、計測部４０−３は、送信キューに保持されている送信待機中のフレームの内、送信開始予定時刻をスケジューリング可能なフレームを判定する処理のオーバーヘッド等を第３遅延時間として計測してもよい。また、計測部４０−３は、例えば、判定部２２−３が行う一連の処理にかかる合計時間を第３遅延時間としてもよい。
【０２９２】
次に、計測部４０−３は、スケジューリング部２６の処理に要する時間（第４遅延時間）をモニタリングする（ステップＳ１４０６）。例えば、送信フレーム記憶部３２からフレームを読み出す際の際のオーバーヘッド等が遅延の原因となりうる。計測部４０−３は、このような遅延の時間を第４遅延時間として計測する。また、計測部４０−３は、スケジューリング処理自体のオーバーヘッド等を第４遅延時間として計測してもよい。また、計測部４０−３は、例えば、スケジューリング部２６が行う一連の処理にかかる合計時間を第４遅延時間としてもよい。
【０２９３】
次に、計測部４０−３はモニタリング結果を閾値算出部４２−３に通知する（ステップＳ１４０８）。例えば、計測部４０−３は、共有メモリにモニタリング結果を書き込み、その後、閾値算出部４２−３に対してモニタリング結果を更新したことを知らせるシグナルを送ってもよい。
【０２９４】
次に、計測部４０−３から通知を受けた閾値算出部４２−３は、第１遅延時間に基づいて第１閾値ｔｈ１を算出する（ステップＳ１４１０）。なお、閾値算出部４２−３は、第１閾値ｔｈ１を算出する際には、第２の実施の形態で詳細に説明した様々なバリエーションの中から適切な方法を選択してもよい。
【０２９５】
次に、閾値算出部４２−３は、第２遅延時間、第３遅延時間および第４遅延時間に基づいて第２閾値ｔｈ２を算出する（ステップＳ１４１２）。なお、閾値算出部４２−３は、第２閾値ｔｈ２を算出する際には、第２の実施の形態で詳細に説明した様々なバリエーションの中から適切な方法を選択してもよい。例えば、閾値算出部４２−３は、最悪実行時間に基づいて、第２遅延時間、第３遅延時間および第４遅延時間の最大値の合計を第２閾値ｔｈ２として算出してもよい。また、例えば閾値算出部４２−３は、第２閾値ｔｈ２を算出する際に、第１遅延時間および第１閾値ｔｈ１の少なくとも一方の値を参照して、第２閾値ｔｈ２の計算に反映させてもよい。
【０２９６】
最後に、閾値算出部４２−３は、第１閾値ｔｈ１及び第２閾値ｔｈ２を判定部２２−３及び指示部２４−３に通知する（ステップＳ１４１４）。例えば、閾値算出部４２−３は共有メモリに各閾値を書き込み、その後、判定部２２−３及び指示部２４−３に対して閾値の値を更新したことを知らせるシグナルを送ってもよい。
【０２９７】
なお、計測部４０−３と閾値算出部４２−３は、図８４に示す計測処理・閾値算出処理を繰り返し実行する。すなわち、計測部４０−３は継続的にモニタリングを行い、閾値算出部４２−３は最新のモニタリング結果を反映させるように、各閾値を算出する。このため、第３の実施の形態では、処理時間の動的な変動に対応するように、閾値の値を更新することが可能となる。
【０２９８】
図８４内の各ステップの少なくとも一部を並列に実行するように構成してもよい。図８５は、並列に実行するステップを含む計測処理・閾値算出処理の詳細フローチャートの一例である。図８５の例では、ステップＳ１４００、Ｓ１４０２、Ｓ１４０４、および、Ｓ１４０６が並列に実行される。また、ステップＳ１４１０〜Ｓ１４１４−１、および、Ｓ１４１２〜Ｓ１４１４−２が並列に実行される。ステップＳ１４１４−１およびＳ１４１４−２は、図８４のステップＳ１４１４を分割したステップに相当する。
【０２９９】
第３の実施の形態を適用することで、第２の実施の形態と比べて、処理時間の変動に対する対応パターンが増え、柔軟性を向上させることが可能となる。図８６は、算出される第１閾値ｔｈ１および第２閾値ｔｈ２の例を示す図である。図８６に示すように、第２閾値ｔｈ２を導入したことで、図７７と比較して対応パターンの個数が２（図７７の第１エリア及び第２エリア）から３（図８６の第１エリア、第２エリア及び第３エリア）に増えていることがわかる。
【０３００】
＜判定処理＞
図８７は、第３の実施の形態の判定処理の詳細フローチャートである。ステップＳ１５００〜ステップＳ１５１６は、第２の実施の形態の判定処理を示す図７９のステップＳ１２００〜ステップＳ１２１６と同様であるため説明を省略する。
【０３０１】
ステップＳ１５１６の後、判定部２２−３は、スケジューリング可能なフレームが有るか否かを判断する（ステップＳ１５１８）。判定部２２−３は、ステップＳ１５１２の判定結果に、スケジューリング可能と判定したフレームが含まれるか否かを判断することで、ステップＳ１５１６の判断を行う。
【０３０２】
スケジューリング可能なフレームが有ると判断した場合（ステップＳ１５１８：Ｙｅｓ）、判定部２２−３は、スケジューリング可能と判定したフレームを、スケジューリング部２６へ通知する（ステップＳ１５２０）。そして、本ルーチンを終了する。
【０３０３】
スケジューリング可能なフレームが無いと判断した場合（ステップＳ１５１８：Ｎｏ）、判定部２２−３は、閾値算出部４２−３から通知された第２閾値ｔｈ２と時間差ｔｄとを比較し、時間差ｔｄが第２閾値ｔｈ２以下であるか否かを判定する（ステップＳ１５２２）。時間差ｔｄが第２閾値ｔｈ２より大きい場合（ステップＳ１５２２：Ｎｏ）、本ルーチンを終了する。一方、時間差ｔｄが第２閾値ｔｈ２以下の場合（ステップＳ１５２２：Ｙｅｓ）、判定部２２−３は、スケジューリング可能なフレームが存在しないことを指示部２４−３に通知して（ステップＳ１５２４）、本ルーチンを終了する。
【０３０４】
＜第２後処理＞
図８８は、第３の実施の形態の第２後処理の詳細フローチャートである。ステップＳ１６００およびステップＳ１６０２は、第１の実施の形態の第２後処理に含まれるステップＳ８００およびステップＳ８０２と同様であるため説明を省略する。
【０３０５】
次に、指示部２４−３は、閾値算出部４２−３から通知された第１閾値ｔｈ１と時間差ｔｄを比較し、時間差ｔｄが第１閾値ｔｈ１以下であるか否かを判定する（ステップＳ１６０４）。
【０３０６】
時間差ｔｄが第１閾値ｔｈ１より大きい場合（ステップＳ１６０４：Ｎｏ）、指示部２４−３は、さらに、閾値算出部４２−３から通知された第２閾値ｔｈ２と時間差ｔｄを比較し、時間差ｔｄが第２閾値ｔｈ２以下であるか否かを判定する（ステップＳ１６１０）。時間差ｔｄが第２閾値ｔｈ２より大きい場合（ステップＳ１６１０：Ｎｏ）、本ルーチンを終了する。
【０３０７】
一方、時間差ｔｄが第２閾値ｔｈ２以下の場合（ステップＳ１６１０：Ｙｅｓ）、指示部２４−３は、判定部２２−３からスケジューリング可能なフレームが存在しないことを知らせる通知を受けたか確認する（ステップＳ１６１２）。判定部２２−３から通知を受けていない場合（ステップＳ１６１２：Ｎｏ）、本ルーチンを終了する。
【０３０８】
ステップＳ１６０４で時間差ｔｄが第１閾値ｔｈ１以下であると判定した場合（ステップＳ１６０４：Ｙｅｓ）、または、ステップＳ１６１２で判定部２２−３から通知を受けていると判定した場合（ステップＳ１６１２：Ｙｅｓ）、指示部２４−３は、各送信キューに対応する送信可能時間を一定量減少させて、送信可能時間記憶部３６に記憶された送信可能時間情報３６Ａを更新する（ステップＳ１６０６）。
【０３０９】
例えば、ｔｄ≦ｔｈ１の場合、指示部２４−３は、第２の実施の形態と同様に、現在時刻ｔｃと第１閾値ｔｈ１の合計から将来時刻ｔｆを差し引いた値（ｔｃ＋ｔｈ１−ｔｆ）に一定のオフセット（ｏｆｆｓｅｔ）を加算した値（ｔｃ＋ｔｈ１−ｔｆ＋ｏｆｆｓｅｔ）を各送信キューの送信可能時間から差し引くように減少させてもよい。
【０３１０】
また、例えば、ｔｈ１＜ｔｄ≦ｔｈ２の場合、指示部２４−３は、現在時刻ｔｃと第２閾値ｔｈ２の合計から将来時刻ｔｆを差し引いた値（ｔｃ＋ｔｈ２−ｔｆ）に一定のオフセット（ｏｆｆｓｅｔ）を加算した値（ｔｃ＋ｔｈ２−ｔｆ＋ｏｆｆｓｅｔ）を各送信キューの送信可能時間から差し引くように減少させてもよい。
【０３１１】
最後に、指示部２４−３は、送信可能時間の減少量に基づいて、将来時刻ｔｆを先に進め（ステップＳ１６０８）、第２後処理を終了する。
【０３１２】
例えば、ｔｄ≦ｔｈ１の場合、指示部２４−３は、第２の実施の形態と同様に、将来時刻ｔｆと現在時刻ｔｃとの時間差ｔｄが第１閾値ｔｈ１以上（ｔｄ≧ｔｈ１）になるように、将来時刻ｔｆを更新してもよい。例えば、指示部２４−３は、送信可能時間の減少値（ｔｃ＋ｔｈ１−ｔｆ＋ｏｆｆｓｅｔ）を将来時刻ｔｆに加算するように更新してもよい。この場合、新しい将来時刻ｔｆｎｅｗは、ｔｆｎｅｗ＝ｔｆｏｌｄ＋ｔｃ＋ｔｈ１−ｔｆｏｌｄ＋ｏｆｆｓｅｔ＝ｔｃ＋ｔｈ１＋ｏｆｆｓｅｔとなる。図８９は、このようにして更新された将来時刻の一例を示す図である。
【０３１３】
また、例えば、ｔｈ１＜ｔｄ≦ｔｈ２の場合、指示部２４−３は、将来時刻ｔｆと現在時刻ｔｃの時間差ｔｄが第２閾値ｔｈ２以上（ｔｄ≧ｔｈ２）になるように将来時刻ｔｆを更新してもよい。例えば、指示部２４−３は、送信可能時間の減少値（ｔｃ＋ｔｈ２−ｔｆ＋ｏｆｆｓｅｔ）を将来時刻ｔｆに加算するように更新してもよい。この場合、新しい将来時刻ｔｆｎｅｗは、ｔｆｎｅｗ＝ｔｆｏｌｄ＋ｔｃ＋ｔｈ２−ｔｆｏｌｄ＋ｏｆｆｓｅｔ＝ｔｃ＋ｔｈ２＋ｏｆｆｓｅｔとなる。図９０は、このようにして更新された将来時刻の一例を示す図である。
【０３１４】
（第４の実施の形態）
第３の実施の形態では、処理時間の動的な変動に対処する機能として、２つの閾値（第１閾値ｔｈ１と第２閾値ｔｈ２）を用いる例を示した。本実施の形態では、処理時間の変動に対するロバスト性を向上させる方法として、３つの閾値（第１閾値ｔｈ１、第２閾値ｔｈ２、及び、第３閾値ｔｈ３）を用いる。これにより、第３の実施の形態と比べてスケジューリング処理のタイミング精度が高まり、結果としてリアルタイム性が求められるフレームをよりタイムリーに送信することが可能となる。
【０３１５】
［機能構成の例］
図９１は、第４の実施の形態の情報処理システム１−４の機能構成の例を示す図である。情報処理システム１−４は、第１の実施の形態の各処理部に、計測部４０−３と閾値算出部４２−４が追加される。また、情報処理システム１−４は、ホスト１２−４が備える先読部２０−４、判定部２２−４および指示部２４−４の機能が、第１の実施の形態と異なっている。その他の構成は第１の実施の形態と同様であるため同一の符号を付し説明を省略する。また計測部４０−３は第３の実施の形態と同様であるため同一の符号を付し説明を省略する。
【０３１６】
＜情報処理＞
第４の実施の形態の情報処理装置（ホスト１２−４、送信装置１４）情報処理の全体の流れは、第２の実施の形態の情報処理を示す図７５と同様である。第２の実施の形態と比較すると、第３の実施の形態では、計測処理・閾値算出処理（図７５のステップＳ１００３）、先読処理・スケジューリング処理内の初期化処理（図５のステップＳ２００）、先読処理（図５のステップＳ２０２）、判定処理（図５のステップＳ２０６）、および、第２後処理（図５のステップＳ２１４）が変更される。
【０３１７】
＜初期化処理＞
図９２は、第４の実施の形態の初期化処理の詳細フローチャートである。ステップＳ１７００〜ステップＳ１７０４は、第１の実施の形態の初期化処理内のステップＳ３００〜ステップＳ３０４と同様であるため説明を省略する。
【０３１８】
最後に、先読部２０−４は、タイムインターバルとゲートコントロール周期時間を閾値算出部４２−４に通知し（ステップＳ１７０６）、本ルーチンを終了する。
【０３１９】
＜先読処理＞
図９３は、第４の実施の形態の先読処理の詳細フローチャートである。ステップＳ１８００〜ステップＳ１８１０は、第１の実施の形態の先読処理内のステップＳ４００〜ステップＳ４１０と同様であるため説明を省略する。
【０３２０】
最後に、先読部２０−４は、タイムインターバルを閾値算出部４２−４に通知し（ステップＳ１８１２）、本ルーチンを終了する。
【０３２１】
＜計測処理・閾値算出処理＞
図９４は計測処理・閾値算出処理の詳細フローチャートである。ステップＳ１９００〜ステップＳ１９１２は、第３の実施の形態の計測処理・閾値算出処理（図８４）のステップＳ１４００〜ステップＳ１４１２と同様であるため説明を省略する。
【０３２２】
次に、閾値算出部４２−４は、先読部２０−４から通知されるタイムインターバルとゲートコントロール周期時間に基づいて第３閾値ｔｈ３を算出する（ステップＳ１９１４）。
【０３２３】
以下に説明するように、将来時刻ｔｆと現在時刻ｔｃの時間差ｔｄが一定値（閾値）以上になったときに、判定処理を一時的に保留にした方がよい状況がありうる。例えば、将来時刻ｔｆにおいて、低優先度の送信キューと高優先度の送信キューの双方に送信可能時間が割り当てられており、あるアプリケーションが低優先度の送信キューに大量のフレームをバースト的に書き込む状況を想定する。このような状況下では、仮に高優先度の送信キューが空であった場合、低優先度の送信キューに書き込まれたフレームが優先的に次々とスケジューリングされ、その後に高優先度の送信キューに書き込まれたフレームの送信タイミングが必要以上に遅延する可能性がある。
【０３２４】
第３閾値ｔｈ３は、このような状況が生じることを抑制するために用いられる。閾値算出部４２−４は、例えば、タイムインターバル又はゲートコントロール周期時間に一定のオフセット（ｏｆｆｓｅｔ）を加算した値を第３閾値ｔｈ３として算出してもよい。判定部２２−４は、将来時刻ｔｆと現在時刻ｔｃの時間差ｔｄを、この第３閾値ｔｈ３と比較することで、判定処理を保留するか否か判断することが可能となる。
【０３２５】
最後に、閾値算出部４２−４は、第１閾値ｔｈ１、第２閾値ｔｈ２及び第３閾値ｔｈ３を、判定部２２−４及び指示部２４−４に通知する。例えば、閾値算出部４２−４は、共有メモリに各閾値を書き込み、その後、判定部２２−４及び指示部２４−４に対して閾値の値を更新したことを知らせるシグナルを送ってもよい。
【０３２６】
なお、計測部４０−３と閾値算出部４２−４は、図９４に示す処理を繰り返し実行する。すなわち、計測部４０−３は継続的にモニタリングを行い、閾値算出部４２−４は最新のモニタリング結果を反映させるように、各閾値を算出する。このため、第４の実施の形態では、処理時間の動的な変動に対応するように、閾値の値を更新することが可能となる。
【０３２７】
図９４内の各ステップの少なくとも一部を並列に実行するように構成してもよい。図９５は、並列に実行するステップを含む計測処理・閾値算出処理の詳細フローチャートの一例である。図９５の例では、ステップＳ１９００、Ｓ１９０２、Ｓ１９０４、および、Ｓ１
９６が並列に実行される。また、ステップＳ１９１０〜Ｓ１９１６−１、Ｓ１９１２〜Ｓ１９１６−２、および、ステップＳ１９１４〜Ｓ１９１６−３が並列に実行される。ステップＳ１９１６−１〜１９１６−３は、図９４のステップＳ１９１６を分割したステップに相当する。
【０３２８】
第４の実施の形態を適用することで、第３の実施の形態と比べて、処理時間の変動に対する対応パターンが増え、柔軟性を向上させることが可能となる。図９６は、算出される第１閾値ｔｈ１、第２閾値ｔｈ２および第３閾値ｔｈ３の例を示す図である。図９６に示すように第３閾値ｔｈ３を導入したことで、図８６と比較して対応パターンの個数が３（図８６の第１エリア、第２エリア及び第３エリア）から４（図９６の第１エリア、第２エリア、第３エリア及び第４エリア）に増えていることがわかる。
【０３２９】
＜判定処理＞
図９７は、第４の実施の形態の判定処理の詳細フローチャートである。ステップＳ２０００〜ステップＳ２００２は、第３の実施の形態の判定処理を示す図８７のステップＳ１５００〜ステップＳ１５０２と同様であるため説明を省略する。
【０３３０】
ステップＳ１５０２の後、判定部２２−４は、閾値算出部４２−４から通知された第３閾値ｔｈ３と時間差ｔｄを比較し、時間差ｔｄが第３閾値ｔｈ３より大きいか否かを判定する（ステップＳ２００４）。時間差ｔｄが第３閾値ｔｈ３より大きい場合（ステップＳ２００４：Ｙｅｓ）、本ルーチンを終了する。
【０３３１】
一方、時間差ｔｄが第３閾値ｔｈ３以下の場合（ステップＳ２００４：Ｎｏ）、判定部２２−４は、ステップＳ２００６〜ステップＳ２０２６を実行する。ステップＳ２００６〜ステップＳ２０２６は、第３の実施の形態の判定処理を示す図８７のステップＳ１５０４〜ステップＳ１５２４と同様であるため説明を省略する。
【０３３２】
＜第２後処理＞
図９８は、第４の実施の形態の第２後処理の詳細フローチャートである。ステップＳ２１００およびステップＳ２１０２は、第３の実施の形態の第２後処理に含まれるステップＳ１６００およびステップＳ１６０２と同様であるため説明を省略する。
【０３３３】
ステップＳ１６０２の後、判定部２２−４は、閾値算出部４２−４から通知された第３閾値ｔｈ３と時間差ｔｄを比較し、時間差ｔｄが第３閾値ｔｈ３より大きいか否かを判定する（ステップＳ２１０４）。時間差ｔｄが第３閾値ｔｈ３より大きい場合（ステップＳ２１０４：Ｙｅｓ）、本ルーチンを終了する。
【０３３４】
一方、時間差ｔｄが第３閾値ｔｈ３以下の場合（ステップＳ２２０１４：Ｎｏ）、指示部２４−４は、ステップＳ２１０６〜ステップＳ２１１４を実行する。ステップＳ２１０６〜ステップＳ２１１４は、第３の実施の形態の第２後処理に含まれるステップＳ１６０４〜ステップＳ１６１２と同様であるため説明を省略する。
【０３３５】
なお、図９９および図１００は、第３の実施の形態の指示部２４−４により更新された将来時刻の一例を示す図である。図９９は、ｔｄ≦ｔｈ１の場合の更新例を示す。図１００は、ｔｈ１＜ｔｄ≦ｔｈ２の場合の更新例を示す。
【０３３６】
＜まとめ＞
第２の実施の形態では、図７７に示すように、２つの対応パターン（第１エリアおよび第２エリア）が定義される。第３の実施の形態では、図８６に示すように、３つの対応パターン（第１エリア、第２エリア及び第３エリア）が定義される。第４の実施の形態では、図９６（図９９、図１００）に示すように、４つの対応パターン（第１エリア、第２エリア、第３エリア及び第４エリア）が定義される。図９６の各エリアでは、例えば、以下のように処理が制御される。
【０３３７】
例えば、将来時刻ｔｆが第１エリアの範囲に入っている場合、各送信キューの送信可能時間が減少され、将来時刻ｔｆが強制的に先に進められる。また、例えば、将来時刻ｔｆが第１エリアの範囲に入っている場合、判定部による判定処理が保留とされる。
【０３３８】
例えば、将来時刻ｔｆが第２エリアの範囲に入っている場合、スケジューリング可能なフレームが少なくとも１つ存在するかが確認され、スケジューリング可能なフレームが存在する場合、判定部による判定処理が許可される。スケジューリング可能なフレームが存在しない場合、各送信キューの送信可能時間が減少され、将来時刻ｔｆが強制的に先に進められる。また、スケジューリング可能なフレームが存在しない場合、判定部による判定処理が保留とされる。
【０３３９】
例えば、将来時刻ｔｆが第３エリアの範囲に入っている場合、判定部による判定処理が許可される。
【０３４０】
例えば、将来時刻ｔｆが第４エリアの範囲に入っている場合、判定部による判定処理が保留とされる。
【０３４１】
例えば、将来時刻ｔｆが第１エリア又は第２エリアの範囲に入っている場合に、各送信キューの送信可能時間を減少させることで、先読部が先読みするタイミングを間接的に制御することができる。上述のように、例えば送信キューの各々に割当てられている送信可能時間の全てがゼロ“０”である場合に先読指示が先読部２０へ通知される、すなわち、送信可能時間の減少が先読み指示のトリガーとなっているためである。
【０３４２】
例えば、将来時刻ｔｆが第１エリア又は第４エリアの範囲に入っている場合に、判定部による判定処理を保留させることで、スケジューリング部がスケジューリングするタイミングを間接的に制御することができる。上述のように、スケジューリング部は、判定部からの通知に連動してスケジューリングを行うためである。
【０３４３】
以上、具体的な例を挙げて説明したように、第２から第４の実施の形態の情報処理装置は、将来時刻と現在時刻との時間差と、一つの閾値または二つ以上の複数の閾値との比較結果に基づいて、先読みのタイミングとスケジューリングのタイミングを制御することができる。さらに、閾値を動的に更新することで、例えば、環境によって変化するオペレーティングシステムのタスクスケジューリング、および、バスの遅延変動に対して柔軟に対応することが可能となる。
【０３４４】
従って、第２から第４の実施の形態の情報処理装置では、処理時間の変動に対するロバスト性を向上させることが可能となる。すなわち、第２から第４の実施の形態の情報処理装置では、ロバスト性向上により、送信スケジューリング情報に基づいた動的なスケジューリング処理のタイミング精度が高まり、結果としてリアルタイム性が求められるフレームをよりタイムリーに送信することができる。
【０３４５】
なお、各エリアを定める閾値の少なくとも一部は、必ずしも動的に算出および更新する必要はない。例えば、閾値の少なくとも一部を、何らかの方法で予め静的に決定した固定値として設定してもよい。固定の閾値を用いた場合であっても、適切な値を定めることができれば、先読みのタイミングとスケジューリングのタイミングを一定の精度で制御することが可能となる。最適な構成を決定するためには、例えば、アプリケーションの要求精度と設計および実装コスト等のトレードオフを考慮する必要がある。
【０３４６】
なお、上記実施の形態は、例として提示したものであり、静的又は動的に更新する閾値の数を３つ（第１閾値ｔｈ１、第２閾値ｔｈ２及び第３閾値ｔｈ３）に限定することは意図していない。また、上記実施の形態は、例として提示したものであり、対応パターンを２つ〜４つ（第１エリア、第２エリア、第３エリア及び第４エリア）に限定することは意図していない。例えば、第１閾値ｔｈ１および第３閾値ｔｈ３に相当する２つの閾値を用いて、３つの対応パターン（第１エリア、第３エリア及び第４エリアに相当）を定義する形態としてもよい。
【０３４７】
また、閾値を動的に算出する場合、複数の閾値の大小関係が、上述した対応パターンを定義できるような関係（例えば第１閾値ｔｈ１＜第２閾値ｔｈ２＜第３閾値）とならない場合が生じうる。このような場合は、上述した対応パターンのいずれかが定義できるような値に閾値を調整してもよい。例えば第３の実施の形態で、第１閾値ｔｈ１＞第２閾値ｔｈ２となった場合は、第２閾値ｔｈ２と第１閾値ｔｈ１と同じ値に調整し、第１エリアおよび第２エリアを用いる第２の実施の形態に従って処理するように構成してもよい。
【０３４８】
第２の実施の形態、第３の実施の形態及び第４の実施の形態でそれぞれ説明したように、この新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、新しい閾値及び対応パターンの追加、閾値の算出方法の変更、送信可能時間の減少値の算出方法の変更等を行うことができる。
【０３４９】
次に、上記実施の形態の情報処理装置１０のハードウェア構成の一例を説明する。図１０１は、上記実施の形態の情報処理装置１０のハードウェア構成図の一例である。
【０３５０】
上記実施の形態の情報処理装置１０は、ＣＰＵ４０などの制御装置と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４１やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４２やＨＤＤ（ハードディスクドライブ）４４などの記憶装置と、各種機器とのインターフェースであるＩ／Ｆ部４３と、各部を接続するバス４５とを備えており、通常のコンピュータを利用したハードウェア構成となっている。
【０３５１】
上記実施の形態の情報処理装置１０では、ＣＰＵ４０が、ＲＯＭ４１からプログラムをＲＡＭ４２上に読み出して実行することにより、上記各部がコンピュータ上で実現される。
【０３５２】
なお、上記実施の形態の情報処理装置１０で実行される上記各処理を実行するためのプログラムは、ＨＤＤ４４に記憶されていてもよい。また、上記実施の形態の情報処理装置１０で実行される上記各処理を実行するためのプログラムは、ＲＯＭ４１に予め組み込まれて提供されていてもよい。
【０３５３】
また、上記実施の形態の情報処理装置１０で実行される上記処理を実行するためのプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、ＣＤ−Ｒ、メモリカード、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、フレキシブルディスク（ＦＤ）等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータプログラムプロダクトとして提供されるようにしてもよい。また、上記実施の形態の情報処理装置１０で実行される上記処理を実行するためのプログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、上記実施の形態の情報処理装置１０で実行される上記処理を実行するためのプログラムを、インターネットなどのネットワーク経由で提供または配布するようにしてもよい。
【０３５４】
なお、上記には、本発明の実施の形態を説明したが、上記実施の形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施の形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０３５５】
１０  情報処理装置
２０  先読部
２２、２２−２、２２−３、２２−４  判定部
２４、２４−２、２４−３、２４−４  指示部
２６  スケジューリング部
４０−２、４０−３  計測部
４２−２、４２−３、４２−４  閾値算出部
【図１】
2020149503.tif 000003
【図２】
2020149503.tif 000004
【図３】
2020149503.tif 000005
【図４】
2020149503.tif 000006
【図５】
2020149503.tif 000007
【図６】
2020149503.tif 000008
【図７】
2020149503.tif 000009
【図８】
2020149503.tif 000010
【図９】
2020149503.tif 000011
【図１０】
2020149503.tif 000012
【図１１】
2020149503.tif 000013
【図１２】
2020149503.tif 000014
【図１３】
2020149503.tif 000015
【図１４】
2020149503.tif 000016
【図１５】
2020149503.tif 000017
【図１６】
2020149503.tif 000018
【図１７】
2020149503.tif 000019
【図１８】
2020149503.tif 000020
【図１９】
2020149503.tif 000021
【図２０】
2020149503.tif 000022
【図２１】
2020149503.tif 000023
【図２２】
2020149503.tif 000024
【図２３】
2020149503.tif 000025
【図２４】
2020149503.tif 000026
【図２５】
2020149503.tif 000027
【図２６】
2020149503.tif 000028
【図２７】
2020149503.tif 000029
【図２８】
2020149503.tif 000030
【図２９】
2020149503.tif 000031
【図３０】
2020149503.tif 000032
【図３１】
2020149503.tif 000033
【図３２】
2020149503.tif 000034
【図３３】
2020149503.tif 000035
【図３４】
2020149503.tif 000036
【図３５】
2020149503.tif 000037
【図３６】
2020149503.tif 000038
【図３７】
2020149503.tif 000039
【図３８】
2020149503.tif 000040
【図３９】
2020149503.tif 000041
【図４０】
2020149503.tif 000042
【図４１】
2020149503.tif 000043
【図４２】
2020149503.tif 000044
【図４３】
2020149503.tif 000045
【図４４】
2020149503.tif 000046
【図４５】
2020149503.tif 000047
【図４６】
2020149503.tif 000048
【図４７】
2020149503.tif 000049
【図４８】
2020149503.tif 000050
【図４９】
2020149503.tif 000051
【図５０】
2020149503.tif 000052
【図５１】
2020149503.tif 000053
【図５２】
2020149503.tif 000054
【図５３】
2020149503.tif 000055
【図５４】
2020149503.tif 000056
【図５５】
2020149503.tif 000057
【図５６】
2020149503.tif 000058
【図５７】
2020149503.tif 000059
【図５８】
2020149503.tif 000060
【図５９】
2020149503.tif 000061
【図６０】
2020149503.tif 000062
【図６１】
2020149503.tif 000063
【図６２】
2020149503.tif 000064
【図６３】
2020149503.tif 000065
【図６４】
2020149503.tif 000066
【図６５】
2020149503.tif 000067
【図６６】
2020149503.tif 000068
【図６７】
2020149503.tif 000069
【図６８】
2020149503.tif 000070
【図６９】
2020149503.tif 000071
【図７０】
2020149503.tif 000072
【図７１】
2020149503.tif 000073
【図７２】
2020149503.tif 000074
【図７３】
2020149503.tif 000075
【図７４】
2020149503.tif 000076
【図７５】
2020149503.tif 000077
【図７６】
2020149503.tif 000078
【図７７】
2020149503.tif 000079
【図７８】
2020149503.tif 000080
【図７９】
2020149503.tif 000081
【図８０】
2020149503.tif 000082
【図８１】
2020149503.tif 000083
【図８２】
2020149503.tif 000084
【図８３】
2020149503.tif 000085
【図８４】
2020149503.tif 000086
【図８５】
2020149503.tif 000087
【図８６】
2020149503.tif 000088
【図８７】
2020149503.tif 000089
【図８８】
2020149503.tif 000090
【図８９】
2020149503.tif 000091
【図９０】
2020149503.tif 000092
【図９１】
2020149503.tif 000093
【図９２】
2020149503.tif 000094
【図９３】
2020149503.tif 000095
【図９４】
2020149503.tif 000096
【図９５】
2020149503.tif 000097
【図９６】
2020149503.tif 000098
【図９７】
2020149503.tif 000099
【図９８】
2020149503.tif 000100
【図９９】
2020149503.tif 000101
【図１００】
2020149503.tif 000102
【図１０１】
2020149503.tif 000103