JP7027145B2 - 通信装置、通信装置の制御方法およびプログラム - Google Patents
通信装置、通信装置の制御方法およびプログラム Download PDFInfo
- Publication number
- JP7027145B2 JP7027145B2 JP2017235737A JP2017235737A JP7027145B2 JP 7027145 B2 JP7027145 B2 JP 7027145B2 JP 2017235737 A JP2017235737 A JP 2017235737A JP 2017235737 A JP2017235737 A JP 2017235737A JP 7027145 B2 JP7027145 B2 JP 7027145B2
- Authority
- JP
- Japan
- Prior art keywords
- communication
- header
- operation mode
- communication device
- generation means
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Description
一方、Ethernet(登録商標)による10Gbps通信、移動体通信の5G通信等、データトラフィックの増大に対応すべくネットワークの高速化が進展している。こうしたネットワークの高速化に伴って、各通信プロトコルで規定された処理である通信プロトコル処理の効率化が要請されている。こうした通信プロトコルにはTCP(Transmission Control Protocol)/IP(Internet Protocol)やUDP(User Datagram Protocol)等がある。
例えば、特許文献1は、通信プロトコル処理における通信パケットを生成する処理で発生するメモリへのコピー回数を低減してスループットを向上させる技術を開示する。
具体的には、特許文献1の技術によれば、パケット処理装置は、送信するデータを記憶装置に記憶する際に、所定のデータ長毎に分割する。そして、パケット処理装置は、複数の分割データを、第一のブランク領域と第二のブランク領域がそれぞれ確保されるよう、記憶装置に離間配置する。第一のブランク領域にはプロトコルヘッダが、第二のブランク領域にはプロトコルフッタがそれぞれ格納されて、通信パケットが生成される。
一方、ハードウエアアクセラレータ等の専用ハードウエアによって、通信プロトコル処理の一部となる通信ヘッダや通信フッタの生成、またチェックサム演算等を実行して、より高速に通信パケットを生成する手法も提案されている。この場合、専用ハードウエアは通信プロトコル処理の一部を実行するに過ぎないため、通信プロトコル処理全体において、こうした専用ハードウエアの各機能をどのようなタイミングで実行するかを制御する必要がある。
例えば、通信パケットを送信する際、送信すべきデータの準備が完了していなければ、専用ハードウエアは通信パケットを生成することができないためアイドルタイムが発生してしまい、効率的な通信パケットの生成および送信が妨げられてしまう。ここで、上記の特許文献1では、通信プロトコル処理の一部の処理をハードウエアで実行するものではないため、通信装置内の各機能モジュールの状態に応じてハードウエアの各機能をどのタイミングで実行するかを適切に制御することは想定していない。
本実施形態においては、ハードウエアにより通信プロトコル処理の一部を実行する通信装置において、通信装置の内部処理や通信プロトコル処理の状態に応じて、複数の動作モードから適切な動作モードを選択して通信プロトコル処理の一部を実行する。
ここで、通信装置のハードウエアが実行する通信プロトコル処理の一部は、例えば、送信すべきデータに付加される通信ヘッダおよび通信フッタを生成する処理、送信すべきデータを通信パケットのペイロードに分割する処理を含む。さらに、ハードウエアが実行する通信プロトコル処理の一部は、分割されたペイロードに通信ヘッダおよび通信フッタをそれぞれ付加して通信パケットを生成する処理を含む。
具体的には、本実施形態において、通信装置は、第1の動作モードおよび第2のモードを切り替えて動作する。第1の動作モードでは、通信装置のハードウエアは、通信ヘッダを生成するとともに、連続して、送信すべきデータをペイロード分割し、分割されたペイロードに通信ヘッダを付加して通信パケットを生成する。一方、第2の動作モードでは、通信装置のハードウエアは、通信ヘッダを生成した後一旦停止し、通信パケットを生成可能な状態となったことを契機に送信すべきデータをペイロード分割し、分割されたペイロードに通信ヘッダを付加して通信パケットを生成する。
これにより、送信すべきデータの準備が完了していない場合であっても、通信ヘッダを先行して投機的に生成することで、通信パケットをより高速、効率的に生成することができる。
図1は、本実施形態に係る通信装置のハードウエア構成および機能構成の一例を示す図である。
メインCPU3は、通信装置1上で稼働するアプリケーションソフトウエアを実行するとともに、通信装置1全体の制御を実行する。具体的には、メインCPU3は、アプリケーションソフトウエアを実行する上で必要となるデータやプログラムなどをメインメモリ4の内部に記憶し、必要に応じてシステムバス5を介して読み出しや書き込みを行う。
サブシステム2は、サブCPU21と、ローカルメモリ22と、DMA(Direct Memory Access)コントローラ23と、通信I/F24と、ヘッダ処理部25とを備える。サブCPU21、ローカルメモリ22、DMAコントローラ23、通信I/F24、およびヘッダ処理部25は、ローカルバス26を介して相互に接続されている。
なお、TCP/IPプロトコルは説明を行うために示す一例であり、サブシステム2は、その他の通信プロトコルの通信プロトコル処理を実行することができる。以下、TCP/IPプロトコルは、別段の定義のない限り、UDPプロトコルを含むものとして説明する。
なお、サブCPU21は、1つのプロセッサとして構成してもよいし、複数のプロセッサによるマルチプロセッサ構成としてもよい。さらに、サブCPU21は、プロセッサと一部の機能をアクセラレートするハードウエア(ハードウエアアクセラレータ)とで構成してもよい。
また、ローカルメモリ22は、メインCPU3からもシステムバス5およびローカルバス26を介してアクセス可能である。ローカルメモリ22は、通信プロトコル処理を実行する上で必要となる送受信データや各種の設定情報などを内部に記憶し、必要に応じてサブシステム2の各機能モジュールがローカルバス26を介して読み出しや書き込みを実行する。図1では、アプリケーションソフトウエアにより準備され、メインメモリ4から転送された送信データ221がローカルメモリ22に記憶されている。
DMAコントローラ23は、ディスクリプタに記述された内容に従ってソース側からディスティネーション側へデータ転送を実行する。このディスクリプタには、データ転送元となるソース側のメモリ等のアドレス情報、データ転送先となるディスティネーション側のメモリ等のアドレス情報、およびデータ転送の転送サイズ等の情報が記述される。
通信I/F24は、LAN(Local Area Network)等で構成されるネットワーク27とのインターフェースであり、外部装置との通信における物理層(PHY層)とデータリンク層(MAC層)の通信制御を担っている。
ヘッダ処理部25は、コア部251と、内部メモリ252とを備える。このヘッダ処理部25は、通信プロトコル処理における通信ヘッダの生成、送信すべきデータのペイロード分割、および分割されたペイロードへ通信ヘッダを付加して通信パケットを生成する各処理を実行する処理部である。
コア部251の通信ヘッダ生成部251aは、レジスタ部251bに入力されたひな形となるヘッダ情報(以下、「ひな形ヘッダ」という。)および通信ヘッダ生成のための編集情報に従って、複数の通信ヘッダ252aを生成して内部メモリ252に記憶する。すなわち、通信ヘッダ生成部251aは、生成すべき通信パケットの数に基づいてひな形ヘッダを複製し、複製した通信ヘッダを編集情報に基づいて編集することにより、複数の通信ヘッダ252aを生成する。
内部メモリ252は、ヘッダ処理部25内に設けられ、コア部25およびサブCPU21からアクセス可能なメモリであり、例えば主としてSRAM(Static Random Access Memory)等の半導体メモリで構成されている。内部メモリ252は、コア部251により生成された通信ヘッダ252aを記憶する。
図2は、本実施形態に係る通信装置1が実行する通信ヘッダ生成および通信パケット生成処理の一例を示すフローチャートである。
図2に示す処理は、例えば、通信装置1の通信機能が起動され、通信装置1がネットワークを介して外部機器と通信状態となったことを契機に開始されてよい。ただし、図2に示す処理の開始タイミングは上記に限定されない。
以下では、通信装置1が外部機器との間でデータ転送する際に使用する通信プロトコルとしてTCP/IPプロトコルを使用する例を説明するが、本実施形態はTCP/IPプロトコル以外の通信プロトコルも使用することができる。
図2を参照して、S201で、サブシステム2のサブCPU21は、サブCPU21が実行する通信プロトコル処理において外部機器へ送信する通信パケットの生成準備が整ったか否かを条件として分岐を行う。すなわち、外部機器へ送信する通信パケットの生成準備が整った場合(S201:Y)はS202へ移行し、一方、外部機器へ送信する通信パケットの生成準備が整っていない場合(S201:N)はS201へ戻って現在の状態を維持する。
また、通信機器1が使用する通信プロトコルがTCP/IPプロトコルであれば、サブCPU21が先に外部機器へ送信した通信パケットに対する応答パケットを受信した場合も同様に、外部機器へ送信する通信パケットの生成準備が整ったと判断してよい。
具体的には、サブCPU21は、S202でメインCPU3から受け取った通知に基づいて、メインメモリ4からローカルメモリ22(内部バッファ)へ送信データを移動するDMA転送を行う。このDMA転送の設定では、まず、サブCPU21がDMA転送の内容を記載したディスクリプタを生成してローカルメモリ22に保存する。次に、サブCPU21がこのディスクリプタを保存したローカルメモリ22のアドレス情報をDMAコントローラ23に設定することでDMA転送が実行される。このDMA転送の完了をもってサブCPU21による通信プロトコルに従った送信処理の準備が完了したことになる。
S204では、S203で送信データの準備が完了したと判定されているため、サブCPU21は、ヘッダ処理部25の動作モードを第1の動作モードに決定する。ここで第1の動作モードとは、ヘッダ処理部25が、通信ヘッダを生成した後、連続してDMAコントローラ23を制御して通信パケットを完成させる動作モードである。
通信ヘッダを生成するため必要な情報をレジスタ部251bを介して取得すると、コア部251の通信ヘッダ生成部251aは、サブCPU21により決定された通信パケットの数と同数である複数の通信ヘッダ252aを内部メモリ252に生成する。
すなわち、ヘッダ処理部23のコア部251は、DMAコントローラ23のチェックサム演算器232に通信パケットの通信ヘッダ部分と通信パケットのペイロード部分を連続して読み込ませ、16bit毎に1の補数和を計算させてチェックサム値を算出させる。その後、コア部251が、元の通信パケットの通信ヘッダの所定の場所に算出したチェックサム値を書き込むことで通信ヘッダが完成する。
コア部251は、内部メモリ252内に生成された複数の通信ヘッダ252aのそれぞれに対してチェックサム値の書き込み処理を実行する。
なお、DMAコントローラ23に1の補数和を計算させる方法としては、まず、ヘッダ処理部25のコア部251が1の補数和を計算させる内容を記載したディスクリプタを生成してローカルメモリ22に保存する。そして、コア部251がこのディスクリプタを保存したローカルメモリ22のアドレス情報をDMAコントローラ23に設定することで、1の補数和の計算を実行することができる。
S205では、S202で送信データの準備が完了していないと判定されているため、サブCPU21は、ヘッダ処理部25の動作モードを第2の動作モードに決定する。ここで第2の動作モードとは、ヘッダ処理部25が、通信ヘッダを生成した後、一旦動作を停止してサブCPU21に割込み通知を送出する。その後、サブCPU21から通信パケットを完成させる通知(動作停止の解除を指示する通知)を受け取ったタイミングで、ヘッダ処理部25がDMAコントローラ23を制御して通信パケットを完成させる動作モードである。
なお、第2の動作モードにおいて、サブCPU21は、過去にローカルメモリ22に移動した送信データの履歴情報等を適宜参照して、通信ヘッダを生成するために必要となる情報をレジスタ部251bに設定することができる。通信ヘッダ生成部251aは、レジスタ部251bに設定された情報を参照することにより、ステップS206に先立って投機的に通信パケットを生成することができる。
S206で、サブCPU21は、S202と同様、メインCPU3で実行されるアプリケーションソフトウエアが外部機器へ送信すべき送信データの準備が完了したか否かを条件として分岐を行う。すなわち、メインメモリ3のアプリケーションバッファ領域に外部機器へ送信すべき送信データの蓄積が完了している場合はS207へ移行し、一方、送信データの蓄積が完了していない場合はS206へ戻って現在の状態を維持する。
具体的には、サブCPU21は、S206でメインCPU3から受け取った通知に基づいて、メインメモリ4からローカルメモリ22へ送信データを移動するDMA転送を行う。このDMA転送の設定では、まず、サブCPU21がDMA転送の内容を記載したディスクリプタを生成してローカルメモリ22に保存する。次に、サブCPU21がこのディスクリプタを保存したローカルメモリ22のアドレス情報をDMAコントローラ23に設定することでDMA転送が実行される。このDMA転送の完了をもってサブCPU21による通信プロトコルに従った送信処理の準備が完了したことになる。
具体的には、第2の動作モードで、まず、サブCPU21は、一時停止していたヘッダ処理部25に対して通信パケット生成処理の再開するために必要となる情報をヘッダ処理部25のレジスタ部251bに設定して、ヘッダ処理部25のコア部251を起動する。
すなわち、ヘッダ処理部23のコア部251は、DMAコントローラ23のチェックサム演算器232に通信パケットの通信ヘッダ部分と通信パケットのペイロード部分を連続して読み込ませ、16bit毎に1の補数和を計算させてチェックサム値を算出させる。その後、コア部251が、元の通信パケットの通信ヘッダの所定の場所に算出したチェックサム値を書き込むことで通信ヘッダが完成する。
コア部251は、内部メモリ252内に生成された複数の通信ヘッダ252aのそれぞれに対してチェックサム値の書き込み処理を実行する。
S209で、サブCPU21は、完成した通信パケットを、外部機器へ通信I/F24を介して送信する。
S210で、サブCPU21は、通信装置1と外部機器の通信を終了させる事象が発生したかどうかを条件として分岐を行う。外部機器との通信を終了させる事象が発生した場合(S210:Y)はS211へ移行し、外部機器との通信を終了させる事象が発生していない場合(S210:N)はS202へ戻る。
その後、サブCPU21からメインCPU3へ、通信回線の切断完了の通知が伝達されると、アプリケーションソフトウエアで通信回線が切断したことをユーザなどへ示す表示を行うことができる。
一方、送信すべきデータの準備が完了していない場合は、通信装置1のサブCPU21は、ヘッダ処理部25を第2の動作モードで動作するよう制御する。第2のモードでは、ヘッダ処理部25は、送信データの準備待ちとなった状態で、通信ヘッダを先行して投機的に生成する。
これにより、送信すべきデータの準備が完了していない場合であっても、通信ヘッダを先行して投機的に生成することで、通信パケットをより高速、効率的に生成することができる。
以下、実施形態2を、図3および図4を参照して、上記の実施形態1と異なる点についてのみ詳細に説明する。本実施形態は、第1の動作モードと第2の動作モードとのいずれかを選択する際に、通信装置1の通信相手である外部機器との通信を行う通信I/F24が通信パケットを送信する準備が完了しているか否かを判定する。すなわち、通信装置1のサブCPU21は、通信ヘッダの生成のタイミングで、通信I/F24の送信準備が完了していれば第1の動作モードで、通信I/F24の送信準備が完了していなければ第2の動作モードで、ヘッダ処理部25を動作させるよう制御する。
これにより、外部機器に対する通信パケットの送信準備ができていない場合であっても、通信ヘッダを先行して投機的に生成することで、通信パケットをより高速、効率的に生成することができる。
図3は、実施形態2に係る通信装置1が実行する通信ヘッダ生成および通信パケット生成処理の一例を示すフローチャートである。
なお、S301でサブCPU21に対して発行される通知には、現在の通信状態を示す情報が含まれる。この現在の通信状態を示す情報は、例えば、TCPプロトコルを使用した通信の接続を開始することを示す情報、TCPプロトコルを使用したデータ転送を開始することを示す情報、TCPプロトコルを使用した通信の切断を開始する情報等を含む。
S302で送信データの準備が完了したと判定された場合、S303で、サブCPU21は、外部機器へ通信プロトコルに従った通信パケットの送信を実行するため、送信データをメインメモリ4からサブシステム2内のローカルメモリ22へ移動する。
具体的には、サブCPU21は、図2のS203と同様、DMAコントローラ23に、メインメモリ4からローカルメモリ22(内部バッファ)へ送信データを移動するDMA転送を実行させる。
具体的には、サブCPU21は、通信I/F24内部に設けられた通信パケットを一時的に蓄積するバッファメモリ(送信バッファ)に空きがある場合に、通信I/F24がネットワーク27へ送信すべき通信パケットの受取準備が完了していると判断する。一方、通信I/F24内部のバッファメモリに空きがない場合、サブCPU21は、通信I/F24で通信パケットの受取準備が完了していないと判断する。
S305の処理の詳細は、図2のS204を参照して上記で説明したものと同様である。
S308からS308の処理の詳細は、図2のS205、S206およびS208を参照して上記で説明したものと同様である。
S309からS311の処理の詳細は、図2のS209からS211を参照して上記で説明したものと同様である。
次に、図3の通信パケット送信の動作フローに基づき、通信装置1の動作状況とヘッダ処理部25の動作モードによって、通信パケット生成処理にかかる時間が変化することを、図4のタイミングチャートを参照して説明する。
図4において、横軸は時間経過を示し、縦軸に通信装置1の動作状況の3つのパターンを示す。
パターン41は、ヘッダ処理部25が第1の動作モードで動作し、かつ、図3のS304において、通信I/F24で通信パケットの受取準備が完了している場合(S304:Y)を示す。通信パケットの受取準備が完了している場合とは、例えば、ヘッダ処理部25の通信パケット生成処理能力よりも、通信I/F24が受け取った通信パケットをネットワーク27へ送出する能力が高い場合などが該当する。
パターン42は、ヘッダ処理部25が第2の動作モードで動作し、かつ、図3のS304において、通信I/F24で通信パケットの受取準備が完了していない場合(S304:N)を示す。通信パケットの受取準備が完了していない場合とは、例えば、ヘッダ処理部25の通信パケット生成処理能力よりも、通信I/F24が受け取った通信パケットをネットワーク27へ送出する能力が低い場合などが該当する。
その後、パターン42では、S307で、ヘッダ処理部25は、通信I/F24で受取準備が完了する時刻t3まで待機する(待機時間:w1)。
さらにその後、通信I/F24での通信パケットの受取準備が完了する時刻t3が到来してから、S308で通信パケットを完成させる。その後、S309で、外部機器へ通信パケットが送信される。
このように、パターン42に示す通信装置1の動作状況の場合、通信パケットが外部機器へ送出完了した時刻はt2となる。
一方、通信I/F24で通信パケットの受取準備が完了していない場合(S305:N)、ヘッダ処理部25は第1の動作モードしか装備していないため、S305に進むことができず、現在の状態を維持して待機することになる。すなわち、パターン43では、パターン42と同時刻であるt3まで待機するものと仮定する。
その後、通信I/F24での通信パケットの受取準備が完了する時刻t3が到来してから、S305で、通信ヘッダを生成するとともに通信パケットを完成させる。その後、S309で、外部機器へ通信パケットが送信される。
このように、パターン43に示す通信装置1の動作状況の場合、通信パケットが外部機器へ送出完了した時刻はt4となる。
図4の時間差44は、2つの要因による。1つの要因は、パターン42では、パターン41と異なり、S307による待機時間(w1)が発生したためである。もう1つの要因は、パターン42の第2の動作モードにおける通信ヘッダ生成(S306)と通信パケット完成(S308)の合計期間が、パターン41の第1の動作モードにおけるS305の期間よりも長いためである。なぜなら、第2の動作モードでは、S306で、ヘッダ処理部25がサブCPU21へ割込み通知する処理と、S308で、サブCPU21がヘッダ処理部25を起動して通信パケット生成を再開する処理のオーバーヘッドが生じるからである。
図4の時間差45の要因は、次のとおりである。すなわち、パターン42では、通信I/F24で通信パケットの受取準備が完了待ちをしている期間(t0からt3の間)に、S306で通信ヘッダの生成を先に実行している。このため、時刻t3以降の処理が、S308の処理、すなわちすでに生成された通信ヘッダを分割ペイロードに付加して通信パケットを完成させる処理の処理時間で済む。
上記のように、パターン41およびパターン42の比較においては、ヘッダ処理部25が第1の動作モードで動作する方が、第2の動作モードで動作するより、より早く(時間差44)通信パケットを外部機器へ送出完了する。
なお、上記で説明したタイミングチャートは、実施形態1についても、時刻t3をアプリケーションソフトウエアによる送信データの準備完了(図2のS202、S206)の時刻に置き換えることで同様に適用することができる。
以下、実施形態3を、図5を参照して、上記の実施形態2と異なる点についてのみ詳細に説明する。
本実施形態では、第1の動作モードと第2の動作モードとのいずれかを選択する際に、設定された動作状況となったか否かを判定する。すなわち、通信装置1のサブCPU21は、通信ヘッダの生成のタイミングで、サブシステム2に設定された動作状況に応じて、ヘッダ処理部25を第1の動作モードまたは第2の動作モードのいずれかで動作させるよう制御する。
本実施形態に係る通信装置1の構成は図1に示す実施形態1と同様である。
図5は、実施形態3に係る通信装置1が実行する通信ヘッダ生成および通信パケット生成処理の一例を示すフローチャートである。実施形態2に係る図3のフローチャートにおいて、S301の前にS501が追加されるとともに、S304をS502で、S307をS503で、それぞれ置き換えており、その他の処理は図3と同様である。
例えば、通信装置1が外部機器に対して映像のストリーミング転送のように、周期的に通信パケットを送出するような動作状況を想定する。この場合、S501では、S502の分岐で、ストリーミング転送の通信パケットを送信する場合は第2の動作モードで、そうでない場合は第1の動作モードで、ヘッダ処理部25が動作するよう動作モードの選択条件を設定する。また、S503の分岐で、ストリーミング転送に要求される送信周期の所定のタイミングになったか否かを動作条件として設定する。
S502で、サブCPU21は、S501で設定された動作モードの選択条件に従って、動作モードの選択条件に一致するか否かで分岐を行う。すなわち、S501で設定した動作モードの選択条件に一致しない場合はS305へ移行し、S501で設定した動作モードの選択条件に一致する場合はS306へ移行する。
例えば、上記のように通信装置1が外部機器に対して映像のストリーミング転送のように、周期的に通信パケットを送出するような動作状況を想定する。この場合、S303で準備完了された送信データがストリーミング転送に使用される送信データであれば、S501で設定した動作モードの選択条件に一致するため、第2の動作モードを選択してS306へ移行する。一方、ストリーミング転送に使用する送信データでなければ、S501で設定した動作モードの選択条件に一致しないため、第1の動作モードを選択してS305へ移行する。
S503で、サブCPU21は、S501で設定された動作条件に一致するか否かで分岐を行う。すなわち、S501で設定された動作条件に一致する場合は、S308へ移行し、S501で設定された動作条件に一致しない場合は、S503に戻って現在の状態を維持する。
例えば、上記のように通信装置1が外部機器に対して映像のストリーミング転送のように周期的に通信パケットを送出するような動作状況を想定する。この場合、ストリーミング転送に要求される送信周期の所定のタイミングになった場合は、S308へ移行する。一方、ストリーミング転送に要求される送信周期の所定のタイミング以外の場合は、S503に戻り、現在の状態を維持して所定のタイミングになるまで待機する。
以下、実施形態4を、図6を参照して、上記の実施形態1と異なる点についてのみ詳細に説明する。
本実施形態では、第1の動作モードと第2の動作モードとのいずれかを選択する際に、通信パケットを生成および送信する通信プロトコルの種別を判定する。すなわち、通信装置1のサブCPU21は、通信ヘッダの生成のタイミングで、通信パケットを生成および送信する通信プロトコルに応じて、ヘッダ処理部25を第1の動作モードまたは第2の動作モードのいずれかで動作させるよう制御する。
本実施形態に係る通信装置1の構成は図1に示す実施形態1と同様である。
図6は、実施形態4に係る通信装置1が実行する通信ヘッダ生成および通信パケット生成処理の一例を示すフローチャートである。実施形態1に係る図2のフローチャートにおいて、図2のS202に替えて、S601およびS602を追加しておりその他の処理は図2と同様である。
以上説明したように、本実施形態によれば、第1の動作モードと第2の動作モードとのいずれかを選択する際に、通信パケットを生成および送信する通信プロトコルの種別を判定する。具体的には、通信装置1のサブCPU21は、通信ヘッダの生成のタイミングで、通信パケットを生成および送信する通信プロトコルに応じて、例えば通信パケットがUDPパケットである場合には、ヘッダ処理部25を第2の動作モードで動作させるよう制御する。
これにより、UDPパケットをより高速、効率的に生成することができ、例えば映像のストリーミング転送やマルチキャスト、ブロードキャスト送信において、リアルタイム性をより高めることができる。
以下、実施形態5を、図7を参照して、上記の実施形態1と異なる点についてのみ詳細に説明する。
本実施形態では、これに加えて、ヘッダ処理部25が第2の動作モードで動作する際に、通信ヘッダ生成後、サブCPU21からヘッダ処理部25への応答を待ち受ける。そして、サブCPU21から処理継続の指示がなかった場合に、サブCPU21は、ヘッダ処理部25をリセットする。
本実施形態に係る通信装置1の構成は図1に示す実施形態1と同様である。
図7は、実施形態5に係る通信装置1が実行する通信ヘッダ生成および通信パケット生成処理の一例を示すフローチャートである。実施形態1に係る図2のフローチャートにおいて、S701からS703を追加しておりその他の処理は図2と同様である。
S701で、サブCPU21は、サブCPU21からヘッダ処理部25に対して応答があったか否かを条件として分岐を行う。具体的には、サブCPU21からヘッダ処理部25に応答があった場合はS702へ移行し、応答がなければS701に戻って現在の状態を維持する。
S702で、サブCPU21からヘッダ処理部25の応答が処理を継続する指示でなかった場合、S703で、サブCPU21は、ヘッダ処理部25をリセットして初期状態にする。すなわち、S205において通信ヘッダを生成したもののS207へは移行せず、送信データをローカルメモリ22へ移動する処理、送信データをペイロード分割する処理、および通信パケットを生成する処理に進むことなく、ヘッダ処理部25を初期状態に戻す。
これにより、通信パケットの生成処理が不要となった場合に、ヘッダ処理部25に通信ヘッダの生成のみを投機的に実行させ、負荷の高い通信パケットの生成処理を無駄に実行してリソースを使用することを回避することができる。
なお、上述した各実施形態は、その複数を組み合わせて実現することが可能である。
また、本発明は、上述の実施形態の一部または1以上の機能を実現するプログラムによっても実現可能である。すなわち、そのプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータ(またはCPUやMPU等)における1つ以上のプロセッサがプログラムを読出し実行する処理により実現可能である。また、そのプログラムをコンピュータ可読な記録媒体に記録して提供してもよい。
Claims (16)
- 通信ヘッダを生成し、生成された前記通信ヘッダを送信すべきデータに付加して通信パケットを生成する生成手段と、
前記生成手段による前記通信ヘッダの生成に連続して前記生成手段に前記通信パケットを生成させる第1の動作モードと、前記生成手段による前記通信ヘッダの生成の後、前記生成手段の処理を停止させ、送信データの準備が完了した後、前記生成手段の処理を再開させることで前記通信パケットを生成させる第2の動作モードとのいずれか1つを選択し、前記生成手段を選択されたいずれかの1つの動作モードで動作させるよう制御する制御手段と、
を備えることを特徴とする通信装置。 - 前記送信すべきデータを記憶して前記生成手段へ供給する第1のメモリをさらに備え、
前記制御手段は、前記生成手段により前記通信ヘッダを生成する際に、前記第1のメモリへ前記送信すべきデータを取り込み可能である場合に前記第1の動作モードを選択し、前記第1のメモリへ前記送信すべきデータを取り込み可能でない場合に前記第2の動作モードを選択する、
ことを特徴とする請求項1に記載の通信装置。 - 前記生成手段はレジスタを備え、
前記制御手段は、選択された動作モードを前記レジスタに設定することにより、前記生成手段を選択されたいずれかの動作モードで動作させる、
ことを特徴とする請求項1または2に記載の通信装置。 - 前記第2の動作モードにおいて、前記生成手段は、前記制御手段へ割り込み信号を通知することにより、前記生成手段を停止したことを通知する、
ことを特徴とする請求項1から3のいずれか1項に記載の通信装置。 - 前記生成手段により生成される前記通信ヘッダを記憶する第2のメモリをさらに備え、
前記生成手段は、前記制御手段により通知される生成すべき通信パケットの数に基づいて、ひな形となる通信ヘッダを複製し、複製した通信ヘッダを編集することにより、複数の通信ヘッダを生成し、生成された複数の通信ヘッダを前記第2のメモリに記憶する、
ことを特徴とする請求項1から4のいずれか1項に記載の通信装置。 - 前記生成手段は、前記制御手段により通知される各通信パケットのペイロードのサイズに基づいて、前記送信すべきデータを分割して複数のペイロードを取得し、前記複数のペイロードのそれぞれに前記通信ヘッダを付加して、複数の通信パケットを生成する、
ことを特徴とする請求項1から5のいずれか1項に記載の通信装置。 - 前記第1のメモリと前記生成手段との間のデータ転送は、DMA(Direct Memory Access)転送により実行される、
ことを特徴とする請求項1から6のいずれか1項に記載の通信装置。 - 前記通信ヘッダのチェックサム値を演算する演算器をさらに備え、
前記生成手段は、前記演算器により演算された前記チェックサム値を対応する通信ヘッダに書き込む、
ことを特徴とする請求項1から7のいずれか1項に記載の通信装置。 - 前記生成手段は、ハードウエアアクセラレータにより構成される、
ことを特徴とする請求項1から8のいずれか1項に記載の通信装置。 - 前記生成手段により生成された前記通信パケットを送信する送信手段をさらに備え、
前記制御手段は、前記生成手段により前記通信ヘッダを生成する際に、前記送信手段の送信バッファに空きがある場合に前記第1の動作モードを選択し、前記送信バッファに空きがない場合に前記第2の動作モードを選択する、
ことを特徴とする請求項1から9のいずれか1項に記載の通信装置。 - 前記第1の動作モードと前記第2の動作モードの間の選択条件を設定する設定手段をさらに備え、
前記制御手段は、前記設定手段により設定された前記選択条件に基づいて、前記第1の動作モードと前記第2の動作モードとのいずれかを選択する、
ことを特徴とする請求項1から10のいずれか1項に記載の通信装置。 - 前記設定手段は、前記第2の動作モードでの前記通信パケットの送信タイミングをさらに設定し、
前記制御手段は、前記設定手段により設定された前記送信タイミングに基づいて、前記生成手段に前記通信パケットを生成させる、
ことを特徴とする請求項11に記載の通信装置。 - 前記制御手段は、前記通信パケットがUDP(User Datagram Protocol)パケットである場合に、前記第2の動作モードを選択する、
ことを特徴とする請求項1から12のいずれか1項に記載の通信装置。 - 前記第2の動作モードにおいて、前記生成手段は、前記制御手段から、前記通信ヘッダ生成を継続させる指示を通知された場合、前記通信ヘッダを生成し、前記通信ヘッダ生成を継続させる指示を通知されない場合、前記生成手段をリセットする、
ことを特徴とする請求項1から13のいずれか1項に記載の通信装置。 - 通信パケットを送信する通信装置の制御方法であって、
通信ヘッダを生成手段に生成させるステップと、
前記生成手段に生成された前記通信ヘッダを送信すべきデータに付加して通信パケットを生成させるステップと、
前記通信ヘッダの生成に連続して前記通信パケットを生成させる第1の動作モードと、前記通信ヘッダの生成の後、前記生成手段を停止させ、その後、前記生成手段を起動して前記通信パケットを生成させる第2の動作モードとのいずれかを選択し、前記生成手段を選択されたいずれかの動作モードで動作させるよう制御するステップと、
を備えることを特徴とする通信装置の制御方法。 - コンピュータを、請求項1から14のいずれか1項に記載の通信装置の各手段として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017235737A JP7027145B2 (ja) | 2017-12-08 | 2017-12-08 | 通信装置、通信装置の制御方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017235737A JP7027145B2 (ja) | 2017-12-08 | 2017-12-08 | 通信装置、通信装置の制御方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019103101A JP2019103101A (ja) | 2019-06-24 |
JP7027145B2 true JP7027145B2 (ja) | 2022-03-01 |
Family
ID=66974341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017235737A Active JP7027145B2 (ja) | 2017-12-08 | 2017-12-08 | 通信装置、通信装置の制御方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7027145B2 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006049980A (ja) | 2004-07-30 | 2006-02-16 | Seiko Epson Corp | データ転送制御装置、電子機器及びデータ転送制御方法 |
JP2006081033A (ja) | 2004-09-10 | 2006-03-23 | Canon Inc | 通信制御装置及び方法 |
JP2006115199A (ja) | 2004-10-14 | 2006-04-27 | Sony Corp | 多重化パケット生成装置および多重化パケット生成方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09128314A (ja) * | 1995-11-06 | 1997-05-16 | Matsushita Electric Ind Co Ltd | 通信制御装置 |
-
2017
- 2017-12-08 JP JP2017235737A patent/JP7027145B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006049980A (ja) | 2004-07-30 | 2006-02-16 | Seiko Epson Corp | データ転送制御装置、電子機器及びデータ転送制御方法 |
JP2006081033A (ja) | 2004-09-10 | 2006-03-23 | Canon Inc | 通信制御装置及び方法 |
JP2006115199A (ja) | 2004-10-14 | 2006-04-27 | Sony Corp | 多重化パケット生成装置および多重化パケット生成方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2019103101A (ja) | 2019-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108270676B (zh) | 一种基于Intel DPDK的网络数据处理方法及装置 | |
CN103902486B (zh) | 一种远端直接内存访问实现方法、装置及系统 | |
US8848703B2 (en) | On-chip router and multi-core system using the same | |
WO2012167531A1 (zh) | 一种数据快速分发方法和装置 | |
WO2021114768A1 (zh) | 数据处理装置、方法、芯片、处理器、设备及存储介质 | |
CN100499666C (zh) | 实现SPI4设备与PCI Express设备互连的系统及方法 | |
US11467836B2 (en) | Executing cross-core copy instructions in an accelerator to temporarily store an operand that cannot be accommodated by on-chip memory of a primary core into a secondary core | |
JP7027145B2 (ja) | 通信装置、通信装置の制御方法およびプログラム | |
CN106372013B (zh) | 远程内存访问方法、装置和系统 | |
US20140143441A1 (en) | Chip multi processor and router for chip multi processor | |
JP2004207891A (ja) | データ通信装置、データ通信方法、データ通信プログラム及びデータ通信プログラムを記録した記録媒体 | |
JP5729938B2 (ja) | 通信装置およびその制御方法 | |
CN113204517B (zh) | 一种电力专用以太网控制器的核间共享方法 | |
JP6938399B2 (ja) | 通信装置、通信方法およびプログラム | |
JP7423223B2 (ja) | 通信装置 | |
JP6976786B2 (ja) | 通信装置および通信装置の制御方法 | |
JP6371321B2 (ja) | 通信システム、及びパケット転送方法 | |
EP3229145A1 (en) | Parallel processing apparatus and communication control method | |
JP7005303B2 (ja) | 通信装置、パケット生成装置およびそれらの制御方法 | |
JP6873953B2 (ja) | 通信装置、通信装置の制御方法およびプログラム | |
US9336172B2 (en) | Parallel computer system, data transfer device, and method for controlling parallel computer system for performing arbitration | |
JP5587530B2 (ja) | エンジン・プロセッサ連携システム及び連携方法 | |
JP6000732B2 (ja) | データ転送装置及びその制御方法、プログラム | |
WO2018137237A1 (zh) | 一种业务流迁移的方法及设备 | |
JP2018116574A (ja) | データ転送装置および制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20201204 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210811 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210817 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210830 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20220118 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220216 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7027145 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |