JP7049140B2 - 通信装置およびその制御方法 - Google Patents

通信装置およびその制御方法 Download PDF

Info

Publication number
JP7049140B2
JP7049140B2 JP2018039641A JP2018039641A JP7049140B2 JP 7049140 B2 JP7049140 B2 JP 7049140B2 JP 2018039641 A JP2018039641 A JP 2018039641A JP 2018039641 A JP2018039641 A JP 2018039641A JP 7049140 B2 JP7049140 B2 JP 7049140B2
Authority
JP
Japan
Prior art keywords
communication
storage unit
packet
mode
header
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
JP2018039641A
Other languages
English (en)
Other versions
JP2019153214A (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 JP2018039641A priority Critical patent/JP7049140B2/ja
Publication of JP2019153214A publication Critical patent/JP2019153214A/ja
Application granted granted Critical
Publication of JP7049140B2 publication Critical patent/JP7049140B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)
  • Communication Control (AREA)

Description

本発明は、通信パケットの送信処理に関するものである。
通信処理にかかる送信処理の高速化が望まれている。例えば、TCP(Transmission Control Protocol)による送信処理の高速化の手法としてTSO(TCP Segmentation Offload)が利用されている。TSOは、従来はソフトウェアで行っていた送信データのTCPセグメントへの分割(セグメンテーション)処理を、ハードウェアで実行(オフロード)する技術である。また、特許文献1には、プロトコルスタックからロングパケットを受け取り、ネットワークに適したサイズのショートパケットに分割して送信する技術が開示されている。より詳細には、ロングパケットのヘッダを複数個複製し各ショートパケットのヘッダを作成する手法が提案されている。
特開2007-266759号公報
ところで、通信に必要なパケットを一括生成する場合、生成するパケット数及びパケットサイズに応じた記憶領域が必要となる。この際、アクセスレイテンシの小さい高速なメモリを使用することが通信の高速化には有利である。しかしながら、このようなメモリは一般に価格コストが高いため、組み込み機器等においては記憶領域のすべてを高速なメモリにより構成することは困難である。したがって、アクセスレイテンシの異なる複数種類のメモリを効率的に使用して通信の高速化を実現することが求められている。
本発明はこのような問題を鑑みてなされたものであり、より低いコストで通信パケットの送信高速化を実現可能とする技術を提供することを目的とする。
上述の問題点を解決するため、本発明に係る通信装置は以下の構成を備える。すなわち、データをパケットとして送信する通信装置は、
パケットのペイロードを生成する第1生成手段と、
パケットの通信ヘッダのひな型となる仮通信ヘッダを生成する第2生成手段と、
前記ペイロードと前記仮通信ヘッダとに基づいて通信ヘッダを生成する第3生成手段と、
前記ペイロードと前記通信ヘッダとを含むパケットを送信する送信手段と、
を有し、
前記第3生成手段は、前記通信ヘッダを生成する動作モードとして、
前記ペイロードと前記仮通信ヘッダとに基づいて該仮通信ヘッダの一部を更新した通信ヘッダを含むパケットを第1記憶部に生成し、前記第1記憶部と異なる第2記憶部に生成しない第1モードと、
前記ペイロードと前記仮通信ヘッダとに基づいて該仮通信ヘッダの一部を更新した通信ヘッダを前記第2記憶部に生成し、前記第1記憶部に生成しない第2モードと、
を有し、
前記第3生成手段は、所定の条件に基づいて前記第1モードと前記第2モードとの何れの動作モードを使用するかを決定し、
前記送信手段は、前記第3生成手段が前記第1モードで動作した場合は前記第1記憶部に生成されたパケットを送信し、前記第3生成手段が前記第2モードで動作した場合は前記第1生成手段により生成された前記ペイロードと前記第2記憶部に生成された通信ヘッダとを結合してパケットとして送信する。
本発明によれば、より低いコストで通信パケットの送信高速化を実現可能とする技術を提供することができる。
第1実施形態に係る通信装置のブロック図である。 第1モードの処理シーケンスを示す図である。 第1モードにおけるDMA処理におけるデータ転送を説明する図である。 第2モードの処理シーケンスを示す図である。 第2モードにおけるDMA処理におけるデータ転送を説明する図である。 モード選択のフローチャートである。 第2実施形態における第2モードの処理シーケンスを示す図である。 第2実施形態における第2モードのDMA処理におけるデータ転送を説明する図である。
以下に、図面を参照して、この発明の実施の形態の一例を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
(第1実施形態)
本発明に係る通信装置の第1実施形態として、TCP/IPで通信を行う通信装置100を例に挙げて以下に説明する。特に、アクセスレイテンシと記憶容量の異なる複数のメモリを、所定の条件に応じた動作モードで利用する技術について説明する。
<装置構成>
図1は、第1実施形態に係る通信装置100のブロック図である。通信装置100は、通信装置100全体の制御を実行するメインシステム101と、通信プロトコル処理を実行するサブシステム105と、を含んでいる。そして、メインシステム101とサブシステム105は、相互に接続されている。
メインシステム101は、主制御部102、主記憶部103、メインバス104を含む。主制御部102は、アプリケーションソフトウェアを実行し所定の機能を実現すると共に、通信装置100全体の制御も実行する。主制御部102は、アプリケーションソフトウェアを実行する上で必要となるデータやプログラムなどを主記憶部103に記憶し、必要に応じてメインバス104を介して読み出しや書き込みを行う。主記憶部103は、通信装置100内の各機能ブロックが共有して利用可能なメモリとなっており、主にDRAM(Dynamic Random Access Memory)に代表されるような半導体メモリで構成されている。
サブシステム105は、通信制御部107、補助記憶部110、DMA(Direct Memory Access)コントローラ120、インターフェース109、パケット生成部130を含む。そして、これらの各機能ブロックはローカルバス106を介して相互に接続されている。上述のように、サブシステム105は、通信装置における通信プロトコル処理を実行するサブシステムであり、ネットワーク108を介した外部機器とのデータ転送処理を担っている。そして、通信プロトコル処理に特化したハードウェアを装備することにより、高速な通信プロトコル処理をメインシステム101の主制御部102に代わって実行可能に構成されている。
通信制御部107は、通信処理全体の処理・制御を実行する。具体的には、IPv4(IPバージョン4)、IPv6(IPバージョン6)、UDP、TCPの各通信プロトコル処理(送信シーケンス制御や輻輳制御、通信エラー制御等)を行う。通信制御部107は、1つのプロセッサとして構成してもよいし、複数のプロセッサによるマルチプロセッサ構成としてもよい。さらに、プロセッサと一部の機能をアクセラレートするハードウェアで構成してもよい。
補助記憶部110は、パケット生成部130、通信制御部107、DMAコントローラ120からアクセス可能(メモリ操作可能)なメモリである。補助記憶部110は、主記憶部103よりも実装コストが高いがアクセスレイテンシが小さいSRAM(Static Random Access Memory)に代表されるような半導体メモリで構成されている。また、補助記憶部110は、メインバス104とローカルバス106を経由して主制御部102からもアクセス可能に構成されている。そして、通信プロトコル処理を実行する上で必要となる送受信データや各種の設定情報などを内部に記憶し、必要に応じてローカルバス106を介して読み出しや書き込みが行われる。ここでは、補助記憶部110は、主記憶部103と比較し記憶容量は小さくアクセスレイテンシも小さいものとする。
DMAコントローラ120は、デスクリプタに記載された内容に従って、データ転送元となるメモリ領域からデータ転送先となるメモリ領域へのデータ転送を実行する。ここでデスクリプタとは、データ転送元/転送先それぞれのアドレス情報、及び、データ転送を行う転送サイズの情報が記載されたものである。各種レジスタ/メモリにアクセスへの機能を持つ通信制御部107等の機能ブロックが、補助記憶部110または主記憶部103にデスクリプタを生成し、DMAコントローラ120に対してDMA転送開始指示を通知する。DMA転送開始指示を通知する方法としては、デスクリプタを保存している補助記憶部110または主記憶部103のアドレス情報を設定する方法がある。当該設定は、DMAレジスタ部121に対して実施される。そして、通知を受けたDMAコントローラ120は、主記憶部103または補助記憶部110に配置されたデスクリプタを読み込み、デスクリプタ記述に従い、主記憶部103または補助記憶部110に配置されたデータに対してDMA転送を実行する。これらの処理はDMA実行部122により実行される。
演算部123は、DMAコントローラ120により転送されるデータに対して所定の演算を行う。ここでは、TCP/UDPパケットについてTCP/UDPのチェックサム演算を行う機能を備えている。また、演算部123は、入力されたデータの末尾に演算結果を付加して転送する機能、あるいは演算結果だけを出力する機能を備えている。この2つの機能の選択は、演算レジスタ部124に対してアクセス可能な機能ブロックが、選択にかかる情報を設定することにより実現される。
インターフェース109は、LAN(Local Area Network)に代表されるようなネットワーク108とのインターフェースであり、通信における物理層(PHY層)とデータリンク層(MAC層)の通信制御を担っている。インターフェース109は、送受信情報を一時的に蓄積するバッファメモリや、DMA転送機能を具備している。そして、インターフェース109は、ネットワーク108からのデータを補助記憶部110または主記憶部103に転送する受信機能を持つ。また、補助記憶部110または主記憶部103に記憶されたパケットをネットワーク108に転送する送信機能も具備する。
パケット生成部130は、通信プロトコル処理における通信ヘッダの生成処理を実行する処理部である。具体的には、パケット生成部130は、通信制御部107が実行する通信プロトコル処理における通信ヘッダ生成処理部分を実行する。生成レジスタ部133は、パケット生成部130の動作にかかる設定情報を記憶する記憶機能と、パケット生成部130内の状態を確認するためのステータス情報を表示する出力機能とを有する。また、ステータス情報を表示するだけでなく、割込み信号を使用して外部へ処理の完了を通知する機能も具備している。生成レジスタ部133へのレジスタ設定に基づいて、ヘッダ生成部132は、生成レジスタ部133に入力されたひな形となる通信ヘッダ情報(以下、ひな形ヘッダ)と通信ヘッダ生成のための編集情報に従って通信ヘッダを生成して補助記憶部110に記憶する。
さらに、パケット生成部130は、ローカルバス106に対するアクセス機能も有し、DMAコントローラ120を制御することが可能となっている。DMA転送の設定は、デスクリプタ生成部135がDMA転送の内容を記載したデスクリプタを生成して補助記憶部110に保存することにより実現される。そして、デスクリプタを保存した補助記憶部110のアドレス情報をDMAコントローラ120に設定することでDMA転送は実行される。DMAコントローラ120への実行命令は、DMA要求部134が行う。実行命令にはチェックサム演算の設定に関する情報も含まれ、当該情報を演算レジスタ部124に対して設定する。さらに、生成レジスタ部133への設定によって、パケットを送信する際の動作モード(後述する第1モード及び第2モード)を切り替える機能も有している。
<装置の動作>
まず、通信装置100が、パケットを送信する際の動作モードについて説明する。通信装置は、後述する所定の条件に応じて動作モードを切り替えることにより、2種類のメモリ(主記憶部103及び補助記憶部110)を効率的に使用した高速なパケットの生成を実現する。
・第1モードにおけるパケット生成動作
まず、通信装置100が、第1モードによりネットワーク108を介して外部機器へパケットを送信する際の各処理のシーケンスについて説明する。ここでは通信装置100が外部機器との間でデータ転送する際に使用する通信プロトコルとしてTCP/IPプロトコルを例に説明しているが、それ以外の通信プロトコルであってもよい。
図2は、第1モードの処理シーケンスを示す図である。また、図3は、第1モードにおけるDMA処理におけるデータ転送を説明する図である。なお、以下の説明から理解されるように、第1モードとは、各パケットを主記憶部103に生成する動作モードである。すなわち、各パケットの通信ヘッダとペイロードとが、メモリアドレスにおける連続領域に配置される。
S200では、主制御部102は、ネットワークを通して接続される外部機器に対して送信したいデータグラムの準備の完了通知及び当該データグラムの送信要求を通信制御部107に通知する。データグラムは、主制御部102で動作するアプリケーションからアクセス可能であるユーザバッファに用意される。なおデータグラムのサイズは、送信したいデータ量により大きくなり得る。そのため、補助記憶部110ではなく主記憶部103にユーザバッファを用意する。送信要求を受け取った通信制御部107は、主制御部102より受け取った送信すべきデータグラムを、ユーザバッファから通信処理用のワークバッファにコピーを行う。このコピーは、DMAコントローラ120で実施する。
S201では、通信制御部107は、DMAコントローラ120によるデータ転送に必要なデスクリプタを生成する。ここでは、デスクリプタを補助記憶部110に生成する形態について説明するが、主記憶部103に生成してもよい。S202では、通信制御部107は、DMAコントローラ120に対し転送設定を行い、転送要求を行う。
S203では、DMAコントローラ120は、転送要求を受け取ると、デスクリプタを読み込み、当該デスクリプタの指示に従ってデータグラムのコピーを開始する。S204では、DMAコントローラ120は、主記憶部103から、データグラムの読み込みを行う。S205では、DMAコントローラ120は、読み込んだデータグラムを複数(N個)のペイロードに分割して主記憶部103に書き込みを行う。なお、この分割処理は主制御部102から送信要求されたデータグラムのサイズが、所定長(1パケットで転送できるペイロードサイズ)より大きい場合にのみ実施される。すなわち、データグラムが小さい場合はそのままのサイズでコピーされる。これにより、ユーザバッファからワークバッファへのコピーが完了する。S206では、DMAコントローラ120は、通信制御部107に転送完了通知を行う。
上述のS204~S205の処理は図3のS301に示すデータの流れに対応する。主記憶部103のユーザバッファに置かれたデータグラム301が、複数のペイロード302に分割されコピーされた後の状態を示している。
S207では、通信制御部107は、転送完了通知を受け取ると。パケット生成部130に対してパケット生成のための設定を行い、パケット生成要求を送信する。ここでは、各パケットを主記憶部103に生成する第1モードの生成要求を送信する。
S208では、パケット生成部130は、ヘッダ生成部132を起動し、生成するパケット数に相当する複数(N個)の通信ヘッダを補助記憶部110に生成する。この各通信ヘッダには、Ethernet(登録商標)ヘッダ、IPヘッダ、TCPヘッダが含まれる。ただし、TCPヘッダに含まれるTCPチェックサムの値に関しては、ペイロードの情報に基づく計算が必要であるため、この時点では完成(確定)していない仮の通信ヘッダ(仮通信ヘッダ)である。
ここで、同一相手(同一IPアドレス)、同一ポートに送る場合は、ひな形ヘッダを利用する方法が有効である。すなわちIPアドレスや、各パケットの通信ヘッダとして同一情報であるフィールドは、ひな形からコピーを行う。個別に変更が必要なフィールドは、個別に変更を行う。たとえば、IPv4ヘッダに含まれるIPv4チェックサムは、通信ヘッダごとに計算を行う。また、TCPヘッダに含まれるシーケンス番号は、パケットのサイズに応じてインクリメントして計算すればよい。
S209では、パケット生成部130は、デスクリプタ生成部135を起動し、パケット生成に必要なDMA転送を実施すべく、DMAコントローラ120の制御に必要となるデスクリプタを生成する。ここで生成されるデスクリプタは、パケット生成部130が作成するパケット数に応じて複数のデスクリプタで構成されても良い。S210では、パケット生成部130は、DMAコントローラ120のDMAレジスタ部121、演算レジスタ部124に転送設定/演算設定を行い、DMA転送要求を送信する。
S211では、DMAコントローラ120は、転送要求を受信すると、デスクリプタの読み込みを行い、当該デスクリプタに従った転送を実施する。S212では、DMAコントローラ120は、補助記憶部110に生成された通信ヘッダ(図3のヘッダ303)をひとつ読み込む。S213では、DMAコントローラ120は、ワークバッファにコピーされたペイロード(図3のペイロード302)をひとつ読み込む。演算部123は、読み込まれた通信ヘッダ/ペイロードをもとにTCPチェックサム(図3のTCPチェックサム304)の演算を行う。S214では、DMAコントローラ120は、確定したTCPチェックサムを含む通信ヘッダ及びペイロードより構成されるパケット(図3のパケット305)を主記憶部103に書き戻す。
上述のS212~S214の処理は図3のS302に示すデータの流れに対応する。DMAコントローラ120は、補助記憶部110に配置された通信ヘッダ303と、主記憶部103のワークバッファに配置されたペイロード302を読み込む。そして、TCPチェックサム304を含むパケット305を主記憶部103のワークバッファに書き込む。
S215では、DMAコントローラ部120は、セットされたデスクリプタ全てが完了するまでS212~S214の処理を繰り返す。S216では、DMAコントローラ120は、全てのパケットの書き込みが完了すると、転送完了通知をパケット生成部130に送信する。S217では、パケット生成部130は、転送完了通知を受け取ると、パケット生成完了通知を通信制御部107に送信する。
S218では、通信制御部107は、パケット生成完了通知を受け取ると、インターフェース109に対してパケットの送信を要求する。S219では、インターフェース109は、送信要求を受け取ると、パケット生成部130が生成したパケットの主記憶部103から読み込みを行う。S220では、インターフェース109は、読み込んだパケットをネットワークに対して送信する。S221では、インターフェース109は、送信完了後、通信制御部107に通知を行う。S222では、通信制御部107は、通知を受け取ると、主制御部102に送信完了通知を行う。
上述のS218~S220の処理は図3のS303に示すデータの流れに対応する。主記憶部103のワークバッファに置かれたパケット305が、ネットワーク108に送信される状態を示している。
以上が、第1モードにおけるパケット生成動作のフローである。上述のように、第1モードでは、送信する各パケットを主記憶部103に生成する。すなわち、各パケットの通信ヘッダとペイロードとが、メモリアドレスにおける連続領域に配置される。
・第2モードにおけるパケット生成動作
次に、通信装置100が、第2モードによりネットワーク108を介して外部機器へパケットを送信する際の各処理のシーケンスについて説明する。ここでは通信装置100が外部機器との間でデータ転送する際に使用する通信プロトコルとしてTCP/IPプロトコルを例に説明しているが、それ以外の通信プロトコルであってもよい。
図4は、第2モードの処理シーケンスを示す図である。また、図5は、第2モードにおけるDMA処理におけるデータ転送を説明する図である。なお、以下の説明から理解されるように、第2モードとは、各パケットの通信ヘッダを補助記憶部110に生成しペイロードを主記憶部103に生成するモードである。すなわち、各パケットの通信ヘッダとペイロードとが、メモリアドレスにおける連続領域に配置されない。
S400~S406までの処理は、第1モード(図2)におけるS200~S206の処理と同一である。S406までの処理により、図5におけるS501に示すデータの流れが完了した状態になっている。
S407では、通信制御部107は、転送完了通知を受け取ると。パケット生成部130に対してパケット生成のための設定を行い、通信ヘッダ生成要求を送信する。ここでは、各パケットにおける通信ヘッダとペイロードと分離して生成する第2モードの生成要求を送信する。
S408では、パケット生成部130は、ヘッダ生成部132を起動し、生成するパケット数に相当する複数の通信ヘッダを補助記憶部110に生成する。この各通信ヘッダには、Ethernet(登録商標)ヘッダ、IPヘッダ、TCPヘッダが含まれる。このうち、TCPヘッダに含まれるTCPチェックサムの値に関しては、ペイロードの情報に基づく計算が必要であるため、この時点では完成(確定)していない点は上述の第1モード(S208)と同様である。
S409では、パケット生成部130は、デスクリプタ生成部135を起動し、パケット生成に必要なDMA転送を実施すべく、DMAコントローラ120の制御に必要となるデスクリプタを生成する。このデスクリプタは、DMAコントローラへの入力が通信ヘッダ(図5の通信ヘッダ503)及びペイロード(図5のペイロード502)、出力がTCPチェックサム(図5のTCPチェックサム504)となるように設定される。また、TCPチェックサムの出力先は、S408で作成した各通信ヘッダ内のTCPチェックサムフィールドになるように転送先アドレスを指定する。すなわち、補助記憶部110内の通信ヘッダ503に対してTCPチェックサムの更新を行うよう構成する。
S410では、パケット生成部130は、DMAコントローラ120のDMAレジスタ部121及び演算レジスタ部124に対して転送設定/演算設定を行い、DMA転送要求を送信する。
S411では、DMAコントローラ120は、転送要求を受信すると、デスクリプタの読み込みを行い、当該デスクリプタに従った転送を実施する。S412では、DMAコントローラ120は、補助記憶部に生成された通信ヘッダ(図5の通信ヘッダ503)をひとつ読み込む。S413では、DMAコントローラ120は、ワークバッファにコピーされたペイロード(図5のペイロード502)をひとつ読み込む。演算部123は、読み込まれた通信ヘッダ/ペイロードをもとにTCPチェックサム(図5のTCPチェックサム504)の演算を行う。S414では、DMAコントローラ120は、TCPチェックサムを通信ヘッダ(図5の通信ヘッダ503)の所定位置に書き戻す。
上述のS412~S414の処理は図5のS502に示すデータの流れに対応する。DMAコントローラ120は、補助記憶部110に配置された通信ヘッダ503と、主記憶部103のワークバッファに配置されたペイロード502を読み込む。そして、TCPチェックサム504を通信ヘッダ503の所定位置に書き込む。
S415では、DMAコントローラ部120は、セットされたデスクリプタ全てが完了するまでS412~S414の処理を繰り返す。S416では、DMAコントローラ120は、全ての通信ヘッダへのTCPチェックサムの書き込み(更新)が完了すると、転送完了通知をパケット生成部130に送信する。S417では、パケット生成部130は、転送完了通知を受け取ると、通信ヘッダ生成完了通知を通信制御部107に送信する。
S418では、通信制御部107は、通信ヘッダ生成完了通知を受け取ると、インターフェース109に対してパケットの送信を要求する。S419では、インターフェース109は、送信要求を受け取ると、パケット生成部130が生成した通信ヘッダを補助記憶部110から読み込む。S420では、インターフェース109は、S419で読み込んだ通信ヘッダに対応するペイロードを主記憶部103から読み込む。S421では、インターフェース109は、S419で読み込んだ通信ヘッダとS420で読み込んだペイロードとを結合させたパケットをネットワークに対して送信する。S422では、インターフェース109は、全てのパケットの送信が完了するまでS419~S421の処理を繰り返す。S423では、インターフェース109は、送信完了後、通信制御部107に通知を行う。S424では、通信制御部107は、通知を受け取ると、主制御部102に送信完了通知を行う。
上述のS418~S221の処理は図5のS503に示すデータの流れに対応する。補助記憶部110に置かれた通信ヘッダ503と主記憶部103のワークバッファに置かれたペイロード502が結合され、パケット505としてネットワーク108に送信される状態を示している。
以上が、第2モードにおけるパケット生成動作のフローである。上述のように、第2モードでは、送信する各パケットの通信ヘッダを補助記憶部110に生成しペイロードを主記憶部103に生成する。すなわち、各パケットの通信ヘッダとペイロードとが、メモリアドレスにおける連続領域に配置されない。
・各モードの特徴
上述の第1モードと第2モードの特徴について説明する。
第1モードでは、送信部であるインターフェース109がパケットを送信するにあたって、既に主記憶部103にパケットが完成した状態で格納されている。したがって、インターフェース109は、完成したパケットを読み込みネットワークに送信するだけでよい。また、TCP等の再送処理が発生しうる通信プロトコルを使用した場合、生成したパケットを記憶容量の潤沢な主記憶部103に退避している。よって、パケットの再送が必要になった場合であっても、インターフェース109は、主記憶部103に記憶されたパケットを元にした再送を行うことが出来る。すなわち、再びパケット生成部130を起動してパケットを再生成する必要がない。
第2モードでは、送信部であるインターフェース109がパケットを送信するにあたって、主記憶部103には完成したパケットは存在しない。そのため、インターフェース109は、補助記憶部110に格納された通信ヘッダと主記憶部103に格納されたペイロードとを結合する結合機能が必要となる。また、通信ヘッダは補助記憶部110に格納されるが、補助記憶部110の記憶容量は小さいこともあり、後続のパケット生成処理により消去され得る。そのため、パケットの再送が必要となった場合、再びパケット生成部130を起動して通信ヘッダ503を再生成する必要がある。
また、第1モードでは、主記憶部103でパケットを完成させるために、ペイロード502のコピー処理が第2モードに比べ1回多く必要になる。したがって、第2モードの方が、通信性能(レイテンシ)および消費電力の側面で第1モードに比べて優位である。
・動作モードの選択
上述の各動作モードの特徴を考慮して、第1実施形態では、図6に示すフローチャートに示される形態で動作モードを選択する。
図6は、通信制御部107により実行される、パケット生成部130の動作モードを選択するフローチャートである。
S601では、通信制御部107は、連続領域にパケットを作成する必要があるか否かを判断する。必要があるときは(S601でYes)、S604に進み、他の条件によらず第1モードを選択する。たとえば、インターフェースが通信ヘッダとペイロードを結合する機能を有さない場合に、連続領域にパケットを作成する必要があると判断する。なお、インターフェースが2つ以上あり、分割されたデータを結合する機能の搭載有無の状況が異なる場合、インターフェースが選択された時点で決定される。
一方、必要がないときは(S601でNo)、S603に進む。なお、S603に進む前にS602を実行する形態については第2実施形態で説明する。
S603では、通信制御部107は、通信において再送頻度が高いか否かを判断する。再送頻度がどの程度で高いとするかは予め所定閾値を用意して置き、所定閾値以上であるか否かで判断することができる。なお、現在進行中の通信の再送頻度に基づいて判断してもよいし、過去に実行した通信の再送頻度に基づいて判断してもよい。なお、再送を使用しないプロトコルを用いた通信である場合は、再送頻度が低いとして扱うとよい。
再送頻度が高い場合(S603でYes)は、第1モードを選択する。これにより、主記憶部103に再送時のためにパケットを保持しておくことにより、速やかな再送が可能となる。一方、再送頻度が低い場合(S603でNo)は、第2モードを選択する。これにより、通信装置100内でのデータ転送の少ない高速な通信を実現することが可能となる。
以上説明したとおり第1実施形態によれば、アクセスレイテンシの異なる2種類のメモリを利用する通信装置において、再送頻度に基づいて動作モード(パケットの生成方法)を変更する。これにより、アクセスレイテンシの小さいメモリの必要量を抑えつつ、より高速な通信を実現することができる。
(第2実施形態)
第2実施形態では、第2モードにおいて更なる処理効率の向上を可能とする形態について説明する。より具体的には、DMAコントローラ120が実施するデータ転送のデータ量を抑制する動作例について説明する。
なお、装置構成及び第1モードの動作については第1実施形態とほぼ同様であるため説明は省略する。ただし、DMAコントローラ120が、TCPチェックサムの演算に加え、16ビットの1の補数和の演算を行うモードを有する。
<装置の動作>
・第2モードにおけるパケット生成動作
第2実施形態に係る通信装置100が、第2モードによりネットワーク108を介して外部機器へパケットを送信する際の各処理のシーケンスについて説明する。ここでは通信装置100が外部機器との間でデータ転送する際に使用する通信プロトコルとしてTCP/IPプロトコルを例に説明しているが、それ以外の通信プロトコルであってもよい。
図7は、第2実施形態における第2モードの処理シーケンスを示す図である。また、図8は、第2実施形態における第2モードのDMA処理におけるデータ転送を説明する図である。
S700の処理は、第1実施形態の第2モード(図4)におけるS400の処理と同一である。S701では、通信制御部107は、データグラムを複数のペイロードに分割すべくDMAコントローラ120に必要なデスクリプタを設定する。
S702では、通信制御部107は、DMAコントローラ120に対して転送設定/演算設定を行い、転送要求をする。ここで、分割されたペイロードに対して、16ビット単位で区切った1の補数和演算を実施するように演算命令をセットしておく。これによる演算結果をTCPチェックサム演算の途中結果として保持しておく。
S703では、DMAコントローラ120は、転送要求を受け取ると、デスクリプタを読み込み、当該デスクリプタの指示に従って転送を開始する。S704では、DMAコントローラ120は、主記憶部103から、データグラムの読み込みを行う。S705では、DMAコントローラ120は、読み込んだデータグラムを複数のペイロードに分割して主記憶部103に書き込む。S706では、DMAコントローラ120は、各ペイロードに対する途中結果を、対応するペイロードに関連付けて主記憶部103に書き込む。作成するパケットの数だけS704~S706の処理を繰り返し、完了したら、S707では、DMAコントローラ120は、通信制御部107に転送完了通知を行う。
上述のS704~S706の処理は図8のS801に示すデータの流れに対応する。主記憶部103のユーザバッファに置かれたデータグラム801が、複数のペイロード802に分割されコピーされている。また、それぞれのペイロード802における16ビット(=2バイト)の1の補数和演算結果が、途中結果803として主記憶部103に記憶される。
なお、途中結果803は、データサイズが1つあたり2バイトと、ペイロード802と比較して小さいことが多い。そのため、途中結果を補助記憶部110に記憶しても良いし、DMAコントローラ120のDMAレジスタ部121または演算レジスタ部124に記憶しても良い。また、生成レジスタ部133に途中結果をセットできるレジスタを持たせ、そこにDMAコントローラ120が書き込む方式でも良い。
S708では、通信制御部107は、転送完了通知を受け取ると。パケット生成部130に対してパケット生成のための設定を行い、通信ヘッダ生成要求を送信する。ここでは、各パケットにおける通信ヘッダとペイロードと分離して生成する第2モードの生成要求を送信する。ここで、パケット生成部130やDMAコントローラ120がTCPチェックサム演算を実行する際に途中結果(図8の途中結果803)を使用することが出来るよう、生成レジスタ部133に必要な情報を設定しておく。たとえば、途中結果803の値を直接設定しても良い。また、DMAコントローラ120の読み込み機能により途中結果803を取得する場合には、デスクリプタ生成に必要となる、途中結果803が記憶されているアドレスを設定してもよい。以下では、アドレスを設定する方法に関して説明を続ける。
S709では、パケット生成部130は、生成要求を受け取ると、通信ヘッダ(TCPチェックサム未完成)の生成を行う。この処理は、S408と同一である。S710では、パケット生成部130は、デスクリプタ生成部135を起動し、パケット生成に必要なDMA転送を実施すべく、DMAコントローラ120の制御に必要となるデスクリプタを生成する。ここで、第1実施形態における第2モードのデスクリプタと異なる点は、データ読み込み用のデスクリプタにおいてペイロードの読み込みが不要である点、及び、途中結果803を読み込みが追加で必要である点、である。
S711では、パケット生成部130は、DMAレジスタ部121及び演算レジスタ部124に転送設定/演算設定を行い、DMA転送要求を送信する。第1実施形態における第2モードと異なる点は、演算に利用するデータがペイロードの分だけ少なくなる点である。
S712では、DMAコントローラ120は、転送要求を受信すると、デスクリプタの読み込みを行う。S713では、DMAコントローラ120は、デスクリプタに従った転送を開始する。まず、補助記憶部に生成された通信ヘッダ(図8の通信ヘッダ804)をひとつ読み込む。S714では、DMAコントローラ120は、ワークバッファにコピーされた途中結果(図8の途中結果803)をひとつ読み込む。演算部123は、読み込まれた通信ヘッダ/途中結果をもとにTCPチェックサム(図8のTCPチェックサム805)の演算を行う。S715では、DMAコントローラ120は、TCPチェックサムを通信ヘッダ(図8の通信ヘッダ804)の所定の位置に書き戻す。
上述のS713~S715の処理は図8のS802に示すデータの流れに対応する。DMAコントローラ120は、補助記憶部110に配置された通信ヘッダ804と、主記憶部103のワークバッファに配置された途中結果803を読み込む。そして、TCPチェックサム805を通信ヘッダ804の所定位置に書き込む。
S716では、DMAコントローラ部120は、セットされたデスクリプタ全てが完了するまでS712~S715の処理を繰り返す。S717では、DMAコントローラ120は、全ての通信ヘッダへのTCPチェックサムの書き込み(更新)が完了すると、転送完了通知をパケット生成部130に送信する。S718では、パケット生成部130は、転送完了通知を受け取ると、通信ヘッダ生成完了通知を通信制御部107に送信する。
以後、処理はS719~725と続くが、第1実施形態の第2モード(図4)のS418~S424と同一であるため、説明は省略する。
・第2実施形態における第2モードの特徴
第2実施形態の第2モードにおいては、TCPチェックサムの計算にあたって、ペイロード(一般に、途中結果よりもデータ量が大幅に多い)を読み込む必要が無い。そのため、処理時間や消費電力の側面で第1実施形態の第2モードよりも有利である。ただし、第2実施形態のDMAコントローラ120には、TCPチェックサムの動作モードに加え、途中結果の動作モードが追加で必要となる。そのため、実装規模(ハードウェアで実現する場合にはゲート規模)が大きくなる。
・動作モードの選択
上述の動作モードの特徴を考慮して、第2実施形態では、図6に示すフローチャートに示される形態で動作モードを選択する。特に、S602における分岐について説明を行う。S601、S603~S605については第1実施形態と同様であるため説明は省略する。
S602では、通信制御部107は、TCPチェックサムの演算にペイロードの転送必要性の有無を判断する。必要である場合はS603に進み、必要でない場合(途中結果を利用可能である場合)はS605に進む。
すなわち、DMAコントローラ120が予め途中結果を算出しており、TCPチェックサムの演算にあたって当該途中結果を利用可能である場合、第2モードを選択する方が有利である。
なお、S602における判断をS603における判断よりも前段に配置しているのは以下の理由によるものである。すなわち、第1モードではペイロードの転送が必ず発生するため、途中結果を利用することによる優位性が無くなる。よって、途中結果が利用可能な場合は、再送頻度によらず第2モードを選択することが望ましいからである。
以上説明したとおり第2実施形態によれば、ペイロードの転送を低減することにより、より高速な通信を実現することができる。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100 通信装置; 101 メインシステム; 102 主制御部; 103 主記憶部; 104 メインバス; 105 サブシステム; 106 ローカルバス; 107 通信制御部; 108 ネットワーク; 109 インターフェース; 110 補助記憶部; 120 DMAコントローラ; 130 パケット生成部

