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