(57)【要約】      （修正有）【課題】より低いコストで通信パケットの送信を高速化する。【解決手段】パケットのペイロードを生成する第１生成手段と、パケットの通信ヘッダのひな型となる仮通信ヘッダを生成する第２生成手段と、ペイロードと仮通信ヘッダとに基づいて通信ヘッダを生成する第３生成手段と、パケットを送信する送信手段と、を有する。第３生成手段は、仮通信ヘッダの一部を更新した通信ヘッダを含むパケットを第１記憶部に生成する第１モードと、仮通信ヘッダの一部を更新した通信ヘッダを第２記憶部に生成する第２モードと、を有し、所定の条件に基づいて第１モードと第２モードとの何れの動作モードを使用するかを決定し、送信手段は、第３生成手段が第１モードで動作した場合は第１記憶部に生成されたパケットを送信し、第２モードで動作した場合は第１生成手段により生成されたペイロードと第２記憶部に生成された通信ヘッダとを結合してパケットとして送信する。【選択図】図１
2019153214.tif 000002
【特許請求の範囲】
【請求項１】
データをパケットとして送信する通信装置であって、
パケットのペイロードを生成する第１生成手段と、
パケットの通信ヘッダのひな型となる仮通信ヘッダを生成する第２生成手段と、
前記ペイロードと前記仮通信ヘッダとに基づいて通信ヘッダを生成する第３生成手段と、
前記ペイロードと前記通信ヘッダとを含むパケットを送信する送信手段と、
を有し、
前記第３生成手段は、前記通信ヘッダを生成する動作モードとして、
前記ペイロードと前記仮通信ヘッダとに基づいて該仮通信ヘッダの一部を更新した通信ヘッダを含むパケットを第１記憶部に生成する第１モードと、
前記ペイロードと前記仮通信ヘッダとに基づいて該仮通信ヘッダの一部を更新した通信ヘッダを前記第１記憶部と異なる第２記憶部に生成する第２モードと、
を有し、
前記第３生成手段は、所定の条件に基づいて前記第１モードと前記第２モードとの何れの動作モードを使用するかを決定し、
前記送信手段は、前記第３生成手段が前記第１モードで動作した場合は前記第１記憶部に生成されたパケットを送信し、前記第３生成手段が前記第２モードで動作した場合は前記第１生成手段により生成された前記ペイロードと前記第２記憶部に生成された通信ヘッダとを結合してパケットとして送信する
ことを特徴とする通信装置。
【請求項２】
前記第１記憶部のアクセスレイテンシは前記第２記憶部のアクセスレイテンシよりも大きい
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記第１記憶部の記憶容量は前記第２記憶部の記憶容量よりも大きい
ことを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記第１生成手段は、送信することになるデータが所定長を超える場合、該データを前記所定長を超えないＮ個のペイロードに分割して生成し、
前記第２生成手段は、Ｎ個のペイロードに対応するＮ個の仮通信ヘッダを生成し、
前記第３生成手段は、Ｎ個のペイロードとＮ個の仮通信ヘッダとに基づいてＮ個のパケットを生成する
ことを特徴とする請求項１乃至３の何れか１項に記載の通信装置。
【請求項５】
前記第１記憶部及び前記第２記憶部に記憶されたデータを操作可能なＤＭＡ（Direct Memory Access）コントローラを更に有し、
前記第１生成手段は、前記ＤＭＡコントローラを介して前記ペイロードを生成するよう構成されており、
前記第２生成手段は、前記ＤＭＡコントローラを介して前記仮通信ヘッダを生成するよう構成されており、
前記第１生成手段は、前記ＤＭＡコントローラが前記ペイロードを生成する際のメモリ操作を記述した第１デスクリプタを前記第２記憶部に設定し、
前記第２生成手段は、前記ＤＭＡコントローラが前記仮通信ヘッダを生成する際のメモリ操作を記述した第２デスクリプタを前記第２記憶部に設定する
ことを特徴とする請求項１乃至４の何れか１項に記載の通信装置。
【請求項６】
前記所定の条件は、前記送信手段における通信ヘッダとペイロードとの結合機能の有無を含み、
前記第３生成手段は、前記送信手段が前記結合機能を有していない場合は前記第１モードを使用すると決定する
ことを特徴とする請求項１乃至５の何れか１項に記載の通信装置。
【請求項７】
前記所定の条件は、前記仮通信ヘッダの一部の更新における前記ペイロードの転送必要性の有無を含み、
前記第３生成手段は、前記仮通信ヘッダの一部の更新において前記ペイロードの転送が必要でない場合は前記第２モードを使用すると決定する
ことを特徴とする請求項１乃至５の何れか１項に記載の通信装置。
【請求項８】
前記所定の条件は、通信における再送頻度を含み、
前記第３生成手段は、再送頻度が所定閾値以上である場合は前記第１モードを使用すると決定する
ことを特徴とする請求項１乃至５の何れか１項に記載の通信装置。
【請求項９】
前記パケットは、ＴＣＰ（Transmission Control Protocol）パケットであり、
前記仮通信ヘッダの一部は、ＴＣＰチェックサムフィールドである
ことを特徴とする請求項１乃至８の何れか１項に記載の通信装置。
【請求項１０】
データをパケットとして送信する通信装置の制御方法であって、
パケットのペイロードを生成する第１生成工程と、
パケットの通信ヘッダのひな型となる仮通信ヘッダを生成する第２生成工程と、
前記ペイロードと前記仮通信ヘッダとに基づいて通信ヘッダを生成する第３生成工程と、
前記ペイロードと前記通信ヘッダとを含むパケットを送信する送信工程と、
を含み、
前記第３生成工程では、所定の条件に基づいて、
前記ペイロードと前記仮通信ヘッダとに基づいて該仮通信ヘッダの一部を更新した通信ヘッダを含むパケットを第１記憶部に生成する第１モードと、
前記ペイロードと前記仮通信ヘッダとに基づいて該仮通信ヘッダの一部を更新した通信ヘッダを前記第１記憶部と異なる第２記憶部に生成する第２モードと、
の何れの動作モードを使用するかを決定し、
前記送信工程では、前記第３生成工程において前記第１モードを使用した場合は前記第１記憶部に生成されたパケットを送信し、前記第３生成工程において前記第２モードを使用した場合は前記第１生成工程により生成された前記ペイロードと前記第２記憶部に生成された通信ヘッダとを結合してパケットとして送信する
ことを特徴とする通信装置の制御方法。
【請求項１１】
コンピュータを、請求項１乃至９の何れか１項に記載の通信装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信パケットの送信処理に関するものである。
【背景技術】
【０００２】
通信処理にかかる送信処理の高速化が望まれている。例えば、ＴＣＰ（Transmission Control Protocol）による送信処理の高速化の手法としてＴＳＯ（TCP Segmentation Offload）が利用されている。ＴＳＯは、従来はソフトウェアで行っていた送信データのＴＣＰセグメントへの分割（セグメンテーション）処理を、ハードウェアで実行（オフロード）する技術である。また、特許文献１には、プロトコルスタックからロングパケットを受け取り、ネットワークに適したサイズのショートパケットに分割して送信する技術が開示されている。より詳細には、ロングパケットのヘッダを複数個複製し各ショートパケットのヘッダを作成する手法が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２６６７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、通信に必要なパケットを一括生成する場合、生成するパケット数及びパケットサイズに応じた記憶領域が必要となる。この際、アクセスレイテンシの小さい高速なメモリを使用することが通信の高速化には有利である。しかしながら、このようなメモリは一般に価格コストが高いため、組み込み機器等においては記憶領域のすべてを高速なメモリにより構成することは困難である。したがって、アクセスレイテンシの異なる複数種類のメモリを効率的に使用して通信の高速化を実現することが求められている。
【０００５】
本発明はこのような問題を鑑みてなされたものであり、より低いコストで通信パケットの送信高速化を実現可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述の問題点を解決するため、本発明に係る通信装置は以下の構成を備える。すなわち、データをパケットとして送信する通信装置は、
パケットのペイロードを生成する第１生成手段と、
パケットの通信ヘッダのひな型となる仮通信ヘッダを生成する第２生成手段と、
前記ペイロードと前記仮通信ヘッダとに基づいて通信ヘッダを生成する第３生成手段と、
前記ペイロードと前記通信ヘッダとを含むパケットを送信する送信手段と、
を有し、
前記第３生成手段は、前記通信ヘッダを生成する動作モードとして、
前記ペイロードと前記仮通信ヘッダとに基づいて該仮通信ヘッダの一部を更新した通信ヘッダを含むパケットを第１記憶部に生成する第１モードと、
前記ペイロードと前記仮通信ヘッダとに基づいて該仮通信ヘッダの一部を更新した通信ヘッダを前記第１記憶部と異なる第２記憶部に生成する第２モードと、
を有し、
前記第３生成手段は、所定の条件に基づいて前記第１モードと前記第２モードとの何れの動作モードを使用するかを決定し、
前記送信手段は、前記第３生成手段が前記第１モードで動作した場合は前記第１記憶部に生成されたパケットを送信し、前記第３生成手段が前記第２モードで動作した場合は前記第１生成手段により生成された前記ペイロードと前記第２記憶部に生成された通信ヘッダとを結合してパケットとして送信する。
【発明の効果】
【０００７】
本発明によれば、より低いコストで通信パケットの送信高速化を実現可能とする技術を提供することができる。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態に係る通信装置のブロック図である。
【図２】第１モードの処理シーケンスを示す図である。
【図３】第１モードにおけるＤＭＡ処理におけるデータ転送を説明する図である。
【図４】第２モードの処理シーケンスを示す図である。
【図５】第２モードにおけるＤＭＡ処理におけるデータ転送を説明する図である。
【図６】モード選択のフローチャートである。
【図７】第２実施形態における第２モードの処理シーケンスを示す図である。
【図８】第２実施形態における第２モードのＤＭＡ処理におけるデータ転送を説明する図である。
【発明を実施するための形態】
【０００９】
以下に、図面を参照して、この発明の実施の形態の一例を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
【００１０】
（第１実施形態）
本発明に係る通信装置の第１実施形態として、ＴＣＰ／ＩＰで通信を行う通信装置１００を例に挙げて以下に説明する。特に、アクセスレイテンシと記憶容量の異なる複数のメモリを、所定の条件に応じた動作モードで利用する技術について説明する。
【００１１】
＜装置構成＞
図１は、第１実施形態に係る通信装置１００のブロック図である。通信装置１００は、通信装置１００全体の制御を実行するメインシステム１０１と、通信プロトコル処理を実行するサブシステム１０５と、を含んでいる。そして、メインシステム１０１とサブシステム１０５は、相互に接続されている。
【００１２】
メインシステム１０１は、主制御部１０２、主記憶部１０３、メインバス１０４を含む。主制御部１０２は、アプリケーションソフトウェアを実行し所定の機能を実現すると共に、通信装置１００全体の制御も実行する。主制御部１０２は、アプリケーションソフトウェアを実行する上で必要となるデータやプログラムなどを主記憶部１０３に記憶し、必要に応じてメインバス１０４を介して読み出しや書き込みを行う。主記憶部１０３は、通信装置１００内の各機能ブロックが共有して利用可能なメモリとなっており、主にＤＲＡＭ（Dynamic Random Access Memory）に代表されるような半導体メモリで構成されている。
【００１３】
サブシステム１０５は、通信制御部１０７、補助記憶部１１０、ＤＭＡ（Direct Memory Access）コントローラ１２０、インターフェース１０９、パケット生成部１３０を含む。そして、これらの各機能ブロックはローカルバス１０６を介して相互に接続されている。上述のように、サブシステム１０５は、通信装置における通信プロトコル処理を実行するサブシステムであり、ネットワーク１０８を介した外部機器とのデータ転送処理を担っている。そして、通信プロトコル処理に特化したハードウェアを装備することにより、高速な通信プロトコル処理をメインシステム１０１の主制御部１０２に代わって実行可能に構成されている。
【００１４】
通信制御部１０７は、通信処理全体の処理・制御を実行する。具体的には、ＩＰｖ４（ＩＰバージョン４）、ＩＰｖ６（ＩＰバージョン６）、ＵＤＰ、ＴＣＰの各通信プロトコル処理（送信シーケンス制御や輻輳制御、通信エラー制御等）を行う。通信制御部１０７は、１つのプロセッサとして構成してもよいし、複数のプロセッサによるマルチプロセッサ構成としてもよい。さらに、プロセッサと一部の機能をアクセラレートするハードウェアで構成してもよい。
【００１５】
補助記憶部１１０は、パケット生成部１３０、通信制御部１０７、ＤＭＡコントローラ１２０からアクセス可能（メモリ操作可能）なメモリである。補助記憶部１１０は、主記憶部１０３よりも実装コストが高いがアクセスレイテンシが小さいＳＲＡＭ（Static Random Access Memory）に代表されるような半導体メモリで構成されている。また、補助記憶部１１０は、メインバス１０４とローカルバス１０６を経由して主制御部１０２からもアクセス可能に構成されている。そして、通信プロトコル処理を実行する上で必要となる送受信データや各種の設定情報などを内部に記憶し、必要に応じてローカルバス１０６を介して読み出しや書き込みが行われる。ここでは、補助記憶部１１０は、主記憶部１０３と比較し記憶容量は小さくアクセスレイテンシも小さいものとする。
【００１６】
ＤＭＡコントローラ１２０は、デスクリプタに記載された内容に従って、データ転送元となるメモリ領域からデータ転送先となるメモリ領域へのデータ転送を実行する。ここでデスクリプタとは、データ転送元／転送先それぞれのアドレス情報、及び、データ転送を行う転送サイズの情報が記載されたものである。各種レジスタ／メモリにアクセスへの機能を持つ通信制御部１０７等の機能ブロックが、補助記憶部１１０または主記憶部１０３にデスクリプタを生成し、ＤＭＡコントローラ１２０に対してＤＭＡ転送開始指示を通知する。ＤＭＡ転送開始指示を通知する方法としては、デスクリプタを保存している補助記憶部１１０または主記憶部１０３のアドレス情報を設定する方法がある。当該設定は、ＤＭＡレジスタ部１２１に対して実施される。そして、通知を受けたＤＭＡコントローラ１２０は、主記憶部１０３または補助記憶部１１０に配置されたデスクリプタを読み込み、デスクリプタ記述に従い、主記憶部１０３または補助記憶部１１０に配置されたデータに対してＤＭＡ転送を実行する。これらの処理はＤＭＡ実行部１２２により実行される。
【００１７】
演算部１２３は、ＤＭＡコントローラ１２０により転送されるデータに対して所定の演算を行う。ここでは、ＴＣＰ／ＵＤＰパケットについてＴＣＰ／ＵＤＰのチェックサム演算を行う機能を備えている。また、演算部１２３は、入力されたデータの末尾に演算結果を付加して転送する機能、あるいは演算結果だけを出力する機能を備えている。この２つの機能の選択は、演算レジスタ部１２４に対してアクセス可能な機能ブロックが、選択にかかる情報を設定することにより実現される。
【００１８】
インターフェース１０９は、ＬＡＮ（Local Area Network）に代表されるようなネットワーク１０８とのインターフェースであり、通信における物理層（ＰＨＹ層）とデータリンク層（ＭＡＣ層）の通信制御を担っている。インターフェース１０９は、送受信情報を一時的に蓄積するバッファメモリや、ＤＭＡ転送機能を具備している。そして、インターフェース１０９は、ネットワーク１０８からのデータを補助記憶部１１０または主記憶部１０３に転送する受信機能を持つ。また、補助記憶部１１０または主記憶部１０３に記憶されたパケットをネットワーク１０８に転送する送信機能も具備する。
【００１９】
パケット生成部１３０は、通信プロトコル処理における通信ヘッダの生成処理を実行する処理部である。具体的には、パケット生成部１３０は、通信制御部１０７が実行する通信プロトコル処理における通信ヘッダ生成処理部分を実行する。生成レジスタ部１３３は、パケット生成部１３０の動作にかかる設定情報を記憶する記憶機能と、パケット生成部１３０内の状態を確認するためのステータス情報を表示する出力機能とを有する。また、ステータス情報を表示するだけでなく、割込み信号を使用して外部へ処理の完了を通知する機能も具備している。生成レジスタ部１３３へのレジスタ設定に基づいて、ヘッダ生成部１３２は、生成レジスタ部１３３に入力されたひな形となる通信ヘッダ情報（以下、ひな形ヘッダ）と通信ヘッダ生成のための編集情報に従って通信ヘッダを生成して補助記憶部１１０に記憶する。
【００２０】
さらに、パケット生成部１３０は、ローカルバス１０６に対するアクセス機能も有し、ＤＭＡコントローラ１２０を制御することが可能となっている。ＤＭＡ転送の設定は、デスクリプタ生成部１３５がＤＭＡ転送の内容を記載したデスクリプタを生成して補助記憶部１１０に保存することにより実現される。そして、デスクリプタを保存した補助記憶部１１０のアドレス情報をＤＭＡコントローラ１２０に設定することでＤＭＡ転送は実行される。ＤＭＡコントローラ１２０への実行命令は、ＤＭＡ要求部１３４が行う。実行命令にはチェックサム演算の設定に関する情報も含まれ、当該情報を演算レジスタ部１２４に対して設定する。さらに、生成レジスタ部１３３への設定によって、パケットを送信する際の動作モード（後述する第１モード及び第２モード）を切り替える機能も有している。
【００２１】
＜装置の動作＞
まず、通信装置１００が、パケットを送信する際の動作モードについて説明する。通信装置は、後述する所定の条件に応じて動作モードを切り替えることにより、２種類のメモリ（主記憶部１０３及び補助記憶部１１０）を効率的に使用した高速なパケットの生成を実現する。
【００２２】
・第１モードにおけるパケット生成動作
まず、通信装置１００が、第１モードによりネットワーク１０８を介して外部機器へパケットを送信する際の各処理のシーケンスについて説明する。ここでは通信装置１００が外部機器との間でデータ転送する際に使用する通信プロトコルとしてＴＣＰ／ＩＰプロトコルを例に説明しているが、それ以外の通信プロトコルであってもよい。
【００２３】
図２は、第１モードの処理シーケンスを示す図である。また、図３は、第１モードにおけるＤＭＡ処理におけるデータ転送を説明する図である。なお、以下の説明から理解されるように、第１モードとは、各パケットを主記憶部１０３に生成する動作モードである。すなわち、各パケットの通信ヘッダとペイロードとが、メモリアドレスにおける連続領域に配置される。
【００２４】
Ｓ２００では、主制御部１０２は、ネットワークを通して接続される外部機器に対して送信したいデータグラムの準備の完了通知及び当該データグラムの送信要求を通信制御部１０７に通知する。データグラムは、主制御部１０２で動作するアプリケーションからアクセス可能であるユーザバッファに用意される。なおデータグラムのサイズは、送信したいデータ量により大きくなり得る。そのため、補助記憶部１１０ではなく主記憶部１０３にユーザバッファを用意する。送信要求を受け取った通信制御部１０７は、主制御部１０２より受け取った送信すべきデータグラムを、ユーザバッファから通信処理用のワークバッファにコピーを行う。このコピーは、ＤＭＡコントローラ１２０で実施する。
【００２５】
Ｓ２０１では、通信制御部１０７は、ＤＭＡコントローラ１２０によるデータ転送に必要なデスクリプタを生成する。ここでは、デスクリプタを補助記憶部１１０に生成する形態について説明するが、主記憶部１０３に生成してもよい。Ｓ２０２では、通信制御部１０７は、ＤＭＡコントローラ１２０に対し転送設定を行い、転送要求を行う。
【００２６】
Ｓ２０３では、ＤＭＡコントローラ１２０は、転送要求を受け取ると、デスクリプタを読み込み、当該デスクリプタの指示に従ってデータグラムのコピーを開始する。Ｓ２０４では、ＤＭＡコントローラ１２０は、主記憶部１０３から、データグラムの読み込みを行う。Ｓ２０５では、ＤＭＡコントローラ１２０は、読み込んだデータグラムを複数（Ｎ個）のペイロードに分割して主記憶部１０３に書き込みを行う。なお、この分割処理は主制御部１０２から送信要求されたデータグラムのサイズが、所定長（１パケットで転送できるペイロードサイズ）より大きい場合にのみ実施される。すなわち、データグラムが小さい場合はそのままのサイズでコピーされる。これにより、ユーザバッファからワークバッファへのコピーが完了する。Ｓ２０６では、ＤＭＡコントローラ１２０は、通信制御部１０７に転送完了通知を行う。
【００２７】
上述のＳ２０４〜Ｓ２０５の処理は図３のＳ３０１に示すデータの流れに対応する。主記憶部１０３のユーザバッファに置かれたデータグラム３０１が、複数のペイロード３０２に分割されコピーされた後の状態を示している。
【００２８】
Ｓ２０７では、通信制御部１０７は、転送完了通知を受け取ると。パケット生成部１３０に対してパケット生成のための設定を行い、パケット生成要求を送信する。ここでは、各パケットを主記憶部１０３に生成する第１モードの生成要求を送信する。
【００２９】
Ｓ２０８では、パケット生成部１３０は、ヘッダ生成部１３２を起動し、生成するパケット数に相当する複数（Ｎ個）の通信ヘッダを補助記憶部１１０に生成する。この各通信ヘッダには、Ｅｔｈｅｒｎｅｔ（登録商標）ヘッダ、ＩＰヘッダ、ＴＣＰヘッダが含まれる。ただし、ＴＣＰヘッダに含まれるＴＣＰチェックサムの値に関しては、ペイロードの情報に基づく計算が必要であるため、この時点では完成（確定）していない仮の通信ヘッダ（仮通信ヘッダ）である。
【００３０】
ここで、同一相手（同一ＩＰアドレス）、同一ポートに送る場合は、ひな形ヘッダを利用する方法が有効である。すなわちＩＰアドレスや、各パケットの通信ヘッダとして同一情報であるフィールドは、ひな形からコピーを行う。個別に変更が必要なフィールドは、個別に変更を行う。たとえば、ＩＰｖ４ヘッダに含まれるＩＰｖ４チェックサムは、通信ヘッダごとに計算を行う。また、ＴＣＰヘッダに含まれるシーケンス番号は、パケットのサイズに応じてインクリメントして計算すればよい。
【００３１】
Ｓ２０９では、パケット生成部１３０は、デスクリプタ生成部１３５を起動し、パケット生成に必要なＤＭＡ転送を実施すべく、ＤＭＡコントローラ１２０の制御に必要となるデスクリプタを生成する。ここで生成されるデスクリプタは、パケット生成部１３０が作成するパケット数に応じて複数のデスクリプタで構成されても良い。Ｓ２１０では、パケット生成部１３０は、ＤＭＡコントローラ１２０のＤＭＡレジスタ部１２１、演算レジスタ部１２４に転送設定／演算設定を行い、ＤＭＡ転送要求を送信する。
【００３２】
Ｓ２１１では、ＤＭＡコントローラ１２０は、転送要求を受信すると、デスクリプタの読み込みを行い、当該デスクリプタに従った転送を実施する。Ｓ２１２では、ＤＭＡコントローラ１２０は、補助記憶部１１０に生成された通信ヘッダ（図３のヘッダ３０３）をひとつ読み込む。Ｓ２１３では、ＤＭＡコントローラ１２０は、ワークバッファにコピーされたペイロード（図３のペイロード３０２）をひとつ読み込む。演算部１２３は、読み込まれた通信ヘッダ／ペイロードをもとにＴＣＰチェックサム（図３のＴＣＰチェックサム３０４）の演算を行う。Ｓ２１４では、ＤＭＡコントローラ１２０は、確定したＴＣＰチェックサムを含む通信ヘッダ及びペイロードより構成されるパケット（図３のパケット３０５）を主記憶部１０３に書き戻す。
【００３３】
上述のＳ２１２〜Ｓ２１４の処理は図３のＳ３０２に示すデータの流れに対応する。ＤＭＡコントローラ１２０は、補助記憶部１１０に配置された通信ヘッダ３０３と、主記憶部１０３のワークバッファに配置されたペイロード３０２を読み込む。そして、ＴＣＰチェックサム３０４を含むパケット３０５を主記憶部１０３のワークバッファに書き込む。
【００３４】
Ｓ２１５では、ＤＭＡコントローラ部１２０は、セットされたデスクリプタ全てが完了するまでＳ２１２〜Ｓ２１４の処理を繰り返す。Ｓ２１６では、ＤＭＡコントローラ１２０は、全てのパケットの書き込みが完了すると、転送完了通知をパケット生成部１３０に送信する。Ｓ２１７では、パケット生成部１３０は、転送完了通知を受け取ると、パケット生成完了通知を通信制御部１０７に送信する。
【００３５】
Ｓ２１８では、通信制御部１０７は、パケット生成完了通知を受け取ると、インターフェース１０９に対してパケットの送信を要求する。Ｓ２１９では、インターフェース１０９は、送信要求を受け取ると、パケット生成部１３０が生成したパケットの主記憶部１０３から読み込みを行う。Ｓ２２０では、インターフェース１０９は、読み込んだパケットをネットワークに対して送信する。Ｓ２２１では、インターフェース１０９は、送信完了後、通信制御部１０７に通知を行う。Ｓ２２２では、通信制御部１０７は、通知を受け取ると、主制御部１０２に送信完了通知を行う。
【００３６】
上述のＳ２１８〜Ｓ２２０の処理は図３のＳ３０３に示すデータの流れに対応する。主記憶部１０３のワークバッファに置かれたパケット３０５が、ネットワーク１０８に送信される状態を示している。
【００３７】
以上が、第１モードにおけるパケット生成動作のフローである。上述のように、第１モードでは、送信する各パケットを主記憶部１０３に生成する。すなわち、各パケットの通信ヘッダとペイロードとが、メモリアドレスにおける連続領域に配置される。
【００３８】
・第２モードにおけるパケット生成動作
次に、通信装置１００が、第２モードによりネットワーク１０８を介して外部機器へパケットを送信する際の各処理のシーケンスについて説明する。ここでは通信装置１００が外部機器との間でデータ転送する際に使用する通信プロトコルとしてＴＣＰ／ＩＰプロトコルを例に説明しているが、それ以外の通信プロトコルであってもよい。
【００３９】
図４は、第２モードの処理シーケンスを示す図である。また、図５は、第２モードにおけるＤＭＡ処理におけるデータ転送を説明する図である。なお、以下の説明から理解されるように、第２モードとは、各パケットの通信ヘッダを補助記憶部１１０に生成しペイロードを主記憶部１０３に生成するモードである。すなわち、各パケットの通信ヘッダとペイロードとが、メモリアドレスにおける連続領域に配置されない。
【００４０】
Ｓ４００〜Ｓ４０６までの処理は、第１モード（図２）におけるＳ２００〜Ｓ２０６の処理と同一である。Ｓ４０６までの処理により、図５におけるＳ５０１に示すデータの流れが完了した状態になっている。
【００４１】
Ｓ４０７では、通信制御部１０７は、転送完了通知を受け取ると。パケット生成部１３０に対してパケット生成のための設定を行い、通信ヘッダ生成要求を送信する。ここでは、各パケットにおける通信ヘッダとペイロードと分離して生成する第２モードの生成要求を送信する。
【００４２】
Ｓ４０８では、パケット生成部１３０は、ヘッダ生成部１３２を起動し、生成するパケット数に相当する複数の通信ヘッダを補助記憶部１１０に生成する。この各通信ヘッダには、Ｅｔｈｅｒｎｅｔ（登録商標）ヘッダ、ＩＰヘッダ、ＴＣＰヘッダが含まれる。このうち、ＴＣＰヘッダに含まれるＴＣＰチェックサムの値に関しては、ペイロードの情報に基づく計算が必要であるため、この時点では完成（確定）していない点は上述の第１モード（Ｓ２０８）と同様である。
【００４３】
Ｓ４０９では、パケット生成部１３０は、デスクリプタ生成部１３５を起動し、パケット生成に必要なＤＭＡ転送を実施すべく、ＤＭＡコントローラ１２０の制御に必要となるデスクリプタを生成する。このデスクリプタは、ＤＭＡコントローラへの入力が通信ヘッダ（図５の通信ヘッダ５０３）及びペイロード（図５のペイロード５０２）、出力がＴＣＰチェックサム（図５のＴＣＰチェックサム５０４）となるように設定される。また、ＴＣＰチェックサムの出力先は、Ｓ４０８で作成した各通信ヘッダ内のＴＣＰチェックサムフィールドになるように転送先アドレスを指定する。すなわち、補助記憶部１１０内の通信ヘッダ５０３に対してＴＣＰチェックサムの更新を行うよう構成する。
【００４４】
Ｓ４１０では、パケット生成部１３０は、ＤＭＡコントローラ１２０のＤＭＡレジスタ部１２１及び演算レジスタ部１２４に対して転送設定／演算設定を行い、ＤＭＡ転送要求を送信する。
【００４５】
Ｓ４１１では、ＤＭＡコントローラ１２０は、転送要求を受信すると、デスクリプタの読み込みを行い、当該デスクリプタに従った転送を実施する。Ｓ４１２では、ＤＭＡコントローラ１２０は、補助記憶部に生成された通信ヘッダ（図５の通信ヘッダ５０３）をひとつ読み込む。Ｓ４１３では、ＤＭＡコントローラ１２０は、ワークバッファにコピーされたペイロード（図５のペイロード５０２）をひとつ読み込む。演算部１２３は、読み込まれた通信ヘッダ／ペイロードをもとにＴＣＰチェックサム（図５のＴＣＰチェックサム５０４）の演算を行う。Ｓ４１４では、ＤＭＡコントローラ１２０は、ＴＣＰチェックサムを通信ヘッダ（図５の通信ヘッダ５０３）の所定位置に書き戻す。
【００４６】
上述のＳ４１２〜Ｓ４１４の処理は図５のＳ５０２に示すデータの流れに対応する。ＤＭＡコントローラ１２０は、補助記憶部１１０に配置された通信ヘッダ５０３と、主記憶部１０３のワークバッファに配置されたペイロード５０２を読み込む。そして、ＴＣＰチェックサム５０４を通信ヘッダ５０３の所定位置に書き込む。
【００４７】
Ｓ４１５では、ＤＭＡコントローラ部１２０は、セットされたデスクリプタ全てが完了するまでＳ４１２〜Ｓ４１４の処理を繰り返す。Ｓ４１６では、ＤＭＡコントローラ１２０は、全ての通信ヘッダへのＴＣＰチェックサムの書き込み（更新）が完了すると、転送完了通知をパケット生成部１３０に送信する。Ｓ４１７では、パケット生成部１３０は、転送完了通知を受け取ると、通信ヘッダ生成完了通知を通信制御部１０７に送信する。
【００４８】
Ｓ４１８では、通信制御部１０７は、通信ヘッダ生成完了通知を受け取ると、インターフェース１０９に対してパケットの送信を要求する。Ｓ４１９では、インターフェース１０９は、送信要求を受け取ると、パケット生成部１３０が生成した通信ヘッダを補助記憶部１１０から読み込む。Ｓ４２０では、インターフェース１０９は、Ｓ４１９で読み込んだ通信ヘッダに対応するペイロードを主記憶部１０３から読み込む。Ｓ４２１では、インターフェース１０９は、Ｓ４１９で読み込んだ通信ヘッダとＳ４２０で読み込んだペイロードとを結合させたパケットをネットワークに対して送信する。Ｓ４２２では、インターフェース１０９は、全てのパケットの送信が完了するまでＳ４１９〜Ｓ４２１の処理を繰り返す。Ｓ４２３では、インターフェース１０９は、送信完了後、通信制御部１０７に通知を行う。Ｓ４２４では、通信制御部１０７は、通知を受け取ると、主制御部１０２に送信完了通知を行う。
【００４９】
上述のＳ４１８〜Ｓ２２１の処理は図５のＳ５０３に示すデータの流れに対応する。補助記憶部１１０に置かれた通信ヘッダ５０３と主記憶部１０３のワークバッファに置かれたペイロード５０２が結合され、パケット５０５としてネットワーク１０８に送信される状態を示している。
【００５０】
以上が、第２モードにおけるパケット生成動作のフローである。上述のように、第２モードでは、送信する各パケットの通信ヘッダを補助記憶部１１０に生成しペイロードを主記憶部１０３に生成する。すなわち、各パケットの通信ヘッダとペイロードとが、メモリアドレスにおける連続領域に配置されない。
【００５１】
・各モードの特徴
上述の第１モードと第２モードの特徴について説明する。
【００５２】
第１モードでは、送信部であるインターフェース１０９がパケットを送信するにあたって、既に主記憶部１０３にパケットが完成した状態で格納されている。したがって、インターフェース１０９は、完成したパケットを読み込みネットワークに送信するだけでよい。また、ＴＣＰ等の再送処理が発生しうる通信プロトコルを使用した場合、生成したパケットを記憶容量の潤沢な主記憶部１０３に退避している。よって、パケットの再送が必要になった場合であっても、インターフェース１０９は、主記憶部１０３に記憶されたパケットを元にした再送を行うことが出来る。すなわち、再びパケット生成部１３０を起動してパケットを再生成する必要がない。
【００５３】
第２モードでは、送信部であるインターフェース１０９がパケットを送信するにあたって、主記憶部１０３には完成したパケットは存在しない。そのため、インターフェース１０９は、補助記憶部１１０に格納された通信ヘッダと主記憶部１０３に格納されたペイロードとを結合する結合機能が必要となる。また、通信ヘッダは補助記憶部１１０に格納されるが、補助記憶部１１０の記憶容量は小さいこともあり、後続のパケット生成処理により消去され得る。そのため、パケットの再送が必要となった場合、再びパケット生成部１３０を起動して通信ヘッダ５０３を再生成する必要がある。
【００５４】
また、第１モードでは、主記憶部１０３でパケットを完成させるために、ペイロード５０２のコピー処理が第２モードに比べ１回多く必要になる。したがって、第２モードの方が、通信性能（レイテンシ）および消費電力の側面で第１モードに比べて優位である。
【００５５】
・動作モードの選択
上述の各動作モードの特徴を考慮して、第１実施形態では、図６に示すフローチャートに示される形態で動作モードを選択する。
【００５６】
図６は、通信制御部１０７により実行される、パケット生成部１３０の動作モードを選択するフローチャートである。
【００５７】
Ｓ６０１では、通信制御部１０７は、連続領域にパケットを作成する必要があるか否かを判断する。必要があるときは（Ｓ６０１でＹｅｓ）、Ｓ６０４に進み、他の条件によらず第１モードを選択する。たとえば、インターフェースが通信ヘッダとペイロードを結合する機能を有さない場合に、連続領域にパケットを作成する必要があると判断する。なお、インターフェースが２つ以上あり、分割されたデータを結合する機能の搭載有無の状況が異なる場合、インターフェースが選択された時点で決定される。
【００５８】
一方、必要がないときは（Ｓ６０１でＮｏ）、Ｓ６０３に進む。なお、Ｓ６０３に進む前にＳ６０２を実行する形態については第２実施形態で説明する。
【００５９】
Ｓ６０３では、通信制御部１０７は、通信において再送頻度が高いか否かを判断する。再送頻度がどの程度で高いとするかは予め所定閾値を用意して置き、所定閾値以上であるか否かで判断することができる。なお、現在進行中の通信の再送頻度に基づいて判断してもよいし、過去に実行した通信の再送頻度に基づいて判断してもよい。なお、再送を使用しないプロトコルを用いた通信である場合は、再送頻度が低いとして扱うとよい。
【００６０】
再送頻度が高い場合（Ｓ６０３でＹｅｓ）は、第１モードを選択する。これにより、主記憶部１０３に再送時のためにパケットを保持しておくことにより、速やかな再送が可能となる。一方、再送頻度が低い場合（Ｓ６０３でＮｏ）は、第２モードを選択する。これにより、通信装置１００内でのデータ転送の少ない高速な通信を実現することが可能となる。
【００６１】
以上説明したとおり第１実施形態によれば、アクセスレイテンシの異なる２種類のメモリを利用する通信装置において、再送頻度に基づいて動作モード（パケットの生成方法）を変更する。これにより、アクセスレイテンシの小さいメモリの必要量を抑えつつ、より高速な通信を実現することができる。
【００６２】
（第２実施形態）
第２実施形態では、第２モードにおいて更なる処理効率の向上を可能とする形態について説明する。より具体的には、ＤＭＡコントローラ１２０が実施するデータ転送のデータ量を抑制する動作例について説明する。
【００６３】
なお、装置構成及び第１モードの動作については第１実施形態とほぼ同様であるため説明は省略する。ただし、ＤＭＡコントローラ１２０が、ＴＣＰチェックサムの演算に加え、１６ビットの１の補数和の演算を行うモードを有する。
【００６４】
＜装置の動作＞
・第２モードにおけるパケット生成動作
第２実施形態に係る通信装置１００が、第２モードによりネットワーク１０８を介して外部機器へパケットを送信する際の各処理のシーケンスについて説明する。ここでは通信装置１００が外部機器との間でデータ転送する際に使用する通信プロトコルとしてＴＣＰ／ＩＰプロトコルを例に説明しているが、それ以外の通信プロトコルであってもよい。
【００６５】
図７は、第２実施形態における第２モードの処理シーケンスを示す図である。また、図８は、第２実施形態における第２モードのＤＭＡ処理におけるデータ転送を説明する図である。
【００６６】
Ｓ７００の処理は、第１実施形態の第２モード（図４）におけるＳ４００の処理と同一である。Ｓ７０１では、通信制御部１０７は、データグラムを複数のペイロードに分割すべくＤＭＡコントローラ１２０に必要なデスクリプタを設定する。
【００６７】
Ｓ７０２では、通信制御部１０７は、ＤＭＡコントローラ１２０に対して転送設定／演算設定を行い、転送要求をする。ここで、分割されたペイロードに対して、１６ビット単位で区切った１の補数和演算を実施するように演算命令をセットしておく。これによる演算結果をＴＣＰチェックサム演算の途中結果として保持しておく。
【００６８】
Ｓ７０３では、ＤＭＡコントローラ１２０は、転送要求を受け取ると、デスクリプタを読み込み、当該デスクリプタの指示に従って転送を開始する。Ｓ７０４では、ＤＭＡコントローラ１２０は、主記憶部１０３から、データグラムの読み込みを行う。Ｓ７０５では、ＤＭＡコントローラ１２０は、読み込んだデータグラムを複数のペイロードに分割して主記憶部１０３に書き込む。Ｓ７０６では、ＤＭＡコントローラ１２０は、各ペイロードに対する途中結果を、対応するペイロードに関連付けて主記憶部１０３に書き込む。作成するパケットの数だけＳ７０４〜Ｓ７０６の処理を繰り返し、完了したら、Ｓ７０７では、ＤＭＡコントローラ１２０は、通信制御部１０７に転送完了通知を行う。
【００６９】
上述のＳ７０４〜Ｓ７０６の処理は図８のＳ８０１に示すデータの流れに対応する。主記憶部１０３のユーザバッファに置かれたデータグラム８０１が、複数のペイロード８０２に分割されコピーされている。また、それぞれのペイロード８０２における１６ビット（＝２バイト）の１の補数和演算結果が、途中結果８０３として主記憶部１０３に記憶される。
【００７０】
なお、途中結果８０３は、データサイズが１つあたり２バイトと、ペイロード８０２と比較して小さいことが多い。そのため、途中結果を補助記憶部１１０に記憶しても良いし、ＤＭＡコントローラ１２０のＤＭＡレジスタ部１２１または演算レジスタ部１２４に記憶しても良い。また、生成レジスタ部１３３に途中結果をセットできるレジスタを持たせ、そこにＤＭＡコントローラ１２０が書き込む方式でも良い。
【００７１】
Ｓ７０８では、通信制御部１０７は、転送完了通知を受け取ると。パケット生成部１３０に対してパケット生成のための設定を行い、通信ヘッダ生成要求を送信する。ここでは、各パケットにおける通信ヘッダとペイロードと分離して生成する第２モードの生成要求を送信する。ここで、パケット生成部１３０やＤＭＡコントローラ１２０がＴＣＰチェックサム演算を実行する際に途中結果（図８の途中結果８０３）を使用することが出来るよう、生成レジスタ部１３３に必要な情報を設定しておく。たとえば、途中結果８０３の値を直接設定しても良い。また、ＤＭＡコントローラ１２０の読み込み機能により途中結果８０３を取得する場合には、デスクリプタ生成に必要となる、途中結果８０３が記憶されているアドレスを設定してもよい。以下では、アドレスを設定する方法に関して説明を続ける。
【００７２】
Ｓ７０９では、パケット生成部１３０は、生成要求を受け取ると、通信ヘッダ（ＴＣＰチェックサム未完成）の生成を行う。この処理は、Ｓ４０８と同一である。Ｓ７１０では、パケット生成部１３０は、デスクリプタ生成部１３５を起動し、パケット生成に必要なＤＭＡ転送を実施すべく、ＤＭＡコントローラ１２０の制御に必要となるデスクリプタを生成する。ここで、第１実施形態における第２モードのデスクリプタと異なる点は、データ読み込み用のデスクリプタにおいてペイロードの読み込みが不要である点、及び、途中結果８０３を読み込みが追加で必要である点、である。
【００７３】
Ｓ７１１では、パケット生成部１３０は、ＤＭＡレジスタ部１２１及び演算レジスタ部１２４に転送設定／演算設定を行い、ＤＭＡ転送要求を送信する。第１実施形態における第２モードと異なる点は、演算に利用するデータがペイロードの分だけ少なくなる点である。
【００７４】
Ｓ７１２では、ＤＭＡコントローラ１２０は、転送要求を受信すると、デスクリプタの読み込みを行う。Ｓ７１３では、ＤＭＡコントローラ１２０は、デスクリプタに従った転送を開始する。まず、補助記憶部に生成された通信ヘッダ（図８の通信ヘッダ８０４）をひとつ読み込む。Ｓ７１４では、ＤＭＡコントローラ１２０は、ワークバッファにコピーされた途中結果（図８の途中結果８０３）をひとつ読み込む。演算部１２３は、読み込まれた通信ヘッダ／途中結果をもとにＴＣＰチェックサム（図８のＴＣＰチェックサム８０５）の演算を行う。Ｓ７１５では、ＤＭＡコントローラ１２０は、ＴＣＰチェックサムを通信ヘッダ（図８の通信ヘッダ８０４）の所定の位置に書き戻す。
【００７５】
上述のＳ７１３〜Ｓ７１５の処理は図８のＳ８０２に示すデータの流れに対応する。ＤＭＡコントローラ１２０は、補助記憶部１１０に配置された通信ヘッダ８０４と、主記憶部１０３のワークバッファに配置された途中結果８０３を読み込む。そして、ＴＣＰチェックサム８０５を通信ヘッダ８０４の所定位置に書き込む。
【００７６】
Ｓ７１６では、ＤＭＡコントローラ部１２０は、セットされたデスクリプタ全てが完了するまでＳ７１２〜Ｓ７１５の処理を繰り返す。Ｓ７１７では、ＤＭＡコントローラ１２０は、全ての通信ヘッダへのＴＣＰチェックサムの書き込み（更新）が完了すると、転送完了通知をパケット生成部１３０に送信する。Ｓ７１８では、パケット生成部１３０は、転送完了通知を受け取ると、通信ヘッダ生成完了通知を通信制御部１０７に送信する。
【００７７】
以後、処理はＳ７１９〜７２５と続くが、第１実施形態の第２モード（図４）のＳ４１８〜Ｓ４２４と同一であるため、説明は省略する。
【００７８】
・第２実施形態における第２モードの特徴
第２実施形態の第２モードにおいては、ＴＣＰチェックサムの計算にあたって、ペイロード（一般に、途中結果よりもデータ量が大幅に多い）を読み込む必要が無い。そのため、処理時間や消費電力の側面で第１実施形態の第２モードよりも有利である。ただし、第２実施形態のＤＭＡコントローラ１２０には、ＴＣＰチェックサムの動作モードに加え、途中結果の動作モードが追加で必要となる。そのため、実装規模（ハードウェアで実現する場合にはゲート規模）が大きくなる。
【００７９】
・動作モードの選択
上述の動作モードの特徴を考慮して、第２実施形態では、図６に示すフローチャートに示される形態で動作モードを選択する。特に、Ｓ６０２における分岐について説明を行う。Ｓ６０１、Ｓ６０３〜Ｓ６０５については第１実施形態と同様であるため説明は省略する。
【００８０】
Ｓ６０２では、通信制御部１０７は、ＴＣＰチェックサムの演算にペイロードの転送必要性の有無を判断する。必要である場合はＳ６０３に進み、必要でない場合（途中結果を利用可能である場合）はＳ６０５に進む。
【００８１】
すなわち、ＤＭＡコントローラ１２０が予め途中結果を算出しており、ＴＣＰチェックサムの演算にあたって当該途中結果を利用可能である場合、第２モードを選択する方が有利である。
【００８２】
なお、Ｓ６０２における判断をＳ６０３における判断よりも前段に配置しているのは以下の理由によるものである。すなわち、第１モードではペイロードの転送が必ず発生するため、途中結果を利用することによる優位性が無くなる。よって、途中結果が利用可能な場合は、再送頻度によらず第２モードを選択することが望ましいからである。
【００８３】
以上説明したとおり第２実施形態によれば、ペイロードの転送を低減することにより、より高速な通信を実現することができる。
【００８４】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８５】
１００  通信装置；  １０１  メインシステム；  １０２  主制御部；  １０３  主記憶部；  １０４  メインバス；  １０５  サブシステム；  １０６  ローカルバス；  １０７  通信制御部；  １０８  ネットワーク；  １０９  インターフェース；  １１０  補助記憶部；  １２０  ＤＭＡコントローラ；  １３０  パケット生成部
【図１】
2019153214.tif 000003
【図２】
2019153214.tif 000004
【図３】
2019153214.tif 000005
【図４】
2019153214.tif 000006
【図５】
2019153214.tif 000007
【図６】
2019153214.tif 000008
【図７】
2019153214.tif 000009
【図８】
2019153214.tif 000010