Claims (11)

  1. データをパケットとして送信する通信装置であって、
    パケットのペイロードを生成する第1生成手段と、
    パケットの通信ヘッダのひな型となる仮通信ヘッダを生成する第2生成手段と、
    前記ペイロードと前記仮通信ヘッダとに基づいて通信ヘッダを生成する第3生成手段と、
    前記ペイロードと前記通信ヘッダとを含むパケットを送信する送信手段と、
    を有し、
    前記第3生成手段は、前記通信ヘッダを生成する動作モードとして、
    前記ペイロードと前記仮通信ヘッダとに基づいて該仮通信ヘッダの一部を更新した通信ヘッダを含むパケットを第1記憶部に生成し、前記第1記憶部と異なる第2記憶部に生成しない第1モードと、
    前記ペイロードと前記仮通信ヘッダとに基づいて該仮通信ヘッダの一部を更新した通信ヘッダを前記第2記憶部に生成し、前記第1記憶部に生成しない第2モードと、
    を有し、
    前記第3生成手段は、所定の条件に基づいて前記第1モードと前記第2モードとの何れの動作モードを使用するかを決定し、
    前記送信手段は、前記第3生成手段が前記第1モードで動作した場合は前記第1記憶部に生成されたパケットを送信し、前記第3生成手段が前記第2モードで動作した場合は前記第1生成手段により生成された前記ペイロードと前記第2記憶部に生成された通信ヘッダとを結合してパケットとして送信する
    ことを特徴とする通信装置。
  2. 前記第1記憶部のアクセスレイテンシは前記第2記憶部のアクセスレイテンシよりも大きい
    ことを特徴とする請求項1に記載の通信装置。
  3. 前記第1記憶部の記憶容量は前記第2記憶部の記憶容量よりも大きい
    ことを特徴とする請求項1又は2に記載の通信装置。
  4. 前記第1生成手段は、送信することになるデータが所定長を超える場合、該データを前記所定長を超えないN個のペイロードに分割して生成し、
    前記第2生成手段は、N個のペイロードに対応するN個の仮通信ヘッダを生成し、
    前記第3生成手段は、N個のペイロードとN個の仮通信ヘッダとに基づいてN個のパケットを生成する
    ことを特徴とする請求項1乃至3の何れか1項に記載の通信装置。
  5. 前記第1記憶部及び前記第2記憶部に記憶されたデータを操作可能なDMA(Direct Memory Access)コントローラを更に有し、
    前記第1生成手段は、前記DMAコントローラを介して前記ペイロードを生成するよう構成されており、
    前記第生成手段は、前記DMAコントローラを介して前記通信ヘッダを生成するよう構成されており、
    前記第1生成手段は、前記DMAコントローラが前記ペイロードを生成する際のメモリ操作を記述した第1デスクリプタを前記第2記憶部に設定し、
    前記第生成手段は、前記DMAコントローラが前記通信ヘッダを生成する際のメモリ操作を記述した第2デスクリプタを前記第2記憶部に設定する
    ことを特徴とする請求項1乃至4の何れか1項に記載の通信装置。
  6. 前記所定の条件は、前記送信手段における通信ヘッダとペイロードとの結合機能の有無を含み、
    前記第3生成手段は、前記送信手段が前記結合機能を有していない場合は前記第1モードを使用すると決定する
    ことを特徴とする請求項1乃至5の何れか1項に記載の通信装置。
  7. 前記所定の条件は、前記仮通信ヘッダの一部の更新における前記ペイロードの転送必要性の有無を含み、
    前記第3生成手段は、前記仮通信ヘッダの一部の更新において前記ペイロードの転送が必要でない場合は前記第2モードを使用すると決定する
    ことを特徴とする請求項1乃至5の何れか1項に記載の通信装置。
  8. 前記所定の条件は、通信における再送頻度を含み、
    前記第3生成手段は、再送頻度が所定閾値以上である場合は前記第1モードを使用すると決定する
    ことを特徴とする請求項1乃至5の何れか1項に記載の通信装置。
  9. 前記パケットは、TCP(Transmission Control Protocol)パケットであり、
    前記仮通信ヘッダの一部は、TCPチェックサムフィールドである
    ことを特徴とする請求項1乃至8の何れか1項に記載の通信装置。
  10. データをパケットとして送信する通信装置の制御方法であって、
    パケットのペイロードを生成する第1生成工程と、
    パケットの通信ヘッダのひな型となる仮通信ヘッダを生成する第2生成工程と、
    前記ペイロードと前記仮通信ヘッダとに基づいて通信ヘッダを生成する第3生成工程と、
    前記ペイロードと前記通信ヘッダとを含むパケットを送信する送信工程と、
    を含み、
    前記第3生成工程では、所定の条件に基づいて、
    前記ペイロードと前記仮通信ヘッダとに基づいて該仮通信ヘッダの一部を更新した通信ヘッダを含むパケットを第1記憶部に生成し、前記第1記憶部と異なる第2記憶部に生成しない第1モードと、
    前記ペイロードと前記仮通信ヘッダとに基づいて該仮通信ヘッダの一部を更新した通信ヘッダを前記第2記憶部に生成し、前記第1記憶部に生成しない第2モードと、
    の何れの動作モードを使用するかを決定し、
    前記送信工程では、前記第3生成工程において前記第1モードを使用した場合は前記第1記憶部に生成されたパケットを送信し、前記第3生成工程において前記第2モードを使用した場合は前記第1生成工程により生成された前記ペイロードと前記第2記憶部に生成された通信ヘッダとを結合してパケットとして送信する
    ことを特徴とする通信装置の制御方法。
  11. コンピュータを、請求項1乃至9の何れか1項に記載の通信装置の各手段として機能させるためのプログラム。
