JP7027145B2 - 通信装置、通信装置の制御方法およびプログラム - Google Patents

通信装置、通信装置の制御方法およびプログラム Download PDF

Info

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
Application number
JP2017235737A
Other languages
English (en)
Other versions
JP2019103101A (ja
Inventor
一成 渡辺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2017235737A priority Critical patent/JP7027145B2/ja
Publication of JP2019103101A publication Critical patent/JP2019103101A/ja
Application granted granted Critical
Publication of JP7027145B2 publication Critical patent/JP7027145B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

本発明は、通信装置、通信装置の制御方法およびプログラムに関する。
近年急速に増加しているいわゆるスマートデバイス等の多機能端末上では、ネットワーク経由で配信される高解像度動画(8K/4K)をリアルタイムで閲覧することができる。こうした高解像度動画を閲覧するニーズの増加に伴って、動画配信のためのデータトラフィックが増大している。
一方、Ethernet(登録商標)による10Gbps通信、移動体通信の5G通信等、データトラフィックの増大に対応すべくネットワークの高速化が進展している。こうしたネットワークの高速化に伴って、各通信プロトコルで規定された処理である通信プロトコル処理の効率化が要請されている。こうした通信プロトコルにはTCP(Transmission Control Protocol)/IP(Internet Protocol)やUDP(User Datagram Protocol)等がある。
通信プロトコル処理においてデータを送信するためには、まず通信ヘッダや通信フッタを生成し、生成された通信ヘッダや通信フッタを送信すべきデータに付加して通信パケットを生成する必要がある。このため、高速データ通信を実現するためには、通信プロトコル処理における通信パケットを生成する処理の効率化は欠かせないものとなる。しかしながら、通信パケット生成を高速で実行しなければならないCPUへの負荷はそれだけ高まることになる。
そこでこのようなCPUによる通信プロトコル処理負荷を低減させる手法が提案されている。
例えば、特許文献1は、通信プロトコル処理における通信パケットを生成する処理で発生するメモリへのコピー回数を低減してスループットを向上させる技術を開示する。
具体的には、特許文献1の技術によれば、パケット処理装置は、送信するデータを記憶装置に記憶する際に、所定のデータ長毎に分割する。そして、パケット処理装置は、複数の分割データを、第一のブランク領域と第二のブランク領域がそれぞれ確保されるよう、記憶装置に離間配置する。第一のブランク領域にはプロトコルヘッダが、第二のブランク領域にはプロトコルフッタがそれぞれ格納されて、通信パケットが生成される。
これにより、プロトコルヘッダ等を付加する際に、これらを含むデータごと記憶装置にその都度コピーすることが不要となるためスループットが向上する。
特開2005-167965号公報
しかしながら、特許文献1に記載した通信パケット生成処理は、CPUがソフトウエアを実行することで通信プロトコル処理が実行されることを前提とするものであり、高解像度動画等の高速データ通信における高負荷に十分に対応できない場合がある。
一方、ハードウエアアクセラレータ等の専用ハードウエアによって、通信プロトコル処理の一部となる通信ヘッダや通信フッタの生成、またチェックサム演算等を実行して、より高速に通信パケットを生成する手法も提案されている。この場合、専用ハードウエアは通信プロトコル処理の一部を実行するに過ぎないため、通信プロトコル処理全体において、こうした専用ハードウエアの各機能をどのようなタイミングで実行するかを制御する必要がある。
具体的には、例えば、送信すべきデータの準備、ネットワークを介した通信パケットの送出等は、通信パケットを生成する専用ハードウエア外のアプリケーションソフトウエアや各機能モジュールにより実行される。このため、専用ハードウエア自体は、それぞれの機能モジュールの様々な状態を把握することができない。したがって、それぞれの機能モジュールの状態によっては専用ハードウエアにアイドルタイム(処理待ち時間)が発生してしまい、通信パケットの生成が遅延してしまう。
例えば、通信パケットを送信する際、送信すべきデータの準備が完了していなければ、専用ハードウエアは通信パケットを生成することができないためアイドルタイムが発生してしまい、効率的な通信パケットの生成および送信が妨げられてしまう。ここで、上記の特許文献1では、通信プロトコル処理の一部の処理をハードウエアで実行するものではないため、通信装置内の各機能モジュールの状態に応じてハードウエアの各機能をどのタイミングで実行するかを適切に制御することは想定していない。
本発明は、上述の課題に鑑みてなされたものであり、少なくとも一部でハードウエアを使用する通信プロトコル処理において、通信パケットを効率的に生成することが可能な通信装置、通信装置の制御方法およびプログラムを提供することを目的とする。
上記課題を解決するため、本発明に係る通信装置のある態様によれば、通信ヘッダを生成し、生成された前記通信ヘッダを送信すべきデータに付加して通信パケットを生成する生成手段と、前記生成手段による前記通信ヘッダの生成に連続して前記生成手段に前記通信パケットを生成させる第1の動作モードと、前記生成手段による前記通信ヘッダの生成の後、前記生成手段の処理を停止させ、送信データの準備が完了した後、前記生成手段の処理を再開させることで前記通信パケットを生成させる第2の動作モードとのいずれか1つを選択し、前記生成手段を選択されたいずれかの1つの動作モードで動作させるよう制御する制御手段と、を備えることを特徴とする通信装置が提供される。
本発明によれば、少なくとも一部でハードウエアを使用する通信プロトコル処理において、通信パケットを効率的に生成することができる。
本実施形態に係る通信装置1のハードウエアおよび機能構成の一例を示すブロック図 実施形態1において通信装置1が実行する通信パケット生成および送信処理の処理手順の一例を示すフローチャート 実施形態2において通信装置1が実行する通信パケット生成および送信処理の処理手順の一例を示すフローチャート 各実施形態における第1の動作モードおよび第2の動作モード、並びに動作モード切替がない場合の通信パケット生成および送信動作を示すタイミングチャート 実施形態3において通信装置1が実行する通信パケット生成および送信処理の処理手順の一例を示すフローチャート 実施形態4において通信装置1が実行する通信パケット生成および送信処理の処理手順の一例を示すフローチャート 実施形態5において通信装置1が実行する通信パケット生成および送信処理の処理手順の一例を示すフローチャート
以下、添付図面を参照して、本発明を実施するための実施形態について詳細に説明する。なお、以下に説明する実施形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されるべきものであり、本発明は以下の実施形態に必ずしも限定されるものではない。また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成については、同じ符号を付して説明する。
(実施形態1)
本実施形態においては、ハードウエアにより通信プロトコル処理の一部を実行する通信装置において、通信装置の内部処理や通信プロトコル処理の状態に応じて、複数の動作モードから適切な動作モードを選択して通信プロトコル処理の一部を実行する。
ここで、通信装置のハードウエアが実行する通信プロトコル処理の一部は、例えば、送信すべきデータに付加される通信ヘッダおよび通信フッタを生成する処理、送信すべきデータを通信パケットのペイロードに分割する処理を含む。さらに、ハードウエアが実行する通信プロトコル処理の一部は、分割されたペイロードに通信ヘッダおよび通信フッタをそれぞれ付加して通信パケットを生成する処理を含む。
以下、別段の定義がない限り、「通信ヘッダ」は、「通信ヘッダ」および「通信フッタ」の双方を含むものとする。また、ペイロードに通信ヘッダを「付加」するとは、ペイロードに通信ヘッダを付け加える場合の他、論理的に対応付ける場合を含む。
具体的には、本実施形態において、通信装置は、第1の動作モードおよび第2のモードを切り替えて動作する。第1の動作モードでは、通信装置のハードウエアは、通信ヘッダを生成するとともに、連続して、送信すべきデータをペイロード分割し、分割されたペイロードに通信ヘッダを付加して通信パケットを生成する。一方、第2の動作モードでは、通信装置のハードウエアは、通信ヘッダを生成した後一旦停止し、通信パケットを生成可能な状態となったことを契機に送信すべきデータをペイロード分割し、分割されたペイロードに通信ヘッダを付加して通信パケットを生成する。
本実施形態では、通信装置は、送信すべきデータの準備が完了したか否かを判定し、送信すべきデータの準備が完了している場合は第1の動作モードで、完了していない場合は第2の動作モードで動作するよう制御される。
これにより、送信すべきデータの準備が完了していない場合であっても、通信ヘッダを先行して投機的に生成することで、通信パケットをより高速、効率的に生成することができる。
<本実施形態のハードウエアおよび機能構成>
図1は、本実施形態に係る通信装置のハードウエア構成および機能構成の一例を示す図である。
通信装置1の各機能モジュールのうち、ソフトウエアにより実現される機能については、各機能モジュールの機能を提供するためのプログラムがROM等のメモリに記憶され、RAMに読み出してCPUが実行することにより実現される。ハードウエアにより実現される機能については、例えば、所定のコンパイラを用いることで、各機能モジュールの機能を実現するためのプログラムからFPGA上に自動的に専用回路を生成すればよい。FPGAとは、Field Programmable Gate Arrayの略である。また、FPGAと同様にしてGate Array回路を形成し、ハードウエアとして実現するようにしてもよい。また、ASIC(Application Specific Integrated Circuit)により実現するようにしてもよい。なお、図1に示した機能ブロックの構成は一例であり、複数の機能ブロックが1つの機能ブロックを構成するようにしてもよいし、いずれかの機能ブロックが複数の機能を行うブロックに分かれてもよい。
通信装置1は、サブシステム2と、メインCPU3と、メインメモリ4とを備える。サブシステム2は、各通信プロトコルで規定された処理である通信プロトコル処理を実行する。サブシステム2、メインCPU3、およびメインメモリ4は、システムバス5を介して相互に接続されている。
メインCPU3は、通信装置1上で稼働するアプリケーションソフトウエアを実行するとともに、通信装置1全体の制御を実行する。具体的には、メインCPU3は、アプリケーションソフトウエアを実行する上で必要となるデータやプログラムなどをメインメモリ4の内部に記憶し、必要に応じてシステムバス5を介して読み出しや書き込みを行う。
メインメモリ4は、システムバス5を介して、通信装置1内の各機能ブロックが共有して利用可能なメモリであり、例えば主としてDRAM(Dynamic Random Access Memory)等の半導体メモリで構成されてよい。メインメモリ4内部の領域は、プログラムを格納する領域やアプリケーションソフトウエアが使用するアプリケーションバッファ領域などに分けられる。
サブシステム2は、サブCPU21と、ローカルメモリ22と、DMA(Direct Memory Access)コントローラ23と、通信I/F24と、ヘッダ処理部25とを備える。サブCPU21、ローカルメモリ22、DMAコントローラ23、通信I/F24、およびヘッダ処理部25は、ローカルバス26を介して相互に接続されている。
サブシステム2は、通信装置1における通信プロトコル処理を実行するサブシステムであり、特に、サブシステム2は、TCP/IPプロトコル等の通信プロトコル処理に特化して外部機器とネットワークを介したデータ転送処理を担う。本実施形態において、サブシステム2は、通信プロトコル処理専用のハードウエア(ハードウエアアクセラレータ)を搭載して、通信プロトコル処理の一部をメインCPU3に替えて高速で実行する。
なお、TCP/IPプロトコルは説明を行うために示す一例であり、サブシステム2は、その他の通信プロトコルの通信プロトコル処理を実行することができる。以下、TCP/IPプロトコルは、別段の定義のない限り、UDPプロトコルを含むものとして説明する。
サブCPU21は、サブシステム2による通信プロトコル処理全体の実行を制御する。具体的には、サブCPU21は、IPv4(IPバージョン4)、IPv6(IPバージョン6)、UDP、TCP等の各通信プロトコル処理を実行する。サブCPU21が実行する通信プロトコル処理は、送信シーケンス制御、輻輳制御、通信エラー制御等を含む。
なお、サブCPU21は、1つのプロセッサとして構成してもよいし、複数のプロセッサによるマルチプロセッサ構成としてもよい。さらに、サブCPU21は、プロセッサと一部の機能をアクセラレートするハードウエア(ハードウエアアクセラレータ)とで構成してもよい。
ローカルメモリ22は、サブシステム2のサブCPU21が利用可能なメモリであり、例えば、主としてSRAM(Static Random Access Memory)等の半導体メモリで構成されてよい。
また、ローカルメモリ22は、メインCPU3からもシステムバス5およびローカルバス26を介してアクセス可能である。ローカルメモリ22は、通信プロトコル処理を実行する上で必要となる送受信データや各種の設定情報などを内部に記憶し、必要に応じてサブシステム2の各機能モジュールがローカルバス26を介して読み出しや書き込みを実行する。図1では、アプリケーションソフトウエアにより準備され、メインメモリ4から転送された送信データ221がローカルメモリ22に記憶されている。
DMAコントローラ23は、サブCPU21およびヘッダ処理部25双方から直接制御可能であり、ローカルメモリ22へのアクセスを提供し、DMA転送処理を実行する。DMAコントローラ23は、DMA転送部231およびチェックサム演算器232を備える。
DMAコントローラ23は、ディスクリプタに記述された内容に従ってソース側からディスティネーション側へデータ転送を実行する。このディスクリプタには、データ転送元となるソース側のメモリ等のアドレス情報、データ転送先となるディスティネーション側のメモリ等のアドレス情報、およびデータ転送の転送サイズ等の情報が記述される。
具体的には、サブCPU21等の、ローカルバス26に対してマスターとなる機能を持つ機能ブロックが、ローカルメモリ22にデスクリプタを書き込み、その後DMAコントローラ23に対してDMA転送開始指示を通知する。DMA転送開始指示を通知するには、例えばデスクリプタを保存しているローカルメモリ22のアドレス情報を設定すればよい。
このDMA転送開始指示の通知を受けたDMAコントローラ23は、メインメモリ4とローカルメモリ22との間、内部メモリ252とローカルメモリ22との間のDMA転送処理を実行する。さらにDMAコントローラ23は、内部メモリ252と通信I/Fとの間、ローカルメモリ22と通信I/Fとの間のDMA転送処理も実行する。これらのDMA転送処理は、DMAコントローラ23に備えられるDMA転送部231が実行する。
DMAコントローラ23のチェックサム演算器232は、転送されるデータについて16bit単位で1の補数和を計算する演算機能を装備する。チェックサム演算器232はまた、演算結果を転送されるデータの末尾に付加して転送する機能、あるいは演算結果だけを出力する機能を装備する。
通信I/F24は、LAN(Local Area Network)等で構成されるネットワーク27とのインターフェースであり、外部装置との通信における物理層(PHY層)とデータリンク層(MAC層)の通信制御を担っている。
通信I/F24は、内部に送受信データを一時的に蓄積するバッファメモリを装備し、DMAコントローラ23のDMA転送によって、送受信データの入出力が行われる。なお、図1の構成に替えて、通信I/F24がDMAコントローラ23を内蔵して、この内蔵DMAコントローラ23を使用してもよい。
ヘッダ処理部25は、コア部251と、内部メモリ252とを備える。このヘッダ処理部25は、通信プロトコル処理における通信ヘッダの生成、送信すべきデータのペイロード分割、および分割されたペイロードへ通信ヘッダを付加して通信パケットを生成する各処理を実行する処理部である。
本実施形態において、ヘッダ処理部25は、サブCPU21が実行する通信プロトコル処理のうち、その一部である上記各処理を肩代わりして実行する機能ブロックである。
コア部251の通信ヘッダ生成部251aは、レジスタ部251bに入力されたひな形となるヘッダ情報(以下、「ひな形ヘッダ」という。)および通信ヘッダ生成のための編集情報に従って、複数の通信ヘッダ252aを生成して内部メモリ252に記憶する。すなわち、通信ヘッダ生成部251aは、生成すべき通信パケットの数に基づいてひな形ヘッダを複製し、複製した通信ヘッダを編集情報に基づいて編集することにより、複数の通信ヘッダ252aを生成する。
コア部251のレジスタ部251bは、ヘッダ処理部25を制御するための設定情報を入力する機能と、ヘッダ処理部25内の状態を確認するためのステータス情報を表示等で出力する機能とを有する。レジスタ部251bはまた、レジスタ部251bでステータス情報を表示するだけでなく、外部へ割込み信号を使用して通知する機能も装備する。
内部メモリ252は、ヘッダ処理部25内に設けられ、コア部25およびサブCPU21からアクセス可能なメモリであり、例えば主としてSRAM(Static Random Access Memory)等の半導体メモリで構成されている。内部メモリ252は、コア部251により生成された通信ヘッダ252aを記憶する。
さらに、ヘッダ処理部25は、サブCPU21と同様、ローカルバス26に対してマスターとなる機能を持ち、DMAコントローラ23を制御することが可能である。DMA転送の設定をするには、まず、ヘッダ処理部25がDMA転送の内容を記載したディスクリプタを生成してローカルメモリ22に保存する。そして、このディスクリプタを保存したローカルメモリ22のアドレス情報をDMAコントローラ23に設定することでDMA転送が実行することができる。
本実施形態において、サブCPU21が実行する、第1の動作モードと第2の動作モードを切り替えてヘッダ処理部25を動作させる機能は、サブCPU21がコア部251のレジスタ部251bへいずれかの動作モードを設定することで実現することができる。この第1の動作モードと第2の動作モードの間での切替動作の詳細は図2を参照して後述する。
<本実施形態における通信ヘッダ生成および通信パケット生成処理の処理フロー>
図2は、本実施形態に係る通信装置1が実行する通信ヘッダ生成および通信パケット生成処理の一例を示すフローチャートである。
図2に示す処理は、例えば、通信装置1の通信機能が起動され、通信装置1がネットワークを介して外部機器と通信状態となったことを契機に開始されてよい。ただし、図2に示す処理の開始タイミングは上記に限定されない。
以下では、通信装置1が外部機器との間でデータ転送する際に使用する通信プロトコルとしてTCP/IPプロトコルを使用する例を説明するが、本実施形態はTCP/IPプロトコル以外の通信プロトコルも使用することができる。
通信装置1は、サブCPU21が必要なプログラムをメインメモリ4またはローカルメモリ22から読み出して実行することにより、ハードウエアであるヘッダ処理部25の動作を制御して図2に示す処理を実行することができる。
図2を参照して、S201で、サブシステム2のサブCPU21は、サブCPU21が実行する通信プロトコル処理において外部機器へ送信する通信パケットの生成準備が整ったか否かを条件として分岐を行う。すなわち、外部機器へ送信する通信パケットの生成準備が整った場合(S201:Y)はS202へ移行し、一方、外部機器へ送信する通信パケットの生成準備が整っていない場合(S201:N)はS201へ戻って現在の状態を維持する。
具体的には、例えば、サブCPU21は、メインCPU3で実行されるアプリケーションソフトウエアから外部機器へ通信パケットを送信する指示をサブCPU21が受け取った場合、外部機器へ送信する通信パケットの生成準備が整ったと判断してよい。
また、通信機器1が使用する通信プロトコルがTCP/IPプロトコルであれば、サブCPU21が先に外部機器へ送信した通信パケットに対する応答パケットを受信した場合も同様に、外部機器へ送信する通信パケットの生成準備が整ったと判断してよい。
S202で、サブCPU21は、メインCPU3で実行されるアプリケーションソフトウエアが外部機器へ送信すべき送信データの準備が完了したか否かを条件として分岐を行う。すなわち、メインメモリ3のアプリケーションバッファ領域に外部機器へ送信すべき送信データの蓄積が完了している場合(S202:Y)はS203へ移行し、一方、送信データの蓄積が完了していない場合はS205(S202:N)へ移行する。
具体的には、メインCPU3で実行されるアプリケーションソフトウエアは、外部機器へ送信すべき送信データをメインメモリ4のアプリケーションバッファ領域に準備する。そして、メインCPU3は、アプリケーションバッファ領域に送信データが所定の量まで蓄積されると、サブCPU21に対して外部機器へ送信する送信データの準備が完了したことを通知する。この通知をサブCPU21が受け取ったことで、サブCPU21は、送信データの準備が完了したと判断することができる。すなわち、この時点で、サブCPU21は、メインメモリ4のアプリケーションバッファ領域からローカルメモリ22の内部バッファへ送信データを取り込み可能となる。
S202で送信データの準備が完了したと判定された場合、S203で、サブCPU21は、外部機器へ通信プロトコルに従った通信パケットの送信を実行するため、送信データをメインメモリ4からサブシステム2内のローカルメモリ22へ移動する。
具体的には、サブCPU21は、S202でメインCPU3から受け取った通知に基づいて、メインメモリ4からローカルメモリ22(内部バッファ)へ送信データを移動するDMA転送を行う。このDMA転送の設定では、まず、サブCPU21がDMA転送の内容を記載したディスクリプタを生成してローカルメモリ22に保存する。次に、サブCPU21がこのディスクリプタを保存したローカルメモリ22のアドレス情報をDMAコントローラ23に設定することでDMA転送が実行される。このDMA転送の完了をもってサブCPU21による通信プロトコルに従った送信処理の準備が完了したことになる。
S204で、ヘッダ処理部25は、第1の動作モードで複数の通信ヘッダを生成すると共にS203で受け取った送信データを分割して複数の分割ペイロードを取得し、取得された分割ペイロードのそれぞれに通信ヘッダを付加して複数の通信パケットを生成する。
S204では、S203で送信データの準備が完了したと判定されているため、サブCPU21は、ヘッダ処理部25の動作モードを第1の動作モードに決定する。ここで第1の動作モードとは、ヘッダ処理部25が、通信ヘッダを生成した後、連続してDMAコントローラ23を制御して通信パケットを完成させる動作モードである。
具体的には、サブCPU21は、まず、ローカルメモリ22に移動した送信データを分割して生成する通信パケットの数と各通信パケットのペイロードのサイズを決定する。そして、サブCPU21は、ヘッダ処理部25に対して通信パケットの通信ヘッダ部分を生成するために必要となる情報と、決定した動作モード(S204では第1の動作モード)とを、ヘッダ処理部25のレジスタ部251bに設定する。
通信ヘッダを生成するため必要な情報をレジスタ部251bを介して取得すると、コア部251の通信ヘッダ生成部251aは、サブCPU21により決定された通信パケットの数と同数である複数の通信ヘッダ252aを内部メモリ252に生成する。
次に、ヘッダ処理部25のコア部251は、通信ヘッダを完成させるために必要となるチェックサム値を取得する。このチェックサム値は、DMAコントローラ23の16bit毎に1の補数和を計算するチェックサム演算器232を使用して取得することができる。
すなわち、ヘッダ処理部23のコア部251は、DMAコントローラ23のチェックサム演算器232に通信パケットの通信ヘッダ部分と通信パケットのペイロード部分を連続して読み込ませ、16bit毎に1の補数和を計算させてチェックサム値を算出させる。その後、コア部251が、元の通信パケットの通信ヘッダの所定の場所に算出したチェックサム値を書き込むことで通信ヘッダが完成する。
ここで、通信パケットの通信ヘッダ部分とは、内部メモリ252に生成された複数の通信ヘッダ252aのそれぞれを示す。また、通信パケットのペイロード部分とは、ローカルメモリ22に移動された送信データを通信パケット毎に分割して生成されたペイロードのそれぞれを示す。
コア部251は、1つの通信パケットを形成すべき通信ヘッダとペイロードとをDMAコントローラ23に読み込ませることで、チェックサム値をチェックサム演算器232に算出させている。算出したチェックサム値は、内部メモリ252内のチェックサム値の算出に使用した元の通信ヘッダの所定の場所に上書きされる。
コア部251は、内部メモリ252内に生成された複数の通信ヘッダ252aのそれぞれに対してチェックサム値の書き込み処理を実行する。
なお、DMAコントローラ23に1の補数和を計算させる方法としては、まず、ヘッダ処理部25のコア部251が1の補数和を計算させる内容を記載したディスクリプタを生成してローカルメモリ22に保存する。そして、コア部251がこのディスクリプタを保存したローカルメモリ22のアドレス情報をDMAコントローラ23に設定することで、1の補数和の計算を実行することができる。
ヘッダ処理部25が上記の一連の処理を実行することで、外部機器に送信される各通信パケットのペイロード部分(図1の送信データ221)がローカルメモリ22に、通信ヘッダ部分が内部メモリ252に、それぞれ複数完成する。それぞれの通信パケットにおいて、ローカルメモリ22のペイロード部分と内部メモリ252の通信ヘッダ部分(通信ヘッダおよび通信フッタ)は論理的に対応付けられている。
一方、S202に戻り、S202で送信データの準備が完了していないと判定された場合、S205からS208で、ヘッダ処理部25は、第2の動作モードで複数の通信ヘッダを生成するとともに、複数の通信パケットを生成する。
S205では、S202で送信データの準備が完了していないと判定されているため、サブCPU21は、ヘッダ処理部25の動作モードを第2の動作モードに決定する。ここで第2の動作モードとは、ヘッダ処理部25が、通信ヘッダを生成した後、一旦動作を停止してサブCPU21に割込み通知を送出する。その後、サブCPU21から通信パケットを完成させる通知(動作停止の解除を指示する通知)を受け取ったタイミングで、ヘッダ処理部25がDMAコントローラ23を制御して通信パケットを完成させる動作モードである。
具体的には、S204と同様、サブCPU21は、まず、ローカルメモリ22に移動した送信データを分割して生成する通信パケットの数と各通信パケットのペイロードのサイズを決定する。そして、サブCPU21は、ヘッダ処理部25に対して通信パケットの通信ヘッダ部分を生成するために必要となる情報と、決定した動作モード(S205では第2の動作モード)とを、ヘッダ処理部25のレジスタ部251bに設定する。
通信ヘッダを生成するため必要な情報をレジスタ部251bを介して取得すると、コア部251の通信ヘッダ生成部251aは、サブCPU21により決定された通信パケットの数と同数の通信ヘッダ252aを内部メモリ252に生成する。
なお、第2の動作モードにおいて、サブCPU21は、過去にローカルメモリ22に移動した送信データの履歴情報等を適宜参照して、通信ヘッダを生成するために必要となる情報をレジスタ部251bに設定することができる。通信ヘッダ生成部251aは、レジスタ部251bに設定された情報を参照することにより、ステップS206に先立って投機的に通信パケットを生成することができる。
その後、第2の動作モードにおいて、ヘッダ処理部25は、その処理を一旦停止し、サブCPU21へ割込み信号によって一時的に停止したことを通知する。
S206で、サブCPU21は、S202と同様、メインCPU3で実行されるアプリケーションソフトウエアが外部機器へ送信すべき送信データの準備が完了したか否かを条件として分岐を行う。すなわち、メインメモリ3のアプリケーションバッファ領域に外部機器へ送信すべき送信データの蓄積が完了している場合はS207へ移行し、一方、送信データの蓄積が完了していない場合はS206へ戻って現在の状態を維持する。
具体的には、メインCPU3で実行されるアプリケーションソフトウエアは、外部機器へ送信すべき送信データをメインメモリ4のアプリケーションバッファ領域に準備する。そして、メインCPU3は、アプリケーションバッファ領域に送信データが所定の量まで蓄積されると、サブCPU21に対して外部機器へ送信する送信データの準備が完了したことを通知する。この通知をサブCPU21が受け取ったことで、サブCPU21は、送信エータの準備が完了したと判断することができる。
S206で送信データの準備が完了したと判定された場合、S207で、サブCPU21は、外部機器へ通信プロトコルに従った通信パケットの送信を実行するため、送信データをメインメモリ4からサブシステム2内のローカルメモリ22へ移動する。
具体的には、サブCPU21は、S206でメインCPU3から受け取った通知に基づいて、メインメモリ4からローカルメモリ22へ送信データを移動するDMA転送を行う。このDMA転送の設定では、まず、サブCPU21がDMA転送の内容を記載したディスクリプタを生成してローカルメモリ22に保存する。次に、サブCPU21がこのディスクリプタを保存したローカルメモリ22のアドレス情報をDMAコントローラ23に設定することでDMA転送が実行される。このDMA転送の完了をもってサブCPU21による通信プロトコルに従った送信処理の準備が完了したことになる。
S208で、ヘッダ処理部25は、第2の動作モードで、S207で受け取った送信データを分割して複数の分割ペイロードを取得し、取得された分割ペイロードのそれぞれに、S205で生成された通信ヘッダを付加して複数の通信パケットを生成する。
具体的には、第2の動作モードで、まず、サブCPU21は、一時停止していたヘッダ処理部25に対して通信パケット生成処理の再開するために必要となる情報をヘッダ処理部25のレジスタ部251bに設定して、ヘッダ処理部25のコア部251を起動する。
次に、ヘッダ処理部25のコア部251は、S204と同様、通信ヘッダを完成させるために必要となるチェックサム値を取得する。このチェックサム値は、DMAコントローラ23の16bit毎に1の補数和を計算するチェックサム演算器232を使用して取得することができる。
すなわち、ヘッダ処理部23のコア部251は、DMAコントローラ23のチェックサム演算器232に通信パケットの通信ヘッダ部分と通信パケットのペイロード部分を連続して読み込ませ、16bit毎に1の補数和を計算させてチェックサム値を算出させる。その後、コア部251が、元の通信パケットの通信ヘッダの所定の場所に算出したチェックサム値を書き込むことで通信ヘッダが完成する。
コア部251は、1つの通信パケットを形成すべき通信ヘッダとペイロードとをDMAコントローラ23に読み込ませることで、チェックサム値をチェックサム演算器232に算出させている。算出したチェックサム値は、内部メモリ252内のチェックサム値の算出に使用した元の通信ヘッダの所定の場所に上書きされる。
コア部251は、内部メモリ252内に生成された複数の通信ヘッダ252aのそれぞれに対してチェックサム値の書き込み処理を実行する。
ヘッダ処理部25が上記の一連の処理を実行することで、外部機器に送信される各通信パケットのペイロード部分(図1の送信データ221)がローカルメモリ22に、通信ヘッダ部分が内部メモリ252に、それぞれ完成する。
S209で、サブCPU21は、完成した通信パケットを、外部機器へ通信I/F24を介して送信する。
具体的には、まず、サブCPU21は、ローカルメモリ22から供給される通信パケットのペイロード(図1の送信データ221)に内部メモリ252に生成した通信ヘッダ252aを結合して1つの通信パケットとして転送するDMA転送制御を実行する。このDMA転送は、DMAコントローラ23によって実行され、サブCPU21によってDMA転送が起動されると、通信パケットが通信I/F24へ転送される。
通信I/F24においてデータリンク層(MAC層)や物理層(PHY層)の通信処理が実行された後、ネットワークを介して外部機器へ生成された通信パケットが送信される。
S210で、サブCPU21は、通信装置1と外部機器の通信を終了させる事象が発生したかどうかを条件として分岐を行う。外部機器との通信を終了させる事象が発生した場合(S210:Y)はS211へ移行し、外部機器との通信を終了させる事象が発生していない場合(S210:N)はS202へ戻る。
例えば、メインCPU3で実行しているアプリケーションソフトウエアが、ユーザからの操作などで通信装置1と外部機器の接続を終了させる指示を検知した場合は、外部機器との通信を終了させる事象となる。また、ユーザがネットワークケーブルを通信装置1から抜くなどして通信回線が断絶したことを通信I/F24が検知した場合も、外部機器との通信を終了させる事象となる。さらに、通信相手である外部機器から通信回線を切断する旨の通知を含んだ通信パケットを受信した場合も、同様に外部機器との通信を終了させる事象となる。
S211で、通信装置1は、通信装置1と外部機器の通信を終了させる処理を実行する。具体的には、サブCPU21が担っている通信プロトコル処理に従って、外部機器との通信回線を正常に切断する。そして、サブCPU21は、ローカルメモリ22やヘッダ処理部25の内部メモリ252に一時的に保存している関連情報を削除する。
その後、サブCPU21からメインCPU3へ、通信回線の切断完了の通知が伝達されると、アプリケーションソフトウエアで通信回線が切断したことをユーザなどへ示す表示を行うことができる。
以上説明したように、本実施形態では、通信装置1は、第1の動作モードおよび第2のモードを切り替えて動作する。具体的には、本実施形態では、通信装置1のサブCPU21は、送信すべきデータの準備が完了したか否かを判定し、送信すべきデータの準備が完了している場合は、ヘッダ処理部25を第1の動作モードで動作するよう制御する。
一方、送信すべきデータの準備が完了していない場合は、通信装置1のサブCPU21は、ヘッダ処理部25を第2の動作モードで動作するよう制御する。第2のモードでは、ヘッダ処理部25は、送信データの準備待ちとなった状態で、通信ヘッダを先行して投機的に生成する。
これにより、送信すべきデータの準備が完了していない場合であっても、通信ヘッダを先行して投機的に生成することで、通信パケットをより高速、効率的に生成することができる。
(実施形態2)
以下、実施形態2を、図3および図4を参照して、上記の実施形態1と異なる点についてのみ詳細に説明する。本実施形態は、第1の動作モードと第2の動作モードとのいずれかを選択する際に、通信装置1の通信相手である外部機器との通信を行う通信I/F24が通信パケットを送信する準備が完了しているか否かを判定する。すなわち、通信装置1のサブCPU21は、通信ヘッダの生成のタイミングで、通信I/F24の送信準備が完了していれば第1の動作モードで、通信I/F24の送信準備が完了していなければ第2の動作モードで、ヘッダ処理部25を動作させるよう制御する。
これにより、外部機器に対する通信パケットの送信準備ができていない場合であっても、通信ヘッダを先行して投機的に生成することで、通信パケットをより高速、効率的に生成することができる。
本実施形態に係る通信装置1の構成は図1に示す実施形態1と同様である。
図3は、実施形態2に係る通信装置1が実行する通信ヘッダ生成および通信パケット生成処理の一例を示すフローチャートである。
図3を参照して、S301で、メインCPU3で実行されるアプリケーションソフトウエアは、外部機器へ送信すべき送信データを、メインメモリ4に設けられたアプリケーションバッファ領域に準備する。そして、アプリケーションバッファ領域に送信データが所定の量まで蓄積されると、メインCPU3で実行されるアプリケーションソフトウエアは、サブCPU21に対して、外部機器へ送信する送信データの準備が完了したことを通知する。
なお、S301でサブCPU21に対して発行される通知には、現在の通信状態を示す情報が含まれる。この現在の通信状態を示す情報は、例えば、TCPプロトコルを使用した通信の接続を開始することを示す情報、TCPプロトコルを使用したデータ転送を開始することを示す情報、TCPプロトコルを使用した通信の切断を開始する情報等を含む。
S302で、サブCPU21は、メインCPU3で実行されるアプリケーションソフトウエアが外部機器へ送信すべき送信データの準備を完了したか否かを条件として分岐を行う。すなわち、メインメモリ3のアプリケーションバッファ領域に外部機器へ送信すべき送信データの蓄積が完了している場合はS303へ移行し、一方、送信データの蓄積が完了していない場合はS301へ戻る。
S302では、S301でサブCPU21に発行された通知をサブCPU21が受け取ったことで、サブCPU21は、送信データの準備が完了したと判断することができる。
S302で送信データの準備が完了したと判定された場合、S303で、サブCPU21は、外部機器へ通信プロトコルに従った通信パケットの送信を実行するため、送信データをメインメモリ4からサブシステム2内のローカルメモリ22へ移動する。
具体的には、サブCPU21は、図2のS203と同様、DMAコントローラ23に、メインメモリ4からローカルメモリ22(内部バッファ)へ送信データを移動するDMA転送を実行させる。
S304で、サブCPU21は、通信I/F24がネットワーク27へ送信すべき通信パケットを受け取る準備ができたか否かを条件として分岐を行う。すなわち、通信I/F24で通信パケットの受取準備が完了している場合はS305へ移行し、通信I/F24で通信パケットの受取準備が完了していない場合はS306へ移行する。
具体的には、サブCPU21は、通信I/F24内部に設けられた通信パケットを一時的に蓄積するバッファメモリ(送信バッファ)に空きがある場合に、通信I/F24がネットワーク27へ送信すべき通信パケットの受取準備が完了していると判断する。一方、通信I/F24内部のバッファメモリに空きがない場合、サブCPU21は、通信I/F24で通信パケットの受取準備が完了していないと判断する。
S304で通信I/F24で通信パケットの受取準備が完了していると判断された場合、S305で、ヘッダ処理部25は、第1の動作モードで複数の通信パケットを生成する。すなわち、ヘッダ処理部25は、第1の動作モードで、複数の通信ヘッダを生成するとともに、S303で受け取った送信データを分割して複数の分割ペイロードを取得し、取得された分割ペイロードのそれぞれに通信ヘッダを付加して複数の通信パケットを生成する。
S305の処理の詳細は、図2のS204を参照して上記で説明したものと同様である。
一方、S304に戻り、S304で通信I/F24で通信パケットの受取準備が完了していないと判定された場合、S306からS308で、ヘッダ処理部25は、第2の動作モードで複数の通信ヘッダを生成するとともに、複数の通信パケットを生成する。
S308からS308の処理の詳細は、図2のS205、S206およびS208を参照して上記で説明したものと同様である。
S309からS311の処理の詳細は、図2のS209からS211を参照して上記で説明したものと同様である。
<各動作モードによる通信パケット生成処理タイミング>
次に、図3の通信パケット送信の動作フローに基づき、通信装置1の動作状況とヘッダ処理部25の動作モードによって、通信パケット生成処理にかかる時間が変化することを、図4のタイミングチャートを参照して説明する。
図4は、第1の動作モードおよび第2の動作モード、並びに動作モード切替がない場合それぞれでの通信パケット生成および送信動作を示すタイミングチャートである。
図4において、横軸は時間経過を示し、縦軸に通信装置1の動作状況の3つのパターンを示す。
パターン41は、ヘッダ処理部25が第1の動作モードで動作し、かつ、図3のS304において、通信I/F24で通信パケットの受取準備が完了している場合(S304:Y)を示す。通信パケットの受取準備が完了している場合とは、例えば、ヘッダ処理部25の通信パケット生成処理能力よりも、通信I/F24が受け取った通信パケットをネットワーク27へ送出する能力が高い場合などが該当する。
図4において、図3のS303でローカルメモリ22に送信データ221の移動が完了した時刻をt0とする。パターン41では、S304で通信I/F24での通信パケットの受取準備が完了しているので、ヘッダ処理部25には第1の動作モードが設定され、続けてS305で、通信ヘッダの生成および通信パケットの完成が連続して実行される。その後、S309で、外部機器へ通信パケットが送信される。
このように、パターン41に示す通信装置1動作状況の場合、通信パケットが外部機器へ送出完了した時刻はt1となる。
パターン42は、ヘッダ処理部25が第2の動作モードで動作し、かつ、図3のS304において、通信I/F24で通信パケットの受取準備が完了していない場合(S304:N)を示す。通信パケットの受取準備が完了していない場合とは、例えば、ヘッダ処理部25の通信パケット生成処理能力よりも、通信I/F24が受け取った通信パケットをネットワーク27へ送出する能力が低い場合などが該当する。
図4において、パターン41と同様、S303でローカルメモリ22に送信データの移動が完了した時刻をt0とする。パターン42では、S304で通信I/F24での通信パケットの受取準備が完了していないので、ヘッダ処理部25には第2の動作モードが設定され、続けてS306で、通信パケットの通信ヘッダを先に生成する。
その後、パターン42では、S307で、ヘッダ処理部25は、通信I/F24で受取準備が完了する時刻t3まで待機する(待機時間:w1)。
さらにその後、通信I/F24での通信パケットの受取準備が完了する時刻t3が到来してから、S308で通信パケットを完成させる。その後、S309で、外部機器へ通信パケットが送信される。
このように、パターン42に示す通信装置1の動作状況の場合、通信パケットが外部機器へ送出完了した時刻はt2となる。
一方、パターン43は、ヘッダ処理部25が第1の動作モードしか装備していない場合を仮定する。すなわち、図3のS304において、通信I/F24で通信パケットの受取準備が完了している場合(S304:Y)、ヘッダ処理部25には第1の動作モードが設定され、続けてS305で、通信ヘッダの生成および通信パケットの完成が連続して実行される。
一方、通信I/F24で通信パケットの受取準備が完了していない場合(S305:N)、ヘッダ処理部25は第1の動作モードしか装備していないため、S305に進むことができず、現在の状態を維持して待機することになる。すなわち、パターン43では、パターン42と同時刻であるt3まで待機するものと仮定する。
図4において、パターン41と同様、S303でローカルメモリ22に送信データの移動が完了した時刻をt0とする。パターン43では、ヘッダ処理部25は第1の動作モードで動作し、通信I/F24で通信パケットの受取準備が完了していないので、通信I/F24で受取準備が完了する時刻t3が到来するまで待機する(待機時間:w2)。
その後、通信I/F24での通信パケットの受取準備が完了する時刻t3が到来してから、S305で、通信ヘッダを生成するとともに通信パケットを完成させる。その後、S309で、外部機器へ通信パケットが送信される。
このように、パターン43に示す通信装置1の動作状況の場合、通信パケットが外部機器へ送出完了した時刻はt4となる。
上記のパターン41およびパターン42を比較すると、時刻t1とt2の時間差44だけ、第1の動作モードで通信パケットを生成したパターン41の方が、通信パケットを外部機器へより早く送出完了していることが分かる。
図4の時間差44は、2つの要因による。1つの要因は、パターン42では、パターン41と異なり、S307による待機時間(w1)が発生したためである。もう1つの要因は、パターン42の第2の動作モードにおける通信ヘッダ生成(S306)と通信パケット完成(S308)の合計期間が、パターン41の第1の動作モードにおけるS305の期間よりも長いためである。なぜなら、第2の動作モードでは、S306で、ヘッダ処理部25がサブCPU21へ割込み通知する処理と、S308で、サブCPU21がヘッダ処理部25を起動して通信パケット生成を再開する処理のオーバーヘッドが生じるからである。
一方、上記のパターン42およびパターン43を比較すると、時刻t2とt4の時間差45だけ、第2の動作モードで通信パケットを生成したパターン42の方が、通信パケットを外部機器へより早く送出完了していることが分かる。
図4の時間差45の要因は、次のとおりである。すなわち、パターン42では、通信I/F24で通信パケットの受取準備が完了待ちをしている期間(t0からt3の間)に、S306で通信ヘッダの生成を先に実行している。このため、時刻t3以降の処理が、S308の処理、すなわちすでに生成された通信ヘッダを分割ペイロードに付加して通信パケットを完成させる処理の処理時間で済む。
これに対し、パターン43では、時刻t3以降の処理が、S305の処理、すなわち、通信ヘッダを生成し、連続して通信パケットを完成させる処理であるため、S308よりも長く処理時間を必要とする。このため、パターン42の方が、時刻t2とt4の時間差45だけ、通信パケットを外部機器へ早く送出完了することになる。
上記のように、パターン41およびパターン42の比較においては、ヘッダ処理部25が第1の動作モードで動作する方が、第2の動作モードで動作するより、より早く(時間差44)通信パケットを外部機器へ送出完了する。
これに対して、通信I/F24での通信パケットの受取準備の完了を待機しなければならないパターン42とパターン43の比較においては、ヘッダ処理部25が第2の動作モードで動作することで、より早く通信パケットを外部機器へ送出完了することができる。
なお、上記で説明したタイミングチャートは、実施形態1についても、時刻t3をアプリケーションソフトウエアによる送信データの準備完了(図2のS202、S206)の時刻に置き換えることで同様に適用することができる。
以上説明したように、本実施形態によれば、第1の動作モードと第2の動作モードとのいずれかを選択する際に、通信装置1の通信相手との通信を行う通信I/F24が通信パケットを送信する準備が完了しているか否かの動作状況を判定する。すなわち、通信装置1のサブCPU21は、通信ヘッダの生成のタイミングで、通信I/F24の送信準備が完了していれば第1の動作モードで、通信I/F24の送信準備が完了していなければ第2の動作モードで、ヘッダ処理部25を動作させるよう制御する。
これにより、外部機器に対する通信パケットの送信準備ができていない場合であっても、通信ヘッダを先行して投機的に生成することで、通信パケットをより高速、効率的に生成することができる。
(実施形態3)
以下、実施形態3を、図5を参照して、上記の実施形態2と異なる点についてのみ詳細に説明する。
実施形態2では、第1の動作モードと第2の動作モードとのいずれかを選択する際に、通信I/F24が通信パケットを送信する準備が完了しているか否かで動作モードを決定した。
本実施形態では、第1の動作モードと第2の動作モードとのいずれかを選択する際に、設定された動作状況となったか否かを判定する。すなわち、通信装置1のサブCPU21は、通信ヘッダの生成のタイミングで、サブシステム2に設定された動作状況に応じて、ヘッダ処理部25を第1の動作モードまたは第2の動作モードのいずれかで動作させるよう制御する。
これにより、通信パケットの送信の態様や送信周期に応じて、通信パケットをより高速、効率的に生成することができる。
本実施形態に係る通信装置1の構成は図1に示す実施形態1と同様である。
図5は、実施形態3に係る通信装置1が実行する通信ヘッダ生成および通信パケット生成処理の一例を示すフローチャートである。実施形態2に係る図3のフローチャートにおいて、S301の前にS501が追加されるとともに、S304をS502で、S307をS503で、それぞれ置き換えており、その他の処理は図3と同様である。
S501で、サブCPU21は、S502で動作モードをどのように選択するかの動作モードの選択条件とS503で選択される動作条件とを設定する。S502で選択される動作モードとは、ヘッダ処理部25を動作させる第1の動作モードまたは第2の動作モードのいずれである。また、S503で選択される動作条件とは、選択条件に一致するモードにおいてS308へ移行する条件、例えば通信パケットの送信タイミング、である。
例えば、通信装置1が外部機器に対して映像のストリーミング転送のように、周期的に通信パケットを送出するような動作状況を想定する。この場合、S501では、S502の分岐で、ストリーミング転送の通信パケットを送信する場合は第2の動作モードで、そうでない場合は第1の動作モードで、ヘッダ処理部25が動作するよう動作モードの選択条件を設定する。また、S503の分岐で、ストリーミング転送に要求される送信周期の所定のタイミングになったか否かを動作条件として設定する。
S301からS303の処理は、図3のS301からS303と同様である。
S502で、サブCPU21は、S501で設定された動作モードの選択条件に従って、動作モードの選択条件に一致するか否かで分岐を行う。すなわち、S501で設定した動作モードの選択条件に一致しない場合はS305へ移行し、S501で設定した動作モードの選択条件に一致する場合はS306へ移行する。
例えば、上記のように通信装置1が外部機器に対して映像のストリーミング転送のように、周期的に通信パケットを送出するような動作状況を想定する。この場合、S303で準備完了された送信データがストリーミング転送に使用される送信データであれば、S501で設定した動作モードの選択条件に一致するため、第2の動作モードを選択してS306へ移行する。一方、ストリーミング転送に使用する送信データでなければ、S501で設定した動作モードの選択条件に一致しないため、第1の動作モードを選択してS305へ移行する。
S305およびS306の処理は、図3のS305およびS306とそれぞれ同様である。
S503で、サブCPU21は、S501で設定された動作条件に一致するか否かで分岐を行う。すなわち、S501で設定された動作条件に一致する場合は、S308へ移行し、S501で設定された動作条件に一致しない場合は、S503に戻って現在の状態を維持する。
例えば、上記のように通信装置1が外部機器に対して映像のストリーミング転送のように周期的に通信パケットを送出するような動作状況を想定する。この場合、ストリーミング転送に要求される送信周期の所定のタイミングになった場合は、S308へ移行する。一方、ストリーミング転送に要求される送信周期の所定のタイミング以外の場合は、S503に戻り、現在の状態を維持して所定のタイミングになるまで待機する。
以上説明したように、本実施形態によれば、第1の動作モードと第2の動作モードとのいずれかを選択する際に、設定された動作状況となったか否かを判定する。すなわち、通信装置1のサブCPU21は、通信ヘッダの生成のタイミングで、サブシステム2に設定された動作状況に応じて、ヘッダ処理部25を第1の動作モードまたは第2の動作モードのいずれかで動作させるよう制御する。
これにより、通信パケットの送信の態様や送信周期に応じて、通信パケットをより高速、効率的に生成することができる。例えば、映像ストリーミング転送時に、通信装置1を図5に示すように制御することで、要求される送信タイミングの周期で、通信パケットをより高速、効率的に生成することができる。
(実施形態4)
以下、実施形態4を、図6を参照して、上記の実施形態1と異なる点についてのみ詳細に説明する。
実施形態1では、第1の動作モードと第2の動作モードとのいずれかを選択する際に、外部機器へ通信パケットとして送信すべき送信データの準備が完了しているか否かで動作モードを決定した。
本実施形態では、第1の動作モードと第2の動作モードとのいずれかを選択する際に、通信パケットを生成および送信する通信プロトコルの種別を判定する。すなわち、通信装置1のサブCPU21は、通信ヘッダの生成のタイミングで、通信パケットを生成および送信する通信プロトコルに応じて、ヘッダ処理部25を第1の動作モードまたは第2の動作モードのいずれかで動作させるよう制御する。
これにより、通信パケットの通信プロトコルに応じて、通信パケットをより高速、効率的に生成することができる。
本実施形態に係る通信装置1の構成は図1に示す実施形態1と同様である。
図6は、実施形態4に係る通信装置1が実行する通信ヘッダ生成および通信パケット生成処理の一例を示すフローチャートである。実施形態1に係る図2のフローチャートにおいて、図2のS202に替えて、S601およびS602を追加しておりその他の処理は図2と同様である。
S601で、サブCPU21は、メインCPU3で実行されるアプリケーションソフトウエアが、外部機器へUDPパケットで送信するか否かを条件として経路選択を行う。具体的には、サブCPU21は、メインメモリ4のアプリケーションバッファ領域に記憶された外部機器へ送信すべき送信データをUDPパケットで送信する場合はS205へ移行する。一方、送信データをUDP以外の通信プロトコルで送信する場合、例えば、送信データをTCPパケットで送信する場合等はS602へ移行する。
S601で、送信データをUDP以外の通信プロトコルで送信する場合、S602で、サブCPU21は、メインCPU3で実行されるアプリケーションソフトウエアが外部機器へ送信するための送信データの準備が完了したか否かを条件として分岐を行う。具体的には、サブCPU21は、メインメモリ4のアプリケーションバッファ領域に外部機器へ送信するための送信データが蓄積完了している場合はS203へ移行し、送信データが蓄積完了していない場合はS602に戻り、現在の状態を維持する。
具体的には、まず、メインCPU3で実行されるアプリケーションソフトウエアが外部機器へ送信するための送信データをメインメモリ4のアプリケーションバッファ領域に準備する。そして、アプリケーションバッファ領域に送信データが所定の量まで蓄積されると、メインCPU3で実行されるアプリケーションソフトウエアは、サブCPU21に対して外部機器へ送信すべき送信データの準備が完了したことを通知する。サブCPU21は、この通知を受け取ったことで、外部機器へ送信すべき送信データの準備が完了したことを判断することができる。
S203からS211の処理は、図2のS203からS211と同様である。
以上説明したように、本実施形態によれば、第1の動作モードと第2の動作モードとのいずれかを選択する際に、通信パケットを生成および送信する通信プロトコルの種別を判定する。具体的には、通信装置1のサブCPU21は、通信ヘッダの生成のタイミングで、通信パケットを生成および送信する通信プロトコルに応じて、例えば通信パケットがUDPパケットである場合には、ヘッダ処理部25を第2の動作モードで動作させるよう制御する。
UDPプロトコルはコネクションレス型であり、TCPプロトコル等と比較して高速かつリアルタイム性に優れる。このため、図6に示す制御を行うことで、UDPパケットを送信する場合は、第2の動作モードで、送信データの準備完了の判断を経ることなく、先行して投機的に通信ヘッダを生成しておくことが可能となる。
これにより、UDPパケットをより高速、効率的に生成することができ、例えば映像のストリーミング転送やマルチキャスト、ブロードキャスト送信において、リアルタイム性をより高めることができる。
(実施形態5)
以下、実施形態5を、図7を参照して、上記の実施形態1と異なる点についてのみ詳細に説明する。
実施形態1では、第1の動作モードと第2の動作モードとのいずれかを選択する際に、外部機器へ通信パケットとして送信すべき送信データの準備が完了しているか否かで動作モードを決定した。
本実施形態では、これに加えて、ヘッダ処理部25が第2の動作モードで動作する際に、通信ヘッダ生成後、サブCPU21からヘッダ処理部25への応答を待ち受ける。そして、サブCPU21から処理継続の指示がなかった場合に、サブCPU21は、ヘッダ処理部25をリセットする。
これにより、通信パケットの生成処理が不要となった場合に、ヘッダ処理部25に通信ヘッダの生成のみを投機的に実行させつつ、負荷の高い通信パケットの生成処理を無駄に実行してリソースを使用することを回避することができる。
本実施形態に係る通信装置1の構成は図1に示す実施形態1と同様である。
図7は、実施形態5に係る通信装置1が実行する通信ヘッダ生成および通信パケット生成処理の一例を示すフローチャートである。実施形態1に係る図2のフローチャートにおいて、S701からS703を追加しておりその他の処理は図2と同様である。
S201からS205、S206からS211の処理は図2に示すS201からS211と同様である。
S701で、サブCPU21は、サブCPU21からヘッダ処理部25に対して応答があったか否かを条件として分岐を行う。具体的には、サブCPU21からヘッダ処理部25に応答があった場合はS702へ移行し、応答がなければS701に戻って現在の状態を維持する。
S701で、サブCPU21からヘッダ処理部25へ応答があった場合、S702で、サブCPU21は、サブCPU21からヘッダ処理部25に対して処理を継続する指示であったか否かを条件として分岐を行う。具体的には、サブCPU21からヘッダ処理部25に対して処理を継続する指示であればS206へ移行し、そうでなければS703へ移行する。
S702で、サブCPU21からヘッダ処理部25の応答が処理を継続する指示でなかった場合、S703で、サブCPU21は、ヘッダ処理部25をリセットして初期状態にする。すなわち、S205において通信ヘッダを生成したもののS207へは移行せず、送信データをローカルメモリ22へ移動する処理、送信データをペイロード分割する処理、および通信パケットを生成する処理に進むことなく、ヘッダ処理部25を初期状態に戻す。
以上説明したように、本実施形態によれば、ヘッダ処理部25が第2の動作モードで動作する際に、通信ヘッダ生成後、サブCPU21からヘッダ処理部25へのに応答を待ち受ける。そして、サブCPU21から処理継続の指示がなかった場合に、サブCPU21は、ヘッダ処理部25をリセットする。
これにより、通信パケットの生成処理が不要となった場合に、ヘッダ処理部25に通信ヘッダの生成のみを投機的に実行させ、負荷の高い通信パケットの生成処理を無駄に実行してリソースを使用することを回避することができる。
<他の実施形態>
なお、上述した各実施形態は、その複数を組み合わせて実現することが可能である。
また、本発明は、上述の実施形態の一部または1以上の機能を実現するプログラムによっても実現可能である。すなわち、そのプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータ(またはCPUやMPU等)における1つ以上のプロセッサがプログラムを読出し実行する処理により実現可能である。また、そのプログラムをコンピュータ可読な記録媒体に記録して提供してもよい。
また、コンピュータが読みだしたプログラムを実行することにより、実施形態の機能が実現されるものに限定されない。例えば、プログラムの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって上記した実施形態の機能が実現されてもよい。
1…通信装置、2…サブシステム、3…メインCPU、4…メインメモリ、5…システムバス、21…サブCPU、22…ローカルメモリ、23…DMAコントローラ、24…通信I/F、25…ヘッダ処理部、26…ローカルバス、27…ネットワーク、221…送信データ、231…DMA転送部、232…チェックサム演算器、251…コア部、251a…通信ヘッダ生成部、251b…レジスタ部、252…内部メモリ、252a…通信ヘッダ

Claims (16)

  1. 通信ヘッダを生成し、生成された前記通信ヘッダを送信すべきデータに付加して通信パケットを生成する生成手段と、
    前記生成手段による前記通信ヘッダの生成に連続して前記生成手段に前記通信パケットを生成させる第1の動作モードと、前記生成手段による前記通信ヘッダの生成の後、前記生成手段の処理を停止させ、送信データの準備が完了した後、前記生成手段の処理を再開させることで前記通信パケットを生成させる第2の動作モードとのいずれか1つを選択し、前記生成手段を選択されたいずれかの1つの動作モードで動作させるよう制御する制御手段と、
    を備えることを特徴とする通信装置。
  2. 前記送信すべきデータを記憶して前記生成手段へ供給する第1のメモリをさらに備え、
    前記制御手段は、前記生成手段により前記通信ヘッダを生成する際に、前記第1のメモリへ前記送信すべきデータを取り込み可能である場合に前記第1の動作モードを選択し、前記第1のメモリへ前記送信すべきデータを取り込み可能でない場合に前記第2の動作モードを選択する、
    ことを特徴とする請求項1に記載の通信装置。
  3. 前記生成手段はレジスタを備え、
    前記制御手段は、選択された動作モードを前記レジスタに設定することにより、前記生成手段を選択されたいずれかの動作モードで動作させる、
    ことを特徴とする請求項1または2に記載の通信装置。
  4. 前記第2の動作モードにおいて、前記生成手段は、前記制御手段へ割り込み信号を通知することにより、前記生成手段を停止したことを通知する、
    ことを特徴とする請求項1から3のいずれか1項に記載の通信装置。
  5. 前記生成手段により生成される前記通信ヘッダを記憶する第2のメモリをさらに備え、
    前記生成手段は、前記制御手段により通知される生成すべき通信パケットの数に基づいて、ひな形となる通信ヘッダを複製し、複製した通信ヘッダを編集することにより、複数の通信ヘッダを生成し、生成された複数の通信ヘッダを前記第2のメモリに記憶する、
    ことを特徴とする請求項1から4のいずれか1項に記載の通信装置。
  6. 前記生成手段は、前記制御手段により通知される各通信パケットのペイロードのサイズに基づいて、前記送信すべきデータを分割して複数のペイロードを取得し、前記複数のペイロードのそれぞれに前記通信ヘッダを付加して、複数の通信パケットを生成する、
    ことを特徴とする請求項1から5のいずれか1項に記載の通信装置。
  7. 前記第1のメモリと前記生成手段との間のデータ転送は、DMA(Direct Memory Access)転送により実行される、
    ことを特徴とする請求項1から6のいずれか1項に記載の通信装置。
  8. 前記通信ヘッダのチェックサム値を演算する演算器をさらに備え、
    前記生成手段は、前記演算器により演算された前記チェックサム値を対応する通信ヘッダに書き込む、
    ことを特徴とする請求項1から7のいずれか1項に記載の通信装置。
  9. 前記生成手段は、ハードウエアアクセラレータにより構成される、
    ことを特徴とする請求項1から8のいずれか1項に記載の通信装置。
  10. 前記生成手段により生成された前記通信パケットを送信する送信手段をさらに備え、
    前記制御手段は、前記生成手段により前記通信ヘッダを生成する際に、前記送信手段の送信バッファに空きがある場合に前記第1の動作モードを選択し、前記送信バッファに空きがない場合に前記第2の動作モードを選択する、
    ことを特徴とする請求項1から9のいずれか1項に記載の通信装置。
  11. 前記第1の動作モードと前記第2の動作モードの間の選択条件を設定する設定手段をさらに備え、
    前記制御手段は、前記設定手段により設定された前記選択条件に基づいて、前記第1の動作モードと前記第2の動作モードとのいずれかを選択する、
    ことを特徴とする請求項1から10のいずれか1項に記載の通信装置。
  12. 前記設定手段は、前記第2の動作モードでの前記通信パケットの送信タイミングをさらに設定し、
    前記制御手段は、前記設定手段により設定された前記送信タイミングに基づいて、前記生成手段に前記通信パケットを生成させる、
    ことを特徴とする請求項11に記載の通信装置。
  13. 前記制御手段は、前記通信パケットがUDP(User Datagram Protocol)パケットである場合に、前記第2の動作モードを選択する、
    ことを特徴とする請求項1から12のいずれか1項に記載の通信装置。
  14. 前記第2の動作モードにおいて、前記生成手段は、前記制御手段から、前記通信ヘッダ生成を継続させる指示を通知された場合、前記通信ヘッダを生成し、前記通信ヘッダ生成を継続させる指示を通知されない場合、前記生成手段をリセットする、
    ことを特徴とする請求項1から13のいずれか1項に記載の通信装置。
  15. 通信パケットを送信する通信装置の制御方法であって、
    通信ヘッダを生成手段に生成させるステップと、
    前記生成手段に生成された前記通信ヘッダを送信すべきデータに付加して通信パケットを生成させるステップと、
    前記通信ヘッダの生成に連続して前記通信パケットを生成させる第1の動作モードと、前記通信ヘッダの生成の後、前記生成手段を停止させ、その後、前記生成手段を起動して前記通信パケットを生成させる第2の動作モードとのいずれかを選択し、前記生成手段を選択されたいずれかの動作モードで動作させるよう制御するステップと、
    を備えることを特徴とする通信装置の制御方法。
  16. コンピュータを、請求項1から14のいずれか1項に記載の通信装置の各手段として機能させるためのプログラム。
JP2017235737A 2017-12-08 2017-12-08 通信装置、通信装置の制御方法およびプログラム Active JP7027145B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09128314A (ja) * 1995-11-06 1997-05-16 Matsushita Electric Ind Co Ltd 通信制御装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
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