以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。また、以下においては、本発明の特徴を分かり易くするために、従来の技術と比較して説明する。
<概要>
通信プロトコルにおいては、送受信の対象データをペイロードとして扱い、ペイロードの前にヘッダと呼ばれるプロトコルに則したデータを付加したり、ペイロードの後ろにトレーラと呼ばれるプロトコルに則したデータを付加したりしたデータを、プロトコルに応じて一般にフレームやパケットと称することがあるが、以下の説明においては、プロトコルで区別せずに総じてフレームと称することとする。
図11は、MAC(Media Access Control、データリンク層プロトコル)を含めたTCP/IPフレームのデータ構成を表した図である。TCPで送受信する対象データの一断片をTCPセグメント1105として扱い、TCPプロトコルに則したTCPヘッダ1104をその前に付加し、IPプロトコルに則したIPヘッダ1103とMAC層プロトコルに則したMACヘッダ1102を更にその前に付加し、MAC層プロトコルに則したMACトレーラ1106をそれらの後ろに付加し、それによって得られたMACフレーム1101をTCP/IPフレームとして送受信することを表している。括弧書きで示した数字は、それぞれのデータサイズ(バイト)の一例を表している。
図10は、既存の通信端末のハードウェア構成の一例を示した図である。通信端末1001は、有線か無線かを問わず、通信インタフェース1004を介して図示していないネットワークに接続されている。ネットワークを経由して、通信端末1001が図示していない通信相手端末と通信する場合の動作を以下に簡単に説明する。
メモリ1003内には、OSやユーザアプリケーションの他、通信制御部1007を利用するためのデバイスドライバや、プロトコルを処理するためのプロトコルスタック(プロトコルスイート)等のプログラムデータ(ソフトウェアコード)が格納されており、プロセッサ1005はそれらプログラムデータに基づいて動作する。プロセッサ1005は、前記プログラムデータの働きにより、予め受信フレームを格納する領域をメモリ1003内に確保し、その領域情報(アドレスとサイズ)を通信制御部1007に設定しておく。
通信インタフェース1004に受信フレームの信号が逐次届くと、信号処理部1009はその信号を逐次復調し、復調されたデータをDMA制御部1010へ逐次送る。DMA制御部1010は、プロセッサ1005、メモリ制御部1006、通信制御部1007、周辺制御部1008の間の共有バスのマスタになり、主体的にメモリ1003へのアクセス、いわゆるDMA(Direct Memory Access)を行う部位である。
DMA制御部1010では、予めプロセッサ1005によって通信制御部1007に設定された領域情報に従って、逐次送られてくる受信フレームを、メモリ制御部1006を介してメモリ1003に逐次書き込む。一つの受信フレームの全てのデータを書き込み終えると、通信制御部1007は、プロセッサ1005に受信フレームを格納したことを知らせる。
受信フレームの個数や各受信フレームのデータサイズを知ったプロセッサ1005は、メモリ1003内のプロトコルスタックを逐次読み出しながら、そのプログラムデータに基づく処理により、メモリ1003内の受信フレームのデータを読み出し、プロトコルに則したヘッダやトレーラの解釈に従って各受信フレームに対応した適切な処理を行う。
その処理の例としては、受信フレームから抽出すべきデータを更に上位のプロトコルの処理を行うための適切なメモリ領域へコピーしてその上位のプロトコル処理を行ったり、受信フレームから抽出すべきデータを、周辺制御部1008を介して接続されている通信端末1001内の図示していない磁気ディスク装置等の記憶装置へ書き込んだり、応答フレームを送信したり、等である。
また、送信については、送信対象のデータを、周辺制御部1008を介して接続されている通信端末1001内の図示していない磁気ディスク装置等の記憶装置から読み出す等により、予めメモリ1003内に準備しておく。プロセッサ1005は、メモリ1003内のプロトコルスタックを逐次読み出しながら、そのプログラムデータに基づく処理により、必要に応じて送信対象のデータを逐次読み出し、プロトコルに則したヘッダやトレーラを生成し、必要に応じて送信対象のデータをコピーして、メモリ1003内に送信フレームのデータを準備する。その後、通信制御部1007に対して、送信フレームのデータを格納した領域情報を設定し、送信を指示する。
送信の指示を受けて、DMA制御部1010は、プロセッサ1005によって通信制御部1007に設定された領域情報に従って、メモリ制御部1006を介してメモリ1003から送信フレームのデータを逐次読み出し、そのデータを信号処理部1009へ逐次送る。信号処理部1009は、そのデータを送信に供する信号へと逐次変調し、その信号を通信インタフェース1004に逐次印加することで、図示していないネットワークに送信する。
このような既存の通信端末1001では、上述したように大きく二つ、性能面とコスト面での課題がある。一つ目の観点は、共有バスへのアクセスである。通信端末1001の全体動作におけるメモリ1003に対して発生し得るアクセスとしては、まず、プロセッサ1005あるいは周辺制御部1008による送受信の対象データの参照(読み出し)や準備(書き込み)がある。また、プロセッサ1005によるフレームデータの解釈や生成のアクセス(読み出しや、コピーのための読み出し及び書き込み)と、プロトコルスタックの参照がある。
また、通信制御部1007による受信フレームデータの書き込みと、送信フレームデータの読み出しもある。更に、このような通信端末1001は、プロトコルの処理のみを行っているわけではなく、提供するサービスに応じて、プロトコル処理以外のOSやユーザアプリケーションの処理を行っており、そのためのアクセスもあり得る。すなわち、通信端末1001の全体動作においては、メモリ1003に対して様々なアクセスが発生するため、共有バスの負荷が高くなってしまう。
二つ目の観点は、プロトコルを処理する各部位の機能や処理能力である。このような通信端末1001に採用されるプロセッサ1005は、一般に、提供するサービスのために、条件分岐や整数演算等の汎用的な演算はもちろんのこと、浮動小数点演算やデジタル信号処理等の拡張的な演算まで幅広く実装していることが多く、プロトコル処理のみ行うことを仮定すれば、プロセッサの処理能力を全て有効に使用しているとは言えない。また、プロトコルの一処理を複数の演算によってようやく達成できる等、その機能はプロトコル処理に特化したものではない。
このような観点から、従来技術の通信端末1001は、通信速度(性能)や応答速度(受信に対する応答送信の時間)と、通信端末1001を構成する通信プロトコル処理回路1002やメモリ1003の回路規模や動作周波数等とが最適化されたものではなく、効率的ではない、すなわちコストパフォーマンスが低い状態となっており、改善の余地がある。
そこで本発明の一実施の形態である通信端末における通信プロトコル処理回路は、プロトコル処理をこれに適した回路・構成・動作によって行う。具体的には、通信プロトコル処理回路は、通信インタフェースから逐次受信される信号を逐次変調・デジタルデータ化し、そのデータを逐次解析しつつ小容量な記憶部に逐次格納する。1フレーム分の受信が終わると、その解析結果と通信情報とに基づいて、適切なメモリ領域への書き込みや、通信情報の更新、応答の送信、あるいは無視といった対応を判断する。そして、その判断に応じた処理を行い、記憶部のエントリを廃棄する。
また送信については、通信プロトコル処理回路は、送信フレームの生成のために小容量な記憶部に対象データを準備する際に、対象データに依存するヘッダ等を構成するのに必要な情報を予め累算計算しておく。そして、通信情報から送信を判断すると、通信情報と累算結果からヘッダ等を生成し、小容量な記憶部に格納されたデータを逐次読み出して、送信フレームを逐次生成、送信し、記憶部のエントリを廃棄する。
また、通信プロトコル処理回路における受信に対する応答の送信は、2種類に大別される。一つは、受信の解析結果、あるいはそれに対応した通信情報の更新に基づいて送信を判断し、送信フレームを逐次生成、送信する。他の一つは、受信の解析結果に基づいて、受信の際に格納した記憶部に格納されたデータを逐次読み出して、送信フレームを逐次生成、送信する。すなわち、この場合はデータ読み出しのためのメモリへのアクセスは行わない。
上記のように構成することで、詳細は後述するが、送信のための記憶部は1フレームあるいは2フレームを格納可能な容量で充分となる。また受信のための記憶部は、通信帯域や、通信端末全体として提供する通信サービス、メモリへの共有バスの利用可能領域等に依存するが、これらを考慮しないとすると、2フレームあるいは3フレームを格納可能な容量で充分となる。またこれら記憶部は、比較的低い周波数で入出力の並行動作を実現する。
また、上記のように構成することで、プロトコル処理に関する部位の低周波動作が可能となる。例えば、送受信それぞれ1000Mbpsの物理データリンク帯域の場合、前記の逐次動作を8ビット毎に125MHz、あるいは16ビット毎に62.5MHz、あるいは32ビット毎に31.25MHz、あるいは64ビット毎に15.625MHz等のように行えばよい。
また、本発明の一実施の形態である通信端末における通信プロトコル処理回路は、フレームの解析や生成、判定等の処理を、プロトコル処理に特化した比較や抽出、選択、数値演算、分岐等の回路にて実現することが可能である。
なお、本発明の一実施の形態である通信端末は、TCP/IPプロトコルに対応したインターネットに接続される通信端末に限らず、例えば自動車内で通信し合う電子制御モジュールや、ビルや工場のオートメーションでリモート制御を行い合う制御ノードや、ホストPCとそれに接続されて1対1の通信を行うターゲットデバイス等、TCP/IPプロトコル以外の通信プロトコルを利用する通信端末にも適用可能である。また、TCP/IPプロトコルにおいても、上位層(アプリケーション)のプロトコルまで含めて適用可能である。以下の説明では、対象の通信プロトコルとしてTCP/IPプロトコルを例に挙げて説明するものとする。
<実施の形態1>
図1は、本発明の実施の形態1である通信端末のハードウェア構成の一例を示した図である。通信端末101は、有線か無線かを問わず、通信インタフェース104を介して図示していないネットワークに接続されている。すなわち、有線通信であれば通信ケーブルを介して、無線通信であれば電磁波を介して、ネットワークに接続されている。そして、前記ネットワークを経由して、図示していない通信相手端末と通信する。
通信端末101は、通信プロトコル処理回路102、記憶装置であるメモリ103、通信インタフェース104の各半導体チップや部品を有する構成となっており、更に、提供するサービスに応じて、図示していない磁気ディスク装置等の記憶装置や、スイッチやセンサや表示パネル等を有する構成をとり得る。
通信プロトコル処理回路102は、プロセッサ105、メモリ制御部106、通信処理部107、周辺制御部108を有し、更に、これら各構成部位を接続する共有バスと、図示していない共有バス調停部の各機能ブロックとを有する構成となっている。
通信処理部107は、更に、信号処理部109と、通信インタフェース104によって逐次受信される受信フレームを逐次解析する手段である受信解析部110と、受信フレームを逐次記憶する第一の記憶手段である第一の記憶部111と、第一の記憶部111に記憶された受信フレーム中の受信対象データを逐次読み出してメモリ103に書き込み、また、メモリ103に記憶された送信対象データを読み出す手段であるDMA制御部112と、メモリ103から読み出された送信対象データを逐次累算しながら記憶する第二の記憶手段である第二の記憶部113と、通信情報を管理し、受信解析部110による解析結果と前記通信情報とに基づいて受信フレームに対する対応を判断し、また、前記通信情報に基づいて送信を判断する手段である通信情報管理制御部115と、前記通信情報に基づいて、第一の記憶部111に記憶された受信フレーム中の受信対象データまたは第二の記憶部113に記憶された送信対象データを逐次読み出して送信フレームを逐次生成する手段である送信生成部114の各機能ブロックを有する構成となっている。
図1において、接続を示す矢印は、フレームの主要部分を占めるペイロード(TCPプロトコルの観点ではTCPセグメントであり、例えば、図11における1105の1460バイトの部分)、すなわち実効的な送受信の対象データの断片の流れを示している。一方、受信フレームを解析して得られるデータや、送信フレームを生成するために必要なペイロード以外のデータや、各部位が有機的に働くために受け渡しする制御的な信号も存在するが、図示は省略している。
メモリ103には、OSやユーザアプリケーションの他、通信処理部107を利用するためのデバイスドライバ等のプログラムデータが格納される。また、このプログラムデータが稼動するための作業領域も確保される。なお、このプログラムデータには、通信処理部107が行うプロトコル処理(従来のプロトコルスタックの一部または全て)のためのプログラムデータは含まれない。
プロセッサ105は、メモリ103に格納されたプログラムデータに基づいて動作する。具体的には、通信に際して予め必要となる初期情報の設定、通信処理部107に対する通信の開始や中断の指示、送信対象データの準備、受信対象データのためのメモリ103内の格納領域の準備、受信対象データの処理、通信の中断や終了および例外発生を認識した場合の対応処理等を行う。また、プロトコル処理以外にも、通信端末101全体の制御を行う。
メモリ制御部106は、通信プロトコル処理回路102の外部の記憶装置であるメモリ103に接続され、メモリ103とデータを受け渡しするための機能を備えている。周辺制御部108は、通信端末101が提供するサービスに応じて、図示していない磁気ディスク装置等の記憶装置や、スイッチ、センサ、表示パネル等に接続され、これらと送受信の対象データを受け渡しするための機能を備えている。
通信処理部107は、通信インタフェース104に接続され、受信および受信フレームの解析と受信対象データの断片の抽出、送信判断と送信フレームの生成および送信等、プロトコル処理の一部もしくは全ての機能を担う。また、プロセッサ105から指示される処理に係る終了結果をプロセッサ105に報告する。
次に、本実施の形態の通信端末101における送信手順について説明する。図2は、本実施の形態の通信端末101における送信手順を示したフローチャートである。プロセッサ105は、プログラムデータの処理に基づき、送信すべきことを判断すると、まず最初に、通信端末101自身の情報を通信処理部107に設定する(ステップS201)。また、通信相手端末の情報も通信処理部107に設定する(ステップS202)。
その後、プロセッサ105は、プログラムデータの処理に基づき、送信対象データの格納領域をメモリ103内に確保し(ステップS203)、送信対象データをメモリ103内の格納領域に準備する(ステップS204)。その後、送信対象データの格納領域情報を通信処理部107に設定し(ステップS205)、送信を通信処理部107に指示して(ステップS206)、通信処理部107から送信指示に対する結果報告があるまで待つ(ステップS207)。送信終了の結果報告を受けた後は、通信処理部107への設定を解除したり、メモリ103内の領域を開放したり等の処理を行ってもよい。
ステップS206において送信指示を受けた通信処理部107は、指示通りに、まず通信相手端末と通信するための状態が不完全であると判断すれば、適切な送信フレームを生成して送信し、その応答として受信したフレームを解析して、通信するための状態を完全なものとする。この処理の一例としては、プロセッサ105から通信相手端末のIPアドレスは設定されたものの、通信相手のMACアドレスが未設定の場合に、その情報を調べるためにARPプロトコルに基づくフレームを送受信する処理がある。
他の一例としては、TCPプロトコルにおける能動的な接続開始(TCPクライアント)の手続き、すなわち3ウェイハンドシェークと呼ばれるSYN(同期フラグ)の送信、SYN+ACK(応答フラグ)の受信、ACKの送信を行う処理がある。また他の一例としては、受動的な接続開始(TCPサーバ)の手続き、すなわち通信相手端末からのSYNの受信を待ち、SYN+ACKの送信、ACKの受信を行う処理がある。
そして、通信相手端末に送信対象データを送信するための準備が整うと、通信処理部107は、メモリ103内に格納された送信対象データを、フレーム化した際に1フレームに収まるサイズ毎に断片的に読み出し、各断片毎にヘッダやトレーラを付加して送信フレーム化して送信する。指示された全ての送信対象データの送信が終わると、あるいは、例えば通信相手端末からの受信応答の確認を要するなど、送信後に所定の処理を行う必要があるプロトコルについての送信を指示された場合には、当該処理が終わると、通信処理部107はその結果をプロセッサ105に報告する。
ステップS201やS202、S205、S206などにおいて、通信処理部107に対してプロセッサ105から設定や指示を行い、その内容を保持するために、例えば通信処理部107内部に状態レジスタを備えてもよい。あるいは、メモリ103内の領域を準備し、通信処理部107への設定内容に基づいてプロセッサ105が当該領域を書き換え、通信処理部107が当該領域を読み取るような構成としてもよい。
また、ステップS206において送信指示を受けた通信処理部107での結果報告をプロセッサ105に通知するには、プロセッサ105からの指示内容が終了したことを設定するために、例えば通信処理部107内部に状態レジスタを備えてもよい。あるいは、メモリ103内の領域を準備し、通信処理部107は処理結果に応じて当該領域を書き換え、プロセッサ105が当該領域を読み取るような構成としてもよい。あるいは、通信処理部107は、プロセッサ105からの指示内容が終了したことを示す割り込み要求をプロセッサ105に対して出力する構成としてもよい。
また、通信処理部107からの結果報告は、送信が正常に終了したという通知だけでなく、例えば通信相手端末または中継機器からの例外(エラー)を示すフレームを受信した場合や、通信相手端末からの応答が届かずタイムアウトした場合等、異常終了や例外終了の通知を行ってもよい。その際、当該結果報告を受けたプロセッサ105は、その結果に応じた処理を行うようにすることができる。
なお、S201〜S207の各ステップでの処理は、例えばステップS201においては、通信端末101自身の情報を通信処理部107に設定する際に、以前に同一内容を設定済みであれば再度の設定を省略することも可能であり、同様に他のステップにおいても処理を省略することが可能な場合がある。
次に、本実施の形態の通信端末101における受信手順について説明する。図3は、本実施の形態の通信端末101における受信手順を示したフローチャートである。プロセッサ105は、プログラムデータの処理に基づき、受信すべきことを判断すると、まず最初に、通信端末101自身の情報を通信処理部107に設定する(ステップS301)。また、必要であれば通信相手端末の情報も通信処理部107に設定する(ステップS302)。任意の通信相手端末からの受信を許容するのであれば、ステップS302の処理は省略可能である。
その後、プロセッサ105は、プログラムデータの処理に基づき、受信対象データの格納領域をメモリ103内に確保し(ステップS303)、格納領域の情報を通信処理部107に設定し(ステップS304)、受信を通信処理部107に指示する(ステップS305)。その後、通信処理部107から受信指示に対する結果報告があるまで待つ(ステップS306)。
受信終了の結果報告を受けた後は、プロセッサ105は、プログラムデータの処理に基づき、通信相手端末が適切かどうかを確認すること等が必要であれば、結果報告に含まれる通信相手端末の情報を確認し(ステップS307)、最後に、結果報告に含まれる受信対象データのサイズを確認して、メモリ103内に格納された受信対象データを処理する(ステップS308)。処理の結果、通信処理部107への設定内容やメモリ103内に確保した領域が不要になった場合は、設定の解除、領域の開放を行ってもよい。
前述した送信時の処理における場合と同様に、ステップS305において受信指示を受けた通信処理部107は、指示通りに、まず通信相手端末と通信するための状態が不完全であると判断すれば、適切な送信フレームを生成して送信し、その応答として受信したフレームを解析して、通信するための状態を完全なものとする。
通信相手端末から受信対象データを受信するための準備が整い、受信フレームを受信すると、通信処理部107は、受信フレームを解析して受信対象データの断片を抽出し、メモリ103内の指示された領域に格納する。指示された全ての受信対象データの受信、抽出が終わると、あるいは、例えば通信相手端末に受信したことを応答する必要があるなど、受信後に所定の処理を行う必要があるプロトコルについての受信を指示された場合には、当該処理が終わると、通信処理部107はその結果をプロセッサ105に報告する。
また、通信処理部107からの結果報告は、受信が正常に終了したという通知だけでなく、例えば通信相手端末または中継機器からの例外(エラー)を示すフレームを受信した場合や、通信相手端末からの送信が無くタイムアウトした場合等、異常終了や例外終了の通知を行ってもよい。その際、当該結果報告を受けたプロセッサ105は、ステップS307やステップS308の処理に替えて、その結果に応じた処理を行うようにすることができる。
なお、S301〜S308の各ステップでの処理は、前述した送信時の処理における場合と同様に、処理を省略することが可能な場合がある。
これらの送信手順と受信手順を利用して、TCPプロトコルにおける接続開始、対象データの送受信、接続終了の一連の流れを実施することが可能である。まず接続開始については、プロセッサ105は通信処理部107に対して、通信端末101自身の情報と通信相手端末の情報を設定し、接続開始を指示する。それにより通信処理部107は、接続開始の手続きを行う。それが終わると、通信処理部107はその結果をプロセッサ105に報告する。
次に対象データの送受信については、前述の送信手順と受信手順を実施する。その際、各手順を、送信、受信、送信、受信、と順に実施可能なことはもちろん、送信手順と受信手順を多重化(並行)したり、複数の送信手順や複数の受信手順を多重化したりして実施することも可能である。プロセッサ105は、通信処理部107に対する設定を行いながら、送信や受信の完了の結果報告を受けると、送信完了した対象データの格納領域を開放したり、受信完了した対象データに対する処理を行ったりすることができる。
最後に接続終了については、プロセッサ105は、通信処理部107に接続終了を指示する。これにより通信処理部107は、FIN(終了フラグ)の送信とそれに対するACKの受信、及び通信相手端末からのFINの受信とそれに対するACKの送信を行う。これが終わると、通信処理部107はその結果をプロセッサ105に報告する。
次に、上述した動作によりプロトコル処理を行う通信処理部107の内部の動作について説明する。通信インタフェース104に受信フレームの信号が逐次届くと、信号処理部109は、その信号を逐次復調することで所定のビット数毎に逐次デジタルデータ化し、そのデータを受信解析部110に逐次出力する。
例えば物理データリンク帯域が1000Mbpsであった場合でも、信号処理部109は32ビット毎に31.25MHzで逐次出力する等により、通信処理部107全体は比較的低い動作周波数でプロトコル処理を行うことが可能となる。以降では、32ビット毎に31.25MHzで逐次動作することとして説明する。
図4は、本実施の形態における受信解析部110の内部構成を示した図である。受信解析部110には、信号処理部109から32ビット毎31.25MHzの受信フレームのデータが逐次入力され、また受信フレームの受信の開始や正常終了、正常終了の際の有効なビット数、異常終了といった制御に用いる信号も逐次入力される。これらの入力は、受信解析部110の内部で使用されるのと同時に、そのまま第一の記憶部111へと出力される。
受信フレームの入力の開始を受けて、状態レジスタ402の内容を初期化し、逐次入力される受信フレームや制御信号と状態レジスタ402の内容とに応じて、解析論理401の処理によって状態レジスタ402の内容を31.25MHzで更新していき、受信フレームの受信終了を受けた状態レジスタ402の内容の一部もしくは全てを解析結果として通信情報管理制御部115に出力する。解析論理401は、受信フレーム長のカウントアップや、有効データ長の解釈や、ネットワークアドレスの抽出や、誤り検出等、プロトコルに従った受信フレームの逐次解析を行い、状態レジスタ402はその中間的な結果(受信フレームの受信終了後は最終結果)を保持する。
上述した受信解析部110の処理によって、受信フレームのプロトコルの種別は何であるか、受信フレームに含まれるデータに誤りは無いか等を、フレームの受信完了とともに解釈し終えることが可能である。データに誤りが無いかの検査は、TCPプロトコルにおけるチェックサムのように検査フィールドをヘッダに含み、ヘッダとペイロードを検査の対象としたものも、MAC層プロトコルにおけるCRC(Cyclic Redundancy Check)あるいはFCS(Frame Check Sequence)のように検査フィールドをトレーラに含み、フレーム全体を検査の対象としたものも、受信解析部110で検査することが可能である。
受信解析部110は、通信情報管理制御部115が保持している通信端末101自身のネットワークアドレスや通信相手端末のネットワークアドレス、通信状態等の情報を通信情報管理制御部115から入力され、その情報と受信フレームに含まれる情報とを比較し、比較した結果を通信情報管理制御部115に出力するように動作することも可能である。
第一の記憶部111は、内部に記憶装置を有し、記憶容量と管理の方式に依存するが、記憶領域に空きがあると判断する間は、受信解析部110から受ける受信フレームのデータを内部の記憶装置に逐次格納していく。記憶領域が溢れると判断した際には、その事実を通信情報管理制御部115に通知し、その受信フレームが格納された領域を開放して、その受信フレームの受信を無効とする。受信フレームの最後まで無事に格納されると、通信情報管理制御部115から開放する指示があるまで、格納した受信フレームのデータを記憶しておく。
その後、第一の記憶部111は、通信情報管理制御部115から指示があると、その指示通りに、1フレームに収まるサイズに断片化されて格納されている受信対象データをDMA制御部112へ32ビット毎31.25MHzで逐次的に出力する。また、送信生成部114へのデータ出力の指示があると、その指示通りに、まず格納されている受信対象データ(そのまま応答送信対象データとなる)を送信生成部114へ出力し、送信生成部114からデータ送りの指示があると、その指示通りに、次のデータを送信生成部114へ32ビット毎31.25MHzで逐次的に出力する。
また第一の記憶部111は、受信解析部110からのデータ入力と、DMA制御部112へのデータ出力と、送信生成部114へのデータ出力の3種類のアクセスとを、それぞれ32ビット毎31.25MHzで並行処理するように動作する。全てのアクセスを並行処理するように動作してもよいし、2種類のデータ出力については並行処理できないとしても、少なくともデータ入力とデータ出力とは並行処理するように動作する。
これを実現可能とするには、例えば、物理的に別々であり、それぞれサイクル遅延無しで31.25MHzで動作する、少なくとも3個の32ビット幅の記憶装置を設け、これら3種類のアクセスが重ならないように管理して受信フレームを格納すればよい。また、サイクル遅延無しの93.75MHzで動作する1個の32ビット幅の記憶装置を設けて、これら3種類のアクセスがサイクル毎に巡回的に行われるようにしてもよい。また、双方向ポートを持ち、入出力のアクセスを同時に行うことが可能な32ビット幅の記憶装置を設けてもよい。
第一の記憶部111が一時点で記憶すべき受信フレームのデータ長(容量)は、最大フレーム長の2もしくは3個分で充分である。説明の便宜のために、ここでは全てのフレームが最大フレーム長であることを前提とする。
例えば、通信処理部107が、フレームの主要部分を占めるペイロードを応答送信にも用いることが必要な受信フレームAを受信し、その受信完了の直前に他の送信フレームxの送信を並行して開始したと仮定する。この受信フレームAの受信完了直後に次の受信フレームBの受信が始まると、受信フレームBの受信と送信フレームxの送信とは近い時間で完了する。その直後に最初の受信フレームAに対する応答である送信フレームaの送信を始め、さらに次の受信フレームCの受信が並行して始まった場合、受信フレームを格納するための第一の記憶部111は、最初の受信フレームAと次の受信フレームBと現在受信中の受信フレームCを同時に格納するために、フレーム3個分の記憶容量が必要となる。
最初の受信フレームAに対する応答のためにすでに出力済みのデータの領域を逐次把握しておき、この領域に上書きして受信フレームCのデータを逐次入力することで、フレーム約2個分の記憶容量とすることも可能であるが、この場合はフレーム3個分の記憶容量を持つ場合と比べて管理方式がやや複雑となる。なお、同時に把握しておく受信フレームの最大個数は、ここで述べた容量に限らず、最長ではないフレームが連続して届くことを考慮して適切な個数を備えることも可能である。
DMA制御部112は、共有バスのマスタになり、主体的にメモリ103へのアクセス、いわゆるDMAを行い、共有バスと第一の記憶部111や第二の記憶部113との間のアクセスにおけるデータサイズや動作周波数の違いを緩衝するために充分なサイズの小容量バッファを備えている。
DMA制御部112は、通信情報管理制御部115から指示があると、第一の記憶部111から逐次入力される32ビット毎31.25MHzの受信対象データの断片を受け取り、通信情報管理制御部115から受けた指示内容におけるメモリ103の領域情報に従って、そのデータを断片的、逐次的に、メモリ制御部106を介してメモリ103に格納する。指示通りにメモリ103へのデータ格納が終わると、その事実を通信情報管理制御部115に報告する。
またDMA制御部112は、通信情報管理制御部115から指示があると、通信情報管理制御部115から受けた指示内容におけるメモリ103の領域情報に従って、断片的、逐次的に、メモリ制御部106を介してメモリ103から、フレーム化した際に1フレームに収まるサイズの送信対象データの断片を読み出し、32ビット毎31.25MHzで第二の記憶部113にそのデータを出力する。指示通りに第二の記憶部113へのデータ出力が終わると、その事実を通信情報管理制御部115に報告する。
第二の記憶部113は、内部に記憶装置を有し、送信対象データの断片をDMA制御部112から受け取り、そのデータを逐次累算しながら内部の記憶装置に逐次格納する。この累算は、送信対象データの断片の内容に依存するヘッダ情報をフレームの生成開始前に予め計算しておくために行う。このヘッダ情報の一例は、TCPプロトコルにおけるチェックサムであり、この場合は送信対象データの断片、すなわちペイロード部分のチェックサム値を予め計算しておく。
第二の記憶部113は、その累算結果を送信生成部114へ出力する。また、内部の記憶装置に格納中の送信対象データを送信生成部114へ32ビット毎31.25MHzで逐次的に出力する。送信対象データの断片や累算結果を送信生成部114へ出力し終えると、これらのデータが格納されている領域を開放する。
第二の記憶部113は、DMA制御部112からのデータ入力と、送信生成部114へのデータ出力の2種類のアクセスを、それぞれ32ビット毎31.25MHzで並行処理するように動作する。これを実現可能とするには、例えば、物理的に別々であり、それぞれサイクル遅延無しで31.25MHzで動作する、少なくとも2個の32ビット幅の記憶装置を設け、これら2種類のアクセスが重ならないように管理して送信対象データの断片を格納すればよい。また、サイクル遅延無しの62.5MHzで動作する1個の32ビット幅の記憶装置を設けて、これら2種類のアクセスがサイクル毎に交互に行われるようにしてもよい。また、双方向ポートを持ち、入出力のアクセスを同時に行うことが可能な32ビット幅の記憶装置を設けてもよい。
第二の記憶部113が一時点で記憶すべき送信フレームを生成するためのデータ長は、最大フレーム長(もしくは最大ペイロード長)の1もしくは2個分で充分である。前述の受信時の場合と同様に、ここでは全てのフレームが最大フレーム長であることを前提とする。第二の記憶部113に入力中の送信対象データの断片Aと、第二の記憶部113から出力中の送信対象データの断片Bとを並行処理するためには、第二の記憶部113は、送信対象データの断片Aと断片Bとを同時に格納するために、最大フレーム長2個分の容量で充分である。
また、送信対象データの断片Bにおける未出力データを上書きしない範囲で、送信対象データの断片Aの入力を管理することによって、最大フレーム長のおよそ1個分の容量で実現することも可能である。この場合は最大フレーム長の2個分の記憶容量を持つ場合と比べて管理方式がやや複雑となる。
図5は、本実施の形態における送信生成部114の内部構成を示した図である。送信生成部114は、通信情報管理制御部115から指示があると、状態レジスタ502を初期化する。その後、通信情報管理制御部115から与えられる情報と、第一の記憶部111から32ビット毎31.25MHzで逐次的に受け取るデータと、第二の記憶部113から与えられる累算結果と32ビット毎31.25MHzで逐次的に受け取るデータと、プロトコルに従い設定すべき固定値や内部で逐次的に計算して得られる結果とを生成論理501で選択しながら、状態レジスタ502の内容を31.25MHzで更新していく。
内部で逐次的に行う計算とは、例えば、送信フレームの作業中位置のカウントアップや、第二の記憶部113から与えられる送信対象データの断片の累算結果と通信情報管理制御部115から与えられる情報とから計算されるTCPヘッダに埋め込むべきチェックサム値の逐次計算や、MACトレーラに埋め込むべきCRCの逐次計算等である。
送信生成部114は、信号処理部109に対して、送信フレームの開始や終了、終了の際の有効なビット数といった制御信号も逐次出力する。こうして、送信フレームのデータを32ビット毎31.25MHzで逐次生成し、信号処理部109に逐次出力する。
また送信生成部114は、第一の記憶部111に格納されている受信対象データ(応答送信対象データとなる)を受け取るタイミングには第一の記憶部111にデータ送りの指示を与え、第二の記憶部113に格納されている送信対象データの断片を受け取るタイミングには第二の記憶部113にデータ送りの指示を逐次与える。通信制御情報管理部115から指示された送信フレームの逐次生成と逐次出力が終わると、通信情報管理制御部115にその事実を報告する。
送信生成部114から逐次出力される32ビット毎31.25MHzの送信フレームのデータを受けた信号処理部109は、物理データリンクのプロトコルに従った送信に供する信号へと逐次変調し、その信号を通信インタフェース104に印加する。この動作により、たとえ物理データリンク帯域が1000Mbpsであったとしても、32ビット毎に31.25MHzで逐次入力を受け取る等により、通信処理部107全体は比較的低い動作周波数でプロトコル処理を行うことが可能となる。
通信情報管理制御部115は、例えば、タイマと、通信に関する様々な情報を格納するテーブル等の記憶装置と、受信フレームに対応する処理を判断して各部位に指示する論理と、送信を判断して各部位に指示する論理と、プロセッサ105による設定を保持する手段と、プロセッサ105に通信状態を報告する手段とから構成される。通信情報管理制御部115内部のタイマは、プロトコル処理で利用してタイムアウト等を判定するためのもので、所定の時間毎にカウントアップして時刻を計測する。
通信情報管理制御部115内部の記憶装置は、通信端末101自身のMACアドレスやIPアドレス、通信相手端末のMACアドレスやIPアドレス、通信端末101自身と通信相手端末のUDPやTCPのポート番号、TCPにおけるシーケンス番号や接続の状態、最後に処理した時刻、メモリ103における送信や受信の対象データの格納領域のアドレスとサイズ、それらの情報が有効か無効かを示すフラグ等を管理する。
これらの情報は、プロセッサ105から設定されたり、受信フレームの解析結果を反映したり、各部位への指示やそれに対する完了の報告を反映したりすることによって更新される。またこれらの情報の変化に対して必要に応じて、通信情報管理制御部115はプロセッサ105に状態を報告する。
上記記憶装置として、通信機器に利用されることが多い、格納データとの一致検索を行うCAM(Content Addressable Memory)と、汎用的な、アドレスを指定してアクセスを行うRAM(Random Access Memory)とを併用して構成すれば合理的である。すなわち、例えば多くの保持内容の中から受信フレームの解析結果に一致するものを検索する用途にCAMを用いたり、それから得られる識別子をRAMアクセスのアドレスに利用したり、一致検索が不要な他の情報の保持にはRAMを用いたりすることができる。
通信情報管理制御部115内部の、受信フレームに対応する処理を判断して各部位に指示する論理は、受信解析部110から受け取る受信フレームの解析結果と第一の記憶部111から受け取る受信フレームの格納結果と通信情報管理制御部115内部の記憶装置が保持する情報とタイマの値とから、対応する処理を判断して各部位に指示する。
受信フレームに対応する処理として、ペイロード部分を受信対象データの断片としてメモリ103に格納することが必要と判断した場合は、第一の記憶部111が格納している受信フレームの読み出しオフセットと、サイズと、DMA制御部112への出力指示とを第一の記憶部111に与える。さらに、メモリ103内における受信対象データの断片を格納すべき領域情報と、メモリ103への書き込み指示とをDMA制御部112に与える。
また、受信フレームに対応する処理として、応答送信が必要で、そのフレームの生成には受信フレームのペイロード部分の参照が必要と判断した場合は、第一の記憶部111が格納している受信フレームの読み出しオフセットと、サイズと、送信生成部114への出力指示とを第一の記憶部111に与える。さらに、第一の記憶部111から送られるデータサイズと、応答送信の指示とを送信生成部114に与える。
また、受信フレームに対応する処理として、第一の記憶部111に受信フレームを格納する必要がないと判断した場合、または受信フレームに対応する処理が完了した場合には、当該受信フレームが格納されている領域を開放するように第一の記憶部111に指示を与える。
通信情報管理制御部115内部の、送信を判断して各部位に指示する論理は、通信情報管理制御部115内部の記憶装置が保持する情報とタイマの値とから、送信を判断して各部位に指示する。
送信対象データの断片すなわちペイロード部分を、メモリ103から読み出して送信を行うと判断した場合は、メモリ103内に格納されている送信対象データの断片の領域情報と、メモリ103からの読み出し指示とをDMA制御部112に与える。さらに、送信対象データの断片のサイズと、送信の指示とを送信生成部114に与える。また、ペイロード部分をメモリ103から読み出さない送信が必要であると判断した場合は、送信の指示を送信生成部114に与える。
これら通信情報管理制御部115内部の受信フレームに対応する処理や送信の判断、指示の論理は、例えば、通信情報管理制御部115内部の記憶装置の内容や、他の部位から送られる情報を演算対象として、プロトコルの処理で行われる必要な演算のみを行う演算回路を設け、さらに状態レジスタを設けて状態遷移を管理する論理として構成することができる。
なお、受信解析部110の説明で前述した通り、通信情報管理制御部115は、内部の記憶装置に保持している通信端末101自身や通信相手端末のネットワークアドレス、通信状態等、それらの情報の一部を、解析の助けになるように受信解析部110に与えるように構成してもよい。
また以上では、通信情報を通信情報管理制御部115内部の記憶装置に格納すると説明したが、これに限らず、通信情報管理制御部115内部には通信情報の全てを格納するための記憶装置を備えずに、前述のCAMやRAMといった記憶装置を通信プロトコル処理回路102の外部に備えて、通信情報管理制御部115はこれらの記憶装置にアクセスして通信情報の一部を格納し、管理する構成としてもよい。
なお、ICMPプロトコルにおけるチェックサムのようにペイロード部分の累算を必要とする応答送信の際には、受信解析部110は、受信フレームの逐次解析中にペイロード部分を累算し、累算結果を解析結果とともに通信情報管理制御部115に渡し、通信情報管理制御部115は送信生成部114に累算結果とともに応答送信指示を与え、送信生成部114はペイロード部分を参照することなしにその値を利用してヘッダに埋め込むべき情報を準備すればよい。
以上に説明した各部位の動作によって、通信端末101の中でデータがどのように流れるのかを以下に説明する。図6は、本実施の形態における受信時の各部位間のデータの流れを時系列で示した図である。ここでは、メモリ103に格納すべき受信対象データの断片であるペイロードを有する受信フレーム1(601)、受信フレーム2(605)、受信フレーム3(606)を連続的に受信した場合を示している。
通信インタフェース104には、時点1から時点2にかけて受信フレーム1(601)のヘッダ602が到達し、その後、時点2から時点3にかけてペイロード603が到達し、その後、時点3から時点4にかけてトレーラ604がそれぞれ到達することで、受信フレーム1(601)の信号が到達する。また同様に、時点5から時点6にかけて受信フレーム2(605)の信号が到達し、時点7から受信フレーム3(606)の信号の到達が始まる。
各受信フレームの間の時間、すなわち時点4から時点5、および時点6から時点7の間は、物理データリンクのプロトコルに従って必要となる、プリアンブルやフレーム開始のデリミタやギャップ等、物理データリンク層より上の層では解釈する必要がない制御信号が存在していることを示している。
信号処理部109は、通信インタフェース104に時点1から時点4にかけて到達する受信フレーム1(601)の信号を、逐次デジタルデータ化して、時点8から時点9にかけて受信フレーム1(607)のデータを逐次出力する。受信解析部110は、信号処理部109からの受信フレーム1(607)のデータを受けて、時点10から時点11にかけて受信フレーム1(608)のデータを出力する。
第一の記憶部111は、受信解析部110からの受信フレーム1(608)を受けて、時点12から時点13にかけて受信フレーム1(609)のヘッダ610を、その後、時点13から時点14にかけてペイロード611を、その後、時点14から時点15にかけてトレーラ612をそれぞれ格納することで、受信フレーム1(609)のデータを格納する。また、受信フレーム1(601)の後に通信インタフェースに到達する受信フレーム2(605)や受信フレーム3(606)の信号についても、各部位で同様に処理され、第一の記憶部111は、時点16から時点19にかけて受信フレーム2(614)を格納し、時点20から受信フレーム3(616)の格納を始める。
受信解析部110は、時点11で受信フレーム1(608)の解析を終えると、前述の各部位の動作についての説明の通り、解析結果を通信情報管理制御部115に報告し、その解析結果を受けた通信情報管理制御部115は、ペイロード部分を受信対象データの断片としてメモリ103に格納することが必要と判断し、第一の記憶部111とDMA制御部112にそれを指示する。
その指示を受けて、時点17から、第一の記憶部111からDMA制御部112へとペイロード611のデータが渡され始める。このデータを受けて、DMA制御部112は、時点21から断片化された書き込みデータ1の最初の断片617の共有バスへの出力を始める。その後同様に、時点22から次の断片618の共有バスへの出力を始め、時点23に最後の断片619の共有バスへの出力を終えることで、ペイロード部分のメモリ103への格納を行う。
断片化された書き込みデータ1(断片617〜断片619)、すなわち受信フレーム1のペイロードであり受信対象データの断片が、DMA制御部112からの出力で断片化されているのは、共有バスの動作周波数とそのビット幅の積(共有バスの最大帯域)が31.25MHzと32ビットの積、すなわち1000Mbpsに比べて大きく、実際に共有バスを利用したサイクルにおける利用帯域も1000Mbpsと比べて大きかったことを表している。
そのため、DMA制御部112内部にある小容量バッファが空に近くなって、あるいはDMA制御部112が共有バスアクセスに適した所定のデータ長の書き込みを終えて、メモリ103への書き込みを中断し、次の断片的な書き込みを開始できるだけの十分なデータがDMA制御部112内部にある小容量バッファに蓄積されるのを待つことにより、この断片化が発生している。
それぞれの断片化されたデータの出力の間隔に時間的なずれがあるのは、共有バスには通信処理部107以外にプロセッサ105や周辺制御部108も接続されており、それら他部位からのものも含めて時間的に様々な共有バスへのアクセス要求が競合することがあり、競合した際には共有バス調停部が調停して各部位に順にアクセスの権利を与えるため、通信処理部107は、共有バスへのアクセスの権利を得てからアクセスしていることを示している。
通信情報管理制御部115は、時点23に、断片化された書き込みデータ1の最後の断片619のメモリ103への書き込みを終えたDMA制御部112からその完了の報告を受けて、対応する処理を完了した受信フレーム1(609)が格納されている領域を開放するように第一の記憶部111に指示する。第一の記憶部111は、その指示を受けて、時点18に受信フレーム1(609)が格納されている領域を開放している。
受信フレーム1(609)に対する処理と同様に、第一の記憶部111に格納された受信フレーム2(614)や受信フレーム3(616)も同様に処理される。すなわち、例えば受信フレーム2のペイロード615、すなわち受信対象データの断片は、時点24から断片化された書き込みデータ2の最初の断片620としてDMA制御部112から出力が開始され、メモリ103に書き込まれる。
なお、図6において、第一の記憶部111の記憶データを、受信フレーム1(609)と受信フレーム2(614)と受信フレーム3(616)とを縦に並べて表しているが、これは説明の便宜上、データが逐次記憶されていく状況を示すために模式的に表したものであり、第一の記憶部111の容量を意味しているものではない。すなわち、受信フレーム3(616)の格納は、時点18において受信フレーム1(609)が格納されている領域が開放された以降であるため、受信フレーム1(609)を格納していた領域を受信フレーム3(616)の格納に用いることが可能である。
また、時点11(あるいは時点15)の後で、受信解析部110が解析結果を通信情報管理制御部115に報告した後は、第一の記憶部111は、受信フレーム1(609)のヘッダ610及びトレーラ612が格納されていた領域を開放することが可能である。また、時点17からのDMA制御部112への逐次出力が終わったペイロード613が格納されていた領域も逐次開放することが可能であるから、これらの領域を並行して行われている受信フレーム2(614)の格納に用いるようにすることも可能である。
図7は、本実施の形態における送信時の各部位間のデータの流れを時系列で示した図である。ここでは、メモリ103から読み出してペイロードとしてフレーム化して送信すべき3種類の判断が連続的に発生した場合を示している。
前述の各部位の動作についての説明の通り、通信情報管理制御部115は、保持する情報から対象データを送信する必要があると判断すると、メモリ103内に格納されている未送信の送信対象データの先頭アドレスと、そのサイズとペイロードとして送信可能な最大データ長とのうち小さい方の値とをDMA制御部112に与え、さらにメモリ103からの読み出し指示を与える。
指示を受けたDMA制御部112は、時点31に、断片化された送信対象データ1の最初の断片701のメモリ103からの受け取りを開始し、時点32に、次の断片702の受け取りを開始し、時点33に、最後の断片703の受け取りを完了している。DMA制御部112は、メモリ103から読み出した送信対象データの断片1(706)を、時点36から時点37にかけて第二の記憶部113に逐次出力し、その後、通信情報管理制御部115にその完了を報告する。
DMA制御部112からの出力完了の報告を受けると、通信情報管理制御部115は、同様に断片化された送信対象データ2をメモリ103内から読み出す指示をDMA制御部112に与える。指示を受けたDMA制御部112は、第二の記憶部113と協調しながら第二の記憶部113の記憶装置の格納領域に空きがある間は、メモリ103から断片化された送信対象データ2を読み出すように動き、時点34に、断片化された送信対象データ2の最初の断片704のメモリ103からの受け取りを開始する。
DMA制御部112から送信対象データの断片1(706)を逐次渡される第二の記憶部113は、時点38から時点39にかけてそのデータを送信対象データの断片1(707)として逐次格納する、また格納と合わせてそのデータを累算する。この累算結果は、送信生成部114に対して出力する。この累算は、ペイロード内容に依存するヘッダ情報をフレームの生成開始前に予め計算しておくために行っている。また同様に、時点40から時点42にかけて送信対象データの断片2(708)を逐次格納し、格納と合わせてそのデータを累算する。
時点37の後でDMA制御部112から指示内容の完了報告を受けた通信情報管理制御部115は、送信生成部114に対して、第二の記憶部113に格納されているデータをペイロードとし、第二の記憶部113が計算した累算結果を利用してヘッダ情報の一部を構成するようにして送信することを指示する。
その指示を受けた送信生成部114は、通信情報管理制御部115から与えられる情報及び第二の記憶部113から与えられる累算結果を利用して、時点46から時点47にかけて、送信フレーム1(712)のヘッダ713を逐次生成する。次に時点47から時点48にかけて、第二の記憶部113から送信対象データの断片1(707)を逐次受け取り、それをペイロード714として逐次出力する。また時点48から時点49にかけて、送信生成部114内部で逐次計算したトレーラ715を逐次出力し、送信フレーム1(712)の逐次出力を完了する。その後、通信情報管理制御部115に指示内容の完了を報告する。
時点41から時点44にかけて、送信対象データの断片1(707)を全て出力し終えた第二の記憶部113は、当該データが格納されている領域を開放し、当該データに対する累算結果をリセットする。送信生成部114から送信フレーム1(712)を逐次受け取る信号処理部109は、当該データを送信に供する信号へと逐次変調して、時点51から時点52にかけて通信インタフェース104に印加し、送信フレーム1(716)としてネットワークに送出する。
時点49の後で、送信生成部114から指示内容の完了報告を受けた通信情報管理制御部115は、送信対象データの断片2(708)についても同様に、送信生成部114に対して、第二の記憶部113に格納されているデータをペイロードとし、第二の記憶部113が計算した累算結果を利用してヘッダ情報の一部を構成するようにして、送信フレーム2(717)を生成して送信することを指示する。
指示を受けた送信生成部114は、通信情報管理制御部115から与えられる情報及び第二の記憶部113から与えられる送信対象データの断片2(708)と累算結果とを利用して、時点50から送信フレーム2(717)の逐次出力を始め、信号処理部109はそれをネットワークに送出する等、各部位は上述した送信フレーム1での処理と同様に動く。
また、通信情報管理制御部115は、同様に送信対象データ3の断片をメモリ103内から読み出す指示をDMA制御部112に与え、それを受けたDMA制御部112は、第二の記憶部113と協調しながら第二の記憶部113の記憶装置の格納領域に空きがある間は、メモリ103から送信対象データ3の断片を読み出すように動き、時点35から断片化された送信対象データ3の最初の断片705のメモリ103からの受け取りを開始する等、各部位は上述した送信フレーム1での処理と同様に動く。
なお、図7において、第二の記憶部113の記憶データを、送信対象データの断片1(707)と送信対象データの断片2(708)と送信対象データの断片3(710)とを縦に並べて表しているが、これは説明の便宜上、データが逐次記憶されていく状況を示すために模式的に表したものであり、第二の記憶部113の容量を意味しているものではない。すなわち、送信対象データの断片3(710)の格納は、送信対象データの断片1(707)が格納されている領域が開放された以降であるため、送信対象データの断片1(707)を格納していた領域を送信対象データの断片3(710)の格納に用いることが可能である。
また、時点41からの送信生成部114への逐次出力が終わった送信対象データの断片1(709)が格納されていた領域も逐次開放することが可能であるから、この領域を並行して行われている送信対象データの断片2(708)の格納に用いるように実施することも可能である。
図8は、本実施の形態における受信に対する応答送信時の各部位間のデータの流れを時系列で示した図である。ここでは、受信に対する応答送信を要するフレームとして、一つは送信フレームの生成にペイロード部分が必要と判断される受信フレーム4(801)、もう一つは送信フレームの生成にペイロード部分の参照は不要と判断される受信フレーム5(802)を、連続的に受信した場合を示している。これは例えば、前者はICMPプロトコルにおけるEcho Requestの受信に対するEcho Replyの送信、後者はTCPプロトコルにおける接続開始のSYNの受信に対するSYN+ACKの送信に対応する。
通信インタフェース104には、時点61から受信フレーム4(801)の信号が、また時点62から受信フレーム5(802)の信号がそれぞれ到達する。受信解析部110は、信号処理部109を介してこれらのデータを受け取って解析し、時点63の後で受信フレーム4(803)の解析結果を、また時点64の後で受信フレーム5(804)の解析結果をそれぞれ通信情報管理制御部115に報告する。また、第一の記憶部111は、時点65から時点66にかけて受信フレーム1(805)を、時点67から時点69にかけて受信フレーム5(807)を格納する。
時点63の後で、受信解析部110から受信フレーム4(803)の解析結果を受けた通信情報管理制御部115は、ペイロード部分が送信フレームの生成に必要と判断し、第一の記憶部111と送信生成部114にこれを指示する。また、時点64の後で受信フレーム5(804)の解析結果を受けた通信情報管理制御部115は、第一の記憶部111に受信フレーム5(807)を記憶しておくことは不要と判断し、第一の記憶部111にこれを指示するとともに、通信情報管理制御部115が管理している通信情報を更新する。この指示を受けた第一の記憶部111は、時点70で受信フレーム5(807)が格納されている領域を開放している。
一方、受信フレーム4(805)のペイロード(806)から送信フレームを生成する指示を受けた送信生成部114は、通信情報管理制御部115から与えられる情報を利用して、時点72から時点73にかけて送信フレーム4(808)のヘッダ809を逐次生成する。次に、時点73から時点74にかけて、第一の記憶部111から受信フレーム4(805)のペイロード806を逐次受け取り、それをペイロード810として逐次出力する。また時点74から時点75にかけて、送信生成部114内部で逐次計算したトレーラ811を逐次出力し、送信フレーム4(808)の逐次出力を完了する。その後、通信情報管理制御部115に指示内容の完了を報告する。
この完了の報告の後、通信情報管理制御部115は、対応する処理を完了した受信フレーム4(805)が格納されている領域を開放するように第一の記憶部111に指示し、第一の記憶部111は、その指示を受けて時点71に受信フレーム4(805)が格納されている領域を開放している。
また通信情報管理制御部115は、受信解析部110によって時点64で解析された受信フレーム5(804)に対する応答送信を、更新した通信情報やタイマ値から判断し、送信生成部114にそれを指示する。指示を受けた送信生成部114は、通信情報管理制御部115から与えられる情報や送信生成部114内部で逐次計算した情報を利用して、時点76から時点77にかけて送信フレーム5(812)のヘッダ813を、また時点77から時点78にかけてトレーラ814を逐次出力し、送信フレーム5(812)の逐次出力を完了する。その後、通信情報管理制御部115に指示内容の完了を報告する。
信号処理部109は、送信生成部114から逐次受け取るデータを送信に供する信号へと逐次変調し、時点79から送信フレーム4(815)の信号を、また時点80から送信フレーム5(816)の信号をそれぞれ通信インタフェース104に印加し、ネットワークに送出する。
以上に説明したような、本実施の形態の通信端末101及び通信プロトコル処理回路102によれば、送信対象データがメモリ103に準備された後の共有バスへのプロトコル処理の主要アクセスは、(TCPプロトコルにおけるタイムアウトや再送要求等による再送がなく正常進行するならば)実効的な送信対象データ系列をメモリ103から1回読み出すだけである。また、対象データの受信についても、実効的な受信対象データ系列をメモリ103に1回書き込むだけである。これら実効的なデータを含む送受信以外の、受信に対する応答送信を含む送受信は、通信処理部107の内部で処理され、共有バスには処理に係る信号は出力されない。
また、本実施の形態における受信解析部110は、物理データリンク(通信インタフェース104や信号処理部109)の動作に合わせて、受信フレームを逐次解析し、必要な情報の抽出を行う。通信情報管理制御部115は、プロトコル処理に適した回路を備えて、受信フレームに対する対応や送信等を判断し、通信情報を管理する。送信生成部114は、物理データリンクの動作に合わせて、送信フレームを逐次生成する。更に、本実施の形態における通信処理部107の内部の二つの記憶部(第一の記憶部111および第二の記憶部113)は比較的小容量で構成可能であり、通信処理部107の主要部分は比較的低い周波数で動作する。
すなわち、本実施の形態における通信プロトコル処理回路102は、プロトコル処理に適した動作を行う回路・構成として実装され、これにより以下の幅広い効果を享受可能である。
まず通信性能の高速化、具体的には物理データリンク帯域を最大限に活かす通信性能を達成可能である。通信端末101全体として提供するサービスにそれ程の通信性能が要求されないのであれば、その程度に応じて動作周波数を下げることで、消費電力の削減効果が得られる。またより高い性能を要するサービスも実施可能となる。更に、高速応答、すなわち応答時間の高速化が達成可能である。具体的には、受信フレームを受信し終わった後、微小時間の後に、対応する応答を送信可能である。
また、プロトコル処理を通信プロトコル処理回路102が行い、メモリ103との間では対象データのみの転送を行うため、プロセッサ105の処理負荷や共有バスのアクセス負荷の低減が可能である。よって従来の通信端末を置き換えて本実施の形態の通信端末101を適用することにより、低減した負荷の程度に応じて動作周波数を下げることで、端末システム全体の機能・性能はそのままに消費電力の削減効果が得られる。またより高い負荷を要するサービスも実施可能となる。
また、通信に非対応であった既存の端末に通信機能を追加する際に、プロトコル処理の主要部分をプロセッサ105から隠蔽する、本実施の形態における通信プロトコル処理回路102を適用することにより、従来サービスの保全や、通信機能を追加したことによるサービス性能の変動の見積りもより容易となる。
また前述した通り、受信フレームの解析や送信フレームの生成は、プロトコル層で分けずにそれぞれ一部位で特化した回路にて行い、また記憶部は小容量で構成することができる。すなわち、実際に現実的で合理的な小さい回路規模で実現することが可能である。また比較的低い周波数で動作することも前述した通りであり、低い周波数で回路設計が可能であることは、製造の容易さにつながり、またより低価格な回路材料の適用可能性も広がる。更に、回路規模と動作周波数の積に比例する消費電力も低く抑えることが可能である。
このように、本実施の形態の通信端末101および通信プロトコル処理回路102によれば、性能面やコスト面での改善が可能であり、回路製造者から端末製造者、サービス提供者、エンドユーザまで、幅広い関係者が幅広い効果を享受可能である。
なお、以上の説明において、第一の記憶部111と第二の記憶部113の容量に言及したり、各部位の詳細な実施の形態に言及したりしたが、それに従わなかったとしても本発明の本質から外れるものではない。
また、信号処理部109の出力、受信解析部110の解析動作、第一の記憶部111の入出力動作、DMA制御部112の入力、DMA制御部112の出力、第二の記憶部113の入出力動作、送信生成部114の生成動作、信号処理部109の入力の一連の動作は、32ビット毎の31.25MHz動作として統一して説明したが、これらの接続間の一部もしくは複数の個所でビット幅や動作周波数の変更を行う回路を設けてその回路を介したとしても本発明の本質から外れるものではない。
例えば実際的な事項として、送信系と受信系の動作クロックの同期が保証されていない場合は、第一の記憶部111から送信生成部114への接続で、あるいは信号処理部109から受信解析部110への接続で、受信系から送信系への動作クロックの変更を行うことが合理的である。
追記として、通信処理部107が対応していない通信プロトコルについては、通信端末101及び通信プロトコル処理回路102全体としては、次のように対応することが可能である。対応していないプロトコルのフレームの受信については、受信解析部110の解析により、受信フレームが対応していないプロトコルのものであることを確認すると、DMA制御部112は、第一の記憶部111に格納されている受信フレームをそのままメモリ103に格納し、通信処理部107は、プロセッサ105にその事実を報告する。
プロセッサ105から通信処理部107に対して送信の指示がされると、DMA制御部112は、メモリ103内に準備されたデータ(フレーム)を読み出し、第二の記憶部113はそのデータを累算を行うことなしに格納し、送信生成部114はそのデータにヘッダやトレーラを付加することなしに出力する。メモリ103内に準備するデータ(フレーム)については、プロセッサ105において、メモリ103から受信フレームを読み出して解釈し、送信フレームを生成して格納するようにする。以上により、通信処理部107が対応していない通信プロトコルについても、通信端末101及び通信プロトコル処理回路102全体としては対応が可能となる。
また、以上の説明では、通信処理部107内部のDMA制御部112によるアクセスは、メモリ103を対象としたDMAとしたが、これに限らず、周辺制御部108に直接的にI/O(Input/Output)アクセスして、その先に接続される記憶装置等と、メモリ103を介さずに直接データを転送することも可能である。これにより、通信端末101全体が提供するサービスにおけるメモリ103へのアクセスが削減可能となる。
また、以上の説明では、ヘッダやペイロードのデータ変換については説明していないが、これを行うことも可能である。ヘッダやペイロードのデータ変換が必要なプロトコルの例としては、例えばセキュリティのために暗号を施すプロトコルであるIPsec(Internet Protocol Security、Security Architecture for the Internet Protocol)などがある。以下、IPsecを例に挙げて簡単に説明する。
受信解析部110は、受信フレームの解析中にそのフレームの一部の復号が必要であると判断すると、通信情報管理制御部115に対してその復号鍵を問い合わせ、これを受け取る。受信解析部110は、(暗復号処理は比較的重い処理であるため、受信解析部110の主要な動作に合わせてより高い動作周波数で動作する必要があるかもしれない)復号回路を備え、そこに復号対象のデータと復号鍵を入力し、復号結果を得る。受信解析部110は、その復号結果を解析するとともに、第一の記憶部111へ出力する。これにより、第一の記憶部111には、解析済みの、復号されたデータが格納される。
また、通信情報管理制御部115は、フレームの一部を暗号化して送信することが必要であると判断すると、送信生成部114に対して暗号化鍵とその指示を与える。送信生成部114は、(送信生成部114の主要な動作に合わせてより高い動作周波数で動作する必要があるかもしれない)暗号化回路を備え、そこに暗号化対象のデータと暗号化鍵を入力し、暗号化結果を得る。これにより、送信生成部114は、必要な部分を暗号化したデータを出力する。このようにして、ヘッダやペイロードのデータ変換が必要なプロトコルにも対応可能となる。
明する。
<実施の形態2>
半導体チップには、プロセッサや外部アクセスのための論理モジュールに加えて、メモリも一体化したものがある。本発明の実施の形態2では、そのような半導体チップに本発明を適用した例を説明する。
図9は、本発明の実施の形態2である通信端末のハードウェア構成の一例を示した図である。通信プロトコル処理回路902は、前述したような半導体チップによって実現される。図9において、通信インタフェース903、プロセッサ904、周辺制御部906、信号処理部907の各部位の主要な機能は、実施の形態1におけるものと同様であるため、ここでの再度の説明は省略する。
受信フレームを逐次記憶し、また、送信対象データを逐次累算しながら記憶する記憶手段である記憶部909は、内部に記憶装置を有し、プロセッサ904の動作を規定するプログラムデータや、プロセッサ904の作業データの他に、プロトコル処理のための作業データ、すなわち送信対象データと受信フレームを格納する。また、周辺制御部906に直接アクセスする機能も持ち、更に、プロセッサ904から書き込まれるデータあるいは周辺制御部906から受け取るデータを累算する機能も持つ。
通信インタフェース903から、信号処理部907を介して受信フレームのデータが逐次入力されると、受信解析部908は、それを解析しながら記憶部909に逐次出力し、解析結果を通信情報管理制御部911に報告する。
記憶部909は、逐次受け取る受信フレームのデータを内部の記憶装置に逐次格納する。また、受信解析部908から受信フレームの解析結果を受けた通信情報管理制御部911は、その受信フレームに受信対象データを含む場合、受信フレームではなくそれに含まれる受信対象データの記憶部909内における格納領域をプロセッサ904に報告する。この報告を受けて、プロセッサ904は受信対象データに対応する処理を行う。
また、記憶部909は、プロセッサ904から所定の領域にデータを書き込まれると、そのデータを送信対象データと見なし、そのデータを格納するとともに累算していく。そして、送信対象データが書き込まれたことを通信情報管理制御部911に報告する。
通信情報管理制御部911は、プロセッサ904から当該送信対象データの送信指示を受けると、あるいは所定のサイズのデータが書き込まれたことを認識すると、あるいは最後の書き込みから所定の時間が経過したことを認識すると、記憶部909に格納された当該データをフレーム化して送信するように、記憶部909及び送信生成部910に指示する。その指示を受けて記憶部909は、累算結果を送信生成部910に出力し、また送信対象データを送信生成部910に逐次出力する。
通信情報管理制御部911の通信情報に基づいて、記憶部909に記憶された受信フレーム中の受信対象データもしくは送信対象データを逐次読み出して送信フレームを逐次生成する手段である送信生成部910は、通信情報管理制御部911から与えられる情報と、記憶部909から与えられる累算結果、及び逐次受け取る送信対象データとから送信フレームを生成し、信号処理部907を介して通信インタフェース903に送信フレームの信号を逐次印加する。
また、受信フレームのペイロード部分を利用して応答フレームを送信する場合は、記憶部909は、受信解析部908を介して逐次受け取る受信フレームのデータを逐次格納し、送信生成部910は、記憶部909から受信フレームのペイロード部分を逐次受け取り、応答送信のフレームを逐次生成する流れとなる。
なお、通信情報管理制御部911が、プロセッサ904からの設定により、受信フレームに対して、受信対象データを周辺制御部906へ直接出力することを判断した場合は、その指示を記憶部909に与える。そして記憶部909は、指示通りに受信対象データを周辺制御部906に直接出力する。
また、通信情報管理制御部911が、プロセッサ904からの設定により、送信の際に、送信対象データを周辺制御部906から直接受け取ることを判断した場合は、送信対象データを周辺制御部906から直接受け取る指示を記憶部909に与える。そして記憶部909は、指示通りに送信対象データを周辺制御部906から直接受け取り、そのデータを格納しながら累算し、格納が完了すると、指示内容の完了を通信情報管理制御部911に報告する。その後、通信情報管理制御部911が、記憶部909及び送信生成部910に指示する以降の動作の流れは、前述の実施の形態1と同様である。
以上に説明した通り、通信端末901における主要な論理とメモリを一体化した半導体チップにおいて、本実施の形態における通信プロトコル処理回路902は、プロトコル処理に適した動作を行う回路・構成として実装され、これにより前述した幅広い効果を享受可能である。
なお、実施の形態1における図1の通信端末101、および実施の形態2における図9の通信端末901は、そのまま通信プロトコル処理を行う一つの回路や半導体チップとして実現可能であり、またそれぞれの構成要素を別々の回路や半導体チップとしても実現可能であり、さらにそれら構成要素のうちの複数を一つの回路や半導体チップとしても実現可能である。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
101…通信端末、102…通信プロトコル処理回路、103…メモリ、104…通信インタフェース、105…プロセッサ、106…メモリ制御部、107…通信処理部、108…周辺制御部、109…信号処理部、110…受信解析部、111…第一の記憶部、112…DMA制御部、113…第二の記憶部、114…送信生成部、115…通信情報管理制御部、
401…解析論理、402…状態レジスタ、
501…生成論理、502…状態レジスタ、
901…通信端末、902…通信プロトコル処理回路、903…通信インタフェース、904…プロセッサ、905…通信処理部、906…周辺制御部、907…信号処理部、908…受信解析部、909…記憶部、910…送信生成部、911…通信情報管理制御部、
1001…通信端末、1002…通信プロトコル処理回路、1003…メモリ、1004…通信インタフェース、1005…プロセッサ、1006…メモリ制御部、1007…通信制御部、1008…周辺制御部、1009…信号処理部、1010…DMA制御部。