JP2018039641A 2018-03-06 2018-03-06 通信装置およびその制御方法 Active JP7049140B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018039641A JP7049140B2 (ja) 2018-03-06 2018-03-06 通信装置およびその制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018039641A JP7049140B2 (ja) 2018-03-06 2018-03-06 通信装置およびその制御方法

Publications (2)

Publication Number Publication Date
JP2019153214A JP2019153214A (ja) 2019-09-12
JP7049140B2 true JP7049140B2 (ja) 2022-04-06

Family

ID=67946651

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018039641A Active JP7049140B2 (ja) 2018-03-06 2018-03-06 通信装置およびその制御方法

Country Status (1)

Country Link
JP (1) JP7049140B2 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006081033A (ja) 2004-09-10 2006-03-23 Canon Inc 通信制御装置及び方法
JP2007266759A (ja) 2006-03-27 2007-10-11 Sony Computer Entertainment Inc ネットワーク処理装置、マルチプロセッサシステムおよびネットワークプロトコル処理方法
JP2008109473A (ja) 2006-10-26 2008-05-08 Canon Inc データ処理装置及び方法
JP2009116386A (ja) 2007-11-01 2009-05-28 Sony Corp 情報処理装置および方法、並びにプログラム
JP2013102556A (ja) 2013-03-05 2013-05-23 Renesas Electronics Corp 通信装置及び方法
JP2015207223A (ja) 2014-04-22 2015-11-19 キヤノン株式会社 情報処理装置、情報処理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8732351B1 (en) * 2010-04-07 2014-05-20 Applied Micro Circuits Corporation System and method for packet splitting

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006081033A (ja) 2004-09-10 2006-03-23 Canon Inc 通信制御装置及び方法
JP2007266759A (ja) 2006-03-27 2007-10-11 Sony Computer Entertainment Inc ネットワーク処理装置、マルチプロセッサシステムおよびネットワークプロトコル処理方法
JP2008109473A (ja) 2006-10-26 2008-05-08 Canon Inc データ処理装置及び方法
JP2009116386A (ja) 2007-11-01 2009-05-28 Sony Corp 情報処理装置および方法、並びにプログラム
JP2013102556A (ja) 2013-03-05 2013-05-23 Renesas Electronics Corp 通信装置及び方法
JP2015207223A (ja) 2014-04-22 2015-11-19 キヤノン株式会社 情報処理装置、情報処理方法

