(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-05
(45)【発行日】2024-04-15
(54)【発明の名称】通信制御装置、通信制御方法、情報処理装置、情報処理方法、および、プログラム
(51)【国際特許分類】
H04L 47/6275 20220101AFI20240408BHJP
G06F 13/12 20060101ALI20240408BHJP
【FI】
H04L47/6275
G06F13/12 340B
(21)【出願番号】P 2020209601
(22)【出願日】2020-12-17
【審査請求日】2023-02-08
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】山浦 隆博
(72)【発明者】
【氏名】オゲ ヤースィン
【審査官】大石 博見
(56)【参考文献】
【文献】特許第7337750(JP,B2)
【文献】特開2019-176276(JP,A)
【文献】米国特許出願公開第2020/0293353(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 47/00
G06F 13/12
(57)【特許請求の範囲】
【請求項1】
複数のキューそれぞれに対応する複数のゲートを開くか否かを定める複数のエントリを含むゲート制御情報に基づいて生成される情報であって、1以上の継続するエントリに対応する期間で送信可能なメッセージの量を示す送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する送信制御部と、
前記送信制御部の制御に従いメッセージを送受信する通信部と、
を備え、
前記期間は、前記送信制御部の動作クロックに基づくクロックサイクル数で表され、
前記送信制御部は、前記動作クロックごとに、前記送信可能情報に基づいてメッセージの送信が可能か否か判定し、送信が可能なメッセージの送信を制御する、
通信制御装置。
【請求項2】
前記送信制御部は、前記動作クロックごとに、前記送信可能情報が示す送信可能なメッセージの量から、1クロックに対応する減算値を減算する、
請求項1に記載の通信制御装置。
【請求項3】
前記送信制御部は、予め定められた数の前記動作クロックの周期の中での前記動作クロックの位置ごとの前記減算値を特定可能な減算値情報を用いて、前記動作クロックに対して定められた前記減算値を特定する、
請求項2に記載の通信制御装置。
【請求項4】
複数のキューそれぞれに対応する複数のゲートを開くか否かを定める複数のエントリを含むゲート制御情報に基づいて生成される情報であって、1以上の継続するエントリに対応する期間で送信可能なメッセージの量を示す送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する送信制御部と、
前記送信制御部の制御に従いメッセージを送受信する通信部と、
前記送信可能情報を一時的に記憶する一時記憶部
と、を備え、
前記送信制御部は、前記一時記憶部に記憶された前記送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する、
通信制御装置。
【請求項5】
前記送信可能情報は、前記期間と、送信可能なメッセージの量と、をそれぞれ含む複数の第2エントリを含み、
前記一時記憶部は、複数の前記第2エントリのうち予め定められた前記第2エントリを記憶する固定記憶部と、複数の前記第2エントリのうち前記固定記憶部に記憶された前記第2エントリ以外であって、一定数の前記第2エントリを記憶する変動記憶部と、を含む、
請求項4に記載の通信制御装置。
【請求項6】
前記固定記憶部は、複数の前記第2エントリのうち先頭から予め定められた個数の前記第2エントリを記憶する、
請求項5に記載の通信制御装置。
【請求項7】
前記変動記憶部は、複数の前記第2エントリのうち、前記送信制御部がメッセージの制御に使用している前記第2エントリより後に読み出される前記第2エントリを含む、予め定められた個数の前記第2エントリを記憶する、
請求項5に記載の通信制御装置。
【請求項8】
複数のキューそれぞれに対応する複数のゲートを開くか否かを定める複数のエントリを含むゲート制御情報に基づいて生成される情報であって、1以上の継続するエントリに対応する期間で送信可能なメッセージの量を示す送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する送信制御部と、
前記送信制御部の制御に従いメッセージを送受信する通信部と、を備え、
前記送信可能情報は、前記ゲート制御情報と、前記通信部による通信の速度および前記送信制御部の動作速度の少なくとも一方と、に基づいて生成される、
通信制御装置。
【請求項9】
前記送信可能情報の入力を受け付ける受付部をさらに備え、
前記送信制御部は、前記受付部により受け付けられた前記送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する、
請求項1
、4および8のうちいずれか1つに記載の通信制御装置。
【請求項10】
前記送信制御部は、前記送信可能情報を記憶する記憶装置からDMA(Direct Memory Access)により受信した前記送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する、
請求項1
、4および8のうちいずれか1つに記載の通信制御装置。
【請求項11】
前記ゲート制御情報に基づいて前記送信可能情報を生成する送信可能情報生成部をさらに備える、
請求項1
、4および8のうちいずれか1つに記載の通信制御装置。
【請求項12】
複数のキューそれぞれに対応する複数のゲートを開くか否かを定める複数のエントリを含むゲート制御情報に基づいて、1以上の継続するエントリに対応する期間で送信可能なメッセージの量を示す送信可能情報を生成する送信可能情報生成部、
を備え、
前記送信可能情報生成部は、前記ゲート制御情報と、前記メッセージを送受信する通信部による通信の速度および前記通信部によるメッセージの送受信を制御する送信制御部の動作速度の少なくとも一方と、に基づいて前記送信可能情報を生成する、
情報処理装置。
【請求項13】
生成された前記送信可能情報を記憶し、記憶した前記送信可能情報をDMA(Direct Memory Access)により通信制御装置に出力する送信可能情報記憶部をさらに備える、
請求項12に記載の情報処理装置。
【請求項14】
前記速度を検出する検出部をさらに備え、
前記送信可能情報生成部は、前記ゲート制御情報と、前記検出部により検出された前記速度と、に基づいて前記送信可能情報を生成する、
請求項12に記載の情報処理装置。
【請求項15】
送信制御部が、複数のキューそれぞれに対応する複数のゲートを開くか否かを定める複数のエントリを含むゲート制御情報に基づいて生成される情報であって、1以上の継続するエントリに対応する期間で送信可能なメッセージの量を示す送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する送信制御ステップと、
通信部が、
前記送信制御部の制御に従いメッセージを送受信する通信ステップと、
を含み、
前記期間は、前記送信制御部の動作クロックに基づくクロックサイクル数で表され、
前記送信制御ステップは、前記動作クロックごとに、前記送信可能情報に基づいてメッセージの送信が可能か否か判定し、送信が可能なメッセージの送信を制御する、
通信制御方法。
【請求項16】
コンピュータを、
複数のキューそれぞれに対応する複数のゲートを開くか否かを定める複数のエントリを含むゲート制御情報に基づいて生成される情報であって、1以上の継続するエントリに対応する期間で送信可能なメッセージの量を示す送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する
送信制御部と、
前記送信制御部の制御に従いメッセージを送受信する
通信部と、として機能させ、
前記期間は、前記送信制御部の動作クロックに基づくクロックサイクル数で表され、
前記送信制御部は、前記動作クロックごとに、前記送信可能情報に基づいてメッセージの送信が可能か否か判定し、送信が可能なメッセージの送信を制御する、
プログラム。
【請求項17】
送信制御部が、複数のキューそれぞれに対応する複数のゲートを開くか否かを定める複数のエントリを含むゲート制御情報に基づいて生成される情報であって、1以上の継続するエントリに対応する期間で送信可能なメッセージの量を示す送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する送信制御ステップと、
通信部が、前記送信制御ステップの制御に従いメッセージを送受信する通信ステップと、を含み、
前記送信制御ステップは、前記送信可能情報を一時的に記憶する一時記憶部に記憶された前記送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する、
通信制御方法。
【請求項18】
コンピュータに、
複数のキューそれぞれに対応する複数のゲートを開くか否かを定める複数のエントリを含むゲート制御情報に基づいて生成される情報であって、1以上の継続するエントリに対応する期間で送信可能なメッセージの量を示す送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する送信制御ステップと、
前記送信制御ステップの制御に従いメッセージを送受信する通信ステップと、を実行させ、
前記送信制御ステップは、前記送信可能情報を一時的に記憶する一時記憶部に記憶された前記送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する、
プログラム。
【請求項19】
送信制御部が、複数のキューそれぞれに対応する複数のゲートを開くか否かを定める複数のエントリを含むゲート制御情報に基づいて生成される情報であって、1以上の継続するエントリに対応する期間で送信可能なメッセージの量を示す送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する送信制御ステップと、
通信部が、前記送信制御ステップの制御に従いメッセージを送受信する通信ステップと、を含み、
前記送信可能情報は、前記ゲート制御情報と、前記通信部による通信の速度および前記送信制御部の動作速度の少なくとも一方と、に基づいて生成される、
通信制御方法。
【請求項20】
コンピュータを、
複数のキューそれぞれに対応する複数のゲートを開くか否かを定める複数のエントリを含むゲート制御情報に基づいて生成される情報であって、1以上の継続するエントリに対応する期間で送信可能なメッセージの量を示す送信可能情報に基づいて、前記ゲートを開閉することによりメッセージの送信を制御する送信制御部と、
前記送信制御部の制御に従いメッセージを送受信する通信部と、として機能させ、
前記送信可能情報は、前記ゲート制御情報と、前記通信部による通信の速度および前記送信制御部の動作速度の少なくとも一方と、に基づいて生成される、
プログラム。
【請求項21】
複数のキューそれぞれに対応する複数のゲートを開くか否かを定める複数のエントリを含むゲート制御情報に基づいて、1以上の継続するエントリに対応する期間で送信可能なメッセージの量を示す送信可能情報を生成する送信可能情報生成ステップ、
を含み、
前記送信可能情報生成ステップは、前記ゲート制御情報と、前記メッセージを送受信する通信部による通信の速度および前記通信部によるメッセージの送受信を制御する送信制御部の動作速度の少なくとも一方と、に基づいて前記送信可能情報を生成する、
情報処理方法。
【請求項22】
コンピュータに、
複数のキューそれぞれに対応する複数のゲートを開くか否かを定める複数のエントリを含むゲート制御情報に基づいて、1以上の継続するエントリに対応する期間で送信可能なメッセージの量を示す送信可能情報を生成する送信可能情報生成ステップ、
を実行させ、
前記送信可能情報生成ステップは、前記ゲート制御情報と、前記メッセージを送受信する通信部による通信の速度および前記通信部によるメッセージの送受信を制御する送信制御部の動作速度の少なくとも一方と、に基づいて前記送信可能情報を生成する、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、通信制御装置、通信制御方法、情報処理装置、情報処理方法、および、プログラムに関する。
【背景技術】
【0002】
TSN(Time-Sensitive Networking)規格等に対応したネットワークを介してリアルタイム通信する通信装置が知られている。TSNでは、時間単位でキューの送信可否を記載したゲート制御リストにより、フレームの送信可否を判定することで、送信タイミングおよび送信量を制御することができる。
【先行技術文献】
【特許文献】
【0003】
【非特許文献】
【0004】
【文献】IEEE Std 802.1Qbv-2015
【文献】IEEE Std 802.1Q-2018
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、帯域を有効に活用できない場合があった。
【課題を解決するための手段】
【0006】
実施形態の通信制御装置は、送信制御部と、通信部と、を備える。送信制御部は、複数のキューそれぞれに対応する複数のゲートを開くか否かを定める複数のエントリを含むゲート制御情報に基づいて生成される情報であって、1以上の継続するエントリに対応する期間で送信可能なメッセージの量を示す送信可能情報に基づいて、ゲートを開閉することによりメッセージの送信を制御する。通信部は、送信制御部の制御に従いメッセージを送受信する。
【図面の簡単な説明】
【0007】
【
図1】第1の実施形態の通信装置のハードウェア構成図。
【
図2】第1の実施形態にかかる通信装置のブロック図。
【
図4】送信ディスクリプタリングの構成例を示す図。
【
図5】受信ディスクリプタリングの構成例を示す図。
【
図17】メディア依存オーバーヘッドの例を示す図。
【
図18】第2の実施形態にかかる通信装置のブロック図。
【
図25】キャッシュ部内のキャッシュ領域の構成例を示す図。
【
図26】キャッシュ部の初期化処理のフローチャート。
【
図27】送信可能情報記憶部に記憶された送信可能情報の例を示す図。
【
図35】2つのキャッシュ部を備える通信装置のブロック図。
【
図37】実施形態の通信装置を用いたシステムの構成例を示す図。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、この発明にかかる通信制御装置、通信制御方法、情報処理装置、情報処理法、および、プログラムの好適な実施形態を詳細に説明する。以下では、リアルタイム通信の規格としてTSNを用いる例を主に説明するが、適用可能な規格はTSNに限られるものではない。
【0009】
TSNでは、複数のキューそれぞれに対応する複数のゲートを開くか否かを定めるエントリを複数含むゲート制御リスト(ゲート制御情報の一例)が用いられる。例えばTSNでは、複数のキューそれぞれにおいて、ゲートの開放(オープン)状態が継続(連続)する場合には、ゲートが最終的に閉じられるまでの時間、複数のエントリにまたがってフレーム(メッセージの一例)送信をすることができる。規格上、ゲートの切替間隔は1nsの粒度で設定できる。このため、ゲートの間隔が短い場合には、複数のエントリを確認しながら送信の可否を判定することで、与えられた帯域を有効に活用することができる。
【0010】
TSNの規格で定められるフォーマットで記憶されたゲート制御リストに従ってゲートの開閉を制御する場合、先のゲートの状態(現在時刻より後の時刻でのゲートの状態)を読み出しながら、フレームの送信可否を判定する処理を行う必要性がある。しかし、このような構成では、一定時間内にこの処理を終わらせる保証ができなかった。また、この問題を避けるために先のゲートの状態を考慮しないようにすると、帯域が有効活用できないという問題があった。
【0011】
そこで本実施形態の通信装置は、ゲート制御リストをそのまま使用するのではなく、ソフトウェア等によりハードウェア処理に適した形式にゲート制御リストを予め変換した情報を使用する。具体的には、ゲート制御リストから、ゲートがオープンの状態が継続する期間でメッセージを送信可能な時間または送信可能なメッセージの量を示す送信可能情報が生成される。通信装置は、この送信可能情報に基づきメッセージを送信する。これにより、送信制御処理を一定時間内に完了させるとともに、帯域をより有効に活用可能となる。
【0012】
(第1の実施形態)
図1は、本実施形態の通信装置のハードウェア構成の例を示す図である。本実施形態の通信装置は、メモリ1、ホストプロセッサ2、ストレージ3、ネットワークインタフェースコントローラ4およびストレージコントローラ5を備える。
【0013】
メモリ1は、ホストプロセッサ2内のメモリコントローラを介してホストプロセッサ2に接続される。メモリ1は、例えばDRAM(Dynamic Random Access Memory)等により実現される。
【0014】
ホストプロセッサ2は、PCI Express(登録商標)等のバスを用いて、ストレージコントローラ5と接続される。同様に、ホストプロセッサ2は、PCI Express(登録商標)等のバスを用いて、ネットワークインタフェースコントローラ4と接続される。
【0015】
ホストプロセッサ2は、ストレージ3に格納された実行プログラムのイメージをメモリ1に展開し、メモリ1上の命令およびデータを読みながら処理を実行する。処理は、ホストプロセッサ2に備えられた1つまたは複数のコアにより実行される。なお
図1ではメモリ1とホストプロセッサ2とを分けて記載しているが、
図2以降では、
図1のメモリ1とホストプロセッサ2との組み合わせで実現される構成をホストプロセッサ(ホストプロセッサ2、ホストプロセッサ2-2、ホストプロセッサ2-3)という。
【0016】
ストレージ3は、例えばHDD(Hard Disk Drive)およびSSD(Solid State Drive)等により実現される。ストレージ3は、SATA、SAS、および、U.2(SFF-8639)などの規格でストレージコントローラ5と接続される。またストレージ3とストレージコントローラ5とは一体となっていてもよい。
【0017】
ネットワークインタフェースコントローラ4は、ホストプロセッサ2をネットワーク200に接続する。
【0018】
ネットワーク200は、例えばEthernet(登録商標)である。具体的には、ネットワーク200は、IEEE 802.1で定義された規格に対応したネットワークである。IEEE 802.1で定義された規格は、例えば、AVB(Audio Video Bridging)規格、および、TSN(Time-Sensitive Networking)規格等である。また、ネットワーク200の種類は任意でよい。ネットワーク200は、例えばオフィスネットワーク、データセンタ内部のネットワーク、車載ネットワーク、工場内ネットワーク、携帯基地局のネットワーク、および、コア設備のネットワーク等である。
【0019】
ネットワークインタフェースコントローラ4およびストレージコントローラ5は、例えばASIC(Application Specific Integrated Circuit)、または、FPGA(Field-Programmable Gate Array)等により実現される。また、ネットワークインタフェースコントローラ4およびストレージコントローラ5は、ASIC、FPGAおよびプロセッサのうち2つまたは3つの組み合わせによって実現してもよい。また、ネットワークインタフェースコントローラ4およびストレージコントローラ5は内部に上述のメモリ1とは異なるメモリを内蔵していてもよい。また、ネットワークインタフェースコントローラ4およびストレージコントローラ5は、ホストプロセッサ2とは別のチップとして実装されてもよいし、SoC(System-on-a-Chip)として1つのチップとして実装されてもよい。
【0020】
図2は、本実施形態にかかる通信装置100の機能構成の一例を示すブロック図である。なお
図2は、主に通信装置100に含まれるホストプロセッサ2(情報処理装置の一例)およびネットワークインタフェースコントローラ4(通信制御装置の一例)の機能構成の例を示す。
【0021】
図2に示すように、ホストプロセッサ2は、同期制御部101と、フレーム生成部102と、送信可能情報生成部103と、設定部104と、検出部105と、ゲート制御リスト記憶部121と、を備える。
【0022】
ゲート制御リスト記憶部121は、送信制御で用いられるゲート制御リストを記憶する。ゲート制御リスト記憶部121は、例えばメモリ1により実現される。ゲート制御リスト(Gate Control List)は、IEEE 802.1Qで定義されるEnhancements for scheduled trafficの制御を実行するために用いられる情報である。
【0023】
ゲート制御リストは、予めストレージ3などに記憶しておいたものを入力して用いてもよいし、例えばIEEE 802.1Qccで定義されるCNC(Centralized Network Configuration)によってネットワーク200経由で入力して用いてもよい。
【0024】
図3は、ゲート制御リストの例を示す図である。
図3に示すゲート制御リストは、T00からT05までの6つのエントリを含む。各エントリは、8つのトラヒッククラスそれぞれに対応するキューのゲート状態と、タイムインターバルとを含む。TC0~TC7はトラヒッククラスを意味する。例えばTC7は、7番のトラヒッククラスを表す。各トラヒッククラスのゲート状態は“o”および“C”で表される。“o”は、ゲートが開放(オープン)されていることを意味する。“C”は、ゲートが閉じられていることを意味する。ゲート状態は、トラヒッククラスのキューにおける送信が許可されるか否かを示す。
【0025】
タイムインターバルは、エントリが継続する時間を表す。例えば
図3の例ではT00のエントリのタイムインターバルには、128μsが設定されている。これは、T00のエントリが128μs継続することを示している。T00から順にタイムインターバルの分、設定されたゲート状態を維持し、T01、T02、・・・と時間が経過するとともに、各トラヒッククラスのゲートのゲート状態が切り替えられる。最後のエントリ(
図3の例ではT05)が終わるとT00に戻り、処理が繰り返される。
【0026】
なお
図3には示していないが、ゲート制御リストには、ゲート制御が開始される時間(ベースタイム)も設定(記憶)される。ベースタイムは、送信可能情報に含められてネットワークインタフェースコントローラ4に伝達される。ベースタイムは、例えば年月日時分秒などで表されるが、ゲート制御を開始する時間を特定できる形式であればどのような形式であってもよい。
【0027】
図2に戻り、同期制御部101は、ネットワーク200を介して他の通信装置との間で時刻同期を行う。例えば同期制御部101は、ネットワーク200を介して、IEEE1588、または、IEEE802.1ASなどの時刻同期プロトコルによって時刻同期を行い、ネットワークインタフェースコントローラ4(後述する時刻管理部201)が管理する時刻情報を補正する。
【0028】
フレーム生成部102は、送信するフレーム(送信フレーム)を生成する。例えばフレーム生成部102は、送信フレームに含まれるデータ、並びに、Ethernetの上位層に相当するプロトコルのヘッダおよびフッタを生成する。フレーム生成部102は、例えば、ホストプロセッサ2上で動作する送信アプリケーション、プロトコルスタックおよびデバイスドライバによって実現される。
【0029】
なお、
図2には1つのフレーム生成部102しか図示していないが、フレーム生成部102は複数備えらえてもよい。フレーム生成部102は、送信する情報の特性などに応じて、トラヒッククラスを送信フレームに設定する。8つのトラヒッククラスが用いられる場合、トラヒッククラスの識別情報として、例えば0から7の値が用いられる。
【0030】
送信可能情報生成部103は、ゲート制御リストから送信可能情報を生成する。例えば送信可能情報生成部103は、初期化時、および、検出部105においてリンク速度の変更が検出された場合に、ゲート制御リスト記憶部121からゲート制御リストを読み出し、送信可能情報を生成する。リンク速度は、ネットワークインタフェースコントローラ4(後述する通信部224)によるネットワーク200を介した通信の速度を表す。送信可能情報の生成処理の詳細は後述する。
【0031】
設定部104は、生成された送信可能情報をネットワークインタフェースコントローラ4(後述する受付部203)に送信する。
【0032】
検出部105は、ネットワークインタフェースコントローラ4のリンク速度の変更を検出する。例えば検出部105は、ネットワークインタフェースコントローラ4(後述する通知部205)からの通知を受け、リンク速度の変更を検出する。
【0033】
上記各部(同期制御部101、フレーム生成部102、送信可能情報生成部103、設定部104、および、検出部105)は、例えば、1または複数のプロセッサにより実現される。例えば上記各部は、CPU(Central Processing Unit)などのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のIC(Integrated Circuit)などのプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち1つを実現してもよいし、各部のうち2以上を実現してもよい。
【0034】
図2に示すように、ネットワークインタフェースコントローラ4は、時刻管理部201と、データ転送部202と、受付部203と、送信制御部204と、通知部205と、受信フレーム記憶部221と、送信フレーム記憶部222と、送信可能情報記憶部223と、通信部224と、を備えている。
【0035】
通信部224は、MAC(Media Access Controller)およびPHYと呼ばれる機能を含み、ネットワーク200におけるデータリンク層および物理層のプロトコルに従ってフレームの送受信に必要な処理を行う。例えば通信部224は、Ethernetのデータリンク層および物理層の処理を行う。
【0036】
受信フレーム記憶部221は、通信部224により受信された受信フレームを記憶する。例えば受信フレーム記憶部221は、トラヒッククラスごとに用意されたキュー(FIFO)を用いて、受信フレームのデータとフレームの長さとをセットにして順番に記憶する。
【0037】
送信フレーム記憶部222は、ホストプロセッサ2のフレーム生成部102により生成された送信フレームを記憶する。例えば送信フレーム記憶部222は、トラヒッククラスごとに用意されたキュー(FIFO)を用いて、送信フレームのデータとフレームの長さとをセットにして順番に記憶する。
【0038】
受信フレーム記憶部221および送信フレーム記憶部222は、例えばSRAM(Static Random Access Memory)によって実現される。
【0039】
時刻管理部201は、時刻情報を管理する。例えば時刻管理部201は、ネットワークインタフェースコントローラ4内の時刻を管理し、通信部224および送信制御部204に時刻情報を提供する。
【0040】
また、同期制御部101が時刻同期を実行する際には、通信部224は、時刻管理部201の時刻情報を用いて、送信フレームへのタイムスタンプの付与、および、受信フレームからのタイムスタンプの取得を行う。
【0041】
データ転送部202は、メモリ1との間でデータを転送する。例えばデータ転送部202は、受信フレーム記憶部221とメモリ1との間、および、メモリ1と送信フレーム記憶部222との間で、DMA(Direct Memory Access)によりフレームを転送する。
【0042】
受信の場合、データ転送部202は、受信ディスクリプタ(詳細は後述)から転送先アドレスを読み出し、受信フレーム記憶部221の対応するキューから読み出した受信フレームのデータを転送先アドレスで指定されたメモリ1の領域へデータを書き込む。そしてデータ転送部202は、受信ディスクリプタの長さと、ステータスと、を書き込む。
【0043】
送信の場合、データ転送部202は、送信ディスクリプタ(詳細は後述)から転送元アドレスと長さとを読み出し、転送元アドレスで指定されたメモリ1の領域から長さで指定された長さ分のデータを読み出し、送信フレーム記憶部222の対応するキューにフレームのデータを書き込む。そしてデータ転送部202は、送信ディスクリプタのステータスを書き込む。
【0044】
時刻同期プロトコルのフレームの送受信もデータ転送部202を介して実行される。例えば同期制御部101は、各フレームのタイムスタンプから、ネットワーク200を介して接続されるマスタに対する時刻のオフセットを算出し、時刻管理部201の時刻情報を補正する。
【0045】
図4および
図5はそれぞれ、送信ディスクリプタリングおよび受信ディスクリプタリングの構成例を示す図である。
【0046】
図4に示すように、送信ディスクリプタは、リングバッファになっており、HeadおよびTailという2つの変数を用いて管理される。
図4に示すように、HeadからTail-1のディスクリプタは、HW(ハードウェア)、すなわちネットワークインタフェースコントローラ4が所有しているディスクリプタを示す。また、TailからHead-1のディスクリプタは、SW(ソフトウェア)、すなわちホストプロセッサ2上で動作するソフトウェア(フレーム生成部102および同期制御部101)が所有しているディスクリプタを示す。HeadおよびTailの値は、レジスタインタフェースおよび割り込み信号を使って、ネットワークインタフェースコントローラ4およびホストプロセッサ2との間で通知される。
【0047】
送信ディスクリプタリングの各エントリ(各ディスクリプタ)には、転送元アドレス、長さ、および、ステータスが含まれる。転送元アドレスは、送信対象のフレームのデータが記憶されているデータ記憶部(例えばメモリ1)の記憶領域の先頭位置を示す先頭アドレスを示す。長さは、送信対象のフレームの長さを示す。ステータスは、送信処理の状態を示す情報が記憶される。
【0048】
図5に示すように、受信ディスクリプタリングの各エントリ(各ディスクリプタ)は、転送先アドレス、長さおよびステータスを含む。転送先アドレスは、受信対象のフレームのデータを記憶するデータ記憶部(例えばメモリ1)の記憶領域の先頭位置を示す先頭アドレスを示す。長さは、受信対象のフレームの長さを示す。ステータスは、受信処理の状態を示す情報が記憶される。
【0049】
上述のステータスには、例えばエラービットおよびDONEビット等が含まれる。エラービットは、転送エラーの有無を示す。DONEビットは、ネットワークインタフェースコントローラ4で処理が終わったことを示す。送信用ディスクリプタのDONEビットが1の場合、送信処理が終わったことを示す。受信用ディスクリプタのDONEビットが1の場合、受信処理が終わったことを示す。ネットワークインタフェースコントローラ4が、各ビット(エラービットおよびDONEビット)に1を書き込む。そして、フレーム生成部102または同期制御部101は、各ビットを確認した後に、各ビットに0を書き込むことにより、各ビットをクリアする。
【0050】
図2に戻り、受付部203は、ホストプロセッサ2の設定部104により送信された送信可能情報の入力を受け付ける。受付部203は、予め定義したレジスタによって送信可能情報を設定できるようにしてもよい。設定部104が予め決められたフォーマットでメモリ1に記憶された送信可能情報の先頭アドレスおよび長さをレジスタで通知して、受付部203がメモリ1にアクセスして送信可能情報を読み出してもよい。設定された送信可能情報は送信可能情報記憶部223に出力される。
【0051】
送信制御部204は、Enhancements for scheduled trafficに従って送信制御を行う。例えば送信制御部204は、時刻管理部201が管理する時刻情報と、送信可能情報と、送信フレーム記憶部222に記憶されている各トラヒッククラスのキューの先頭フレームのサイズと、を用いて、Enhancements for scheduled trafficの送信制御を行う。
【0052】
なお、送信制御で適用できる送信選択アルゴリズムはどのようなアルゴリズムであってもよい。例えば送信制御部204は、すべてのトラヒッククラスにおいて、“Strict Priority”(絶対優先)を適用することができる。
【0053】
送信制御処理の概要を以下に説明する。まず送信制御部204は、取得した時刻情報が送信可能情報のいずれのエントリに該当するかを調べ、その時点での各キューの送信可能量、すなわち、各トラヒッククラスの送信可能量を算出する。送信制御部204は、送信可能量に基づき、各キューで先頭フレームを送信できるか否かを判定する。送信選択アルゴリズムとして“Strict Priority”を設定している場合、送信制御部204は、先頭フレームが送信できるキューに対応するトラヒッククラスのうち、トラヒッククラスの識別情報の値が最大であるトラヒッククラスを選択する。送信制御部204は、選択したトラヒッククラスに対応するキューを用いて、通信部224を介してフレームを送信する。
【0054】
通知部205は、通信部224のリンク状態およびリンク速度を取得してホストプロセッサ2(検出部105)に通知する。通知には割り込みを用いてもよいし、検出部105をポーリング動作させてもよい。
【0055】
送信可能情報記憶部223は、ホストプロセッサ2の設定部104から送信され、受付部203により受け付けられた送信可能情報を記憶し、送信制御部204から読み出せるようにする。送信可能情報記憶部223は、例えばSRAMによって実現される。
【0056】
上記各部(時刻管理部201、データ転送部202、受付部203、送信制御部204、および、通知部205)は、例えば、1または複数のプロセッサにより実現される。例えば上記各部は、CPUなどのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のICなどのプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち1つを実現してもよいし、各部のうち2以上を実現してもよい。
【0057】
次に
図6および
図7を用いて、フレーム送信処理およびフレーム受信処理の動作概要を説明する。
図6は、フレーム送信処理の動作概要を示す図である。フレーム送信処理は、フレーム生成部102または同期制御部101を起点に行われる。フレーム生成部102および同期制御部101は、フレームのペイロードデータの生成、並びに、各プロトコルのヘッダおよび(必要に応じて)フッタの付与を行い、フレームを生成する。フレーム生成部102および同期制御部101は、そのアプリケーションの特性などに応じて、いずれのトラヒッククラスを用いてフレームを送信するかを選択する。データ転送部202の送信ディスクリプタは、例えば、それぞれトラヒッククラスごとに用意される。送信ディスクリプタを用いて転送が指示されたフレームは、メモリ1から読み出され、送信フレーム記憶部222の対応するキューに転送される。その後、送信制御部204は、いずれのフレームを送信するかを制御し、通信部224を用いてフレームを送信する。送信制御部204の動作の詳細は後述する。
【0058】
図7は、フレーム受信処理の動作概要を示す図である。通信部224は、受信したフレームのVLAN(Virtual Local Area Network)タグの有無、および、VLANタグがある場合にはそのPCP(Priority Code Point)値を用いて、受信フレームをトラヒッククラスへ振り分ける。受信フレームは、受信フレーム記憶部221の対応するキューに順番に記憶される。その後、データ転送部202の対応する受信ディスクリプタに設定されたメモリ1のメモリアドレスに受信フレームが記憶され、同期制御部101などに渡される。
【0059】
次に
図8を用いて送信可能情報生成処理について説明する。
図8は、送信可能情報生成処理のフローチャートの例を示す図である。送信可能情報生成処理は、例えば、ゲート制御リストが設定された場合、および、検出部105によってリンク速度変更が検出された場合に実行される。
【0060】
送信可能情報生成部103は、ゲート制御リスト記憶部121からゲート制御リストを読み出す(ステップS101)。ここでは例えば
図3に示すゲート制御リストが得られたとする。
【0061】
送信可能情報生成部103は、各トラヒッククラスについて、ゲート制御リストの“o”が継続する時間(継続オープン時間)を算出する(ステップS102)。
【0062】
図9は、算出される継続オープン時間の例を示す図である。例えば、トラヒッククラスTC7のエントリT02については、T02からT03まで“o”が継続しており、T04で“C”となっている。T02およびT03のタイムインターバルは、512μsおよび128μsであるため、T02の先頭からは“o”は512+128=640μs継続することになる。同様に、T03の場合にはT04で“C”になるので、“o”は128μs継続することになる。なお、ゲート制御リストは最終エントリまで進むと最初に戻る。T05の場合は、T05からT00まで“o”が継続しているため、“o”は512+128=640μs継続することになる。トラヒッククラスTC0のように常に“o”の場合には、ゲート制御リストが変更にならない限り“o”が続くため、継続オープン時間は無限大(∞)となる。
【0063】
図8に戻り、送信可能情報生成部103は、このように算出された継続オープン時間を使って送信可能情報を生成する。例えば送信可能情報生成部103は、ゲート制御リストの先頭(ベースタイム)からの相対時刻(基準時刻、基準区間)ごとに、各キューでフレームを送信可能な時間(フレーム送信可能時間)を算出する(ステップS103)。送信可能情報生成部103は、相対時刻の範囲ごとにフレーム送信可能時間を定めた送信可能情報を生成する。
図10~
図15は、生成される送信可能情報の一例を示す図である。
【0064】
図10に示す送信可能情報は、ゲート切替のタイミングにおいて、そのトラヒッククラスの継続オープン時間すなわち、フレーム送信が可能な時間(フレーム送信可能時間)を記憶する。なお、時刻は、ゲート制御リストの先頭時刻からの相対値で表現される。送信制御部204は、このような送信可能情報を用いて送信制御を行う。
【0065】
なお、
図10は、ゲート切替のタイミングですべてのトラヒッククラスのオープン継続時間を記憶する送信可能情報の例を示している。これに対して
図11は、新たにオープンになる場合にのみ、時間を記憶する送信可能情報の例を示す。なお、この例では4行目のエントリが存在するが、これは削除することもできる。
【0066】
リンク速度が得られている場合は、オープンが継続する時間は、送信可能なメッセージの量(例えばバイト数)に変換できる。
図12および
図13は、リンク速度が1Gbpsの場合の、
図10および
図11の時間をバイト数で表現した送信可能情報の例を示す。バイト数で表現する方が計算量を削減することができる。さらに、先頭からの相対値は、時刻の代わりにバイト数で表現されてもよい。
図14および
図15は、このような形式の送信可能情報の例を示す。なお送信可能情報をバイト数で表現しない場合は、リンク速度を検出しなくてもよいため、ホストプロセッサ2は検出部105を備えなくてもよい。
【0067】
図8に戻り、設定部104は、生成された送信可能情報をネットワークインタフェースコントローラ4に送信し、ネットワークインタフェースコントローラ4の送信可能情報記憶部223に記憶させる(ステップS104)。送信可能情報が記憶されると、例えば送信制御部204は、送信制御を有効化する(ステップS105)。
【0068】
次に
図16を用いて送信制御部204により実行される送信制御処理について説明する。
図16は、送信制御処理のフローチャートの例を示す図である。
【0069】
送信制御部204は、まず、送信制御が有効であるか否かを判定する(ステップS201)。なお、送信可能情報が設定されていない場合、および、リンク速度が変更されたため正しい送信可能情報が設定されていない場合などには、送信制御は無効化される。有効でない(無効化されている)場合(ステップS201:No)、以降の処理は実行されず終了する。
【0070】
送信制御が有効である場合(ステップS201:Yes)、送信制御部204は、時刻管理部201から時刻情報を取得する(ステップS202)。送信制御部204は、時刻情報が示す時刻が、処理すべきタイミングであるか否かを判定する(ステップS203)。処理すべきタイミングとは、次のフレームの送信を開始すべきタイミングである。このタイミングは、例えば前回のフレーム送信時に決定される。またタイミングは、時間またはバイト数で表される。なお、初期値は即座に処理が開始される値に設定される。
【0071】
処理すべきタイミングでない場合(ステップS203:No)、ステップS202に戻り処理が繰り返される。処理すべきタイミングとなった場合(ステップS203:Yes)、送信制御部204は、時刻管理部201から取得した時刻情報、送信可能情報のベースタイム、および、送信可能情報の時刻の範囲の最大値(最大時刻)を用いて、送信可能情報のいずれのエントリを参照すべきかを特定する(ステップS204)。
【0072】
送信制御部204は、特定したエントリが前回処理したエントリと同じであるか否かを判定する(ステップS205)。異なる場合(ステップS205:No)、すなわちエントリの切り替わりタイミングにおいて、トラヒッククラスで記憶している送信可能量を更新する(ステップS206)。送信可能量は時間あってもバイト数であってもよい。ここで送信可能量は更新されたタイミングと合わせて管理されるものとする。
【0073】
図10の送信可能情報を用いる場合の更新例を以下に説明する。例えば時刻情報が示す時刻がベースタイムから768μs経過後の時刻であったとする。この場合、送信制御部204は、4行目のエントリを、参照するエントリとして特定する。送信制御部204は、このエントリに設定された各キューのフレーム送信可能時間を送信可能量(時間)として設定し、送信可能量更新時刻としてベースタイムから768μs経過後の時刻であることを記録する。トラヒッククラス7、6、4、2の送信可能量には128μsが設定され、他のトラヒッククラスの送信可能量には0μsが設定される。また、すべてのトラヒッククラスについて送信可能量更新時刻に768μs経過後の時刻であることを記録する。すなわち、
図10の送信可能情報を用いる場合には、エントリが切り替わった場合にはすべてのキューの送信可能量を新しいエントリに設定されているフレーム送信可能時間で上書きする。また、送信可能量更新時刻もすべて上書きする。
【0074】
図11の送信可能情報を用いる場合の更新例を以下に説明する。例えば時刻情報が示す時刻がベースタイムから256μs経過後の時刻であったとする。この場合、送信制御部204は、3行目のエントリを、参照するエントリとして特定する。送信制御部204は、このエントリに設定された各キューのうち、値が設定されているキューのフレーム送信可能時間を送信可能量(時間)として設定し、送信可能量更新時刻としてベースタイムから256μs経過後の時刻であることを記録する。値が設定されていないキューについては送信可能量および送信可能量更新時刻を更新しない。この例では、トラヒッククラス7の送信可能時間のみを更新する。具体的には、フレーム送信可能時間に設定されている640μsを送信可能量として設定し、ベースタイムから256μs経過後の時刻であることを記録する。他のトラヒッククラスの送信可能量および送信可能量更新時刻については更新しない。すなわち、
図11の送信可能情報を用いる場合には、エントリが切り替わった場合に、新しいエントリにフレーム送信可能時間が設定されているトラヒッククラスについてのみ、送信可能量および送信可能量更新時刻を上書きする。
【0075】
図16に戻り、送信制御部204は、送信フレーム記憶部222の各トラヒッククラスの先頭のフレームのサイズを取得し、それぞれのトラヒッククラスについてフレームが送信可能か否かを判定する(ステップS207)。送信制御部204は、メディア依存オーバーヘッドを考慮してフレームを送信可能か判定してもよい。
【0076】
図10の送信可能情報を用いる場合の判定例を以下に説明する。例えば、時刻情報が示す時刻がベースタイムから800μs経過後の時刻であったとする。この場合、トラヒッククラス7(TC7)での送信可能か否かの判定では、送信制御部204は、まず時刻情報が示す時刻における残りのフレーム送信可能時間を計算する。この値の算出は、送信可能量から、時刻情報が示す時刻(800μs)と送信可能量が更新された時刻(送信可能量更新時刻)768μsとの差分に相当する時間を減算することにより行う。この例では、送信可能量(時間)は、128-(800-768)=96μsとなる。送信制御部204は、フレーム送信にかかる時間がこの値以下であれば、フレームが送信可能と判定する。送信制御部204は、フレーム送信にかかる時間がこの値よりも小さい場合にはフレームが送信できないと判定する。送信制御部204は、フレームの送信にかかる時間にメディア依存オーバーヘッドを含めてもよい。
【0077】
図11の送信可能情報を用いる場合の判定例を以下に説明する。例えば、
図11の送信可能情報を用いる場合においては、時刻情報が示す時刻がベースタイムから800μs経過後の時刻であったとする。この場合、トラヒッククラス7(TC7)での送信可能か否かの判定では、送信制御部204は、まず時刻情報が示す時刻における残りのフレーム送信可能時間を計算する。この値の算出は、送信可能量から、時刻情報が示す時刻(800μs)と送信可能量が更新された時刻(送信可能量更新時刻)256μsとの差分に相当する時間を減算することにより行う。この例では、送信可能量(時間)は、640-(800-256)=96μsとなる。送信制御部204は、フレーム送信にかかる時間がこの値以下であれば、フレームが送信可能と判定する。送信制御部204は、フレーム送信にかかる時間がこの値よりも小さい場合にはフレームが送信できないと判定する。送信制御部204は、フレームの送信にかかる時間にはメディア依存オーバーヘッドを含めてもよい。
【0078】
なお、
図10および
図11の送信可能情報において、時刻情報が示す時刻がベースタイムから1536μs経過後の時刻であったとする。これはゲート制御リストとしてはベースタイムからの経過時間が0μsと同様の動きをする。この場合には参照エントリの切り替わりにより、トラヒッククラス7については、
図10および
図11のどちらの送信可能情報においても、送信可能量が128μs、送信可能量更新時刻が0μsと設定される。このときの送信可能か否かの判定に用いるフレーム送信可能時間の計算は、送信可能量から、時刻情報が示す時刻(0μs)と送信可能量が更新された時刻(送信可能量更新時刻)0μsとの差分に相当する時間を減算することにより行う。この例では、送信可能量(時間)は、128-(0-0)=128μsとなる。送信制御部204は、フレーム送信にかかる時間がこの値以下であれば、フレームが送信可能と判定する。
【0079】
なお、
図10の例の場合には、エントリが切り替わる度に送信可能量が更新されるため、送信可能量更新時刻を記録しなくてもよい。この場合には、現在のエントリの開始時刻を送信可能量更新時刻と見做せばよい。
【0080】
図17は、メディア依存オーバーヘッドの例を示す図である。メディア依存オーバーヘッドは、例えば、フレーム間ギャップ(IFG)、並びに、次のフレームのプリアンブルおよびSFD(Start Frame Delimiter)のサイズを含む。送信制御部204は、フレームサイズ(FCS含む)、および、メディア依存オーバーヘッドを合わせた値が送信可能量以下である場合に、フレームを送信可能であると判定する。なお送信可能情報が時間で表される場合は、送信制御部204は、リンク速度を使ってフレームサイズ等を時間に変換したのちに判定を行う。
【0081】
送信制御部204は、送信が可能と判定されたトラヒッククラスから、送信選択アルゴリズムに従っていずれのトラヒッククラスの先頭フレームを送信するかを決定する(ステップS208)。送信選択アルゴリズムとして“Strict Priority”が用いられる場合は、送信制御部204は、送信可能なトラヒッククラスのうち最も優先度が高い、すなわち識別情報の値が最大であるトラヒッククラスを選択する。
【0082】
送信制御部204は、選択したトラヒッククラスのキューに記憶された先頭フレームを通信部224を介して送信する(ステップS209)。
【0083】
送信制御部204は、次に送信制御処理を行うタイミングを決定する(ステップS210)。例えば送信制御部204は、今回送信したフレーム送信にかかる時間の分、遅らせたタイミングを、次に送信制御処理を行うタイミングとして決定する。
【0084】
送信制御部204は、フレーム送信にかかる量(時間またはバイト)を、フレーム送信に用いたトラヒッククラス(キュー)の送信可能量から減算し(ステップS211)、送信制御処理を終了する。
【0085】
このように、本実施形態の通信装置によれば、ハードウェア構成またはソフトウェアの処理を簡略化しながらも、正確にゲート制御リストに従った動作が可能となり、与えられた帯域を有効に活用することが可能となる。また、送信制御処理にリアルタイム性(定められた時間内に処理を完了する)をもたせることが可能となる。
【0086】
(第2の実施形態)
本実施形態では、送信可能情報の送信可能時間を定める時刻の範囲(タイムインターバル)を、クロックサイクル数で表す例を説明する。クロックサイクル数は、送信制御部の動作クロックに基づくクロックサイクルの個数である。
【0087】
図18は、第2の実施形態にかかる通信装置(ホストプロセッサ2B、ネットワークインタフェースコントローラ4B)の機能構成の一例を示すブロック図である。
【0088】
図18に示すように、本実施形態のホストプロセッサ2Bは、送信可能情報生成部103Bおよび検出部105Bの機能が、上記実施形態のホストプロセッサ2と異なっている。また、本実施形態のネットワークインタフェースコントローラ4Bは、送信制御部204Bおよび通知部205Bの機能が、上記実施形態のネットワークインタフェースコントローラ4と異なっている。その他の構成は
図2と同様であるため同一の符号を付し説明を省略する。
【0089】
送信可能情報生成部103Bは、以下の機能が、上記実施形態の送信可能情報生成部103と異なっている。
・リンク速度の変更が検出された場合に加え、動作速度情報の変更が検出された場合に、送信可能情報を生成する。
・タイムインターバルを、送信制御部204Bのクロックサイクル数で表した送信可能情報を生成する。
【0090】
動作速度情報は、クロック情報およびビット幅情報のうち少なくとも一方を含む。クロック情報は、ネットワークインタフェースコントローラ4B(送信制御部204B)が送信制御処理を行うクロック周波数またはクロックサイクル(クロック周期)を表す。ビット幅情報は、ネットワークインタフェースコントローラ4B(送信制御部204B)が送信制御処理を行って通信部224にデータを出力するデータバスのビット幅を表す。なお、リンク速度、クロック情報、および、データバスのビット幅は、予めホストプロセッサ2B内に記憶されるようにしてもよい。
【0091】
上記のように、リンク速度または動作速度情報が得られている場合は、オープンが継続する時間は、送信可能なメッセージのデータ量(例えばバイト数)で表すことができる。送信可能なメッセージのデータ量は、バイト数の代わりにビット数で表されてもよい。これは第1の実施形態でも同様である。
【0092】
リンク速度が得られている場合には、送信可能情報生成部103Bは、そのリンク速度を用いて継続オープン時間からフレーム送信可能ビット数を算出する。例えば、リンク速度が100Gbpsで、継続オープン時間が640μsの場合、フレーム送信可能ビット数は、100000000000×640/1000000=64000000ビットと算出される。
【0093】
動作速度情報が得られている場合には、送信可能情報生成部103Bは、その動作速度情報を用いて継続オープン時間からフレーム送信可能ビット数を算出する。例えば、送信制御部204Bの出力が、クロック周波数が161.1328125MHzで640ビットのビット幅で、継続オープン時間が640μsの場合、フレーム送信可能ビット数は、161132812.5×640×640/1000000=66000000ビットと算出される。
【0094】
検出部105Bは、リンク速度の変更の検出に加え、動作速度情報の変更を検出する機能が追加される点が、上記実施形態の検出部105と異なっている。例えば検出部105Bは、ネットワークインタフェースコントローラ4B(通知部205B)からの通知を受け、リンク速度および動作速度情報の変更を検出する。例えば
図8に示すような送信可能情報生成処理は、本実施形態では、検出部105Bによって動作速度情報の変更が検出された場合にも実行される。
【0095】
通知部205Bは、送信制御部204Bの動作速度情報(クロック情報、ビット幅情報)を取得してホストプロセッサ2B(検出部105B)に通知する機能をさらに備える点が、上記実施形態の通知部205と異なっている。
【0096】
送信制御部204Bは、送信可能情報生成部103Bによって生成された、送信制御部204Bのクロックサイクルで表した送信可能情報を用いて送信制御を行う点が、上記実施形態の送信制御部204と異なっている。例えば送信制御部204Bは、自身の動作クロックごとに、送信可能情報に基づいてメッセージ(フレーム)の送信が可能か否か判定し、送信が可能なメッセージの送信を制御する。
【0097】
図19および
図20は、本実施形態の送信可能情報生成部103Bによって生成される送信可能情報の一例を示す図である。
図19および
図20は、タイムインターバルの値をクロックサイクル数で表し、フレーム送信可能量をビット数(フレーム送信可能ビット数)で表したフレーム送信可能情報の例を示す。
【0098】
なお、
図19は、ゲート切替のタイミングですべてのトラヒッククラスのフレーム送信可能ビット数を記憶する送信可能情報の例を示している。これに対して
図20は、新たにオープンになる場合にのみ、フレーム送信可能ビット数を記憶する送信可能情報の例を示す。
【0099】
本実施形態では、送信可能時間を定める時刻の範囲(タイムインターバル)は、クロックサイクル数で表される。クロックサイクル数は、各エントリのタイムインターバルが送信制御部204Bの何回分のクロックの動作に相当するかを示す。例えば、送信制御部204Bが156.25MHzで動作している場合、1クロックサイクルは1/156.25=6.4nsとなる。128μsのタイムインターバルは、クロックサイクルで表すと、128μs/6.4ns=20000となる。フレーム送信可能ビット数は、バイト数で表した値(
図12など)に8を乗算した値である。
【0100】
次に
図21を用いて送信制御部204Bにより実行される送信制御処理について説明する。
図21は、本実施形態の送信制御処理のフローチャートの例を示す図である。
【0101】
ここで、送信制御部204Bは、送信可能情報記憶部223から読み出した送信可能情報を、送信制御部204B内に備えられるレジスタに記憶して送信制御を行うものとする。例えば、最初のエントリを保持するレジスタである固定レジスタ(後述するキャッシュ部の固定キャッシュ領域と等価)と、現在値を保持するレジスタである変動レジスタ(後述するキャッシュ部の変動キャッシュ領域と等価)を用意し、固定レジスタと変動レジスタは、それぞれ、各トラヒッククラスの送信可能量(フレーム送信可能ビット数)と、タイムインターバル(クロックサイクル数)を保持するものとする。また、送信可能情報を切り替える場合に備えて、これらのレジスタを2セット用意して、使用するレジスタと書き換えを行うレジスタを切り替えて使用してもよい。なお、送信制御部204Bは、例えば156.25MHzの動作周波数で動作しているものとする。
【0102】
例えば、送信制御部204Bは、新たな送信可能情報が設定された場合などの初期化時に、送信可能情報記憶部223から、最初のエントリにおける各トラヒッククラスの送信可能量(フレーム送信可能ビット数)と、タイムインターバル(クロックサイクル数)と、を読み出して固定レジスタに記憶する。そして、1クロックごとに、
図21に示した送信制御処理を行う。
図21に示した各ステップの動作は並列に行ってよく、フローチャートに記載した通りの順序で処理が完了するとは限らない。
【0103】
送信制御部204Bは、まず、送信制御が有効であるか否かを判定する(ステップS301)。有効でない(無効化されている)場合(ステップS301:No)、以降の処理は実行されず終了する。なお、有効でない場合には、時間によるゲートの切り替えを行わず、予めトラヒッククラス毎に決められた状態(オープンまたはクローズ)に従って送信制御を行ってもよい。
【0104】
送信制御が有効である場合(ステップS301:Yes)、送信制御部204Bは、時刻管理部201からCycleStart信号が入力されてから最初の処理か否かを判定する(ステップS302)。CycleStart信号は、時刻管理部201からの時刻を基に生成された信号で、ゲート制御リストを先頭のエントリに戻す動作のために使用される。
【0105】
最初の処理である場合(ステップS302:Yes)、送信制御部204Bは、固定レジスタに記憶されている各トラヒッククラスの送信可能量(フレーム送信可能ビット数)と、タイムインターバル(クロックサイクル数)と、を読み出して以降の処理に用いる(ステップS303)。一方、最初の処理でない場合(ステップS302:No)、送信制御部204Bは、変動レジスタに記憶されている各トラヒッククラスの送信可能量(フレーム送信可能ビット数)と、タイムインターバル(クロックサイクル数)と、を読み出して以降の処理に用いる(ステップS304)。
【0106】
こうして読み出した情報を基に送信制御部204Bは、通信部224に対してフレームを出力可能か否かを判定する(ステップS305)。例えば送信制御部204Bは、通信部224における送信フレームの受付可能状態が「可能」を示す状態であり、また、フレームが出力中(フレームの出力処理が完了していない)でないことを確認する。
【0107】
フレームを出力可能な場合(ステップS305:Yes)、送信制御部204Bは、フレームを送信可能なキューを特定する(ステップS306)。例えば送信制御部204Bは、各キューにおいて、キューの先頭のフレームサイズと、ステップS303またはS304で読み出した各キューのフレーム送信可能ビット数とから、フレームを送信可能なキューを特定する。
【0108】
より具体的には、送信制御部204Bは、フレーム送信可能ビット数から、キューの先頭のフレームサイズとメディア依存オーバーヘッドとを加算した値を減算し、その算出値が0以上の場合に送信可能と判定する。例えば、あるキューのフレーム送信可能ビット数が768000ビットであり、キューの先頭のフレームのサイズ(FCSを含む)が1522バイト(12176ビット)であり、メディア依存オーバーヘッドが20バイト(160ビット)であるとする。この場合、算出値は、768000-(12176+160)=755664ビットとなり、0以上の値となる。従って送信制御部204Bは、このキューはフレームを送信可能であると判定する。
【0109】
一方、あるキューのフレーム送信可能ビット数が12000ビットであり、キューの先頭のフレームのサイズ(FCSを含む)が1522バイト(12176ビット)であり、メディア依存オーバーヘッドが20バイト(160ビット)であるとする。この場合、算出値は、12000-(12176+160)=-336ビットとなり、負の値となる。従って送信制御部204Bは、このキューはフレームを送信できないと判定する。
【0110】
送信制御部204Bは、この処理を各キューについて行い、フレーム送信可能なキューを特定する。
【0111】
次に、送信制御部204Bは、フレームを送信可能なキューが1つ以上特定されたか否かを判定する(ステップS307)。送信可能なキューが特定された場合(ステップS307:Yes)、送信制御部204Bは、各キューに設定されている送信選択アルゴリズムに従い、フレーム送信を行うトラヒッククラスを決定する(ステップS308)。トラヒッククラスは、キューに対応するため、トラヒッククラスを決定することは、キューを決定することに相当する。
【0112】
例えば、送信選択アルゴリズムとして“Strict Priority”を設定している場合、送信制御部204Bは、先頭フレームが送信できるキューに対応するトラヒッククラスのうち、トラヒッククラスの識別情報の値が最大であるトラヒッククラスを選択する。
【0113】
そして、送信制御部204Bは、選択したトラヒッククラスに対応するキューの先頭のフレームの、通信部224に対する出力を開始し、フレームを送信する(ステップS309)。
【0114】
フレームを送信した後、フレームを出力可能でない場合(ステップS305:No)、および、送信可能なキューが1つも特定されていない場合(ステップS307:No)、送信制御部204Bは、各トラヒッククラスのフレーム送信可能ビット数から1クロックサイクルに対する値を減算した値を変動レジスタに保存する(ステップS310)。
【0115】
減算する値(減算値)は、送信制御部204Bの動作速度情報(クロック情報とデータバスのビット幅との組み合わせから得られる)から算出される。送信制御部204Bの出力速度が通信部224の出力速度(リンク速度)と同一である場合には、出力速度の代わりに通信部224のリンク速度が用いられてもよい。
【0116】
送信制御部204Bが10Gbpsで動作し、156.25MHzで64ビットのバス幅で通信部224にフレームを出力している場合であれば、送信制御部204Bは、1クロックごとにデータバスのビット幅(=64ビット)と同じ値を、各キューのフレーム送信可能ビット数から減算する。減算値は送信可能情報に含めてホストプロセッサ2Bから通知するように構成してもよい。
【0117】
送信制御部204Bの動作速度情報から生成した送信可能情報のフレーム送信可能ビット数を減算する場合、送信制御部204Bは、1クロック毎に送信制御部204Bの出力のビット幅である640ビットずつ減算を行う。
【0118】
また、例えば送信制御部204Bの通信部224のリンク速度が100Gbpsである場合、この情報を基にフレーム送信可能ビット数が減算されるが、送信制御部204Bの動作周波数とバス幅とが一致しない。このような場合には、
図22および
図23に示すように、減算値を変化させてもよい。
【0119】
図22は、例えば33クロックを1周期とした場合に、最初の1回のクロックで減算値を640とし、残りの32回のクロックで減算値を620とする例を示す。
図23は、最初の20回のクロックで減算値を621とし、残りの13回のクロックで減算値を620とする例を示す。
【0120】
ホストプロセッサ2Bは、変化させる減算値に関する情報(減算値情報)を、送信制御部204Bに通知してもよい。減算値情報は、例えば、第1減算値とその繰り返し数、および、第2減算値とその繰り返し数という情報を含む。減算値情報はこれに限られず、予め定められた数の動作クロックの周期の中での動作クロックの位置ごとの減算値を特定可能な情報であれば、どのような形式の情報であってもよい。
【0121】
図21に戻り、送信制御部204Bは、タイムインターバルの値(クロックサイクル数)から1を減算した値を変動レジスタに記憶(ステップS311)。送信制御部204Bは、タイムインターバル値(クロックサイクル数)が0になったか否かを判定する(ステップS312)。
【0122】
タイムインターバル値(クロックサイクル数)が0になった場合(ステップS312:Yes)、送信制御部204Bは、送信可能情報の次のエントリから各トラヒッククラスのフレーム送信可能ビット数と、タイムインターバル(クロックサイクル数)とを読み出し、変動レジスタに記憶する(ステップS313)。なお、送信可能情報の次のエントリから各トラヒッククラスのフレーム送信可能ビット数と、タイムインターバル(クロックサイクル数)とを読み出す時間が1サイクルより多くかかる場合には、送信制御部204Bは、必要なサイクル数以下になった場合に次のエントリから読み出すようにしてもよい。すなわち、3サイクルが読み出しにかかる場合であれば、送信制御部204Bは、タイムインターバル値が3になった場合に次のエントリを読み出すように動作させる等、予め定められたタイムインターバル値(クロックサイクル数)以下になった場合に次のエントリを読み出す処理を開始するようにしてもよい。固定サイクル遅延で読み出しが完了しない場合には、送信制御部204Bは、各トラヒッククラスのフレーム送信可能ビット数と、タイムインターバル(クロックサイクル数)を保持するレジスタを2セット用意して切り替えて使用してもよい。
【0123】
変動レジスタに記憶した後、タイムインターバル値(クロックサイクル数)が0になっていない場合(ステップS312:No)、送信制御処理が終了する。
【0124】
このように、第2の実施形態では、タイムインターバルを送信制御部のクロックサイクルで表した送信可能情報を用いた送信制御が実現できる。
【0125】
以下に、上記実施形態(第1の実施形態、第2の実施形態)に適用できる変形例について説明する。以下では、第1の実施形態(
図2など)に基づく変形例を記載するが、第2の実施形態(
図18など)に対しても同様の手法を適用できる。
【0126】
(変形例1)
送信可能情報記憶部223は、ホストプロセッサ2-2内に備えられてもよい。
図24は、このように構成される変形例1の通信装置(ホストプロセッサ2-2、ネットワークインタフェースコントローラ4-2)の機能構成の一例を示すブロック図である。
【0127】
図24に示すように、変形例1のホストプロセッサ2-2は、設定部104を備えず、送信可能情報記憶部223を備えること、および、送信可能情報生成部103-2の機能が、上記実施形態のホストプロセッサ2と異なっている。また、変形例1のネットワークインタフェースコントローラ4-2は、受付部203および送信可能情報記憶部223を備えないこと、キャッシュ部225-2を備えること、および、送信制御部204-2の機能が、上記実施形態のネットワークインタフェースコントローラ4と異なっている。その他の構成は
図2と同様であるため同一の符号を付し説明を省略する。
【0128】
変形例1では、送信可能情報生成部103-2は、生成した送信可能情報をホストプロセッサ2-2内の送信可能情報記憶部223に記憶する。
【0129】
送信制御部204-2は、設定部104および受付部203を介さず、送信可能情報記憶部223から直接送信可能情報を取得する。例えば送信制御部204-2は、DMAによって送信可能情報記憶部223から送信可能情報を取得する。
【0130】
キャッシュ部225-2は、送信可能情報の少なくとも一部を一時的に記憶する記憶媒体(一時記憶部)である。キャッシュ部225-2は、例えば送信可能情報記憶部223より高速にアクセス可能な記憶媒体により構成することができる。なおキャッシュ部225-2を備えないように構成してもよい。
【0131】
送信制御部204-2は、例えば定期的に送信可能情報を送信可能情報記憶部223から先行して読み出し、キャッシュ部225-2に記憶する。これにより、ネットワークインタフェースコントローラ4-2のメモリが小さく、送信可能情報をすべて記憶できない場合にも対応できる。
【0132】
送信制御に必要となる送信可能情報が枯渇しないようにするために、キャッシュ部225-2が複数の記憶領域(キャッシュ領域)を備えるように構成されてもよい。
図25は、キャッシュ部225-2内のキャッシュ領域の構成例を示す図である。送信可能情報記憶部223は、上記のようにSRAMの他、DRAM等の大容量メモリで構成されてもよい。これに対してキャッシュ部225-2は、送信可能情報記憶部223より容量は小さいが固定遅延で高速に読み出しが可能なSRAM等のメモリで構成される。
【0133】
図25に示すように、キャッシュ部225-2は、固定(静的)キャッシュ領域(固定記憶部)と、変動(動的)キャッシュ領域(変動記憶部)と、を含む。固定キャッシュ領域は、送信可能情報記憶部223に記憶される送信可能情報のうち予め定められた送信可能情報を記憶する。予め定められた送信可能情報は、例えば、先頭から一定数の送信可能情報である。変動キャッシュ領域は、固定キャッシュ領域に記憶された送信可能情報以外の送信可能情報のうち一定数の送信可能情報であって、送信制御に応じて変動する送信可能情報を記憶する。
【0134】
図25の例では、キャッシュ部225-2は、固定キャッシュ領域にm個のエントリを記憶し、変動キャッシュ領域にn個のエントリを記憶する。送信可能情報記憶部223の先頭領域(エントリ0からm-1まで)が固定キャッシュ領域に書き込まれ、それ以外の領域のうち一部の領域(エントリkからk+n-1まで)が変動キャッシュ領域に書き込まれる。kは、送信可能情報の先頭からのオフセットである。変動キャッシュ領域のうち、送信制御部204-2による読み出しが完了した領域は、上書きして再利用される。
【0135】
固定キャッシュ領域のエントリ数mと変動キャッシュ領域のエントリ数nは、どのような値が指定されてもよく、例えば、使用するSRAM等の容量により決定されてもよい。mおよびnにより、固定キャッシュ領域と変動キャッシュ領域の比率を変えることが可能である。例えばm=nとして1対1の比率としてもよいし、2m=nとして1:2の比率としてもよい。
【0136】
図26は、キャッシュ部225-2の初期化処理の一例を示すフローチャートである。初期化処理は、例えば、ユーザによる設定またはネットワーク経由での設定により、ゲート制御情報が更新されたことを契機として実行される。
【0137】
送信制御部204-2は、固定キャッシュ領域に送信可能情報を先頭から書き込んでいく(ステップS401)。送信制御部204-2は、固定キャッシュ領域にすべて書き終わったら、その続きから、すなわち、固定キャッシュ領域がm個のエントリをキャッシュできるのであれば、m+1番目のエントリから変動キャッシュ領域に書き込んでいく(ステップS402)。
【0138】
変動キャッシュ領域にキャッシュできるエントリ数がn個の場合、n個のエントリを変動キャッシュ領域に書き終わった場合に初期化処理が完了する。なお送信制御部204-2は、書き込みが完了した位置を管理する。
【0139】
その後、送信制御部204-2は、固定キャッシュ領域または変動キャッシュ領域に記憶された送信可能情報を読み出して送信制御処理で使用する。変動キャッシュ領域に記憶された送信可能情報の読み出しが完了した場合は、送信制御部204-2は、変動キャッシュ領域に記憶する送信可能情報を更新する。
【0140】
例えば送信制御部204-2は、変動キャッシュ領域の最後の書き込み位置の次のエントリから、送信制御部204-2がエントリを読み出している読み出し位置の前のエントリまでを更新する。
【0141】
図27から
図34を用いて、送信可能情報の更新処理の具体例を説明する。説明を簡単にするため、変動キャッシュ領域のエントリ数nは10とする。また
図27に示すように、送信可能情報記憶部223に記憶された送信可能情報の個数はm+20(0番目~m+19番目)とする。
【0142】
図28は、
図26に示した初期化処理後のキャッシュ部225-2の状態を示す図である。この状態では、固定キャッシュ領域のエントリ0~m-1に、送信可能情報記憶部223の0~m-1番目の送信可能情報が記憶され、変動キャッシュ領域のエントリm~m+9に、送信可能情報記憶部223のm~m+9番目の送信可能情報が記憶される。このときの最後の書き込み位置はm+9である。なお、変動キャッシュ領域は循環バッファとして動作するため、m+9の次の位置はmとなる。送信制御部204-2は、送信制御が有効になると、現在の読み出し位置0に対応するエントリ0の送信可能情報を読み出して送信制御を行う。
【0143】
図29は、時間が経過し、送信制御部204-2の読み出し位置がm+3となった状態を示す図である。この状態では、最後の書き込み位置の次のエントリから読み出し位置の前のエントリまでに相当するエントリm~m+2の送信可能情報は、今後、直ぐには参照されない。送信可能情報は、時間の経過とともに先頭から順に読み出されて使用されるためである。従って、送信制御部204-2は、これらのエントリを更新する。
【0144】
図30は、これらのエントリを更新した後の状態を示す図である。送信制御部204-2は、送信可能情報記憶部223の最後に書き込んだ送信可能情報の次の位置から、変動キャッシュ領域の書き換え可能な領域に相当する個数分の送信可能情報を読み出し、変動キャッシュ領域に対して書き込む。
図30の例では、送信制御部204-2は、エントリm~m+2に、m+10~m+12番目の送信可能情報を書き込む。
【0145】
図31は、同様にして時間が経過し、m+3~m+8のエントリが更新された後の状態を示す図である。すなわち、時間が経過して読み出し位置がm+9に達すると、m+3~m+8のエントリが更新される。上記のように、変動キャッシュ領域は循環バッファ(リングバッファ)なので、m+9の次のエントリはmになる。
【0146】
読み出し位置が循環してmになった場合、送信制御部204-2は、最後の書き込み位置の次の位置に相当するエントリm+9を更新する。
図32は、m+9のエントリが更新された後の状態を示す図である。
【0147】
このように、変動キャッシュ領域は、次に参照する送信可能情報を更新しながら記憶することができる。
【0148】
なお、ゲート制御は、送信制御部204-2の動作を制御するクロック(ローカルクロック)によって動作する。本実施形態では、固定キャッシュ領域に先頭から一定数の送信可能情報を記憶しておくことで、CycleStartと呼ばれる時刻管理部201の時刻を基に生成された信号(CycleStart信号)によってゲート制御リストを先頭のエントリに戻す動作が行われた場合においても送信可能情報が枯渇する(アンダーランする)ことなく、送信制御を行うことができる。
【0149】
図33は、
図32の状態から、CycleStart信号により読み出し位置が先頭に戻った状態を示す図である。
図33に示すように、読み出し位置は固定キャッシュ領域の先頭である0に戻り、最後の書き込み位置がm-1に移動する。この後、送信制御部204-2は、初期化処理と同様にして変動キャッシュ領域への送信可能情報を書き込む。
【0150】
図34は、このようにして変動キャッシュ領域への送信可能情報の書き込みが行われた後の状態を示す図である。このような処理により、この後、読み出し位置が変動キャッシュ領域に移動した場合であっても、送信可能情報がキャッシュ部225-2に記憶された状態としておくことができる。
【0151】
図24および
図25は1つのキャッシュ部225-2を備える例であるが、複数のキャッシュ部が備えられてもよい。
図35は、2つのキャッシュ部225-2a、225-2bを備えるように構成する場合の通信装置(ホストプロセッサ2-2、ネットワークインタフェースコントローラ4-2)の機能構成の一例を示すブロック図である。
【0152】
ゲート制御では、ゲート制御リストを切り替える際に、いつからそのゲート制御リストが有効になるかが同時に指定される。新しいゲート制御リストに切り替える際には、送信制御部204-2は、切り替えの直前まで古いゲート制御リストを使用して送信制御を行い、切り替えの直後に新しいゲート制御リストを使用して送信制御を行うことが望ましい。
【0153】
2つのキャッシュ部225-2a、225-2bに、それぞれ切替前後の送信可能情報を記憶させ、使用するキャッシュ部を切り替えるように構成すれば、指定された時刻に、より正確に送信可能情報を切り替えることが可能となる。例えば、送信制御部204-2は、キャッシュ部225-2a、225-2bのうち、現在使用していないキャッシュ部に新しい送信可能情報を切替前に予め記憶しておき、切替のタイミング(指定された時刻)で読み出すキャッシュ部を切り替える。これにより、直前まで古い送信可能情報を使用してゲート制御を行いながら、瞬時に新しい送信可能情報を使用したゲート制御に切り替えることが可能となる。
【0154】
なお、本変形例では、送信可能情報記憶部223が、ホストプロセッサ2-2内、すなわち、ホストプロセッサ2-2のメモリで実現される例を示した。送信可能情報記憶部223は、ネットワークインタフェースコントローラ4-2のメモリ(DRAM)で実現されてもよい。また、送信制御部204-2が送信可能情報記憶部223から送信可能情報を読み出してキャッシュ部225-2に記憶させる例を示したが、キャッシュ部225-2への記憶方法はこれに限られない。例えば、送信制御部204-2または他の制御部が、DMAコントローラに対して、送信可能情報記憶部223から送信可能情報を読み出してキャッシュ部225-2に記憶させることを指示するように構成してもよい。
【0155】
なお、上記の図では、キャッシュ部225-2は送信制御部204-2の外部に備えられる例を示したが、送信制御部204-2の内部のレジスタ(固定レジスタおよび変動レジスタ)をキャッシュ部と考えることができる。
【0156】
キャッシュ部225-2、225-2a、225-2bは、変動キャッシュ領域を備えず、固定キャッシュ領域のみを備えてもよい。また、固定キャッシュ領域のエントリ数を1としてもよい。
【0157】
(変形例2)
送信可能情報生成部103および検出部105は、ネットワークインタフェースコントローラ4内部に備えられてもよい。
図36は、このように構成される変形例2の通信装置(ホストプロセッサ2-3、ネットワークインタフェースコントローラ4-3)の機能構成の一例を示すブロック図である。
【0158】
図36に示すように、変形例2のホストプロセッサ2-3は、送信可能情報生成部103および検出部105を備えないこと、および、設定部104-3の機能が、上記実施形態のホストプロセッサ2と異なっている。また、変形例2のネットワークインタフェースコントローラ4-3は、受付部203-3および送信可能情報記憶部223などを有するプロセッサ210-3を備える点が、上記実施形態のネットワークインタフェースコントローラ4と異なっている。その他の構成は
図2と同様であるため同一の符号を付し説明を省略する。
【0159】
設定部104-3は、ゲート制御リスト記憶部121に記憶されたゲート制御リストをネットワークインタフェースコントローラ4-3に送信する。
【0160】
プロセッサ210-3は、受付部203-3と、送信可能情報生成部103-3と、検出部105-3と、送信可能情報記憶部223と、を備える。
【0161】
受付部203-3は、ホストプロセッサ2-3の設定部104-3により送信されたゲート制御リストの入力を受け付ける。受付部203-3は、ホストプロセッサ2-3以外の他の装置から例えばネットワーク200を介してゲート制御リストを受け付けてもよい。
【0162】
送信可能情報生成部103-3は、受付部203-3により受け付けられたゲート制御リストから送信可能情報を生成する。
【0163】
検出部105-3は、ネットワークインタフェースコントローラ4-3の内部バスを介してリンク速度の変更を検出する。検出部105-3は、リンク速度の変更を検出した場合、送信可能情報生成部103-3に送信可能情報の再生成を指示する。その他の動作は上述の実施形態と同じである。
【0164】
(変形例3)
なお、上述の実施形態においては、ネットワークコントローラが1つで、1ポートの場合を説明した。ネットワークコントローラは複数備えられ、複数のネットワークコントローラそれぞれに対応する複数のポートが備えられるように構成してもよい。その場合、送信可能情報はポートごとに設定される。
【0165】
また、上述の実施形態においては、フレーム生成部102をホストプロセッサ2によって実現する例を示したが、FPGAおよびASICなどのハードウェアで実現してもよい。その場合には、データ転送部202のDMA機能をなくし、直接ストリームインタフェースでデータをやり取りできるようにしてもよい。
【0166】
このように、本実施形態では、ハードウェア構成またはソフトウェアの処理を簡略化しながらも、正確にゲート制御リストに従った動作が可能となり、与えられた帯域を有効に活用することが可能となる。また、送信制御処理にリアルタイム性(定められた時間内に処理を完了する)をもたせることが可能となる。
【0167】
(システム構成例)
図37は、上記実施形態の通信装置を用いたシステムの構成例を示す図である。
図37は、工場またはプラントにおいて、エッジサーバ700から、5G(5th Generation)/ローカル5Gシステム500を介して現場のロボットアーム602a、602b、および、ベルトコンベア601を制御する例を示す。
【0168】
5G/ローカル5Gシステム500は、5Gコアネットワーク(Core Network)505と、セントラルユニット(Central Unit)504と、ディストリビューテッドユニット(Distributed Unit)503と、リモートユニット(Remote Unit)502と、ユーザイクイップメント(User Equipment)501と、を備える。5G/ローカル5Gシステム500は、3GPP(Third Generation Partnership Project)の規格によって定められる5G通信を行う。
【0169】
実施形態の通信装置は、例えば、エッジサーバ700および5Gコアネットワーク505に実装することができる。これにより、エッジサーバ700および5Gコアネットワーク505の間の通信のリアルタイム性を向上させることができる。
【0170】
また、実施形態の通信装置は、5G/ローカル5Gシステム500内の各部の間の通信に使用されてもよい。すなわち、リモートユニット502、ディストリビューテッドユニット503、セントラルユニット504、および、5Gコアネットワーク505の間の通信を行うために、リモートユニット502、ディストリビューテッドユニット503、セントラルユニット504、および、5Gコアネットワーク505の少なくとも一部に実施形態の通信装置が実装されてもよい。
【0171】
実施形態の通信装置は、ベルトコンベア601およびロボットアーム602a、602bの少なくとも一方と、ユーザイクイップメント501との間の通信、または、ベルトコンベア601とロボットアーム602a、602bとの間の通信に使用されてもよい。
【0172】
実施形態の通信装置が適用可能なシステムはこれに限られず、どのようなシステムであってもよい。例えば、5G/ローカル5Gを用いない工場またはプラントの産業用ネットワークシステム、および、自動車および航空機の内部のネットワークシステムなどに適用することもできる。
【0173】
本実施形態にかかる通信装置(情報処理装置、通信制御装置)で実行されるプログラムは、ストレージ3、および、図示しないROM等に予め組み込まれて提供される。なお通信装置をFPGAで実現する場合、例えばFPGAのコンフィギュレーションを設定するためのデータ(コンフィギュレーションデータ)がプログラムに相当する。
【0174】
本実施形態にかかる通信装置で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD-ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD-R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【0175】
さらに、本実施形態にかかる通信装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかる通信装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【0176】
本実施形態にかかる通信装置で実行されるプログラムは、コンピュータを上述した通信装置の各部として機能させうる。このコンピュータは、プロセッサがコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【0177】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0178】
1 メモリ
2、2B、2-2、2-3 ホストプロセッサ
3 ストレージ
4、4B、4-2、4-3 ネットワークインタフェースコントローラ
5 ストレージコントローラ
100 通信装置
101 同期制御部
102 フレーム生成部
103、103B、103-2、103-3 送信可能情報生成部
104、104-3 設定部
105、105B、105-3 検出部
121 ゲート制御リスト記憶部
200 ネットワーク
201 時刻管理部
202 データ転送部
203、203-3 受付部
204、204B、204-2 送信制御部
205、205B 通知部
210-3 プロセッサ
221 受信フレーム記憶部
222 送信フレーム記憶部
223 送信可能情報記憶部
224 通信部
225-2、225-2a、225-2b キャッシュ部