以下に添付図面を参照して、情報処理装置、情報処理方法、およびプログラムを詳細に説明する。本実施の形態の情報処理装置は、特に、高いリアルタイム性の求められる分野に好適に適用される。
はじめに、高いリアルタイム性が求められる分野で利用されている規格の例について、説明する。高いリアルタイム性とは、例えば低遅延性や高い時刻同期精度を示す。高いリアルタイム性が求められる分野とは、例えば、産業用ネットワークや、車載ネットワークなどである。
例えば、イーサネット(登録商標)上でリアルタイム性を実現する規格として、TSN(Time-Sensitive Networking)の規格化が、IEEE 802.1 TSN Taskで進んでいる。TSNは複数の規格から構成される。TSNは、プロオーディオ等で用いられている低遅延性を実現するAVB(Audio/Video Bridging)を拡張した規格である。TSNは、産業用ネットワーク及び車載ネットワーク等にも適用できるようにするため、AVBよりも高いリアルタイム性に加えて、高信頼性の実現を目指す規格である。
TSN規格の1つであるIEEE 802.1Qbvは、エンドノードまたは中継ノード(スイッチ)の送信キューを、予め決められたスケジュールに基づいて制御するための通信規格である。具体的には、IEEE 802.1Qbvは、トラフィッククラスごとに割当てられた複数の送信キューの各々を、個別に有効(オープン)または無効(クローズ)の状態に適切に切り替えることで、各送信キューからのフレーム送信のタイミングを制御する。
IEEE 802.1Qbv規格には、ゲートコントロールリストと称される送信スケジューリング情報を用いて、複数の送信キューの各々の状態を制御することが定められている。ゲートコントロールリストは、ゲートステートとタイムインターバルとを含むゲートコントロールエントリから構成される。ゲートステートは、送信キューの送信可否状態を示す。送信可否状態は、送信可を示す有効(オープン)、または、送信不可を示す無効(クローズ)で表される。タイムインターバルは、対応するゲートステートを維持する時間を示す。ゲートコントロールリストは、上位レイヤのアプリケーションやネットワーク全体の通信要件などに応じて、予め設定される。
ゲートコントロールリストに設定されたタイミングで、複数の送信キューおよび送信キューの各々に対応するゲートの開閉処理が制御される。これにより、ゲートコントロールリストによってスケジューリングされたタイミングで、各送信キューからの送信タイミングが制御される。例えば、ネットワーク上の各ノードでは、時間の経過とともに変化する各送信キューの送信可否状態を、予め定められたスケジュールに基づいて制御することが可能となる。このため、各送信キューからのフレーム送信を許可するタイミングを厳密に制御することで、高いリアルタイム性が求められるデータ送信における、ネットワーク遅延やジッタを小さくすることが可能になる。
ここで、IEEE 802.1Qbv規格で定められている送信制御方法を有効に機能させるためには、数ナノ秒~数マイクロ秒オーダーの精度のタイムインターバルを、正確に制御することが求められる。しかし、従来技術では、このような要求精度を実現することは困難であり、高精度な送信タイミング制御のためのスケジューリングを行うことは困難であった。
(第1の実施の形態)
そこで、第1の実施の形態の情報処理装置では、以下の構成とすることで、高精度な送信タイミング制御のためのスケジューリングを実現する。
なお、本実施の形態の情報処理装置は、送信スケジューリング情報に基づいて、送信キューから送信されるフレームの送信タイミング制御を行う。本実施の形態では、送信制御に用いる規格として、IEEE 802.1Qbvを用いる場合を、一例として説明する。しかし、本実施の形態の情報処理装置が送信制御に用いる規格は、IEEE 802.1Qbvに限定されない。
[機能構成の例]
次に、本実施の形態の情報処理装置10について具体的に説明する。
図1は、本実施の形態の情報処理システム1の機能構成の例を示す図である。情報処理システム1は、情報処理装置10と、通信装置2と、を備える。情報処理装置10は、ネットワーク等を介して、通信装置2へフレームを出力する。
本実施の形態では、情報処理装置10は、ホスト12と、送信装置14と、を備える。ホスト12と送信装置14とは、例えば、PCI Expressおよびバスなどを介して接続されている。
通信装置2は、送信装置14に接続された機器である。通信装置2は、例えば、通信機器である。送信装置14と通信装置2との接続方式は、無線方式であってもよいし、有線方式であってもよい。また、送信装置14に接続された通信装置2の数は、1つに限定されず、2つ以上であってもよい。
なお、情報処理装置10を、ホスト12のみから構成してもよい。すなわち、情報処理装置10は、送信装置14を含まない構成であってもよい。また、情報処理装置10を、送信装置14のみから構成してもよい。この場合、送信装置14に、ホスト12の後述する機能部を搭載した構成とすればよい。本実施の形態では、情報処理装置10が、ホスト12と送信装置14とを含む場合を、一例として説明する。
ホスト12は、処理部31と、記憶部30と、を備える。処理部31と記憶部30とは、データや信号を授受可能に接続されている。
処理部31は、ホスト12全体を制御する。具体的には、処理部31は、フレームの送信開始予定時刻をスケジューリングする(詳細後述)。
処理部31の具体的な形態は任意でよい。処理部31は、例えばソフトウェア、パーソナルコンピュータ、サーバ装置、専用LSI(Large-Scale Integration)、及び、FPGA(Field Programmable Gate Array)等である。処理部31をソフトウェアにより実現する場合、例えばCPU(Central Processing Unit)、および、MPU(Micro-processing Unit)等に当該ソフトウェアを実行させることにより、処理部31を実現する。
また、処理部31による制御の対象となる具体的なアプリケーションは、任意でよい。具体的なアプリケーションは、例えば、車載システムおよびファクトリーオートメーションシステム等である。車載システムでは、例えば自動運転の各種制御等に係わるリアルタイム性が求められる通信を制御する。また、ファクトリーオートメーションシステムでは、例えばPLC(Programmable Logic Controller)、およびI/O機器等の各制御機器の制御信号等のリアルタイム性が求められる通信を制御する。
記憶部30は、各種のデータを記憶する。記憶部30の具体的な形態は任意でよい。記憶部30は、例えばSRAM(Static Random Access Memory)、SDRAM(Synchronous Dynamic Random Access Memory)、SSD(Solid State Drive)、HDD(Hard Disk Drive)、及び、SDカード等の記憶装置である。
本実施の形態では、記憶部30は、送信フレーム記憶部32と、送信スケジューリング情報記憶部34と、送信可能時間記憶部36と、将来時刻記憶部38と、を含む。
なお、送信フレーム記憶部32、送信スケジューリング情報記憶部34、送信可能時間記憶部36、および将来時刻記憶部38は、物理的に異なる複数の記憶装置から構成されてもよい。また、送信フレーム記憶部32、送信スケジューリング情報記憶部34、送信可能時間記憶部36、および将来時刻記憶部38は、同一の記憶装置の領域を論理的に分離することにより実現されてもよい。
また、記憶部30の少なくとも一部と、処理部31と、を、物理的に分離した別体として構成してもよい。例えば、記憶部30を、ネットワークに接続されたサーバ装置に記憶してもよい。また、例えば、記憶部30に記憶されている少なくとも一部の情報を、サーバ装置に記憶してもよい。
送信フレーム記憶部32は、1つ以上の送信キューを含む。本実施の形態では、送信フレーム記憶部32が、N個(Nは2以上の整数)の送信キュー(
送信キュー0~送信キューN-1)を含む場合を一例として説明する。送信キューの各々は、フレームを記憶する。フレームは、例えば、リアルタイム性を要求されるトラフィックのデータなどである。フレームは、後述する処理によって、通信装置2に送信される。
送信フレーム記憶部32には、フレームが、フレームの属するトラフィッククラスに基づいて、送信キュー0~送信キューN-1の何れかに記憶される。例えば、上位レイヤのアプリケーションが、任意のタイミングで各送信キューに新しいフレームを書込む。
送信スケジューリング情報記憶部34は、送信スケジューリング情報34Aを記憶する。送信スケジューリング情報34Aは、送信キューからのフレーム送信を許可するタイミングを、厳密に制御するために必要となる情報を含む。
なお、送信スケジューリング情報34Aは、あくまでも、送信キューからのフレーム送信を許可するタイミングを示すものであり、実際にフレームの送信が発生するか否かは、送信キューにフレームが書込まれているか否かによって定まる。すなわち、実際にフレームの送信が発生するか否かは、上位に位置するアプリケーションの動作等によって決定される。
具体的には、送信スケジューリング情報34Aは、1つ以上のエントリを含む。本実施の形態では、送信スケジューリング情報34Aが、複数のエントリを含む場合を、一例として説明する。
エントリは、1つ以上の送信キューの各々の送信可否状態と、送信可否状態の維持タイミングと、を規定したものである。例えば、エントリは、IEEE 802.1Qbv規格に規定されたゲートコントロールエントリに相当する。
送信可否状態は、送信可を示す有効(オープン)、または、送信不可を示す無効(クローズ)で表される。例えば、送信可否状態は、IEEE 802.1Qbv規格に規定されたゲートステートに相当する。
送信可否状態の維持タイミングは、対応する送信可否状態を維持するタイミングを示す。具体的には、維持タイミングは、対応する送信可否状態を維持する期間の開始時刻および終了時刻、または、対応する送信可否状態を維持する期間および該期間の開始時刻によって規定される、対応する送信可否状態を維持する期間は、IEEE 802.1Qbv規格に規定されたタイムインターバルに相当する。また、該期間の開始時刻は、IEEE 802.1Qbv規格に規定された、ゲートコントロール開始時刻に相当する。
本実施の形態では、送信スケジューリング情報34Aは、IEEE 802.1Qbv規格に規定された情報を含む場合を一例として説明する。すなわち、本実施の形態では、送信スケジューリング情報34Aが、ゲートコントロールリストと、ゲートコントロール開始時刻などの他のパラメータと、を含む形態を、一例として説明する。また、以下では、送信可否状態をゲートステートと称し、送信可否状態を維持する期間をタイムインターバルと称して説明する場合がある。
図2は、送信スケジューリング情報34Aのデータ構成の一例を示す模式図である。
本実施の形態では、送信スケジューリング情報34Aは、ゲートコントロールリスト34Bと、その他のパラメータ34Cと、を含む。
ゲートコントロールリスト34Bは、複数のエントリ34Dを含む。エントリ34Dは、リストインデックスと、ゲートステートと、タイムインターバルと、を含む。リストインデックスは、エントリ34Dのインデックスを示す情報である。図2のゲートコントロールリスト34Bには、8つのエントリ34D(エントリ34D0~エントリ34D7)が登録されている場合を、一例として示した。
エントリ34Dは、リストインデックスと、ゲートステートと、タイムインターバルと、を含む。送信可否状態を示すゲートステートは、上述したように、トラフィッククラスごとに割当てられた複数の送信キューの各々に対する、送信可否状態を示す。図2中、ゲートステートに示される“o”は、送信可を示す有効(オープン)を示し、“C”は、送信不可を示す無効(クローズ)を示す。
具体的には、例えば、図2に示すリストインデックス“7”のエントリ34D7のゲートステート“CCCCCCCo”は、送信フレーム記憶部32における複数の送信キューの各々の送信可否状態(オープンまたはクローズ)を示している。上述したように、本実施の形態では、送信フレーム記憶部32は、8個の送信キュー(送信キュー0~送信キュー7)を含む場合を説明する。このため、リストインデックス“7”のエントリ34D7のゲートステート“CCCCCCCo”は、送信キュー1~送信キュー7が無効(クローズ)であり、送信キュー0が有効(オープン)であることを示す。そして、対応するインターバル“2500ナノ秒”は、送信キュー0を有効とする期間が2500ナノ秒であることを示す。
その他のパラメータ34Cは、例えば、ゲートコントロール開始時刻、ゲートコントロール周期時間、ゲートコントロールリスト34Bのエントリ数などを含む。ゲートコントロール周期時間は、ゲートコントロールリスト34Bに示される1周期分の時間を示す。例えば、ゲートコントロール周期時間として、ゲートコントロールリスト34Bに示されるタイムインターバルの合計値を設定してもよい。
図1に戻り説明を続ける。将来時刻記憶部38は、将来時刻情報38Aを記憶する。送信可能時間記憶部36は、送信可能時間情報36Aを記憶する。
図3は、将来時刻情報38Aおよび送信可能時間情報36Aの一例を示す模式図である。
将来時刻情報38Aは、将来時刻を示す情報である。
将来時刻は、次の送信開始予定時刻の候補となる時刻であって、現在時刻より将来の(未来の)時刻である。送信開始予定時刻とは、フレームの送信を開始する予定時刻であって、処理部31による後述する処理によってスケジューリングされる(詳細後述)。次の送信開始予定時刻とは、後述するスケジューリング部26が次にスケジューリングするフレームの、送信開始予定時刻の候補となる時刻である。
なお、現在時刻には、情報処理装置10のローカルクロックを用いればよい。また、現在時刻には、情報処理装置10と他の装置との装置間、または、ネットワーク内で同期している時刻を用いてもよい。
将来時刻は、次のフレームの送信開始予定時刻をスケジューリングする際に用いられる(詳細後述)。
なお、将来時刻情報38Aは、1つの将来時刻を示す。すなわち、本実施の形態における“将来時刻”は、将来時刻記憶部38に記憶されている1つの将来時刻を示す。この将来時刻は、後述する処理部31の処理によって、更新される(詳細後述)。
送信可能時間情報36Aは、送信キューごとの送信可能時間を示す情報である。詳細には、送信可能時間は、対応する送信キューからフレームを送信することの可能な残り時間を示す。送信可能時間は、送信キューごとに割当てられ、現在時刻や将来時刻の変化に連動する形で値が変化する。具体的には、各送信キューの送信可能時間は、後述する処理部31の処理によって更新される(詳細後述)。
図1に戻り説明を続ける。次に、処理部31について説明する。処理部31は、先読部20と、判定部22と、指示部24と、スケジューリング部26と、を備える。
先読部20は、送信スケジューリング情報34Aにおける、現在時刻より未来の維持タイミングに対応する、エントリ34Dを先読みする。言い換えると、先読部20は、現在時刻より未来のタイミングにおいて送信制御の対象となるエントリ34Dを、先読みする。なお、先読みする、とは、現在より未来の時刻において送信制御の対象となるエントリ34Dを、該未来の時刻より前に、事前に読み込むことを意味する。
本実施の形態では、先読部20は、指示部24から先読指示を受付けたときに、送信スケジューリング情報記憶部34から次のエントリ34Dを先読みする。
先読部20は、先読みした次のエントリ34Dに基づいて、後述するスケジューリング部26が次にスケジューリングするフレームの送信開始予定時刻の候補となる将来時刻、および該将来時刻において送信キューに割当てられる送信可能時間、を更新する。
例えば、先読部20は、先読みしたエントリ34Dに含まれるゲートステートが有効(オープン)状態の送信キューに対して、先読みしたエントリ34Dに含まれるタイムインターバルの値を送信可能時間として割り当てる。
なお、ゲートコントロールリスト34Bに、同じ送信キューに対して送信可を示す有効(オープン)が複数のエントリ34Dに連続して設定されている場合がある。この場合、先読部20は、これらの複数のエントリ34Dを先読みすることとなる。このため、この場合、先読部20は、先読みした複数のエントリ34Dの各々に含まれるタイムインターバルの合計値を当該送信キューの送信可能時間として割り当てればよい。
指示部24は、先読指示を、先読部20へ通知する。
例えば、指示部24は、将来時刻に送信キューに割当てられている送信可能時間に基づいて、先読指示を先読部20へ通知する。
詳細には、例えば、指示部24は、送信可能時間記憶部36に記憶されている将来時刻において、送信可能時間記憶部36に記憶されている送信キューの各々に割当てられている送信可能時間の全てがゼロ“0”である場合、先読指示を先読部20へ通知する。
また、指示部24は、後述する判定部22によって各送信キューのスケジューリングが不可能と判定された場合に、先読指示を先読部20へ通知してもよい。
なお、指示部24は、各送信キューの送信可能時間、および将来時刻と現在時刻との時間差に基づいて、先読指示を先読部20へ通知してもよい。
詳細には、指示部24は、将来時刻と現在時刻との時間差の閾値を予め定める。そして、指示部24は、将来時刻と現在時刻との時間差が、該閾値以下である場合、先読指示を先読部20へ通知する。
また、指示部24は、将来時刻と現在時刻との時間差に基づいて、各送信キューの送信可能時間を更新し、更新後の送信可能時間に応じて、先読指示を先読部20へ通知してもよい。
この場合、指示部24は、将来時刻と現在時刻との時間差に基づいて、該将来時刻において送信キューに割当てられる送信可能時間を更新する。例えばスケジューリング可能なフレームが存在する場合、この更新処理は、後述するスケジューリング部26によってスケジューリング処理が実行された後の、後処理として実行される。以下では、指示部24による、この更新処理を、第2後処理と称して説明する場合がある。
例えば、指示部24は、将来時刻記憶部38に記憶されている将来時刻と、現在時刻との時間差が閾値以下であり、且つ、時間差が前回のイテレーションで計算した値より小さい場合、送信可能時間情報36Aにおける送信キューの各々に対応する送信可能時間を、減少させる。例えば、指示部24は、送信可能時間情報36Aにおける送信可能時間から、予め定めた値を減算することで、送信可能時間を減少させる。減算に用いる値は、現在時刻が将来時刻に追いつく前に、各送信キューの送信可能時間をゼロにする条件を満たす値であればよい。具体的には、第2後処理時における、該減算に用いる値として、予め定めた固定値を用いてもよい。また、予め複数の固定値を設定した上で、前記時間差の値に応じて、該減算に用いる値を動的に選んでもよい。さらには、該減算に用いる値自体を動的に算出してもよい。一例として、前記閾値と前記時間差の差分に応じて、送信可能時間を減少させてもよい。
そして、指示部24は、第2後処理によって減算された後の、送信可能時間情報36Aに示される各送信キューの送信可能時間の全てがゼロ“0”となった場合に、先読指示を先読部20へ通知してもよい。
次に、判定部22について説明する。
判定部22は、送信キューに保持されている送信待機中のフレームの内、送信開始予定時刻をスケジューリング可能なフレームを判定する。
例えば、判定部22は、送信キューに保持されている送信待機中のフレームの内、送信所要時間が、次の送信開始予定時刻の候補となる将来時刻において該送信キューに割当てられている送信可能時間より小さいフレームを、送信開始予定時刻をスケジューリング可能なフレームとして判定する。
送信所要時間とは、送信部28から通信装置2へのフレームの送信に要する時間である。判定部22は、送信所要時間の算出に用いるパラメータを送信フレーム記憶部32から読取り、送信フレーム記憶部32に記憶されているフレーム毎に、送信所要時間を算出すればよい。送信所要時間の算出に用いるパラメータは、例えば、フレームサイズ、再送信の有無、送信リトライ回数・間隔、などである。
なお、判定部22は、送信待機中に代えて、送信キューに保持されている“送信可能な状態”にあるフレームの内、送信所要時間が将来時刻において送信キューに割当てられている送信可能時間より小さいフレームを、スケジューリング可能なフレームとして判定してもよい。例えば、特定の送信キューに対して何かしらのトラフィック・シェーピング・アルゴリズムを適用し、その結果として送信が許可されたフレームを“送信可能な状態”と見なしてもよい。また、前記トラフィック・シェーピング・アルゴリズムの具体例としては、例えばIEEE 802.1Qav規格で定められているCredit Based Shaperを用いてもよい。しかし、前記トラフィック・シェーピング・アルゴリズムは、IEEE 802.1Qavに限定されない。
次に、スケジューリング部26について説明する。
スケジューリング部26は、先読部20が先読みしたエントリ34Dに基づいて、送信キューに保持されている送信待機中のフレームの、送信開始予定時刻をスケジューリングする。
具体的には、スケジューリング部26は、判定部22によってスケジューリング可能と判定されたフレームの、送信開始予定時刻をスケジューリングする。詳細には、スケジューリング部26は、判定部22によってスケジューリング可能と判定されたフレームを、送信フレーム記憶部32から読込む。そして、スケジューリング部26は、読込んだフレームの送信開始予定時刻をスケジューリングする。
本実施の形態では、スケジューリング部26は、判定部22によってスケジューリング可能と判定されたフレームから、スケジューリング対象のフレームを選択する。このとき、スケジューリング可能と判定されたフレームが複数存在する場合、スケジューリング部26は、情報処理装置10に設けられた送信部28の数と同じ数のフレームを選択することができる。本実施の形態では、情報処理装置10は、1つの送信部28を備える形態を一例として説明する。このため、本実施の形態では、スケジューリング部26は、判定部22によってスケジューリング可能と判定されたフレームから、1つのフレームをスケジューリング対象として選択する。この選択の際に用いるアルゴリズムは任意でよい。選択アルゴリズムの具体例としては、例えば固定優先度のアルゴリズムやラウンドロビン方式のアルゴリズムを用いてもよい。しかし、これらに限定されるものではない。
そして、スケジューリング部26は、選択したフレームに、送信開始予定時刻をスケジューリングする。
例えば、スケジューリング部26は、将来時刻記憶部38に記憶されている将来時刻を、選択したフレームの送信開始予定時刻としてスケジューリングする。すなわち、スケジューリング部26は、先読みしたエントリ34Dに基づいて先読部20によって設定または更新され、または前回のスケジューリング処理後の第1後処理(詳細後述)によって更新された将来時刻を、選択したフレームの送信開始予定時刻としてスケジューリングする。
このように、スケジューリング部26は、送信スケジューリング情報34Aによって定義された制約を満たす範囲で、各フレームの送信開始予定時刻をスケジューリングすることができる。
また、上述したように、スケジューリング部26は、先読部20によって先読みされたエントリ34Dに基づいて、フレームの送信開始予定時刻をスケジューリングする。このため、スケジューリング部26は、高精度な送信タイミング制御のための、送信開始予定時刻のスケジューリングを行うことができる。
スケジューリング部26は、スケジューリング可能と判定されたフレームの送信開始予定時刻をスケジューリングすると、後処理として、第1後処理を実行する。
第1後処理は、スケジューリング後に、スケジューリングしたフレームの送信所要時間を用いて、次の送信開始予定時刻の候補となる将来時刻、および該将来時刻において送信キューの各々に割当てられる送信可能時間、を更新する処理である。
例えば、スケジューリング部26は、将来時刻記憶部38に記憶されている将来時刻に、送信開始予定時刻をスケジューリングしたフレームの送信所要時間を加算した時刻を、更新後の将来時刻として計算する。
また、例えば、スケジューリング部26は、送信可能時間記憶部36に記憶されている各送信キューに割当てられている送信可能時間から、送信開始予定時刻をスケジューリングしたフレームの送信所要時間を減算した時間を、更新後の送信可能時間として計算する。
そして、スケジューリング部26は、送信可能時間記憶部36および将来時刻記憶部38の各々に記憶されている送信可能時間と将来時刻を、それぞれ、計算した更新後の送信可能時間と更新後の将来時刻に更新する。このようにして、スケジューリング部26は、送信開始予定時刻のスケジューリング後に、第1後処理を実行する。
次に、送信装置14について説明する。
送信装置14は、例えば、NIC(Network Interface Card)である。送信装置14は、送信部28を含む。
送信部28は、スケジューリング部26によってスケジューリングされた送信開始予定時刻に基づいて、フレームの送信を開始する。本実施の形態では、送信部28は、通信装置2へフレームを送信する。
送信部28は、スケジューリング部26によって送信開始予定時刻をスケジューリングされたフレームについて、送信開始条件を満たした場合に、フレームの送信を開始する。
送信開始条件は、例えば、現在時刻と送信開始予定時刻とが一致した場合や、現在時刻と送信開始予定時刻との時間差が所定の閾値を下回った場合や、現在時刻と送信開始予定時刻との時間差が所定の閾値以内であり、且つ、現在時刻が送信開始予定時刻を過ぎた場合などである。以下では、送信開始条件が、現在時刻と送信開始予定時刻とが一致した場合であることを、一例として説明する。
すなわち、本実施の形態では、送信部28は、スケジューリング部26によってフレームにスケジューリングされた送信開始予定時刻と、現在時刻と、が一致したときに、該フレームを通信装置2へ送信する。言い換えると、送信部28は、送信開始予定時刻と現在時刻とが一致したときに、該送信開始予定時刻をスケジューリングされたフレームの送信を開始する。
なお、スケジューリング部26および送信部28は、フレームを一時的にバッファリングする領域を備えていてもよい。
このように、送信部28は、スケジューリング部26によってスケジューリングされた送信開始予定時刻に基づいて、該送信開始予定時刻をスケジューリングされたフレームの送信を開始する。このため、情報処理装置10は、各フレームを、スケジューリングされた送信開始予定時刻に通信装置2へ送信することができる。すなわち、本実施の形態の情報処理装置10は、リアルタイム通信が要求されるデータの送信タイミングを保証することができる。
次に、情報処理装置10が実行する情報処理の手順の一例を説明する。
<情報処理>
図4は、本実施の形態の情報処理装置10が実行する、情報処理の手順の一例を示すフローチャートである。情報処理装置10は、処理部31による先読処理・スケジューリング処理(ステップS100)と、送信部28による送信処理(ステップS102)と、を同時に並列に実行する。
<先読処理・スケジューリング処理>
図5は、ステップS100(図4参照)の処理の詳細フローチャートである。図5に示すように、まず、先読部20が初期化処理を実行する(ステップS200)。ステップS200では、先読部20は、初期値として用いる、送信可能時間および将来時刻を計算する。ステップ200の初期化処理の詳細フローチャートは、後述する。
次に、先読部20は、先読処理を実行する(ステップS202)。ステップS202の処理によって、先読部20は、次のエントリ34Dの先読みと、送信可能時間および将来時刻の更新を行う。ステップS202の先読処理の詳細フローチャートは、後述する。
次に、ステップS202の先読処理時に、指示部24から先読指示が通知されたか否かを判定する(ステップS204)。先読指示が通知されたと判定した場合(ステップS204:Yes)、ステップS202へ戻る。
ステップS204で肯定判断(ステップS204:Yes)する場合とは、例えば、ゲートコントロールリスト34Bに、同じ送信キューに対して送信可を示す有効(オープン)が複数のエントリ34Dに連続して設定されている場合である。この場合、先読部20は、ステップS202の先読処理を繰返すことで、これらの複数のエントリ34Dを先読みすることとなる。
一方、先読指示が通知されなかったと判定した場合(ステップS204:No)、ステップS206へ進む。ステップS206では、判定部22が、判定処理を実行する(ステップS206)。ステップS206の判定処理によって、判定部22は、スケジューリング可能なフレームが有るか否かを判定する。ステップS206の判定処理の詳細フローチャートは、後述する。
ステップS206の判定処理によって、スケジューリング可能なフレームが無いと判定された場合(ステップS208:No)、後述するステップS214へ進む。一方、ステップS206の判定処理によって、スケジューリング可能なフレームが有ると判定された場合(ステップS208:Yes)、ステップS210へ進む。
ステップS210では、スケジューリング部26が、スケジューリング処理を実行する(ステップS210)。ステップS210の処理によって、スケジューリング部26は、フレームの送信開始予定時刻をスケジューリングする。ステップS210のスケジューリング処理の詳細フローチャートは、後述する。
次に、スケジューリング部26は、第1後処理を実行する(ステップS212)。ステップS212の処理によって、スケジューリング部26は、ステップS210でスケジューリングしたフレームの送信所要時間を用いて、次の送信開始予定時刻の候補となる将来時刻、および該将来時刻において送信キューの各々に割当てられる送信可能時間、を更新する。ステップS212の第1後処理の詳細フローチャートは、後述する。そして、ステップS214へ進む。
ステップS214では、指示部24が、第2後処理を実行する(ステップS214)。ステップS214の処理によって、指示部24は、将来時刻と現在時刻との時間差に基づいて、該将来時刻において送信キューに割当てられる送信可能時間を更新する。ステップS214の第2後処理の詳細フローチャートは後述する。
そして、ステップS214の処理によって、図5のフローチャートにおける、先読み処理・スケジューリング処理に係るループ1回分の処理が終了する。そして、上記ステップS202へ戻り、情報処理装置10は、上記処理を繰り返し実行する。この処理により、情報処理装置10は、継続的に、先読処理およびスケジューリング処理を実行することができる。
<初期化処理>
図6は、ステップS200(図5参照)の初期化処理の詳細フローチャートである。また、図7は、初期化処理の流れを示す模式図である。
まず、先読部20が、送信スケジューリング情報記憶部34から送信スケジューリング情報34Aを読込む(ステップS300)。詳細には、先読部20は、ゲートコントロールリスト34Bと、その他のパラメータ34C(図2参照)と、を含む送信スケジューリング情報34Aを読込む。
次に、先読部20は、ステップS300で読込んだ送信スケジューリング情報34Aを用いて、送信可能時間および将来時刻の初期値を決定する(ステップS302)。
例えば、先読部20は、その他のパラメータ34Cに含まれるゲートコントロール開始時刻(図2参照)を、将来時刻の初期値として設定する。
また、例えば、先読部20は、エントリ34Dに含まれる、各送信キューのゲートステートおよびタイムインターバルに基づいて、該将来時刻において各送信キューに割当てる送信可能時間を設定する。
具体的には、例えば、先読部20は、ゲートコントロールリスト34Bにおける、最初に送信制御するエントリ34D(例えば、エントリ34D0)を特定する(図2も参照)。そして、先読部20は、該エントリ34D0のゲートステートに示される、有効(オープン)の設定されている送信キュー(例えば、送信キュー7)に対して、該エントリ34D0に示されるタイムインターバル(例えば、2500ナノ秒)を、送信可能時間の初期値として決定する。
また、例えば、先読部20は、最初に送信制御するエントリ34Dのゲートステートに示される、有効(オープン)の設定されている送信キュー以外の送信キュー(例えば、送信キュー6~送信キュー0)に対して、ゼロ“0”を、送信可能時間の初期値として決定する。
次に、先読部20は、ステップS302で決定した、送信可能時間および将来時刻の初期値を、それぞれ、送信可能時間情報36Aおよび将来時刻情報38Aに書込む(ステップS304)。そして、本ルーチンを終了する。
<先読処理>
図8は、ステップS202(図5参照)の先読処理の詳細フローチャートである。また、図9は、先読処理の流れを示す模式図である。
まず、指示部24は、送信可能時間記憶部36から各送信キューに割当てられている送信可能時間を読込む(ステップS400)。
次に、指示部24は、ステップS400で読込んだ送信可能時間がゼロ“0”であるか否かを判断する(ステップS402)。すなわち、指示部24は、各送信キューについて、フレームを送信することの可能な残り時間がゼロであるか否かを判断する。残り時間がゼロであるとは、残り時間が無い事を示す。
何れかの送信キューについて、送信可能時間が残っていると判断した場合(ステップS402:No)、本ルーチンを終了する。一方、すべての送信キューについて、送信可能時間がゼロであると判断した場合(ステップS402:Yes)、ステップS404へ進む。
なお、本実施の形態では、有効(オープン)の設定がなされている送信キュー以外の送信キューに対しては、送信可能時間としてゼロ“0”が設定されている場合を説明する。すなわち、無効(クローズ)の設定がなされている送信キューの送信可能時間はゼロ“0”となる。このため、指示部24は、送信可能時間情報36Aに登録されている全ての送信キューの各々に割当てられている送信可能時間が、全てゼロ“0”と判断した場合、ステップS402で肯定判断(ステップS402:Yes)をする。
ステップS404では、指示部24が、先読指示を先読部20へ通知する(ステップS404)。すなわち、指示部24は、送信可能時間記憶部36に記憶されている将来時刻において、送信キューに送信可能時間が残っていない場合に、先読指示を通知する。
先読指示を受付けた先読部20は、送信スケジューリング情報記憶部34から次のエントリ34Dを先読みする(ステップS406)。次のエントリ34Dとは、ゲートコントロールリスト34Bにおける、直前に処理したエントリ34Dの次のエントリ34Dである。先読処理の順序は、例えば、リストインデックスに示される値によって表される。なお、初期状態では、先読部20は、リストインデックスに示される最初のエントリ34D(例えば、図2のエントリ34D0)を、先読みすればよい。
次に、先読部20は、ステップS404で先読みした次のエントリ34Dに基づいて、次にスケジューリングするフレームの送信開始予定時刻の候補となる将来時刻、および該将来時刻において送信キューに割当てられる送信可能時間、を計算する(ステップS408)。
例えば、先読部20は、ステップS406で先読みしたエントリ34Dの開始時刻を、将来時刻記憶部38に記憶する更新後の将来時刻として計算してもよい。
また、例えば、先読部20は、ステップS406で先読みしたエントリ34Dに含まれるタイムインターバルの値を、該エントリ34Dのゲートステートに示される、有効(オープン)の設定されている送信キューに割当てる送信可能時間として計算する。なお、先読部20が、複数のエントリ34Dを先読みした場合、先読みした複数のエントリ34Dの各々に含まれるタイムインターバルの合計値を、送信可能時間として計算すればよい。
次に、先読部20は、ステップS408で計算した送信可能時間および将来時刻の各々を、それぞれ、送信可能時間情報36Aおよび将来時刻情報38Aに書込む。この書込みによって、先読部20は、送信可能時間情報36Aおよび将来時刻情報38Aにおける送信可能時間および将来時刻を更新する(ステップS410)。
詳細には、先読部20は、ステップS408で計算した将来時刻を、将来時刻記憶部38の将来時刻情報38Aに上書きすることで、将来時刻を更新する。また、先読部20は、ステップS408で計算した送信可能時間を、該送信可能時間に対応する送信キューに割当てる。そして、本ルーチンを終了する。
<判定処理>
図10は、ステップS206(図5参照)の判定処理の詳細フローチャートである。また、図11は、判定処理の流れを示す模式図である。
まず、判定部22は、各送信キューのステート情報を、送信フレーム記憶部32から読込む(ステップS500)。
ステート情報は、送信キューに保持されている、送信待機中のフレームの有無や、各送信キューに保持されているフレームの送信所要時間の算出、に用いるパラメータである。ステート情報は、例えば、フレームサイズ、再送信の有無、送信リトライ回数・間隔、などである。
なお、判定部22は、送信開始予定時刻をスケジューリング可能なフレームが複数存在する場合に備えて、各送信キューの優先度判断に用いる情報を更に含む、ステート情報を読込んでもよい。各送信キューの優先度判断に用いる情報は、例えば、予め定めた固定値であってもよいし、動的に変化する値であってもよい。具体的には、各送信キューの優先度判断に用いる情報は、IEEE 802.1Qbv規格に示される各送信キューのトラフィッククラスに応じた値であってもよい。
次に、判定部22は、送信可能時間記憶部36から、各送信キューに割当てられた送信可能時間を読込む(ステップS502)。すなわち、判定部22は、将来時刻記憶部38に記憶されている将来時刻において、各送信キューに割当てられている送信可能時間を、送信可能時間記憶部36から読込む。
次に、判定部22は、ステップS500で読込んだステート情報を用いて、各送信キューに保持されているフレームの各々について、送信所要時間を計算する(ステップS504)。
次に、判定部22は、送信キューに保持されている送信待機中のフレームの各々について、送信開始予定時刻をスケジューリング可能か否かを判定する(ステップS506)。例えば、判定部22は、送信キューに保持されている送信待機中のフレームの内、ステップS504で計算した送信所要時間が、ステップS502で読込んだ送信可能時間より小さいフレームを、送信開始予定時刻をスケジューリング可能なフレームとして判定する。すなわち、送信所要時間が送信キューに割当てられている送信可能時間以下である場合、判定部22は、スケジューリング可能なフレームとして判定する。
次に、判定部22は、スケジューリング不可能なフレームが有るか否かを判断する(ステップS508)。判定部22は、ステップS506の判定結果に、スケジューリング不可能と判定したフレームが含まれるか否かを判断することで、ステップS508の判断を行う。
判定部22が、スケジューリング不可能なフレームが無いと判断した場合(ステップS508:No)、ステップS512へ進む。
一方、判定部22が、スケジューリング不可能なフレームが有ると判断した場合(ステップS508:Yes)、ステップS510へ進む。ステップS510では、判定部22は、送信可能時間情報36Aにおける(図3参照)、スケジューリング不可能と判定したフレームを保持する送信キューに割当てられている送信可能時間を、ゼロ“0”に変更する(ステップS510)。
すなわち、ステップS510の処理は、送信所要時間が送信キューに割当てられている送信可能時間を超えている場合に実行される。このため、判定部22は、送信可能時間内にフレームの送信が完了しないフレームに対して、誤った送信開始予定時刻をスケジューリングすることを抑制することができる。このため、本実施の形態の情報処理装置10は、例えば、IEEE 802.1Qbv規格において定義されているガードバンドの制約を満たした送信制御を行うことができる。
次に、判定部22は、スケジューリング可能なフレームが有るか否かを判断する(ステップS512)。判定部22は、ステップS506の判定結果に、スケジューリング可能と判定したフレームが含まれるか否かを判断することで、ステップS512の判断を行う。
スケジューリング可能なフレームが無いと判断した場合(ステップS512:No)、本ルーチンを終了する。一方、スケジューリング可能なフレームが有ると判断した場合(ステップS512:Yes)、ステップS514へ進む。
ステップS514では、判定部22は、スケジューリング可能と判定したフレームを、スケジューリング部26へ通知する(ステップS514)。そして、本ルーチンを終了する。
<スケジューリング処理>
図12は、ステップS210(図5参照)のスケジューリング処理の詳細フローチャートである。また、図13は、スケジューリング処理の流れを示す模式図である。
スケジューリング部26は、判定部22からスケジューリング可能なフレームの通知を受付ける(ステップS600)。
具体的には、スケジューリング部26は、スケジューリング可能なフレームを保持している送信キュー、フレームが保持されているアドレス、フレームサイズ、等の情報を、判定部22から受付ける。このとき、スケジューリング部26は、判定部22によって計算されたフレームの送信所要時間を更に受付けてもよい。また、スケジューリング可能なフレームが複数ある場合、スケジューリング部26は、複数のフレームの各々の通知を、判定部22から受付けてもよい。また、スケジューリング部26は、複数のフレームの各々を保持する送信キューの優先度に関する情報を、更に、判定部22から受付けてもよい。
次に、スケジューリング部26は、ステップS600で受付けた、スケジューリング可能なフレームを、送信フレーム記憶部32から読込む(ステップS602)。なお、スケジューリング可能なフレームが複数通知される場合がある。この場合、スケジューリング部26は、読込むフレームを選択してもよいし、判定部22から受付けた指示に従ってフレームを選択してもよい。
次に、スケジューリング部26は、将来時刻記憶部38から将来時刻を読込む(ステップS604)。
次に、スケジューリング部26は、ステップS604で読込んだ将来時刻に基づいて、ステップS602で読込んだフレームの送信開始予定時刻をスケジューリングする(ステップS606)。上述したように、例えば、スケジューリング部26は、ステップS604で読込んだ将来時刻を、ステップS602で読込んだフレームの送信開始予定時刻としてスケジューリングする。そして、本ルーチンを終了する。
<第1後処理>
図14は、ステップS212(図5参照)の第1後処理の詳細フローチャートである。また、図15は、第1後処理の流れを示す模式図である。
まず、スケジューリング部26は、送信可能時間記憶部36に保持されている各送信キューに割当てられている送信可能時間の減少処理を実行する(ステップS700)。
例えば、スケジューリング部26は、送信可能時間記憶部36に記憶されている各送信キューに割当てられている送信可能時間から、直前のスケジューリング処理によって送信開始予定時刻をスケジューリングしたフレームの送信所要時間を、減算した時間を、更新後の送信可能時間として計算する。
なお、更新前の送信可能時間から減算する値は、送信所要時間に限定されない。例えば、スケジューリング部26は、送信所要時間に応じた値を、減算する値として用いてもよい。また、例えば、スケジューリング部26は、送信部28および物理レイヤのプロトコル処理等に起因するオーバーヘッドに基づいて、減算する値を調整してもよい。オーバーヘッドは、例えば、イーサネットフレームを送信する際のプリアンブルや、インターフレームギャップなどである。また、スケジューリング部26は、安全マージンを設ける目的で、減少する値を調整してもよい。
次に、スケジューリング部26は、更新後の将来時刻を計算する(ステップS702)。すなわち、スケジューリング部26は、将来時刻記憶部38に記憶されている将来時刻を、更に将来に向かって先に進めた時刻に更新するために、更新後の将来時刻を計算する。
例えば、スケジューリング部26は、将来時刻記憶部38に記憶されている将来時刻に、直前のスケジューリング処理によってスケジューリングしたフレームの送信所要時間を加算した時刻を、更新後の将来時刻として計算する。
なお、更新前の将来時刻に加算する値は、送信所要時間に限定されない。例えば、スケジューリング部26は、送信所要時間に応じた値を、加算する値として用いてもよい。また、例えば、スケジューリング部26は、直前のスケジューリング処理によってスケジューリングしたフレームの送信開始予定時刻に、該フレームの送信所要時間を加算した時刻を、更新後の将来時刻として計算してもよい。
また、例えば、スケジューリング部26は、送信部28および物理レイヤのプロトコル処理等に起因するオーバーヘッドに基づいて、更新後の将来時刻を調整してもよい。
そして、スケジューリング部26は、ステップS700で算出した送信可能時間、および、ステップS702で算出した将来時刻を、各々、送信可能時間情報36Aおよび将来時刻情報38Aへ書込む。この処理によって、スケジューリング部26は、送信可能時間および将来時刻を更新する(ステップS704)。
次に、スケジューリング部26は、直前のスケジューリング処理によって、送信開始予定時間をスケジューリングしたフレームと、該フレームにスケジューリングした送信開始予定時刻と、を、送信部28へ通知する(ステップS706)。そして、本ルーチンを終了する。
<第2後処理>
図16は、ステップS214(図5参照)の第2後処理の詳細フローチャートである。また、図17は、第2後処理の流れを示す模式図である。
まず、指示部24は、将来時刻記憶部38から将来時刻を読込む(ステップS800)。次に、指示部24は、ステップS800で読込んだ将来時刻と、現在時刻と、の時間差を計算する(ステップS802)。
次に、指示部24は、ステップS802で計算した時間差が閾値以下であるか否かを判断する(ステップS804)。例えば、この閾値には、予め定められた固定値を用いてもよいし、実行時に動的に変化する値を用いてもよい。また、複数の閾値を設定してもよい。何れの閾値を設定する場合であっても、現在時刻が将来時刻に迫るほど時間差が減少し、現在時刻が一定のラインを越えた時点で、時間差が閾値以下となる。
時間差が閾値より大きい場合(ステップS804:No)、本ルーチンを終了する。一方、時間差が閾値以下である場合(ステップS804:Yes)、ステップS806へ進む。
ステップS806では、ステップS802で計算した時間差が、前回のイテレーションで計算した値より小さいか否かを判断する。すなわち、時間差が縮まっているか否かを判断する(ステップS806)。縮まっていない場合(ステップS806:No)、本ルーチンを終了する。一方、縮まっている場合(ステップS806:Yes)、ステップS808へ進む。
ステップS808では、指示部24は、送信可能時間情報36Aにおける送信キューの各々に対応する送信可能時間を、減少させる(ステップS808)。そして、本ルーチンを終了する。
ここで、上述したように、将来時刻は、新しいフレームのスケジューリング、または、送信スケジューリング情報34Aにおけるエントリ34Dの先読みが行われた際に、適切な値に更新される。このため、スケジューリングや先読処理が行われない状態が継続すると、将来時刻の更新はストップしてしまう。一方、現在時刻は、時間の経過に応じて、徐々に将来時刻に近づいていく。これにより、現在時刻と将来時刻との時間差が、ステップS804の判断に用いる閾値以下となる場合がある。そこで、上述したように、本実施の形態では指示部24は、送信可能時間情報36Aに登録されている各送信キューの送信可能時間を強制的に減少させる(上記ステップS808参照)。
この処理により、判定部22によってスケジューリング可能なフレームが1つも存在しないと判定された場合であっても、現在時刻が将来時刻に追いつく前に、各送信キューの送信可能時間を減少させることができる。
上述したように、各送信キューの送信可能時間がゼロ“0”となると、指示部24から先読指示を受付けた先読部20が次のエントリ34Dの先読みを行い、将来時刻記憶部38に記憶されている将来時刻を更新する。このため、将来時刻と現在時刻との間に、常に一定のマージンを確保することが可能となる。
<送信処理>
図18は、ステップS102(図4参照)の送信処理の詳細フローチャートである。また、図19は、送信処理の流れを示す模式図である。
送信部28は、スケジューリング済のフレームが有るか否かを判断する(ステップS900)。例えば、送信部28は、スケジューリング部26からスケジューリングを完了したフレームと送信開始予定時刻の通知を受付けたか否かを判断することで、ステップS900の判断を行う。また、送信部28は、スケジューリング部26から受付けたフレームおよび送信開始予定時刻をバッファリングしておいてもよい。
スケジューリング済のフレームが無い場合(ステップS900:No)、本ルーチンを終了する。一方、スケジューリング済のフレームが有る場合(ステップS900:Yes)、ステップS902へ進む。
ステップS902では、送信部28は、現在時刻と送信開始予定時刻とを比較する(ステップS902)。送信部28で用いる現在時刻は、ホスト12で用いる現在時刻と同じ時刻であるものとする。そして、送信部28は、ステップS902の比較結果が、送信開始条件を満たすか否かを判断する(ステップS904)。送信開始条件は、上述したため、ここでは説明を省略する。例えば、送信部28は、現在時刻と送信開始予定時刻とが一致したか否かを判断する。
送信開始条件を満たす場合(ステップS904:Yes)、送信部28は、該送信開始予定時刻をスケジューリングされたフレームについて、該フレームの送信を開始する(ステップS906)。
例えば、送信部28は、現在時刻が送信開始予定時刻に一致したときに、フレームの送信を開始する。また、送信部28は、現在時刻が送信開始予定時刻を過ぎたときに、フレームの送信を開始してもよい。また、送信部28は、現在時刻が送信開始予定時刻を過ぎており、且つ、現在時刻と送信開始予定時刻との時間差が所定値以下の場合に、フレームの送信を開始してもよい。
また、送信部28は、現在時刻が送信開始予定時刻を過ぎており、且つ、現在時刻と送信開始予定時刻との時間差が所定値以上の場合に、フレームの送信をキャンセルしてもよい。この場合、送信部28は、送信をキャンセルしたフレームについて、何らかの例外処理を実行してもよい。具体的には、送信部28は、送信をキャンセルしたフレームを破棄してもよいし、該フレームを送信フレーム記憶部32の送信キューに入れ直してもよい。また、この場合、送信部28は、送信をキャンセルしたフレームに関する情報を、上位のアプリケーションに通知してもよい。
そして、本ルーチンを終了する。なお、送信装置14は、図18に示す送信処理を繰り返し実行する。すなわち、ステップS900で否定判断(ステップS900:No)、ステップS904で否定判断(ステップS904:No)、またはステップS906の処理終了後には、再度、ステップS900へ戻り、ステップS900~ステップS906の処理を繰返し実行する。このため、送信装置14は、継続的に、送信処理を繰り返し実行することができる。
以上説明したように、本実施の形態の情報処理装置10は、先読部20と、スケジューリング部26と、を備える。先読部20は、1つ以上の送信キューの各々の送信可否状態(ゲートステート)と送信可否状態の維持タイミングとを規定した1つ以上のエントリ34Dを含む送信スケジューリング情報34Aにおける、現在時刻より未来の維持タイミングに対応するエントリ34Dを、先読みする。スケジューリング部26は、先読みしたエントリ34Dに基づいて、送信キューに保持されている送信待機中のフレームの、送信開始予定時刻をスケジューリングする。
このように、本実施の形態の情報処理装置10では、スケジューリング部26が、送信スケジューリング情報34Aにおける、先読部20によって先読みされたエントリ34Dに基づいて、フレームの送信開始予定時刻をスケジューリングする。
従って、本実施の形態の情報処理装置10では、高精度な送信タイミング制御のためのスケジューリングが可能となる。
また、送信部28は、スケジューリング部26によってスケジューリングされた送信開始予定時刻に基づいて、フレームの送信を開始する。このため、本実施の形態の情報処理装置10は、上記効果に加えて、送信スケジューリング情報34Aに基づいた厳密な送信制御を実現することができる。すなわち、本実施の形態の情報処理装置10は、上記効果に加えて、リアルタイム通信を要求されるデータの、送信タイミングを保証することが可能となる。
また、本実施の形態の情報処理装置10では、処理部31の各機能(先読部20、判定部22、指示部24、スケジューリング部26)の少なくとも一部を、ソフトウェアで実現することができる。
このため、本実施の形態の情報処理装置10では、処理部31の全ての機能をハードウェアで実現する場合に比べて、改良や変更等に柔軟に対応可能な、情報処理装置10を提供することができる。また、本実施の形態の情報処理装置10では、複雑なスケジューリング処理を実現することができ、設計や実装の難易度の低下や、必要なハードウェアリソースの削減を図ることができる。また、本実施の形態の情報処理装置10では、任意のトラフィック・シェーピング・アルゴリズム(例えば、IEEE 802.1QavのCredit Based Shaper)と、IEEE 802.1Qbv規格のゲートコントロールによる送信制御と、を組み合わせることが可能となる。
また、本実施の形態の情報処理装置10では、先読部20がエントリ34Dの先読みを行い、スケジューリング部26がフレームの送信予定時刻をスケジューリングし、送信部28がフレームを送信する。このため、本実施の形態の情報処理装置10では、エントリ34Dを先読みするタイミングと、送信開始予定時刻をスケジューリングするタイミングと、フレームを実際に送信するタイミングと、の各々を明確に分離し、個別に実装することができる。このため、本実施の形態の情報処理装置10は、実装時の柔軟性の確保と、厳密な送信タイミング制御と、の両立を図ることができる。
また、各送信キューを、ホスト12に設けられた送信フレーム記憶部32に保持することで、各送信キューのサイズや送信キューの数を、必要に応じて柔軟に変更することが可能となる。
また、本実施の形態の情報処理装置10では、送信部28の機能をハードウェアで実現することができる。このため、本実施の形態の情報処理装置10では、送信部28をソフトウェアで実現する場合に比べて、より高精度に送信タイミングを制御することができる。
<具体例>
次に、本実施の形態の情報処理装置10が実行する情報処理について、具体的な例を挙げて説明する。なお、本具体例では、送信スケジューリング情報として、IEEE 802.1Qbv規格で定められているゲートコントロールリストを例に取り説明するが、本発明は、これに限定されるものではない。また同様に、本具体例では、ゲートコントロールリストの一例としてゲートコントロールリスト34Bを用いて説明するが、本発明はこれに限定されない。
―送信スケジューリング情報―
まず、送信スケジューリング情報34Aの一例を説明する。送信スケジューリング情報34Aは、例えば、図2に示したものである。
図2を用いて上記で説明したように、図2に示す例では、送信スケジューリング情報34Aは、ゲートコントロールリスト34Bおよびその他のパラメータ34Cを含む。
図2に示す例では、送信スケジューリング情報34Aは、8つのエントリ34D(エントリ34D0~エントリ34D7)から構成されており、各エントリ34Dには、各々、0~7のリストインデックスが付与されている。上述したように、ゲートステートに示される“o”は、送信可を示す有効(オープン)を示し、“C”は、送信不可を示す無効(クローズ)を示す。
例えば、図2に示すリストインデックス“7”のエントリ34D7のゲートステート“CCCCCCCo”は、送信フレーム記憶部32における複数の送信キューの各々の送信可否状態(オープンまたはクローズ)を示している。上述したように、本実施の形態では、送信フレーム記憶部32は、8個の送信キュー(送信キュー0~送信キュー7)を含む場合を説明する。このため、リストインデックス“7”のエントリ34D7のゲートステート“CCCCCCCo”は、送信キュー1~送信キュー7が無効(クローズ)であり、送信キュー0が有効(オープン)であることを示す。
すなわち、この場合、送信キュー0にのみ、送信許可が与えられていることを意味する。
なお、図2に示す例では、各エントリ34Dのゲートステートは、1つの送信キューのみを有効(オープン:o)とした例を示した。しかし、より一般的なケースでは、各エントリ34Dのゲートステートは、複数の送信キューについて、有効(オープン:o)としたものであってもよい。
また、図2に示す例では、複数のエントリ34Dに含まれるタイムインターバルが、全て同じ値(2500ナノ秒)に設定されている場合を示した。しかし、より一般的なケースでは、複数のエントリ34Dの間で、互いに異なる値のタイムインターバルが設定されていてもよい。また、図2には、一例として、ゲートコントロールリスト34Bが、8個のエントリ34Dを含む場合を示した。しかし、ゲートコントロールリスト34Bに含まれるエントリ34Dの数は、8個に限定されない。
また、図2には、IEEE 802.1Qbv規格に従い、8個の送信キューを想定した場合を示した。しかし、任意の数の送信キューを想定してもよい。
―ゲートステートの周期性―
次に、ゲートステートの周期性について説明する。図20および図21は、ゲートステートの典型的な周期性の例を示す図である。ゲートステートの周期性は、送信スケジューリング情報34Aに基づいて定義される。例えば、図20は、図2に示す送信スケジューリング情報34Aに基づいて定義されており、各送信キューの第1周期目および第2周期目のゲートステートの例を示す。各周期の開始時刻は、図2の送信スケジューリング情報34Aに含まれる、ゲートコントロール開始時刻(2017年10月16日12時00分00秒)、および、ゲートコントロール周期時間(20マイクロ秒)によって求めることができる。
また、n周期目の開始時刻は、下記式(1)で表すことができる。
n周期目の開始時刻=ゲートコントロール開始時刻+(n-1)×ゲートコントロール周期時間 ・・・式(1)
なお、式(1)中、nは、1以上の整数である。
図20の例では、第1周期目の開始時刻は、ゲートコントロール開始時刻として指定されている2017年10月16日12時00分00秒となる。また、第2周期目の開始時刻は、ゲートコントロール開始時刻から20マイクロ秒後の12時00分00.000020000秒となる。
図21は、各送信キューの第3周期目および第4周期目のゲートステートの例を示す。第3周期目の開始時刻は、ゲートコントロール開始時刻から40マイクロ秒後の12時00分00.000040000秒となる。また、第4周期目の開始時刻は、ゲートコントロール開始時刻から60マイクロ秒後の12時00分00.000060000秒となる。
各周期の送信処理が開始されると、ゲートコントロールリスト34Bのエントリ34Dに設定された順番に基づき、各送信キューのゲートステートが定まる。図20の例では第1周期の開始時刻(12時00分00秒)から2500ナノ秒間の間は、各送信キューの送信可否状態は、リストインデックス“0”のゲートステート(oCCCCCCC)により定まる。次に、12時00分00.000002500秒から2500ナノ秒間の間は、各送信キューの送信可否状態は、リストインデックス“1”のゲートステート(CoCCCCCC)により定まる。
さらに12時00分00.000005000秒から2500ナノ秒間の間は、各送信キューの送信可否状態は、リストインデックス“2”のゲートステート(CCoCCCCC)により定まる。
このように、ゲートコントロールリスト34Bに示される、リストインデックス“0”からリストインデックス“7”までの順序に従い、各送信キューのゲートステートと各ステートのタイムインターバルが定まる。
最後に、図20の例では、12時00分00.000017500秒から2500ナノ秒間の間は、各送信キューの送信可否状態は、リストインデックス“7”のゲートステート(CCCCCCCo)によって決定され定まり、これをもって第1周期目が終了する。
-先読みおよびスケジューリング処理-
次に、典型的な動作シナリオにおける、先読処理およびスケジューリング処理について説明する。
図22は、初期化直後の現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT0参照)。また、図23は、初期化直後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。
初期化の際には、先読部20が、図6および図7を用いて説明した初期化処理を実行する。図22および図23に示す例では、先読部20は、送信スケジューリング情報34Aに含まれるゲートコントロール開始時刻を、将来時刻tfとして設定し、送信キュー7に2500ナノ秒の送信可能時間を割り当てる。
-スケジューリング処理の具体例1-
図24は、初期化から0.001秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT1参照)。また、図25は、初期化から0.001秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図25は、初期化から0.001秒後において、送信キュー7に送信所要時間1000ナノ秒のフレームf0が書き込まれた場合の例を示した。
図25に示す例では、フレームf0の送信所要時間は、送信キュー7の送信可能時間以下である。このため、判定部22は、フレームf0の送信開始予定時刻をスケジューリング可能と判定する(図25の符号60参照)。その結果、スケジューリング部26は、初期化0.001秒後時点の将来時刻(2017年10月16日12時00分00.000000000秒)を、フレームf0の送信開始予定時刻としてスケジューリングする。
図26は、初期化から0.002秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT2参照)。また、図27は、初期化から0.002秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図27は、初期化から0.002秒後にフレームf0がスケジューリングされた後の例を示す。
スケジューリングの際には、判定部22およびスケジューリング部26が、図10~図15を用いて説明した、判定処理、スケジューリング処理、および第1後処理の各々を実行する。
-スケジューリング処理の具体例2-
図28は、初期化から0.003秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT3参照)。また、図29は、初期化から0.003秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図29には、初期化0.003秒後において、送信キュー7に送信所要時間1200ナノ秒のフレームf1が書き込まれた例を示した。
図29の例では、フレームf1の送信所要時間は、送信キュー7の送信可能時間以下である(符号62参照)。このため、判定部22は、フレームf1の送信開始予定時刻をスケジューリング可能と判定する。その結果、スケジューリング部26は、初期化0.003秒後時点の将来時刻(2017年10月16日12時00分00.000001000秒)を、フレームf1の送信開始予定時刻としてスケジューリングする。
図30は、初期化から0.004秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT4参照)。また、図31は、初期化から0.004秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図31は、初期化0.004秒後に、フレームf1がスケジューリングされた後の例を示す。
なお、スケジューリングの際には、判定部22およびスケジューリング部26が、図10~図15を用いて説明した、判定処理、スケジューリング処理、および第1後処理の各々を実行する。
―送信可能時間をゼロクリアする具体例―
図32は、初期化から0.005秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT5参照)。また、図33は、初期化から0.005秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図33は、初期化0.005秒後に、送信キュー7に送信所要時間1500ナノ秒のフレームf2が書き込まれた例を示す。
図33に示す例では、フレームf2の送信所要時間が、送信キュー7の送信可能時間以上である。このため、判定部22は、フレームf2の送信開始予定時刻のスケジューリングを不可能と判定する。
図34は、初期化から0.006秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT6参照)。また、図35は、初期化から0.006秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図35は、初期化0.006秒後に、送信キュー7の送信可能時間がゼロ“0”にクリアされた後の例を示している。ゼロクリア処理の際には、判定部22が、図10および図11を用いて説明した、送信可能時間をゼロに変更する処理を含む、一連の処理を実行する。
-先読処理の具体例1-
図36は、初期化から0.007秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT7参照)。また、図37は、初期化から0.007秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図37は、初期化0.007秒後に、ゲートコントロールリスト34Bにおける、リストインデックス“1”のエントリ34D1が先読処理された後の例を示す。
先読処理の際には、先読部20および指示部24が、図8および図9を用いて説明した一連の処理を実行する。
図36および図37に示す例では、先読部20が、将来時刻を2017年10月16日12時00分00.000002500秒に更新し、送信キュー6に2500ナノ秒の送信可能時間を割り当てる。
-スケジューリング処理の具体例3-
図38は、初期化から0.008秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT8参照)。また、図39は、初期化から0.008秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図39は、初期化0.008秒後に、送信キュー6に送信所要時間1000ナノ秒のフレームf3が書き込まれた例を示した。
図39に示す例では、フレームf3の送信所要時間は、送信キュー6の送信可能時間以下である。このため、判定部22は、フレームf3をスケジューリング可能と判定する。その結果、スケジューリング部26は、初期化0.008秒後の時点の将来時刻(2017年10月16日12時00分00.000002500秒)を、フレームf3の送信開始予定時刻としてスケジューリングする。
図40は、初期化から0.009秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT9参照)。また、図41は、初期化から0.009秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図41は、初期化0.009秒後に、フレームf3がスケジューリングされた後の例を示す。
スケジューリングの際には、判定部22およびスケジューリング部26が、図10~図15を用いて説明した、判定処理、スケジューリング処理、および第1後処理の各々を実行する。
-スケジューリング処理の具体例4-
図42は、初期化から0.010秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT10参照)。また、図43は、初期化から0.010秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図43は、初期化0.010秒後に、送信キュー6に送信所要時間1500ナノ秒のフレームf4が書込まれた例を示す。
図43に示す例では、フレームf4の送信所要時間が、送信キュー6の送信可能時間と等しい。このため、判定部22は、フレームf4の送信開始予定時刻を、スケジューリング可能と判定する。その結果、スケジューリング部26は、初期化0.010秒後の将来時刻(2017年10月16日12時00分00.000003500秒)を、フレームf4の送信開始予定時刻としてスケジューリングする。
図44は、初期化から0.011秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT11参照)。また、図45は、初期化から0.011秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図45は、初期化0.011秒後に、フレームf4がスケジューリングされた後の例を示す。
スケジューリングの際には、判定部22およびスケジューリング部26が、図10~図15を用いて説明した、判定処理、スケジューリング処理、および第1後処理の各々を実行する。
-先読処理の具体例2-
図46は、初期化から0.012秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT12参照)。また、図47は、初期化から0.012秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図47は、初期化0.012秒後に、ゲートコントロールリスト34Bにおけるリストインデックス“2”のエントリ34D2が先読みされた後の例を示す。
先読処理の際には、先読部20および指示部24が、図8および図9を用いて説明した一連の処理を実行する。
-スケジューリング可能なフレームが存在しない場合の具体例-
図48は、初期化から0.013秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT13参照)。また、図49は、初期化から0.013秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図49は、初期化0.013秒後に、スケジュール可能なフレームが1つも存在しない例を示す。
図49に示す例では、送信キュー7の送信可能時間がゼロとなっている(符号74参照)。このため、スケジューリング部26は、送信キュー7に保持されているフレームf2を、スケジューリングすることは出来ない。
また、送信キュー5には、2500ナノ秒の送信可能時間が割り当てられている。このため、送信キュー5には、十分な送信可能時間が残されている。しかし、送信キュー5にはフレームが保持されていないため、新しいフレームをスケジューリングすることができない。
このため、初期化0.013秒後の時点では、スケジュール可能なフレームが1つも存在しないことになる。
-将来時刻の更新がストップしてしまう場合の具体例-
図50は、初期化から0.014秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT14参照)。また、図51は、初期化から0.014秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図51は、初期化0.014秒後において、将来時刻の更新がストップしてしまう場合の例を示す。
将来時刻は、新しいフレームのスケジューリング、または、送信スケジューリング情報34Aにおけるエントリ34Dの先読みが行われた際に、適切な値に更新される。このため、スケジューリングや先読処理が行われない状態が継続すると、将来時刻の更新は、ストップする。
図51に示す例では、初期化0.014秒後以降、新しいフレームのスケジューリングおよびエントリ34Dの先読みが行われていないため、将来時刻の更新は完全にストップしている。
図52は、初期化から0.015秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT15参照)。また、図53は、初期化から0.015秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図54は、初期化から0.016秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT16参照)。また、図55は、初期化から0.016秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図56は、初期化から0.017秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT17参照)。また、図57は、初期化から0.017秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。
なお、図53、図55、および図57は、それぞれ、初期化0.015秒後、0.016秒後、および0.017秒後において、将来時刻の更新がストップしてしまう場合の例を示す。図53、図55、および図57の例では、現在時刻の進行に伴い、現在時刻が徐々に将来時刻に近づいている。その結果として、現在時刻と将来時刻の時間差が、徐々に縮まっている。
-現在時刻と将来時刻の時間差が縮まった場合の具体例-
図58は、初期化から0.999985秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT18参照)。また、図59は、初期化から0.999985秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図59は、現在時刻と将来時刻の時間差の閾値が20マイクロ秒に設定された場合の例を示す。
なお、上述したように、この時間差の閾値には、任意の値を設定してよい。図59の例では、現在時刻(2017年10月16日11時59分59.999985000秒)と将来時刻(2017年10月16日12時00分00.000005000秒)との時間差が、閾値(20マイクロ秒)以下の値となっている。このため、送信キューの送信可能時間を強制的に減少させる、第2後処理を実行する条件が成立した状態となる。
―第2後処理の具体例1-
図60は、初期化から0.999986秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT19参照)。また、図61は、初期化から0.999986秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図61は、初期化0.999986秒後に、送信キュー5の送信可能時間を強制的に減少させる、第2後処理の例を示す。
図61の例では、現在時刻と将来時刻の時間差(0.000019000秒=19マイクロ秒)が、閾値(20マイクロ秒)以下の値になっている。このため、指示部24が、送信可能時間の減少処理を実行している。上述したように、減算に用いる値は、現在時刻が将来時刻に追いつく前に、各送信キューの送信可能時間をゼロにする条件を満たす値であればよい。図61に示す例では、初期化0.999985秒後の時間差(20マイクロ秒)と初期化0.999986秒後の時間差(19マイクロ秒)との差分(1マイクロ秒)、送信キュー5に割り当てられた送信可能時間を減少させている。その結果、送信キュー5の送信可能時間は、0.000001500秒に更新される。
なお、送信キューの送信可能時間を減少させる第2後処理の際には、指示部24が、図16および図17を用いて説明した一連の処理を実行する。
-第2後処理の具体例2-
図62は、初期化から0.999987秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT20参照)。また、図63は、初期化から0.999987秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図63は、初期化0.999987秒後に、送信キュー5の送信可能時間を強制的に減少させる、第2後処理の例を示す。
図63に示す例では、現在時刻と将来時刻の時間差(0.000018000秒=18マイクロ秒)が、閾値(20マイクロ秒)以下の値となっている。このため、指示部24は、送信キュー5に割り当てられた送信可能時間を、強制的に減少させる。この例では、指示部24は、初期化0.999986秒後の時間差(19マイクロ秒)と初期化0.999987秒後の時間差(18マイクロ秒)との差分(1マイクロ秒)、送信キュー5に割り当てられた送信可能時間を減少させる。その結果、指示部24は、送信キュー5の送信可能時を0.000000500秒に更新する。
送信キューの送信可能時間を減少させる第2後処理の際には、指示部24が、図16および図17を用いて説明した一連の処理を実行する。
-第2後処理の具体例3-
図64は、初期化から0.9999875秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT21参照)。また、図65は、初期化から0.9999875秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図65は、初期化0.9999875秒後に、送信キュー5の送信可能時間を強制的に減少させる処理の例を示す。
図65に示す例では、現在時刻と将来時刻の時間差(0.000017500秒=17.5マイクロ秒)は、閾値(20マイクロ秒)以下の値である。このため、指示部24は、送信キュー5に割り当てられた送信可能時間を、強制的に減少させる。この例では、指示部24は、初期化0.999987秒後の時間差(18マイクロ秒)と初期化0.9999875秒後の時間差(17.5マイクロ秒)との差分(0.5マイクロ秒)、送信キュー5に割り当てられた送信可能時間を減少させる。その結果、指示部24は、送信キュー5の送信可能時を0.000000000秒に更新する。
送信キューの送信可能時間を減少させる第2後処理の際には、指示部24が、図16および図17を用いて説明した一連の処理を実行する。
―先読処理の具体例3―
図66は、初期化から0.999988秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT22参照)。また、図67は、初期化から0.999988秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図67は、初期化0.999988秒後に、送信キュー5の送信可能時間がゼロになった後の例を示す。
図67に示す例では、各送信キューに割り当てられた送信可能時間が、すべてゼロになっている。このため、次のエントリ34Dを先読みするための条件が成立している。
図68は、初期化から0.9999885秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT23参照)。また、図69は、初期化から0.9999885秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図69は、初期化0.9999885秒後に、送信スケジューリング情報34Aのゲートコントロールリスト34Bにおける、リストインデックス“3”のエントリ34D3が先読みされた後の例を示す。
先読処理の際には、先読部20および指示部24が、図8および図9を用いて説明した一連の処理を実行する。
図68および図69の例では、先読部20が、将来時刻を2017年10月16日12時00分00.000007500秒に更新し、送信キュー4に2500ナノ秒の送信可能時間を割り当てる。
-スケジューリング処理の具体例5-
図70は、初期化から0.999989秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT24参照)。また、図71は、初期化から0.999989秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。なお、図71は、初期化0.999989秒後において、送信キュー4に送信所要時間1000ナノ秒のフレームf5が書き込まれた例を示す。
図71に示す例では、現在時刻と将来時刻の時間差(0.000018500秒=18.5マイクロ秒)が閾値(20マイクロ秒)以下の値になっている。このため、この場合、指示部24が、送信キュー4に割り当てられた送信可能時間を強制的に減少させる。この例では、指示部24は、初期化0.9999885秒後の時間差(19マイクロ秒)と初期化0.999989秒後の時間差(18.5マイクロ秒)との差分(0.5マイクロ秒)、送信キュー4に割り当てられた送信可能時間を減少させる。その結果、送信キュー4の送信可能時間は、0.000002000秒に更新される。
また、図71の例では、フレームf5の送信所要時間は、送信キュー4の送信可能時間以下である(符号80参照)。このため、判定部22は、フレームf5をスケジューリング可能と判定する。その結果、スケジューリング部26は、初期化0.999989秒後時点の将来時刻(2017年10月16日12時00分00.000007500秒)を、フレームf5の送信開始予定時刻としてスケジューリングする。
図72は、初期化から0.9999895秒後の、現在時刻tc、将来時刻tf、および、現在時刻tcと将来時刻tfとの時間差tdを示す図である(タイミングT25参照)。また、図73は、初期化から0.9999895秒後における、現在時刻、将来時刻、送信可能時間、送信所要時間、および、スケジューリング済のフレームと送信開始予定時刻、を示す図である。また、図73は、初期化0.9999895秒後に、フレームf5がスケジューリングされた後の例を示す。
スケジューリングの際には、判定部22およびスケジューリング部26が、図10~図15を用いて説明した、判定処理、スケジューリング処理、および第1後処理の各々を実行する。
以上、具体的な例を挙げて説明したように、本実施の形態の情報処理装置10は、スケジューリング部26が、送信スケジューリング情報34Aにおける、先読部20によって先読みされたエントリ34Dに基づいて、フレームの送信開始予定時刻をスケジューリングする。
従って、本実施の形態の情報処理装置10では、高精度な送信タイミング制御のためのスケジューリングが可能となる。すなわち、本実施の形態の情報処理装置10では、送信スケジューリング情報34Aに基づいた動的なスケジューリングによる、送信制御を実現することができる。
(第2の実施の形態)
第1の実施の形態では、現在時刻tcと将来時刻tfの時間差tdとの比較対象となる閾値が、主に固定値(例えば20マイクロ秒)として、予め与えられている場合の例を示した。以降の説明では、この閾値を「第1閾値th1」と呼ぶ。
第1閾値th1を固定値にすると、処理時間の動的な変動への対応が不十分になる可能性がある。例えば、第1の実施の形態で示した送信制御をソフトウェアで実現する場合、ホスト12内で発生する各種処理時間(主にスケジューリング処理時間とDMA(Direct Memory Access)転送時間)の変動が大きくなる。非常に高いリアルタイム性が求められるタイムセンシティブなフレームをタイムリーに送信する仕組みを実現するためには、処理時間の変動に対して適切且つ柔軟に対応することが求められる。処理時間の変動を完全に予測または抑制することは非常に困難であるため、変動が発生することを前提とし、変動に対処する機能を実装する必要がある。
そこで第2の実施の形態では、処理時間の動的な変動に対処する一つの方法として、第1閾値th1を動的に更新する方式を採用する。これにより、第1の実施の形態と比べてスケジューリング処理のタイミング精度が高まり、結果としてリアルタイム性が求められるフレームをよりタイムリーに送信することが可能となる。
[機能構成の例]
図74は、第2の実施の形態の情報処理システム1-2の機能構成の例を示す図である。情報処理システム1-2は、第1の実施の形態の各処理部に、計測部40-2と閾値算出部42-2が追加される。また、情報処理システム1-2は、ホスト12-2が備える判定部22-2および指示部24-2の機能が、第1の実施の形態と異なっている。その他の構成は第1の実施の形態と同様であるため同一の符号を付し説明を省略する。
<情報処理>
図75は、第2の実施の形態の情報処理装置(ホスト12-2、送信装置14)が実行する、情報処理の手順の一例を示すフローチャートである。第2の実施の形態の情報処理装置(ホスト12-2、送信装置14)は、計測部40-2および閾値算出部42-2による計測処理・閾値算出処理(ステップS1003)と、先読部20、判定部22-2、指示部24-2、および、スケジューリング部26による先読処理・スケジューリング処理(ステップS1001)と、送信部28による送信処理(ステップS1002)と、を並列に実行する。
第1の実施の形態と比較すると、第2の実施の形態では、計測処理・閾値算出処理が追加されている。また、先読処理・スケジューリング処理は、判定処理(図5のステップS206)、および、第2後処理(図5のステップS214)が変更される。第2の実施の形態の判定処理および第2後処理の詳細は後述する。送信処理は第1の実施の形態と同様であるため説明を省略する。
<計測処理・閾値算出処理>
図76は、ステップS1003の計測処理・閾値算出処理の詳細フローチャートである。
まず、計測部40-2は、スケジューリング部26から送信部28へフレームを転送する際に要する時間(第1遅延時間)をモニタリング(計測)する(ステップS1100)。例えば、第1遅延時間に大きく影響する要素としては、DMA転送に係わる一連の処理が挙げられる。そこで計測部40-2は、例えば、DMA転送のオーバーヘッドとDMA転送による実際のデータコピーにかかる時間の合計を第1遅延時間としてモニタリングしてもよい。
次に、計測部40-2は、モニタリング結果を閾値算出部42-2に通知する(ステップS1102)。例えば、計測部40-2は、共有メモリにモニタリング結果を書き込み、その後、閾値算出部42-2に対してモニタリング結果を更新したことを知らせるシグナルを送ってもよい。共有メモリは、例えば、記憶部30、または、記憶部30とは異なる記憶媒体により構成できる。
次に、計測部40-2から通知を受けた閾値算出部42-2は、第1遅延時間に基づいて第1閾値th1を算出する(ステップS1104)。閾値算出部42-2が第1閾値th1を算出する方法は、どのような方法であってもよい。例えば、閾値算出部42-2は、最悪実行時間に基づいて第1閾値th1を算出してもよい。具体的には、閾値算出部42-2は、計測部40-2から通知されたすべてのモニタリング結果の中から最大の値を第1遅延時間として採用してもよい。この場合、閾値算出部42-2は、例えば、第1遅延時間の最大値をそのまま第1閾値th1としてもよいし、第1遅延時間の最大値に一定の安全マージンを加算した値を第1閾値th1としてもよい。例えば、この算出方法は、決められた時間内に必ず処理を完了しなければならないようなハードリアルタイム性が要求されるアプリケーションに適用することができる。
また、別の算出方法として、例えば閾値算出部42-2は、計測部40-2から通知されたすべてのモニタリング結果の平均値、中央値、または、移動平均等を算出し、算出した値を第1閾値th1としてもよい。また、例えば閾値算出部42-2は、平均値、中央値、または、移動平均等に一定の安全マージンを加算した値を第1閾値th1としてもよい。例えばこの方法は、仮にデッドラインミスが発生しても直ちに深刻な問題に直結しないようなソフトリアルタイム性が要求されるアプリケーションに適応することができる。
最悪実行時間に基づいて閾値を算出する方法では、高いリアルタイム性が確保できるが、その引き換えにスループットが犠牲になる場合がある。一方、平均値、中央値、または、移動平均等を用いる方法では、リアルタイム性が多少犠牲となる場合があるが、その代わりに全体的なスループットの向上が可能となる。
最後に、閾値算出部42-2は、第1閾値th1を判定部22-2及び指示部24-2に通知する(ステップS1106)。例えば、閾値算出部42-2は、共有メモリに第1閾値th1を書き込み、その後、判定部22-2及び指示部24-2に対して第1閾値th1を更新したことを知らせるシグナルを送ってもよい。
なお、計測部40-2および閾値算出部42-2は、図76に示す計測処理・閾値算出処理を繰り返し実行する。すなわち、計測部40-2は継続的にモニタリングを行い、閾値算出部42-2は最新のモニタリング結果を反映させるように、第1閾値th1を算出する。
図77および図78は、算出される第1閾値th1の例を示す図である。モニタリング結果が比較的小さい場合は、例えば図77に示すように、比較的小さい第1閾値th1が算出される。一方、モニタリング結果が急激に大きくなった場合は、図78に示すように、相対的に大きな第1閾値th1が算出される。このように、第2の実施の形態では、処理時間の動的な変動に対応するように、第1閾値th1を更新することが可能となる。
<判定処理>
図79は、第2の実施の形態の判定処理の詳細フローチャートである。
まず、判定部22-2は、将来時刻記憶部38から将来時刻tfを読み込む(ステップS1200)。判定部22-2は、将来時刻tfと現在時刻tcとの時間差tdを算出する(ステップS1202)。判定部22-2は、閾値算出部42-2から通知された第1閾値th1と時間差tdとを比較し、時間差tdが第1閾値th1以下であるか否かを判定する(ステップS1204)。時間差tdが第1閾値th1以下である場合(ステップS1204:Yes)は、判定処理を終了する。
時間差tdが第1閾値th1より大きい場合(ステップS1204:No)、判定部22-2は、第1の実施の形態の判定処理(図10のステップS500~ステップS514)に相当するステップS1206~ステップS1220を実行する。
<第2後処理>
図80は、第2の実施の形態の第2後処理の詳細フローチャートである。ステップS1300およびステップS1302は、第1の実施の形態の第2後処理に含まれるステップS800およびステップS802と同様であるため説明を省略する。
次に、指示部24-2は、閾値算出部42-2から通知された第1閾値th1と時間差tdを比較し、時間差tdが第1閾値th1以下であるか否かを判定する(ステップS1304)。時間差tdが第1閾値th1より大きい場合(ステップS1304:No)、第2後処理を終了する。
時間差tdが第1閾値th1以下の場合(ステップS1304:Yes)、指示部24-2は、各送信キューに対応する送信可能時間を一定量減少させて、送信可能時間記憶部36に記憶された送信可能時間情報36Aを更新する(ステップS1306)。
例えば、指示部24-2は、現在時刻tcと第1閾値th1の合計から将来時刻tfを差し引いた値(tc+th1-tf)に一定のオフセット(offset)を加算した値(tc+th1-tf+offset)を各送信キューの送信可能時間から差し引くように減少させてもよい。オフセットは、例えば、静的又は動的に決定される0以上の値である。送信可能時間から減算する値の算出する方法はこれに限られず、例えば、現在時刻tc、将来時刻tf、閾値th1、および、オフセットのうち少なくとも一部の組み合わせに基づく方法であってもよい。例えば、現在時刻tcと将来時刻tfの時間差にオフセットを加算した値を減算してもよい。
最後に、指示部24-2は、送信可能時間の減少量に基づいて、将来時刻tfを先に進め(ステップS1308)、第2後処理を終了する。例えば、指示部24-2は、将来時刻tfと現在時刻tcとの時間差tdが第1閾値th1以上(td≧th1)になるように、将来時刻tfを更新してもよい。例えば、指示部24-2は、送信可能時間の減少値(tc+th1-tf+offset)を将来時刻tfに加算するように更新してもよい。この場合、新しい将来時刻tfnewは、tfnew=tfold+tc+th1-tfold+offset=tc+th1+offsetとなる。tfoldは、更新前の将来時刻を表す。図81は、このようにして更新された将来時刻の一例を示す図である。将来時刻の更新方法はこれに限られず、例えば、現在時刻tc、将来時刻tf、閾値th1、および、オフセットのうち少なくとも一部の組み合わせに基づく方法であってもよい。例えば、送信可能時間の減少値と同じ値を将来時刻tfに加算して更新してもよい。また、例えば、将来時刻tfにオフセットを加算した値となるように将来時刻tfを更新してもよい。
なお、計測部40-2はホスト12-2内に備える必要はない。図82は、第2の実施の形態の変形例にかかる情報処理システム1-2bの機能構成の例を示す図である。情報処理システム1-2bは、ホスト12-2bと、送信装置14-2の構成が、第2の実施の形態と異なっている。具体的には、ホスト12-2bは、計測部40-2を備えず、送信装置14-2が、計測部40-2を備えている。このような構成でも、第2の実施の形態と同様の機能を実現できる。
(第3の実施の形態)
第2の実施の形態では、処理時間の動的な変動に対処する機能として、第1閾値th1を動的に更新する例を示した。しかし第2の実施の形態では、単一の閾値(第1閾値th1)が想定されており、現在時刻tcと将来時刻tfの時間差tdと第1閾値th1の2つの値を単純に比較することで全体の動作を制御している。このため、時間差tdが第1閾値th1より大きい場合と小さい場合のそれぞれについて合計2パターンの対応に限定されることとなり、処理時間の変動に対して十分に対応することができない場合がある。
そこで、本実施の形態では、2つの閾値(第1閾値th1、及び、第2閾値th2)を用いる。これにより、第2の実施の形態と比べてスケジューリング処理のタイミング精度が高まり、結果としてリアルタイム性が求められるフレームをよりタイムリーに送信することが可能となる。
[機能構成の例]
図83は、第3の実施の形態の情報処理システム1-3の機能構成の例を示す図である。情報処理システム1-3は、第1の実施の形態の各処理部に、計測部40-3と閾値算出部42-3が追加される。また、情報処理システム1-3は、ホスト12-3が備える判定部22-3および指示部24-3の機能が、第1の実施の形態と異なっている。その他の構成は第1の実施の形態と同様であるため同一の符号を付し説明を省略する。
<情報処理>
第3の実施の形態の情報処理装置(ホスト12-3、送信装置14)情報処理の全体の流れは、第2の実施の形態の情報処理を示す図75と同様である。第2の実施の形態と比較すると、第3の実施の形態では、計測処理・閾値算出処理(図75のステップS1003)、先読処理・スケジューリング処理内の判定処理(図5のステップS206)、および、第2後処理(図5のステップS214)が変更される。
<計測処理・閾値算出処理>
図84は、第3の実施の形態の計測処理・閾値算出処理の詳細フローチャートである。
まず、計測部40-3は、スケジューリング部26から送信部28へフレームを転送する際に要する時間(第1遅延時間)をモニタリングする(ステップS1400)。この処理は、第2の実施の形態のステップS1100と同様である。
次に、計測部40-3は、先読部20の処理に要する時間(第2遅延時間)をモニタリングする(ステップS1402)。例えば、送信スケジューリング情報記憶部34から必要な情報を読み出す際のオーバーヘッド等が遅延の原因となりうる。計測部40-3は、このような遅延の時間を第2遅延時間として計測する。また、計測部40-3は、送信可能時間記憶部36の情報を更新する際のオーバーヘッド等を第2遅延時間として計測してもよい。また、計測部40-3は、例えば、先読部20が行う一連の処理にかかる合計時間を第2遅延時間としてもよい。
次に、計測部40-3は、判定部22-3の処理に要する時間(第3遅延時間)をモニタリングする(ステップS1404)。例えば、送信フレーム記憶部32の送信キューの状態を確認する際のオーバーヘッド等が遅延の原因となりうる。計測部40-3は、このような遅延の時間を第3遅延時間として計測する。また、計測部40-3は、送信キューに保持されている送信待機中のフレームの内、送信開始予定時刻をスケジューリング可能なフレームを判定する処理のオーバーヘッド等を第3遅延時間として計測してもよい。また、計測部40-3は、例えば、判定部22-3が行う一連の処理にかかる合計時間を第3遅延時間としてもよい。
次に、計測部40-3は、スケジューリング部26の処理に要する時間(第4遅延時間)をモニタリングする(ステップS1406)。例えば、送信フレーム記憶部32からフレームを読み出す際の際のオーバーヘッド等が遅延の原因となりうる。計測部40-3は、このような遅延の時間を第4遅延時間として計測する。また、計測部40-3は、スケジューリング処理自体のオーバーヘッド等を第4遅延時間として計測してもよい。また、計測部40-3は、例えば、スケジューリング部26が行う一連の処理にかかる合計時間を第4遅延時間としてもよい。
次に、計測部40-3はモニタリング結果を閾値算出部42-3に通知する(ステップS1408)。例えば、計測部40-3は、共有メモリにモニタリング結果を書き込み、その後、閾値算出部42-3に対してモニタリング結果を更新したことを知らせるシグナルを送ってもよい。
次に、計測部40-3から通知を受けた閾値算出部42-3は、第1遅延時間に基づいて第1閾値th1を算出する(ステップS1410)。なお、閾値算出部42-3は、第1閾値th1を算出する際には、第2の実施の形態で詳細に説明した様々なバリエーションの中から適切な方法を選択してもよい。
次に、閾値算出部42-3は、第2遅延時間、第3遅延時間および第4遅延時間に基づいて第2閾値th2を算出する(ステップS1412)。なお、閾値算出部42-3は、第2閾値th2を算出する際には、第2の実施の形態で詳細に説明した様々なバリエーションの中から適切な方法を選択してもよい。例えば、閾値算出部42-3は、最悪実行時間に基づいて、第2遅延時間、第3遅延時間および第4遅延時間の最大値の合計を第2閾値th2として算出してもよい。また、例えば閾値算出部42-3は、第2閾値th2を算出する際に、第1遅延時間および第1閾値th1の少なくとも一方の値を参照して、第2閾値th2の計算に反映させてもよい。
最後に、閾値算出部42-3は、第1閾値th1及び第2閾値th2を判定部22-3及び指示部24-3に通知する(ステップS1414)。例えば、閾値算出部42-3は共有メモリに各閾値を書き込み、その後、判定部22-3及び指示部24-3に対して閾値の値を更新したことを知らせるシグナルを送ってもよい。
なお、計測部40-3と閾値算出部42-3は、図84に示す計測処理・閾値算出処理を繰り返し実行する。すなわち、計測部40-3は継続的にモニタリングを行い、閾値算出部42-3は最新のモニタリング結果を反映させるように、各閾値を算出する。このため、第3の実施の形態では、処理時間の動的な変動に対応するように、閾値の値を更新することが可能となる。
図84内の各ステップの少なくとも一部を並列に実行するように構成してもよい。図85は、並列に実行するステップを含む計測処理・閾値算出処理の詳細フローチャートの一例である。図85の例では、ステップS1400、S1402、S1404、および、S1406が並列に実行される。また、ステップS1410~S1414-1、および、S1412~S1414-2が並列に実行される。ステップS1414-1およびS1414-2は、図84のステップS1414を分割したステップに相当する。
第3の実施の形態を適用することで、第2の実施の形態と比べて、処理時間の変動に対する対応パターンが増え、柔軟性を向上させることが可能となる。図86は、算出される第1閾値th1および第2閾値th2の例を示す図である。図86に示すように、第2閾値th2を導入したことで、図77と比較して対応パターンの個数が2(図77の第1エリア及び第2エリア)から3(図86の第1エリア、第2エリア及び第3エリア)に増えていることがわかる。
<判定処理>
図87は、第3の実施の形態の判定処理の詳細フローチャートである。ステップS1500~ステップS1516は、第2の実施の形態の判定処理を示す図79のステップS1200~ステップS1216と同様であるため説明を省略する。
ステップS1516の後、判定部22-3は、スケジューリング可能なフレームが有るか否かを判断する(ステップS1518)。判定部22-3は、ステップS1512の判定結果に、スケジューリング可能と判定したフレームが含まれるか否かを判断することで、ステップS1516の判断を行う。
スケジューリング可能なフレームが有ると判断した場合(ステップS1518:Yes)、判定部22-3は、スケジューリング可能と判定したフレームを、スケジューリング部26へ通知する(ステップS1520)。そして、本ルーチンを終了する。
スケジューリング可能なフレームが無いと判断した場合(ステップS1518:No)、判定部22-3は、閾値算出部42-3から通知された第2閾値th2と時間差tdとを比較し、時間差tdが第2閾値th2以下であるか否かを判定する(ステップS1522)。時間差tdが第2閾値th2より大きい場合(ステップS1522:No)、本ルーチンを終了する。一方、時間差tdが第2閾値th2以下の場合(ステップS1522:Yes)、判定部22-3は、スケジューリング可能なフレームが存在しないことを指示部24-3に通知して(ステップS1524)、本ルーチンを終了する。
<第2後処理>
図88は、第3の実施の形態の第2後処理の詳細フローチャートである。ステップS1600およびステップS1602は、第1の実施の形態の第2後処理に含まれるステップS800およびステップS802と同様であるため説明を省略する。
次に、指示部24-3は、閾値算出部42-3から通知された第1閾値th1と時間差tdを比較し、時間差tdが第1閾値th1以下であるか否かを判定する(ステップS1604)。
時間差tdが第1閾値th1より大きい場合(ステップS1604:No)、指示部24-3は、さらに、閾値算出部42-3から通知された第2閾値th2と時間差tdを比較し、時間差tdが第2閾値th2以下であるか否かを判定する(ステップS1610)。時間差tdが第2閾値th2より大きい場合(ステップS1610:No)、本ルーチンを終了する。
一方、時間差tdが第2閾値th2以下の場合(ステップS1610:Yes)、指示部24-3は、判定部22-3からスケジューリング可能なフレームが存在しないことを知らせる通知を受けたか確認する(ステップS1612)。判定部22-3から通知を受けていない場合(ステップS1612:No)、本ルーチンを終了する。
ステップS1604で時間差tdが第1閾値th1以下であると判定した場合(ステップS1604:Yes)、または、ステップS1612で判定部22-3から通知を受けていると判定した場合(ステップS1612:Yes)、指示部24-3は、各送信キューに対応する送信可能時間を一定量減少させて、送信可能時間記憶部36に記憶された送信可能時間情報36Aを更新する(ステップS1606)。
例えば、td≦th1の場合、指示部24-3は、第2の実施の形態と同様に、現在時刻tcと第1閾値th1の合計から将来時刻tfを差し引いた値(tc+th1-tf)に一定のオフセット(offset)を加算した値(tc+th1-tf+offset)を各送信キューの送信可能時間から差し引くように減少させてもよい。
また、例えば、th1<td≦th2の場合、指示部24-3は、現在時刻tcと第2閾値th2の合計から将来時刻tfを差し引いた値(tc+th2-tf)に一定のオフセット(offset)を加算した値(tc+th2-tf+offset)を各送信キューの送信可能時間から差し引くように減少させてもよい。
最後に、指示部24-3は、送信可能時間の減少量に基づいて、将来時刻tfを先に進め(ステップS1608)、第2後処理を終了する。
例えば、td≦th1の場合、指示部24-3は、第2の実施の形態と同様に、将来時刻tfと現在時刻tcとの時間差tdが第1閾値th1以上(td≧th1)になるように、将来時刻tfを更新してもよい。例えば、指示部24-3は、送信可能時間の減少値(tc+th1-tf+offset)を将来時刻tfに加算するように更新してもよい。この場合、新しい将来時刻tfnewは、tfnew=tfold+tc+th1-tfold+offset=tc+th1+offsetとなる。図89は、このようにして更新された将来時刻の一例を示す図である。
また、例えば、th1<td≦th2の場合、指示部24-3は、将来時刻tfと現在時刻tcの時間差tdが第2閾値th2以上(td≧th2)になるように将来時刻tfを更新してもよい。例えば、指示部24-3は、送信可能時間の減少値(tc+th2-tf+offset)を将来時刻tfに加算するように更新してもよい。この場合、新しい将来時刻tfnewは、tfnew=tfold+tc+th2-tfold+offset=tc+th2+offsetとなる。図90は、このようにして更新された将来時刻の一例を示す図である。
(第4の実施の形態)
第3の実施の形態では、処理時間の動的な変動に対処する機能として、2つの閾値(第1閾値th1と第2閾値th2)を用いる例を示した。本実施の形態では、処理時間の変動に対するロバスト性を向上させる方法として、3つの閾値(第1閾値th1、第2閾値th2、及び、第3閾値th3)を用いる。これにより、第3の実施の形態と比べてスケジューリング処理のタイミング精度が高まり、結果としてリアルタイム性が求められるフレームをよりタイムリーに送信することが可能となる。
[機能構成の例]
図91は、第4の実施の形態の情報処理システム1-4の機能構成の例を示す図である。情報処理システム1-4は、第1の実施の形態の各処理部に、計測部40-3と閾値算出部42-4が追加される。また、情報処理システム1-4は、ホスト12-4が備える先読部20-4、判定部22-4および指示部24-4の機能が、第1の実施の形態と異なっている。その他の構成は第1の実施の形態と同様であるため同一の符号を付し説明を省略する。また計測部40-3は第3の実施の形態と同様であるため同一の符号を付し説明を省略する。
<情報処理>
第4の実施の形態の情報処理装置(ホスト12-4、送信装置14)情報処理の全体の流れは、第2の実施の形態の情報処理を示す図75と同様である。第2の実施の形態と比較すると、第3の実施の形態では、計測処理・閾値算出処理(図75のステップS1003)、先読処理・スケジューリング処理内の初期化処理(図5のステップS200)、先読処理(図5のステップS202)、判定処理(図5のステップS206)、および、第2後処理(図5のステップS214)が変更される。
<初期化処理>
図92は、第4の実施の形態の初期化処理の詳細フローチャートである。ステップS1700~ステップS1704は、第1の実施の形態の初期化処理内のステップS300~ステップS304と同様であるため説明を省略する。
最後に、先読部20-4は、タイムインターバルとゲートコントロール周期時間を閾値算出部42-4に通知し(ステップS1706)、本ルーチンを終了する。
<先読処理>
図93は、第4の実施の形態の先読処理の詳細フローチャートである。ステップS1800~ステップS1810は、第1の実施の形態の先読処理内のステップS400~ステップS410と同様であるため説明を省略する。
最後に、先読部20-4は、タイムインターバルを閾値算出部42-4に通知し(ステップS1812)、本ルーチンを終了する。
<計測処理・閾値算出処理>
図94は計測処理・閾値算出処理の詳細フローチャートである。ステップS1900~ステップS1912は、第3の実施の形態の計測処理・閾値算出処理(図84)のステップS1400~ステップS1412と同様であるため説明を省略する。
次に、閾値算出部42-4は、先読部20-4から通知されるタイムインターバルとゲートコントロール周期時間に基づいて第3閾値th3を算出する(ステップS1914)。
以下に説明するように、将来時刻tfと現在時刻tcの時間差tdが一定値(閾値)以上になったときに、判定処理を一時的に保留にした方がよい状況がありうる。例えば、将来時刻tfにおいて、低優先度の送信キューと高優先度の送信キューの双方に送信可能時間が割り当てられており、あるアプリケーションが低優先度の送信キューに大量のフレームをバースト的に書き込む状況を想定する。このような状況下では、仮に高優先度の送信キューが空であった場合、低優先度の送信キューに書き込まれたフレームが優先的に次々とスケジューリングされ、その後に高優先度の送信キューに書き込まれたフレームの送信タイミングが必要以上に遅延する可能性がある。
第3閾値th3は、このような状況が生じることを抑制するために用いられる。閾値算出部42-4は、例えば、タイムインターバル又はゲートコントロール周期時間に一定のオフセット(offset)を加算した値を第3閾値th3として算出してもよい。判定部22-4は、将来時刻tfと現在時刻tcの時間差tdを、この第3閾値th3と比較することで、判定処理を保留するか否か判断することが可能となる。
最後に、閾値算出部42-4は、第1閾値th1、第2閾値th2及び第3閾値th3を、判定部22-4及び指示部24-4に通知する。例えば、閾値算出部42-4は、共有メモリに各閾値を書き込み、その後、判定部22-4及び指示部24-4に対して閾値の値を更新したことを知らせるシグナルを送ってもよい。
なお、計測部40-3と閾値算出部42-4は、図94に示す処理を繰り返し実行する。すなわち、計測部40-3は継続的にモニタリングを行い、閾値算出部42-4は最新のモニタリング結果を反映させるように、各閾値を算出する。このため、第4の実施の形態では、処理時間の動的な変動に対応するように、閾値の値を更新することが可能となる。
図94内の各ステップの少なくとも一部を並列に実行するように構成してもよい。図95は、並列に実行するステップを含む計測処理・閾値算出処理の詳細フローチャートの一例である。図95の例では、ステップS1900、S1902、S1904、および、S1
96が並列に実行される。また、ステップS1910~S1916-1、S1912~S1916-2、および、ステップS1914~S1916-3が並列に実行される。ステップS1916-1~1916-3は、図94のステップS1916を分割したステップに相当する。
第4の実施の形態を適用することで、第3の実施の形態と比べて、処理時間の変動に対する対応パターンが増え、柔軟性を向上させることが可能となる。図96は、算出される第1閾値th1、第2閾値th2および第3閾値th3の例を示す図である。図96に示すように第3閾値th3を導入したことで、図86と比較して対応パターンの個数が3(図86の第1エリア、第2エリア及び第3エリア)から4(図96の第1エリア、第2エリア、第3エリア及び第4エリア)に増えていることがわかる。
<判定処理>
図97は、第4の実施の形態の判定処理の詳細フローチャートである。ステップS2000~ステップS2002は、第3の実施の形態の判定処理を示す図87のステップS1500~ステップS1502と同様であるため説明を省略する。
ステップS1502の後、判定部22-4は、閾値算出部42-4から通知された第3閾値th3と時間差tdを比較し、時間差tdが第3閾値th3より大きいか否かを判定する(ステップS2004)。時間差tdが第3閾値th3より大きい場合(ステップS2004:Yes)、本ルーチンを終了する。
一方、時間差tdが第3閾値th3以下の場合(ステップS2004:No)、判定部22-4は、ステップS2006~ステップS2026を実行する。ステップS2006~ステップS2026は、第3の実施の形態の判定処理を示す図87のステップS1504~ステップS1524と同様であるため説明を省略する。
<第2後処理>
図98は、第4の実施の形態の第2後処理の詳細フローチャートである。ステップS2100およびステップS2102は、第3の実施の形態の第2後処理に含まれるステップS1600およびステップS1602と同様であるため説明を省略する。
ステップS1602の後、判定部22-4は、閾値算出部42-4から通知された第3閾値th3と時間差tdを比較し、時間差tdが第3閾値th3より大きいか否かを判定する(ステップS2104)。時間差tdが第3閾値th3より大きい場合(ステップS2104:Yes)、本ルーチンを終了する。
一方、時間差tdが第3閾値th3以下の場合(ステップS22014:No)、指示部24-4は、ステップS2106~ステップS2114を実行する。ステップS2106~ステップS2114は、第3の実施の形態の第2後処理に含まれるステップS1604~ステップS1612と同様であるため説明を省略する。
なお、図99および図100は、第3の実施の形態の指示部24-4により更新された将来時刻の一例を示す図である。図99は、td≦th1の場合の更新例を示す。図100は、th1<td≦th2の場合の更新例を示す。
<まとめ>
第2の実施の形態では、図77に示すように、2つの対応パターン(第1エリアおよび第2エリア)が定義される。第3の実施の形態では、図86に示すように、3つの対応パターン(第1エリア、第2エリア及び第3エリア)が定義される。第4の実施の形態では、図96(図99、図100)に示すように、4つの対応パターン(第1エリア、第2エリア、第3エリア及び第4エリア)が定義される。図96の各エリアでは、例えば、以下のように処理が制御される。
例えば、将来時刻tfが第1エリアの範囲に入っている場合、各送信キューの送信可能時間が減少され、将来時刻tfが強制的に先に進められる。また、例えば、将来時刻tfが第1エリアの範囲に入っている場合、判定部による判定処理が保留とされる。
例えば、将来時刻tfが第2エリアの範囲に入っている場合、スケジューリング可能なフレームが少なくとも1つ存在するかが確認され、スケジューリング可能なフレームが存在する場合、判定部による判定処理が許可される。スケジューリング可能なフレームが存在しない場合、各送信キューの送信可能時間が減少され、将来時刻tfが強制的に先に進められる。また、スケジューリング可能なフレームが存在しない場合、判定部による判定処理が保留とされる。
例えば、将来時刻tfが第3エリアの範囲に入っている場合、判定部による判定処理が許可される。
例えば、将来時刻tfが第4エリアの範囲に入っている場合、判定部による判定処理が保留とされる。
例えば、将来時刻tfが第1エリア又は第2エリアの範囲に入っている場合に、各送信キューの送信可能時間を減少させることで、先読部が先読みするタイミングを間接的に制御することができる。上述のように、例えば送信キューの各々に割当てられている送信可能時間の全てがゼロ“0”である場合に先読指示が先読部20へ通知される、すなわち、送信可能時間の減少が先読み指示のトリガーとなっているためである。
例えば、将来時刻tfが第1エリア又は第4エリアの範囲に入っている場合に、判定部による判定処理を保留させることで、スケジューリング部がスケジューリングするタイミングを間接的に制御することができる。上述のように、スケジューリング部は、判定部からの通知に連動してスケジューリングを行うためである。
以上、具体的な例を挙げて説明したように、第2から第4の実施の形態の情報処理装置は、将来時刻と現在時刻との時間差と、一つの閾値または二つ以上の複数の閾値との比較結果に基づいて、先読みのタイミングとスケジューリングのタイミングを制御することができる。さらに、閾値を動的に更新することで、例えば、環境によって変化するオペレーティングシステムのタスクスケジューリング、および、バスの遅延変動に対して柔軟に対応することが可能となる。
従って、第2から第4の実施の形態の情報処理装置では、処理時間の変動に対するロバスト性を向上させることが可能となる。すなわち、第2から第4の実施の形態の情報処理装置では、ロバスト性向上により、送信スケジューリング情報に基づいた動的なスケジューリング処理のタイミング精度が高まり、結果としてリアルタイム性が求められるフレームをよりタイムリーに送信することができる。
なお、各エリアを定める閾値の少なくとも一部は、必ずしも動的に算出および更新する必要はない。例えば、閾値の少なくとも一部を、何らかの方法で予め静的に決定した固定値として設定してもよい。固定の閾値を用いた場合であっても、適切な値を定めることができれば、先読みのタイミングとスケジューリングのタイミングを一定の精度で制御することが可能となる。最適な構成を決定するためには、例えば、アプリケーションの要求精度と設計および実装コスト等のトレードオフを考慮する必要がある。
なお、上記実施の形態は、例として提示したものであり、静的又は動的に更新する閾値の数を3つ(第1閾値th1、第2閾値th2及び第3閾値th3)に限定することは意図していない。また、上記実施の形態は、例として提示したものであり、対応パターンを2つ~4つ(第1エリア、第2エリア、第3エリア及び第4エリア)に限定することは意図していない。例えば、第1閾値th1および第3閾値th3に相当する2つの閾値を用いて、3つの対応パターン(第1エリア、第3エリア及び第4エリアに相当)を定義する形態としてもよい。
また、閾値を動的に算出する場合、複数の閾値の大小関係が、上述した対応パターンを定義できるような関係(例えば第1閾値th1<第2閾値th2<第3閾値)とならない場合が生じうる。このような場合は、上述した対応パターンのいずれかが定義できるような値に閾値を調整してもよい。例えば第3の実施の形態で、第1閾値th1>第2閾値th2となった場合は、第2閾値th2と第1閾値th1と同じ値に調整し、第1エリアおよび第2エリアを用いる第2の実施の形態に従って処理するように構成してもよい。
第2の実施の形態、第3の実施の形態及び第4の実施の形態でそれぞれ説明したように、この新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、新しい閾値及び対応パターンの追加、閾値の算出方法の変更、送信可能時間の減少値の算出方法の変更等を行うことができる。
次に、上記実施の形態の情報処理装置10のハードウェア構成の一例を説明する。図101は、上記実施の形態の情報処理装置10のハードウェア構成図の一例である。
上記実施の形態の情報処理装置10は、CPU40などの制御装置と、ROM(Read Only Memory)41やRAM(Random Access Memory)42やHDD(ハードディスクドライブ)44などの記憶装置と、各種機器とのインターフェースであるI/F部43と、各部を接続するバス45とを備えており、通常のコンピュータを利用したハードウェア構成となっている。
上記実施の形態の情報処理装置10では、CPU40が、ROM41からプログラムをRAM42上に読み出して実行することにより、上記各部がコンピュータ上で実現される。
なお、上記実施の形態の情報処理装置10で実行される上記各処理を実行するためのプログラムは、HDD44に記憶されていてもよい。また、上記実施の形態の情報処理装置10で実行される上記各処理を実行するためのプログラムは、ROM41に予め組み込まれて提供されていてもよい。
また、上記実施の形態の情報処理装置10で実行される上記処理を実行するためのプログラムは、インストール可能な形式または実行可能な形式のファイルでCD-ROM、CD-R、メモリカード、DVD(Digital Versatile Disk)、フレキシブルディスク(FD)等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータプログラムプロダクトとして提供されるようにしてもよい。また、上記実施の形態の情報処理装置10で実行される上記処理を実行するためのプログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、上記実施の形態の情報処理装置10で実行される上記処理を実行するためのプログラムを、インターネットなどのネットワーク経由で提供または配布するようにしてもよい。
なお、上記には、本発明の実施の形態を説明したが、上記実施の形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施の形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。