Also Published As

Publication number Publication date
JP2019153214A (ja) 2019-09-12

Similar Documents

Publication Publication Date Title
US8848703B2 (en) On-chip router and multi-core system using the same
JP6433146B2 (ja) 情報処理装置、システム、情報処理方法、コンピュータプログラム
JP6600241B2 (ja) 演算装置及び演算方法、通信装置
EP3563534B1 (en) Transferring packets between virtual machines via a direct memory access device
JP2006338538A (ja) ストリームプロセッサ
JP2011150666A (ja) 通信装置、情報処理装置、通信装置の制御方法及び制御プログラム
JP7049140B2 (ja) 通信装置およびその制御方法
US11336297B2 (en) DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium
JP2012226471A (ja) 通信方法および通信サーバ
US11546261B2 (en) Congestion control method and related device
JP7056870B2 (ja) 情報処理装置、情報処理方法及びプログラム
US20160261484A9 (en) Chip multi processor and router for chip multi processor
JP2010198171A (ja) Usbホストコントローラ、及びusbホストコントローラの制御方法
KR100576721B1 (ko) 제로카피(zero-copy) 전송 기능을 구비한네트워크 카드와 서버 및 그 전송 방법
JP7321913B2 (ja) 通信装置、制御方法およびプログラム
US20230062831A1 (en) Communication apparatus and control method thereof, and storage medium
JP7005303B2 (ja) 通信装置、パケット生成装置およびそれらの制御方法
JP7423223B2 (ja) 通信装置
JP2019165423A (ja) 通信装置、通信装置の制御方法およびプログラム
JP2021129162A (ja) 通信装置、制御方法およびプログラム
JP6976786B2 (ja) 通信装置および通信装置の制御方法
JP7027145B2 (ja) 通信装置、通信装置の制御方法およびプログラム
JP7145607B2 (ja) Dma転送装置、dma転送装置の制御方法、および通信装置
JP3933134B2 (ja) 通信システム
JP5594354B2 (ja) 制御装置およびストレージシステム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210721

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210928

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: 20220225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220325

R151 Written notification of patent or utility model registration

Ref document number: 7049140

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151