(57)【要約】【課題】向上していく通信メディア帯域に近い高速なスループットを達成しつつ、首尾一貫性のある通信プロトコル処理を実現する。【解決手段】送信パケットを生成する送信パケット生成部と、受信パケットを解析する受信パケット解析部と、通信情報を管理して受信パケットに対する対応やパケットの送信を決定するシーケンス処理部と、をそれぞれ複数備え、それぞれを並列処理させる。さらに、複数のシーケンス処理部によるメモリアクセス及び送信パケットの生成要求等を調停する競合調停部を備え、その競合調停部は、それぞれのシーケンス処理部が一時独占しているメモリの領域を示すレジスタを備え、それぞれのシーケンス処理部は通信情報管理用メモリの領域の一時独占及びその解除を行う。【選択図】図１
2010193364.tif 000002
【特許請求の範囲】
【請求項１】
複数の送信パケット生成部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、
前記メモリには、通信情報が格納され、
前記通信情報は、前記送信パケット生成部が生成及び出力すべきパケットを識別するための情報を含み、
前記競合調停部には、前記通信情報の参照及び更新が前記複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、
前記各送信パケット生成部は、前記各シーケンス処理部からの命令に基づいて、パケットを生成及び出力し、
前記各シーケンス処理部は、
前記通信情報を参照して、前記送信パケット生成部が生成及び出力すべきパケットを判断し、
前記生成及び出力すべきパケットの生成及び出力を前記送信パケット生成部に命令し、
前記通信情報を、前記生成及び出力を命令したことを識別するための情報に更新し、
前記通信情報を参照及び更新する前に、前記競合調停部に格納された情報に基づいて、前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されているか否かを判定し、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されている場合、前記排他的な制御が解除されるまで前記通信情報の参照及び更新を待ち、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されていない場合、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を開始した後、前記通信情報の参照及び更新を実行し、
前記通信情報の参照及び更新が終了した後、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする通信プロトコル処理回路。
【請求項２】
複数の受信パケット解析部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、
前記メモリには、通信情報が格納され、
前記通信情報は、対応処理を行うべき受信パケットを識別するための情報を含み、
前記競合調停部には、前記通信情報の参照及び更新が前記複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、
前記各受信パケット解析部は、パケットを受信すると、前記受信したパケットを解析し、
前記各シーケンス処理部は、
前記各受信パケット解析部がパケットを受信して解析した後に前記通信情報を参照して、前記受信したパケットの対応処理を判断し、
前記受信したパケットの対応処理を行い、
前記通信情報を、前記パケットが受信されたことを識別するための情報に更新し、
前記通信情報を参照及び更新する前に、前記競合調停部に格納された情報に基づいて、前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されているか否かを判定し、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されている場合、前記排他的な制御が解除されるまで前記通信情報の参照及び更新を待ち、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されていない場合、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を開始した後、前記通信情報の参照及び更新を実行し、
前記通信情報の参照及び更新が終了した後、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする通信プロトコル処理回路。
【請求項３】
前記競合調停部は、各々が前記複数のシーケンス処理部に対応する複数のレジスタを含み、
前記各シーケンス処理部は、
前記各シーケンス処理部に対応する前記レジスタに、前記各シーケンス処理部が前記通信情報の参照及び更新を排他的に制御していることを識別するための情報を格納することによって、前記通信情報の参照及び更新の排他的な制御を開始し、
前記各シーケンス処理部に対応する前記レジスタから、前記各シーケンス処理部が前記通信情報の参照及び更新を排他的に制御していることを識別するための情報を削除することによって、前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする請求項１又は２に記載の通信プロトコル処理回路。
【請求項４】
ネットワークに接続される情報処理装置であって、
前記情報処理装置は、前記ネットワークに接続されるインターフェイスと、前記インターフェイスを介して送信されるパケットを生成する複数の送信パケット生成部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、
前記メモリには、通信情報が格納され、
前記通信情報は、前記送信パケット生成部が生成及び出力すべきパケットを識別するための情報を含み、
前記競合調停部には、前記通信情報の参照及び更新が前記複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、
前記各送信パケット生成部は、前記各シーケンス処理部からの命令に基づいて、パケットを生成し、
前記インターフェイスは、前記各送信パケット生成部が生成したパケットを前記ネットワークに出力し、
前記各シーケンス処理部は、
前記通信情報を参照して、前記送信パケット生成部が生成及び出力すべきパケットを判断し、
前記生成及び出力すべきパケットの生成及び出力を前記送信パケット生成部に命令し、
前記通信情報を、前記生成及び出力を命令したことを識別するための情報に更新し、
前記通信情報を参照及び更新する前に、前記競合調停部に格納された情報に基づいて、前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されているか否かを判定し、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されている場合、前記排他的な制御が解除されるまで前記通信情報の参照及び更新を待ち、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されていない場合、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を開始した後、前記通信情報の参照及び更新を実行し、
前記通信情報の参照及び更新が終了した後、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする情報処理装置。
【請求項５】
ネットワークに接続される情報処理装置であって、
前記情報処理装置は、前記ネットワークに接続されるインターフェイスと、前記インターフェイスを介して受信したパケットを解析する複数の受信パケット解析部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、
前記メモリには、通信情報が格納され、
前記通信情報は、対応処理を行うべき受信パケットを識別するための情報を含み、
前記競合調停部には、前記通信情報の参照及び更新が前記複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、
前記インターフェイスは、前記ネットワークからパケットを受信し、
前記各受信パケット解析部は、前記インターフェイスが受信したパケットを解析し、
前記各シーケンス処理部は、
前記各受信パケット解析部がパケットを受信して解析した後に前記通信情報を参照して、前記受信したパケットの対応処理を判断し、
前記受信したパケットの対応処理を行い、
前記通信情報を、前記パケットが受信されたことを識別するための情報に更新し、
前記通信情報を参照及び更新する前に、前記競合調停部に格納された情報に基づいて、前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されているか否かを判定し、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されている場合、前記排他的な制御が解除されるまで前記通信情報の参照及び更新を待ち、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されていない場合、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を開始した後、前記通信情報の参照及び更新を実行し、
前記通信情報の参照及び更新が終了した後、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする情報処理装置。
【請求項６】
前記競合調停部は、各々が前記複数のシーケンス処理部に対応する複数のレジスタを含み、
前記各シーケンス処理部は、
前記各シーケンス処理部に対応する前記レジスタに、前記各シーケンス処理部が前記通信情報の参照及び更新を排他的に制御していることを識別するための情報を格納することによって、前記通信情報の参照及び更新の排他的な制御を開始し、
前記各シーケンス処理部に対応する前記レジスタから、前記各シーケンス処理部が前記通信情報の参照及び更新を排他的に制御していることを識別するための情報を削除することによって、前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする請求項４又は５に記載の情報処理装置。
【請求項７】
通信プロトコル処理回路が実行する通信プロトコル処理方法であって、
前記通信プロトコル処理回路は、複数の送信パケット生成部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、
前記メモリには、通信情報が格納され、
前記通信情報は、前記送信パケット生成部が生成及び出力すべきパケットを識別するための情報を含み、
前記競合調停部には、前記通信情報の参照及び更新が前記複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、
前記通信プロトコル処理方法は、
前記各送信パケット生成部が、前記各シーケンス処理部からの命令に基づいて、パケットを生成及び出力する手順と、
前記各シーケンス処理部が、前記通信情報を参照して、前記送信パケット生成部が生成及び出力すべきパケットを判断する手順と、
前記各シーケンス処理部が、前記生成及び出力すべきパケットの生成及び出力を前記送信パケット生成部に命令する手順と、
前記各シーケンス処理部が、前記通信情報を、前記生成及び出力を命令したことを識別するための情報に更新する手順と、
前記各シーケンス処理部が、前記通信情報を参照及び更新する前に、前記競合調停部に格納された情報に基づいて、前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されているか否かを判定する手順と、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されている場合、前記各シーケンス処理部が、前記排他的な制御が解除されるまで前記通信情報の参照及び更新を待つ手順と、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されていない場合、前記各シーケンス処理部が、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を開始した後、前記通信情報の参照及び更新を実行する手順と、
前記通信情報の参照及び更新が終了した後、前記各シーケンス処理部が、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を解除する手順と、を含むことを特徴とする通信プロトコル処理方法。
【請求項８】
通信プロトコル処理回路が実行する通信プロトコル処理方法であって、
前記通信プロトコル処理回路は、複数の受信パケット解析部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、
前記メモリには、通信情報が格納され、
前記通信情報は、対応処理を行うべき受信パケットを識別するための情報を含み、
前記競合調停部には、前記通信情報の参照及び更新が前記複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、
前記通信プロトコル処理方法は、
前記各受信パケット解析部が、パケットを受信すると、前記受信したパケットを解析する手順と、
前記各シーケンス処理部が、前記各受信パケット解析部がパケットを受信して解析した後に前記通信情報を参照して、前記受信したパケットの対応処理を判断する手順と、
前記各シーケンス処理部が、前記受信したパケットの対応処理を行う手順と、
前記各シーケンス処理部が、前記通信情報を、前記パケットが受信されたことを識別するための情報に更新する手順と、
前記各シーケンス処理部が、前記通信情報を参照及び更新する前に、前記競合調停部に格納された情報に基づいて、前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されているか否かを判定する手順と、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されている場合、前記各シーケンス処理部が、前記排他的な制御が解除されるまで前記通信情報の参照及び更新を待つ手順と、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されていない場合、前記各シーケンス処理部が、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を開始した後、前記通信情報の参照及び更新を実行する手順と、
前記通信情報の参照及び更新が終了した後、前記各シーケンス処理部が、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を解除する手順と、を含むことを特徴とする通信プロトコル処理方法。
【請求項９】
前記競合調停部は、各々が前記複数のシーケンス処理部に対応する複数のレジスタを含み、
前記各シーケンス処理部は、
前記各シーケンス処理部に対応する前記レジスタに、前記各シーケンス処理部が前記通信情報の参照及び更新を排他的に制御していることを識別するための情報を格納することによって、前記通信情報の参照及び更新の排他的な制御を開始し、
前記各シーケンス処理部に対応する前記レジスタから、前記各シーケンス処理部が前記通信情報の参照及び更新を排他的に制御していることを識別するための情報を削除することによって、前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする請求項７又は８に記載の通信プロトコル処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書に開示される技術は、通信プロトコルを処理する技術に関し、特に、高速な通信スループットを容易に実現する通信プロトコル処理技術に関する。
【背景技術】
【０００２】
インターネットを利用した通信サービス及び通信トラフィックは年々増えており、それを実現するための通信メディアや通信端末においてもその帯域及び処理能力は向上している。現在、通信メディアの帯域はおおむね年率２倍、通信端末（その中で主要な処理を行う汎用プロセッサ）の処理能力はおおむね年率１．５倍の伸び率で向上している。一例としては、多くのＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）が標準的に備えたネットワークのインターフェイスは、以前は帯域１００Ｍｂｐｓの１００ＢＡＳＥであったが、現在は帯域１Ｇｂｐｓの１０００ＢＡＳＥとなっている。そして今後は帯域１０Ｇｂｐｓの１０ＧＢＡＳＥが採用されていく見込みである。
【０００３】
インターネット或いはその技術に基づいたネットワークを利用して通信相手と通信するには、通信端末は、Ｅｔｈｅｒｎｅｔ（登録商標、以下同じ）のような物理データリンク層の通信プロトコルだけではなく、ネットワーク層（いわゆるＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ））、トランスポート層（いわゆるＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）又はＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ））及びアプリケーション層の通信プロトコルも処理する必要がある。通信端末において、物理データリンク層の通信プロトコルは専用ハードウェアにて処理されるのが一般的である。一方、それ以外のいわゆるＴＣＰ／ＩＰと呼ばれる通信プロトコルは汎用プロセッサによってソフトウェア的に処理されるのが一般的である。
【０００４】
現在、汎用プロセッサにてソフトウェア的に通信プロトコルを処理するＰＣは、それらの通信プロトコルを１Ｇｂｐｓのスループットで処理すること、ひいては１ＧｂｐｓのＥｔｈｅｒｎｅｔの帯域を高効率に利用することが困難になっている。今後、通信メディア帯域と汎用プロセッサ処理能力の伸び率が前述のトレンド通り進むと、通信メディアの帯域と通信端末の処理スループットの差は更に広がり、通信端末による通信メディアの利用効率は更に悪くなる見込みである。
【０００５】
通信プロトコルを専用ハードウェアにて処理する技術は、例えば、特許文献１に記載されている。特許文献１に記載された通信制御プロセッサは、それぞれ固有のプロトコル処理を行う複数の通信制御部と、パケットデータのフィールドを判別してパケットデータを対応する通信制御部に渡すプロトコル判別部から成る。これによって、機能的に複数の通信プロトコルで通信することができる。
【特許文献１】特開平５−２９２１４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
例えば、一プロトコルによる通信メディア帯域の向上に追随する高速なスループットが要求される通信サービスを実現する場合、上記背景技術によれば次の問題が発生する。前提とした一プロトコルの通信に対して、上記背景技術では一つの通信制御部及びプロトコル判別部が全ての受信パケットデータを処理し、残りの通信制御部はその間パケットデータを処理することがなくアイドル状態である。このため、処理動作を続ける一つの通信制御部又はプロトコル判別部が処理のボトルネックとなり、高速なスループットの達成が困難である。
【０００７】
高速なスループットに達成するために、ボトルネック箇所の動作クロックの周波数を向上させるのが一案である。しかしながら、半導体の素子遅延及び消費電力が大きな問題となるため、動作クロックの周波数を安易に向上することはできない。実際、従来技術の動作クロックの周波数を向上させることによって、１０Ｇｂｐｓ又はそれ以上の通信スループットを達成するのは困難な見込みである。
【０００８】
本発明が解決しようとする課題は、向上していく通信メディア帯域に近い高速なスループットを達成し、首尾一貫性（コヒーレンシ）を損なわずに通信プロトコルを処理する、半導体の素子遅延及び消費電力の実現上の問題が比較的小さな、回路及び装置を提供することである。
【課題を解決するための手段】
【０００９】
本願で開示する代表的な発明は、複数の送信パケット生成部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、メモリには、通信情報が格納され、通信情報は、送信パケット生成部が生成及び出力すべきパケットを識別するための情報を含み、競合調停部には、通信情報の参照及び更新が複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、各送信パケット生成部は、各シーケンス処理部からの命令に基づいて、パケットを生成及び出力し、各シーケンス処理部は、通信情報を参照して、送信パケット生成部が生成及び出力すべきパケットを判断し、生成及び出力すべきパケットの生成及び出力を送信パケット生成部に命令し、通信情報を、生成及び出力を命令したことを識別するための情報に更新し、通信情報を参照及び更新する前に、競合調停部に格納された情報に基づいて、通信情報の参照及び更新が他のシーケンス処理部によって排他的に制御されているか否かを判定し、通信情報の参照及び更新が他のシーケンス処理部によって排他的に制御されている場合、排他的な制御が解除されるまで通信情報の参照及び更新を待ち、通信情報の参照及び更新が他のシーケンス処理部によって排他的に制御されていない場合、競合調停部に格納された情報を更新することによって通信情報の参照及び更新の排他的な制御を開始した後、通信情報の参照及び更新を実行し、通信情報の参照及び更新が終了した後、競合調停部に格納された情報を更新することによって通信情報の参照及び更新の排他的な制御を解除することを特徴とする。
【発明の効果】
【００１０】
本発明の一実施形態によれば、半導体の素子遅延及び消費電力の問題を比較的小さく抑えながら、向上していく通信メディア帯域に近い高速なスループットを容易に達成することができる。さらに、本発明の一実施形態によれば、並列化した箇所同士で高効率に通信情報を排他制御することによって、首尾一貫性を持たせて通信プロトコルを処理することができる。
【発明を実施するための最良の形態】
【００１１】
向上していく通信メディア帯域に近い高速なスループットを達成容易とするために、本発明の実施形態の通信プロトコル処理回路では、処理論理量が比較的多く回路の素子遅延が深くなりがちな箇所が並列化される。具体的には、後述するように、本発明の実施形態の通信プロトコル処理回路は、送信パケットを生成する送信パケット生成部と、受信パケットを解析する受信パケット解析部と、通信情報を管理して受信パケットに対する対応及びパケットの送信を決定するシーケンス処理部と、を複数備え、それぞれを低周波にて動作させることによって、並列処理させる。
【００１２】
更に、本発明の実施形態の通信プロトコル処理回路は、並列化された箇所同士で高効率に排他制御する機構を備える。具体的には、後述するように、本発明の実施形態の通信プロトコル処理回路は、複数のシーケンス処理部による通信情報管理用メモリアクセス及び送信パケットの生成要求等の調停を行う競合調停部を備える。その競合調停部はそれぞれのシーケンス処理部が一時独占している通信情報管理用メモリの領域を示すレジスタを備え、それぞれのシーケンス処理部は通信情報管理用メモリの領域の一時独占及びその解除を行う。
【００１３】
以下、本発明の実施形態について図面を参照して説明する。
【００１４】
図１は、本発明の実施形態の通信装置及び通信プロトコル処理回路の構成を示したブロック図である。
【００１５】
通信プロトコル処理回路は通信装置の中に備えるべきものであるが、図１では説明の便宜上、通信装置を通信ホスト装置１０１と通信プロトコル処理回路１０２とに分けて記載している。
【００１６】
まず通信ホスト装置１０１について説明する。通信ホスト装置１０１単体は公知技術で実現可能である。通信ホスト装置１０１は、通信プロトコル処理回路１０２を介してネットワーク１０４に接続され、ネットワーク１０４を介して一つ以上の通信相手（図示省略）との間の通信サービスを実現する。
【００１７】
具体的には、通信ホスト装置１０１は、能動的に、又は、通信相手からネットワーク１０４を介して受信したパケットを通信プロトコル処理回路１０２が解析した結果に基づいて受動的に、通信相手及び通信サービスを指定して通信を開始する旨を通信プロトコル処理回路１０２に初期設定する。その通信サービスの実行中、通信ホスト装置１０１は、ホストメモリ１１２に格納された送信対象データを送信する旨を通信プロトコル処理回路１０２に指示し、また通信相手から受信したパケットから抽出したデータをホストメモリ１１２に格納する旨を通信プロトコル処理回路１０２に指示する。
【００１８】
これと並行して、通信ホスト装置１０１は、ホスト周辺インターフェイス１１３及びホストバス１１４を介してストレージ装置１０３から送信対象データを読み出してホストメモリ１１２に格納し、ホストメモリ１１２に格納された受信抽出データを読み出してストレージ装置１０３に格納する。更にその通信サービスの最後に、通信ホスト装置１０１は、能動的又は受動的に、通信を終了する旨を通信プロトコル処理回路１０２に指示する。通信ホスト装置１０１が行うこれらの判断及び制御は、ホストプロセッサ１１１が実行するソフトウェアプログラム（図示省略）によって実現される。
【００１９】
次に、本発明の主要な特徴である通信プロトコル処理回路１０２の詳細を説明する。通信プロトコル処理回路１０２は、通信制御部１２１、ホスト一時バッファ部１２２、ネットワーク一時バッファ部１２３、ＤＭＡ制御部１２４、ネットワークインターフェイス１２５、複数の送信パケット生成部１３１〜１３３、及び複数の受信パケット解析部１４１〜１４３から成る。図２には、一例として、３個の送信パケット生成部１３１〜１３３及び３個の受信パケット解析部１４１〜１４３を示すが、これらの数は３に限定されない。
【００２０】
通信制御部１２１は、競合調停部１５１、通信情報管理用メモリ１５２、アップロード命令キュー１５３、ダウンロード命令キュー１５４、受信パケット解析格納結果キュー１５５及び送信パケット生成命令キュー１５６から成る。ホスト一時バッファ部１２２は、複数のホスト一時バッファ用メモリ１６１〜１６３から成り、ネットワーク一時バッファ部１２３は、複数のネットワーク一時バッファ用メモリ１７１〜１７３から成る。
【００２１】
図１には、ホスト一時バッファ部１２２が第１のホスト一時バッファ用メモリ１６１から第１２のホスト一時バッファ用メモリ１６３までの１２個のホスト一時バッファ用メモリを備える例を示す（ただし、第３のホスト一時バッファ用メモリから第１１のホスト一時バッファ用メモリまでの図示は省略する）。しかし、ホスト一時バッファ用メモリの数は１２に限定されない。ネットワーク一時バッファ用メモリ１７１〜１７３についても同様である。
【００２２】
図２は、本発明の実施形態の通信プロトコル処理回路１０２内の通信制御部１２１の詳細構成を示したブロック図である。
【００２３】
図２において、図１と同一の符号は、図１に示したものと同一のものを表している。通信制御部１２１は、図１に示した競合調停部１５１等に加えて、複数のシーケンス処理部２０１〜２０３及びタイマ２９１を備える。図２には、通信制御部１２１が第１のシーケンス処理部２０１から第９のシーケンス処理部２０３までの９個のシーケンス処理部を備える例を示す（ただし、第３のシーケンス処理部から第８のシーケンス処理部までの図示は省略する）。しかし、シーケンス処理部の数は９に限定されない。
【００２４】
通信制御部１２１内の競合調停部１５１は、複数の一時独占通信情報エントリレジスタ２１１〜２２１、通信情報エントリオフセットレジスタ２３１及び通信情報エントリサイズレジスタ２３２を備える。図２には、競合調停部１５１が第１の一時独占通信情報エントリレジスタ２１１から第９の一時独占通信情報エントリレジスタ２２１までの１０個のシーケンス処理部を備える例を示す（ただし、第３の一時独占通信情報エントリレジスタから第８の一時独占通信情報エントリレジスタまでの図示は省略する）。しかし、一時独占通信情報エントリレジスタの数は１０に限定されない。
【００２５】
通信制御部１２１内の通信情報管理用メモリ１５２、アップロード命令キュー１５３、ダウンロード命令キュー１５４、受信パケット解析格納結果キュー１５５及び送信パケット生成命令キュー１５６はそれぞれ、複数の通信情報エントリ２４１〜２４３、複数のアップロード命令エントリ２５１〜２５３、複数のダウンロード命令エントリ２６１〜２６３、複数の受信パケット解析格納結果エントリ２７１〜２７３及び複数の送信パケット生成命令エントリ２８１〜２８３を保持する。
【００２６】
図２には、第１の通信情報エントリ２４１から第１００００の通信情報エントリ２４３、第１のアップロード命令エントリ２５１から第３のアップロード命令エントリ２５３、第１のダウンロード命令エントリ２６１から第５のダウンロード命令エントリ２６３、第１の受信パケット解析格納結果エントリ２７１から第６の受信パケット解析格納結果エントリ２７３、及び、第１の送信パケット生成命令エントリ２８１から第５の送信パケット生成命令エントリ２８３を示す（ただし、第３から第９９９９の通信情報エントリ、第３から第４のダウンロード命令エントリ、第３から第５の受信パケット解析格納結果エントリ及び第３から第４の送信パケット生成命令エントリの図示は省略する）。しかし、上記のエントリの数は、図２に示した例に限定されない。
【００２７】
通信プロトコル処理回路１０２の送受信動作について説明する。通信プロトコル処理回路１０２が送受信動作に至る前に、ホストプロセッサ１１１で実行されるソフトウェアプログラムによって通信情報エントリオフセットレジスタ２３１及び通信情報エントリサイズレジスタ２３２に所定の値が予め設定される。具体的には、ホストプロセッサ１１１からの各レジスタへの書き込み要求を、ホストバス１１４及びＤＭＡ制御部１２４を介して通信制御部１２１が受け取り、その書き込み要求に従って通信制御部１２１が各レジスタに値を書き込む。
【００２８】
これらの値は、通信情報エントリの番号に対応する通信情報管理用メモリ１５２の領域のアドレスを表す。具体的には、通信情報エントリオフセットレジスタ２３１に設定された値をＡ、通信情報エントリサイズレジスタ２３２に設定された値をＢとおくと、通信情報管理用メモリ１５２における第Ｎの通信情報エントリに対応する格納アドレスはＡ＋Ｂ×（Ｎ−１）からＡ＋Ｂ×Ｎ−１までである。
【００２９】
また、ホストプロセッサ１１１で実行されるソフトウェアプログラムによって、通信相手、通信サービス、及び、ホストメモリ１１２内の送信対象データの格納領域に関する情報が通信情報エントリとして設定される。
【００３０】
一つないし複数の通信情報エントリが一つの通信サービスに割り当てられる。各通信情報エントリ２４１〜２４３は、そのエントリの有効フラグ、通信ホスト装置１０１自身のネットワークアドレス（例えば物理アドレス又はＩＰアドレス）、通信相手のネットワークアドレス、通信ホスト装置１０１自身のサービス番号（例えばＵＤＰ又はＴＣＰのポート番号）、通信相手のサービス番号、通信状態、通信処理状態、ホストメモリ１１２内の送信対象データを格納している領域のアドレス（メモリアドレス）、ホストメモリ１１２内の受信抽出データを格納すべき領域のアドレス、送信済データ長、応答確認済データ長、及び、受信済データ長等を含む。これらの情報に基づいて、次に生成及び送信すべきパケットの有無や、そのパケットの種別、そのパケットのペイロード部分に埋め込む送信対象データのホストメモリ１１２内の格納領域アドレスやその領域全体のサイズ、そのうち送信済みのデータ長などを特定することができる。また、受信すべきパケットの有無や、そのパケットの種別、そのパケットのペイロード部分から抽出する受信データのホストメモリ１１２内の格納領域アドレスやその領域全体のサイズ、そのうち受信済みのデータ長なども特定することができる。
【００３１】
また、ホストプロセッサ１１１で実行されるソフトウェアプログラムによって、第１のシーケンス処理部２０１が予め起動されている。この第１のシーケンス処理部２０１は、通信情報管理用メモリ１５２に格納した通信情報エントリ２４１〜２４３及びタイマ２９１を継続的に参照して、パケット送信の判断、ホストプロセッサ１１１からの指示の完了の報告、及び、通信異常状態のホストプロセッサ１１１への割り込み報告を行うシーケンスを実行し続ける。
【００３２】
なお、図１及び図２に記載した構成のうち、複数の送信パケット生成部１３１〜１３３、複数の受信パケット解析部１４１〜１４３及び複数のシーケンス処理部２０１〜２０３は、典型的には専用のハードウェアによって実現される。しかし、これらは、汎用のプロセッサがメモリに格納されたプログラムを実行することによって実現されてもよい。
【００３３】
通信プロトコル処理回路１０２がパケット送信を決定してから送信するまでの詳細動作について説明する。
【００３４】
図３は、本発明の実施形態の通信プロトコル処理回路１０２の送信動作を示したタイミングチャートである。
【００３５】
第１のシーケンス処理部２０１は、通信情報管理用メモリ１５２内のそれぞれの通信情報エントリ２４１〜２４３を参照（及び必要に応じて更新）して、パケット送信の判断（３０１）を行う。そして、第１のシーケンス処理部２０１は、第Ｘの通信情報エントリ（例えば第１の通信情報エントリ２４１）に関してパケットを送信する旨を判断すると、アイドル状態となっていた第２のシーケンス処理部２０２をサブシーケンスとして起動し、第Ｘの通信情報エントリに関してパケットを送信する旨を指示する。それによって第２のシーケンス処理部２０２は、第１の送信パケットの生成処理のシーケンス（３０２）を開始する。
【００３６】
第２のシーケンス処理部２０２は、まず第Ｘの通信情報エントリを参照及び更新して、送信対象データが格納されているホストメモリ１１２の領域及び送信パケットの種別等を知る。このとき、第２のシーケンス処理部２０２は、他のシーケンス処理部２０２が第Ｘの通信情報エントリを参照及び更新できないように排他制御する。この排他制御のために、第２の一時独占通信情報エントリレジスタ２１２が使用される。
【００３７】
なお、図３及び後述する図４の処理において、各シーケンス処理部は、通信情報エントリを参照及び更新するときに、各シーケンス処理部に対応する一時独占通信情報エントリレジスタを使用して、同様の排他制御を実行する。これらの排他制御については後で詳細に説明する。
【００３８】
次に、第２のシーケンス処理部２０２は、ダウンロード（すなわちホストメモリ１１２からホスト一時バッファ部１２２へのデータコピー）命令を発行する。ダウンロード命令は、ホストメモリ１１２に格納された送信対象データの先頭メモリアドレス及びデータ長を含む。これらのアドレス及びデータ長は、第Ｘの通信情報エントリから取得される。
【００３９】
発行されたダウンロード命令は、空き状態であったダウンロード命令キュー１５４内の第１のダウンロード命令エントリ２６１となり、ホスト一時バッファ部１２２及びＤＭＡ制御部１２４を介してホストバス１１４に対して発行される。これによって、ホストメモリ１１２に格納された第一の送信対象データがホストバス１１４及びＤＭＡ制御部１２４を介してホスト一時バッファ部１２２に入力（３０３）される。ホスト一時バッファ部１２２は、入力されたデータを、空き状態となっていた第１のホスト一時バッファ用メモリ１６１に格納する。
【００４０】
第１の送信対象データの格納を完了すると、ホスト一時バッファ部１２２は第１のホスト一時バッファ用メモリ１６１に格納した旨をホスト一時バッファ部１２２のエントリ情報（第１のデータエントリ）として通信制御部１２１に報告する。
【００４１】
ダウンロード完了の報告を受けると、ダウンロード命令キュー１５４は第１のダウンロード命令エントリ２６１を消す。第２のシーケンス処理部２０２は続いて送信パケット生成命令を発行する。送信パケット生成命令は、送信パケットの種別と、送信パケットのヘッダを構成するネットワークアドレス等の情報と、ホスト一時バッファ部１２２のエントリ情報（第１のデータエントリ）と、から成る。
【００４２】
発行された送信パケット生成命令は、空き状態であった送信パケット生成命令キュー１５６内の第１の送信パケット生成命令エントリ２８１となり、アイドル状態となっていた第１の送信パケット生成部１３１に対して発行される。
【００４３】
送信パケットの生成の命令を受けた第１の送信パケット生成部１３１は、命令に従って第１の送信パケットの生成及び出力（３０４）を開始する。第１の送信パケット生成部１３１は、ホスト一時バッファ部１２２のエントリ情報（第１のデータエントリ）に対応するデータを渡す旨をホスト一時バッファ部１２２に指示しながら、まず送信パケットのヘッダを構成する情報から送信パケットのヘッダを生成及び出力する。ホスト一時バッファ部１２２は、指示されたエントリ情報（第１のデータエントリ）に対応するデータ、すなわち第１のホスト一時バッファ用メモリ１６１に格納している第１の送信対象データを第１の送信パケット生成部１３１に渡し、第１の送信パケット生成部１３１は、次にホスト一時バッファ部１２２から渡された第１の送信対象データを送信パケットのペイロードとして出力する。
【００４４】
こうして生成及び出力された第１の送信パケットは、ネットワーク一時バッファ部１２３に渡される。第１の送信パケットの生成を完了すると、第１の送信パケット生成部１３１は通信制御部１２１に完了報告し、アイドル状態に移る。
【００４５】
送信パケット生成の完了報告を受けると、送信パケット生成命令キュー１５６はその命令のエントリを消す。その命令を発行した第２のシーケンス処理部２０２は、続いて通信情報管理用メモリ１５２内の第Ｘの通信情報エントリを参照及び更新して、その通信情報エントリにパケット送信した旨を反映する。さらに第２のシーケンス処理部２０２は、ホスト一時バッファ部１２２に対して、ホスト一時バッファ部１２２のエントリ情報（第１のデータエントリ）を消すように指示する。ホスト一時バッファ部１２２はその指示に従って第１のホスト一時バッファ用メモリ１６１を空き状態に移行させる。
【００４６】
第１のシーケンス処理部２０１のサブシーケンスを実行することを指示された第２のシーケンス処理部２０２は、最後に、その役目を終えてアイドル状態に移る。
【００４７】
上記と並行して、ネットワーク一時バッファ部１２３は、空き状態となっていた第１のネットワーク一時バッファ用メモリ１７１に、第１の送信パケット生成部１３１が生成及び出力する第１の送信パケットを格納する。第１の送信パケットの格納を完了すると、ネットワーク一時バッファ部はそれを出力（３０５）し、ネットワークインターフェイス１２５を介してネットワーク１０４へと送信パケットを送信する。その送信が完了すると、ネットワーク一時バッファ部１２３は、第１のネットワーク一時バッファ用メモリ１７１を空き状態に移す。
【００４８】
第１のシーケンス処理部２０１は、第２のシーケンス処理部２０２に第Ｘの通信情報エントリ（例えば第１の通信情報エントリ２４１）に関してパケットを送信する旨を指示した後、さらに通信情報管理用メモリ１５２内のそれぞれの通信情報エントリ２４１〜２４３を参照及び更新してパケット送信の判断を行う。そして第Ｙの通信情報エントリ（例えば第２の通信情報エントリ２４２）に関してパケットを送信する旨を判断すると、このとき第２のシーケンス処理部２０２は実行中であるため、第１のシーケンス処理部２０１はアイドル状態となっていた第３のシーケンス処理部（図示省略）をサブシーケンスとして起動し、第Ｙの通信情報エントリに関してパケットを送信する旨を指示する。それによって第３のシーケンス処理部は、第２の送信パケットの生成処理のシーケンス（３１２）を開始する。
【００４９】
その後も引き続き、第１のシーケンス処理部２０１はパケット送信の判断を行い続け、必要に応じてサブシーケンスを起動する。
【００５０】
起動された第３のシーケンス処理部は、上記の第２のシーケンス処理部２０２の場合と同様に、通信情報管理用メモリ１５２内の第Ｙの通信情報エントリを参照し、更新し、対応するダウンロード命令及び送信パケット生成命令を発行し、ホスト一時バッファ部１２２の対応するエントリ情報を消すように指示する。またアップロード命令キュー１５３及び送信パケット生成命令キュー１５６の振る舞いも上記と同様である。
【００５１】
図３の例では、ダウンロードされた第２の送信対象データのホスト一時バッファ部１２２への格納、及び、生成された第２の送信パケットのネットワーク一時バッファ部１２３への格納が実行される時刻には、第Ｘの通信情報エントリに関するエントリがそれぞれ第１のホスト一時バッファ用メモリ１６１内及び第１のネットワーク一時バッファ用メモリ１７１内に存在している。このため、ダウンロードされた第２の送信対象データ及び生成された第２の送信パケットは、それぞれ、空き状態である第２のホスト一時バッファ用メモリ１６２及び第２のネットワーク一時バッファ用メモリ１７２に格納される。
【００５２】
第２の送信パケットが生成される時刻には、第Ｘの通信情報エントリに関する処理を第１の送信パケット生成部１３１が実行中である。このため、アイドル状態の第２の送信パケット生成部１３２が第２の送信パケットを生成する。このように本実施形態の通信プロトコル処理回路１０２では、複数の機能ブロックが並行動作しながら送信処理を実行する。
【００５３】
図３が示す通り、本実施形態の通信プロトコル処理回路１０２によれば、ネットワーク一時バッファ部１２３からネットワークインターフェイス１２５への出力、ひいてはネットワークインターフェイス１２５からネットワーク１０４へのパケットの送信は、通信メディア帯域に近い高速なスループットを達成できることがわかる。
【００５４】
具体的には、一例として、通信メディアが帯域１０Ｇｂｐｓの１０ＧＢＡＳＥであり、ネットワーク一時バッファ部１２３からネットワークインターフェイス１２５には、３２ビット幅のデータが、３１２．５ＭＨｚの動作周波数で出力されると仮定する。この場合、スループットは３２ビット×３１２．５ＭＨｚ＝１０，０００Ｍｂｐｓ＝１０Ｇｂｐｓである。この場合、図３が示す通りそれぞれの送信パケット間に微小なマージン時間が存在するものの、通信メディア帯域に近い高速な送信スループットを達成できる。
【００５５】
また、通信制御部１２１と複数の送信パケット生成部１３１〜１３３の動作、及び、通信制御部１２１と複数の送信パケット生成部１３１〜１３３とホスト一時バッファ部１２２とネットワーク一時バッファ部１２３との間の接続については、上記の３１２．５ＭＨｚよりも低い周波数で動作させることができる。具体的には、上記と同じくデータ幅を３２ビットとしても、３個の送信パケット生成部１３１〜１３３を並列に使用しているため、それらを３１２．５÷３＝１０４．２ＭＨｚで動作させても図３のタイミングチャートに示す動作が実現される。
【００５６】
動作周波数を低くすると、処理に要する時間が動作周波数に反比例して増加する。図３においてそれぞれの送信パケットの送信パケット生成部による生成時間が、ネットワークインターフェイス１２５への出力に要する時間よりも３倍程度長く図示されているのは、そのことを表している。本発明の通信プロトコル回路によれば、処理論理量が比較的多いために回路の素子遅延が深くなりがちなこれらの処理の動作周波数を低くできるため、半導体の素子遅延及び消費電力の実現上の問題を比較的小さくすることができる。
【００５７】
さらに、上記の処理によれば、排他制御によって首尾一貫性が維持される。このことについては後に詳細に説明する。
【００５８】
次に、通信プロトコル処理回路１０２がパケットを受信してから対応処理を行うまでの詳細動作について説明する。
【００５９】
図４は、本発明の実施形態の通信プロトコル処理回路１０２の受信動作を示したタイミングチャートである。
【００６０】
ネットワークインターフェイス１２５を介してネットワーク１０４から第１の受信パケットを受信（４０１）すると、ネットワーク一時バッファ部１２３は、空き状態となっていた第７のネットワーク一時バッファ用メモリ（図示省略）に第１の受信パケットを格納する。
【００６１】
第１の受信パケットの受信及び格納を完了すると、ネットワーク一時バッファ部１２３は、格納した第１の受信パケットを、アイドル状態となっていた第１の受信パケット解析部１４１へ渡す（４０２）。ネットワーク一時バッファ部１２３は、第１の受信パケットを渡し終えると、第７のホスト一時バッファ用メモリを空き状態に移す。
【００６２】
第１の受信パケット解析部１４１は、第１の受信パケットを受け取りながら、第１の受信パケットを解析し、そのパケットのヘッダから必要情報を抽出して通信制御部１２１に渡し、ペイロードから通信ホスト装置１０１に渡すべきデータを抽出してホスト一時バッファ部１２２に渡す（４０３）。そのパケットの受け取り及び解析が完了すると、第１の受信パケット解析部１４１は解析結果（すなわちそのパケットの種別）を通信制御部１２１に報告し、アイドル状態に移る。
【００６３】
ホスト一時バッファ部１２２は、空き状態となっていた第７のホスト一時バッファ用メモリ（図示省略）に第１の受信パケットから抽出したデータを格納する。そのデータの格納を完了すると、ホスト一時バッファ部１２２は第７のホスト一時バッファ用メモリにデータを格納した旨をホスト一時バッファ部１２２のエントリ情報（第２のデータエントリ）として通信制御部１２１に報告する。
【００６４】
第１の受信パケット解析部１４１から通信制御部１２１に渡されるヘッダ情報及び解析結果、及び、ホスト一時バッファ部１２２から通信制御部１２１に渡される格納結果（第２のデータエントリとして格納した旨）は、空き状態であった受信パケット解析格納結果キュー１５５の第１の受信パケット解析格納結果エントリ２７１として保持される。受信パケット解析格納結果キュー１５５に新たなエントリが発生したことを受けて、アイドル状態となっていた第７のシーケンス処理部（図示省略）がその受信パケットの対応（４０４）を実行するために起動される。
【００６５】
第７のシーケンス処理部は、まず受信パケット解析格納結果キュー１５５が保持している第１の受信パケットの種別を参照して、通信情報管理用メモリ１５２内の複数の通信情報エントリからその受信パケットに合致するものを探し出す旨を判断する。そして、第７のシーケンス処理部は、受信パケット解析格納結果キュー１５５が保持しているヘッダ情報を参照し、それに合致する通信情報管理用メモリ１５２内の第Ｘの通信情報エントリを探し出す。
【００６６】
そして、第７のシーケンス処理部は、探し出した第Ｘの通信情報エントリ（例えば、第３の通信情報エントリ（図示省略））を参照（及び必要に応じて更新）して、受信パケット抽出データを格納すべきホストメモリ１１２の領域を知る。次に、第７のシーケンス処理部は、アップロード（ホスト一時バッファ部１２２からホストメモリ１１２へのデータコピー）命令を発行する。このアップロード命令は、ホストメモリ１１２に格納すべき受信パケット抽出データの先頭メモリアドレスとデータ長とホスト一時バッファ部１２２のエントリ情報（第２のデータエントリ）とから成る。
【００６７】
発行されたアップロード命令は、空き状態であったアップロード命令キュー１５３内の第１のアップロード命令エントリ２５１となり、ホスト一時バッファ部１２２及びＤＭＡ制御部１２４を介してホストバス１１４に対して発行される。このときホスト一時バッファ部１２２は、第１の受信パケット抽出データを準備する。これによって、ＤＭＡ制御部１２４及びホストバス１１４を介してホストメモリ１１２に第１の受信パケット抽出データが格納される（４０５）。第１の受信パケット抽出データをホストメモリ１１２に渡し終えると、ホスト一時バッファ部１２２はアップロード命令に従ってアップロードが完了した旨を通信制御部１２１に報告する。
【００６８】
アップロードの完了報告を受けると、アップロード命令キュー１５３は第１のアップロード命令エントリ２５１を消す。第７のシーケンス処理部は続いて通信情報管理用メモリ１５２内の第Ｘの通信情報エントリを参照及び更新して、その第Ｘの通信情報エントリにパケット受信及びそれに対応した旨を反映する。
【００６９】
また第７のシーケンス処理部は、ホスト一時バッファ部１２２に対して、ホスト一時バッファ部１２２のエントリ情報（第２のデータエントリ）を消すように指示する。ホスト一時バッファ部１２２はその指示に従ってエントリ情報を消す。その結果、第７のホスト一時バッファ用メモリは空き状態に移る。
【００７０】
受信パケット解析格納結果キュー１５５のエントリに対して対応処理を実行するために起動された第７のシーケンス処理部は最後にその役目を終えてアイドル状態に移る。その移行を受けて、受信パケット解析格納結果キュー１５５はそれに対応する受信パケット解析格納結果エントリ２７１を消す。
【００７１】
ネットワークインターフェイス１２５がネットワーク１０４から第１の受信パケットを受信した後、第２の受信パケットの受信（４１１）が始まる。ネットワーク一時バッファ部１２３は、空き状態となっていた第８のネットワーク一時バッファ用メモリ（図示省略）に第２の受信パケットを格納する。第２の受信パケットの受信及び格納を完了すると、ネットワーク一時バッファ部１２３は、格納した第２の受信パケットを、アイドル状態となっていた第２の受信パケット解析部１４２へ渡す（４１２）。その後、ネットワーク一時バッファ部１２３は、上記の第１の受信パケットの場合と同様に、以降のパケットの受信の待ち状態となる。
【００７２】
第２の受信パケットを受け取った第２の受信パケット解析部１４２の動作は、上記の第１の受信パケットを受け取った第１の受信パケット解析部１４１の動作と同じである。また、ホスト一時バッファ部１２２及び受信パケット解析格納結果キュー１５５の振る舞いも上記と同じである。
【００７３】
第２の受信パケット抽出データのホスト一時バッファ部への格納、並びに、ヘッダ情報、解析結果及び格納結果の受信パケット解析格納結果キューへの保持が実行される時刻には、第１の受信パケットに関するエントリがそれぞれ第７のホスト一時バッファ用メモリ内及び第１の受信パケット解析格納結果エントリ２７１として存在している。このため、第２の受信パケット抽出データは、第８のホスト一時バッファ用メモリ（図示省略）に格納され、ヘッダ情報、解析結果及び格納結果は、第２の受信パケット解析格納結果エントリ２７２として保持される。
【００７４】
図４の例では、受信パケット解析格納結果キュー１５５に第２の受信パケットに関する新たなエントリが発生した時刻に、第７のシーケンス処理部が第１の受信パケットに対応する処理を実行中である。このため、その時刻までアイドル状態となっていた第８のシーケンス処理部（図示省略）が第２の受信パケットに対応する処理（４１３）のために起動される。第８のシーケンス処理部が実行する、第２の受信パケットに対応する処理（４１３）は、上記の第７のシーケンス処理部が実行する、第１の受信パケットに対応する処理（４０４）と同様である。このように本実施形態の通信プロトコル処理回路１０２では、複数の機能ブロックが並行動作しながら受信処理を行う。
【００７５】
図４が示す通り、本実施形態の通信プロトコル処理回路１０２によれば、ネットワークインターフェイス１２５が受信パケットを連続して受信したとしても、首尾一貫性を損なうことなく受信処理を実行できることがわかる。
【００７６】
具体的には、図３を参照して説明した例と同様に、ネットワークインターフェイス１２５からネットワーク一時バッファ部１２３には３２ビット幅のデータが、３１２．５ＭＨｚの動作周波数で出力されると仮定する。この場合、スループットは３２ビット×３１２．５ＭＨｚ＝１０，０００Ｍｂｐｓ＝１０Ｇｂｐｓである。この場合、図４が示す通りそれぞれの受信パケット間に微小なマージン時間が存在するものの、通信メディア帯域に近い高速な送信スループットを達成できる。
【００７７】
また、複数の受信パケット解析部１４１〜１４３と通信制御部１２１の動作、及び、複数の受信パケット解析部１４１〜１４３と通信制御部１２１とホスト一時バッファ部１２２とネットワーク一時バッファ部１２３との間の接続については、上記の３１２．５ＭＨｚよりも低い周波数で動作させることができる。具体的には、上記と同じくデータ幅を３２ビットとしても、３個の受信パケット解析部１４１〜１４３を並列に使用しているため、それらを３１２．５÷３＝１０４．２ＭＨｚで動作させても図４のタイミングチャートに示す動作が実現される。
【００７８】
動作周波数を低くすると、処理に要する時間が動作周波数に反比例して増加する。図４においてそれぞれの受信パケットの受信パケット解析部による解析時間が、ネットワークインターフェイス１２５からの入力に要する時間よりも３倍程度長く図示されているのは、そのことを表している。本発明の通信プロトコル回路によれば、処理論理量が比較的多いために回路の素子遅延が深くなりがちなこれらの処理の動作周波数を低くできるため、半導体の素子遅延及び消費電力の実現上の問題を比較的小さくすることができる。
【００７９】
以上説明した通信プロトコル処理回路１０２の送信動作及び受信動作は、通信プロトコル処理の首尾一貫性を保ちながら、並行して動作する。このような動作は、通信制御部１２１内の複数のシーケンス処理部２０１〜２０３及び競合調停部１５１が、通信情報管理用メモリ１５２へのアクセスの競合調停（排他制御）を実行することによって達成される。以下、このような競合調停（排他制御）について説明する。
【００８０】
通信制御部１２１において最大９個のシーケンス処理が同時に実行される他に、ＤＭＡ制御部１２４を介した通信ホスト装置１０１からのアクセスパスが存在する。これらに対して、第１のシーケンス処理部２０１には第１の一時独占通信情報エントリレジスタ２１１が対応付けられ、第２のシーケンス処理部２０２には第２の一時独占通信情報エントリレジスタ２１２が対応付けられ、第３〜第８のシーケンス処理部（図示省略）にはそれぞれ第３〜第８の一時独占通信情報エントリレジスタ（図示省略）が対応付けられ、第９のシーケンス処理部２０３には第９の一時独占通信情報エントリレジスタ２１３が対応付けられ、通信ホスト装置１０１からのアクセスパスには第１０の一時独占通信情報エントリレジスタ２２１が対応付けられている。これら複数の一時独占通信情報エントリレジスタ２１１〜２２１の値がいずれも有効でない場合、いずれの通信情報エントリ２４１〜２４３も一時独占されていないことを意味する。複数のシーケンス処理部２０１〜２０３及び通信ホスト装置１０１による通信情報管理用メモリ１５２への複数のアクセス要求があった場合、所定のルールに則って調停が行われた結果、複数のアクセス要求のうち一つが選択される。
【００８１】
一方、複数のシーケンス処理部２０１〜２０３又は通信ホスト装置１０１による通信情報管理用メモリ１５２内のいずれかの通信情報エントリの一時独占要求があり、かつ、その通信情報エントリの番号が他の一時独占要求及び一時独占通信情報エントリレジスタ２１１〜２２１が保持している有効な値と競合していない場合、その要求元に対応する一時独占通信情報エントリレジスタにその通信情報エントリの番号が有効値として設定される。
【００８２】
一時独占を要求された通信情報エントリの番号が、一時独占通信情報エントリレジスタ２１１〜２２１が保持している有効な値と競合していないが、他の一時独占要求と競合している場合、所定のルールに則って調停が行われた結果、同じ番号の通信情報エントリに対する複数の一時独占要求のうち一つが選択される。そして、一時独占要求の要求元に対応する一時独占通信情報エントリレジスタに、選択された通信情報エントリの番号が有効値として設定される。
【００８３】
一時独占を要求された通信情報エントリの番号が、一時独占通信情報エントリレジスタ２１１〜２２１が保持している有効な値と競合している場合、その要求は競合待ち状態となる。
【００８４】
このように、シーケンス処理部２０１〜２０３又は通信ホスト装置１０１が通信情報管理用メモリ１５２内の通信情報エントリを一時独占すると、競合調停部１５１は、一時独占通信情報エントリレジスタが保持する番号と、通信情報エントリオフセットレジスタ２３１と通信情報エントリサイズレジスタ２３２の値とに基づいて、一時独占している通信情報エントリの格納アドレスを導出し、そのアドレスに対する他のシーケンス処理部２０１〜２０３又は通信ホスト装置１０１からのアクセス要求を競合待ち状態とする。
【００８５】
通信情報エントリを一時独占したシーケンス処理部２０１〜２０３又は通信ホスト装置１０１は、通信情報管理用メモリ１５２内の独占した通信情報エントリを参照及び更新した後、独占する必要がなくなると、独占の解除を要求する。その結果、解除を要求したシーケンス処理部２０１〜２０３又は通信ホスト装置１０１に対応する一時独占通信情報エントリレジスタは無効値となる。
【００８６】
上記の競合調停（排他制御）の具体例を、図３を参照して説明する。
【００８７】
以下、図３に示した全ての送信パケットが、同一のサービスに関する（言い換えると、同一の通信情報エントリに関する）パケットである場合を例として説明する。
【００８８】
第１のシーケンス処理部２０１は、例えば、第１の通信情報エントリ２４１に関してパケットを送信すると判断すると、第２のシーケンス処理部２０２を起動し、第１の通信情報エントリ２４１に関してパケットを送信する旨を指示する。この指示に従って送信されるパケットを、以下、第１の送信パケットと記載する。
【００８９】
この指示を受信した第２のシーケンス処理部２０２は、第１の一時独占通信情報エントリレジスタ２１１から第１０の一時独占通信情報エントリレジスタ２２１までを参照して、いずれの一時独占通信情報エントリレジスタにも第１の通信情報エントリ２４１を識別する番号が登録されていないことを確認する。
【００９０】
いずれかの一時独占通信情報エントリレジスタに第１の通信情報エントリ２４１を識別する番号が登録されている場合、第１の通信情報エントリ２４１は、第２のシーケンス処理部２０２以外のシーケンス処理部によって排他制御されている。言い換えると、第１の通信情報エントリ２４１は、第２のシーケンス処理部２０２以外のシーケンス処理部によって独占的に使用されている。この場合、第２のシーケンス処理部２０２は、第１の通信情報エントリ２４１を参照も更新もすることができない。このため、第２のシーケンス処理部２０２は、第１の通信情報エントリ２４１の排他制御が終了するまでアイドル状態で待機する。
【００９１】
いずれの一時独占通信情報エントリレジスタにも第１の通信情報エントリ２４１を識別する番号が登録されていない場合、第２のシーケンス処理部２０２は、第２のシーケンス処理部２０２に対応する第２の一時独占通信情報エントリレジスタ２１２に第１の通信情報エントリ２４１を識別する番号を登録する。これによって、第１の通信情報エントリ２４１が排他制御される。言い換えると、第１の通信情報エントリ２４１を識別する番号が第２の一時独占通信情報エントリレジスタ２１２に登録されてから削除されるまでの間、第１の通信情報エントリ２４１は、第２のシーケンス処理部２０２によって独占的に使用される。その間、第２のシーケンス処理部２０２以外のシーケンス処理部は、第１の通信情報エントリ２４１を参照及び更新することが禁止される。
【００９２】
第２のシーケンス処理部２０２は、第１の通信情報エントリ２４１の排他制御を開始した後、第１の通信情報エントリ２４１を参照及び更新する。具体的には、第１の通信情報エントリ２４１に含まれる送信パケットの管理情報を更新する。送信パケットの管理情報は、生成が開始された送信パケットを識別する情報、及び、送信が終了した送信パケットを識別する情報を含む。以下の説明では、送信パケットの管理情報を、（Ａ、Ｂ）の形式で記載する。この場合、「Ａ」は生成が開始された送信パケットの番号、「Ｂ」はネットワーク一時バッファ部１２３への出力が終了した送信パケットの番号である。送信パケットの管理情報の初期値は（０、０）である。
【００９３】
上記のように第１の送信パケットを送信する旨を指示された場合、第２のシーケンス処理部２０２は、送信パケットの管理情報を参照する。参照された送信パケットの管理情報が（０、０）であった場合、第２のシーケンス処理部２０２は、送信パケットの管理情報を（１、０）に更新する。（１、０）は、第１の送信パケットの生成が開始されたが、その出力がまだ終了していないことを示す。
【００９４】
このように送信パケットの管理情報を参照及び更新した後、第２のシーケンス処理部２０２は、第２の一時独占通信情報エントリレジスタ２１２から第１の通信情報エントリ２４１を識別する番号を削除する。具体的には、第２のシーケンス処理部２０２は、第２の一時独占通信情報エントリレジスタ２１２に無効値を登録する。これによって第２の一時独占通信情報エントリレジスタ２１２から第１の通信情報エントリ２４１を識別する番号が削除され、その結果、第２のシーケンス処理部２０２による第１の通信情報エントリ２４１の排他制御が終了する。
【００９５】
その後、既に説明したように、第２のシーケンス処理部２０２は、第１の送信対象データのダウンロード（３０３）及び第１の送信パケットの生成（３０４）を指示する。
【００９６】
図３の例では、第１の送信対象データのダウンロード及び第１の送信パケットの生成が実行されている間、第１のシーケンス処理部２０１は、第２の送信パケットを送信する指示、第３の送信パケットを送信する指示、第４の送信パケットを送信する指示、及び、第５の送信パケットを送信する指示を順次発行する。
【００９７】
第２の送信パケットを送信する指示を受けた第３のシーケンス処理部（図示省略）は、上記の第２のシーケンス処理部２０２と同様、第１の通信情報エントリ２４１の排他制御を開始し、その内容を参照する。図３の例では、この時点で、送信パケットの管理情報は（１、０）である。第３のシーケンス処理部は、送信パケットの管理情報を（２、０）に更新する。
【００９８】
同様に、第４のシーケンス処理部（図示省略）、第５のシーケンス処理部（図示省略）及び第６のシーケンス処理部（図示省略）が、それぞれ、送信パケットの管理情報を（３、０）、（４、０）及び（５、０）に順次更新する。
【００９９】
一方、第２のシーケンス処理部２０２は、第１の送信パケットの生成（３０４）が終了し、生成された第１の送信パケットのネットワーク一時バッファ部１２３への出力が終了すると、第１の通信情報エントリ２４１に含まれる送信パケットの管理情報を参照及び更新する。しかし、その時点で第１の通信情報エントリ２４１が第６のシーケンス処理部によって排他制御されている場合、第２のシーケンス処理部２０２はその排他制御が終了するまでアイドル状態で待機する。
【０１００】
第６のシーケンス処理部による排他制御が終了すると、第２のシーケンス処理部２０２は、第１の通信情報エントリ２４１の排他制御を開始し、送信パケットの管理情報を参照及び更新する。このとき、参照された送信パケットの管理情報は（５、０）であるため、第２のシーケンス処理部２０２は、それを（５、１）に更新する。これは、第１から第５の送信パケットの生成が開始され、第１の送信パケットの出力が終了したことを示す。
【０１０１】
このように、図３の例では、各シーケンス処理部が通信情報エントリを参照してから、参照された通信情報エントリを更新するまでの間、他のシーケンス処理部がその通信情報エントリを参照も更新もできないように排他制御される。
【０１０２】
ここで、上記のような排他制御が実行されない場合に発生する問題を説明する。
【０１０３】
上記のように、第６のシーケンス処理部は、送信パケットの管理情報の値（４、０）を参照し、これを（５、０）に更新する。第１の通信情報エントリ２４１の排他制御がされていない場合、第２のシーケンス処理部２０２は、第１の送信パケットの出力が終了すると、第６のシーケンス処理部による参照から更新までの間に、送信パケットの管理情報を参照することができる。その結果、例えば、第６のシーケンス処理部が送信パケットの管理情報（４、０）を参照し、次に第２のシーケンス処理部２０２が送信パケットの管理情報（４、０）を参照し、次に第６のシーケンス処理部が送信パケットの管理情報を（４、０）から（５、０）に更新する場合がある。
【０１０４】
この場合、第２のシーケンス処理部２０２は、既に送信パケットの管理情報として（４、０）を参照しているため、それが（５、０）に更新されたことを知らずに、（４、０）から（４、１）に更新する。これによって、実際には既に第５の送信パケットの生成が開始されているにもかかわらず、そのことを示す情報が失われる。このように、通信情報エントリの排他制御を実行しない場合、通信プロトコルの処理の首尾一貫性が失われる場合がある。
【０１０５】
しかし、上記のように通信情報エントリを排他制御することによって、複数の送信パケットの生成を並列に処理した場合でも、通信プロトコル処理の首尾一貫性が維持される。
【０１０６】
同様に、受信したパケットを処理する場合にも通信情報エントリの排他制御が実行される（図４参照）。この場合、各通信情報エントリは、受信パケットの管理情報を含む。受信パケットの管理情報は、受信パケット解析部が受信したパケットを識別する情報、及び、ホスト一時バッファ部１２２からホストバス１１４への出力（すなわちアップロード）が終了したパケットを識別する情報を含む。例えば、受信パケット管理情報が（Ｃ、Ｄ）の形式で表示される場合、「Ｃ」は受信パケット解析部が受信したパケットの番号、「Ｄ」はアップロードが終了したパケットの番号である。
【０１０７】
図４の例では、第１の受信パケット解析部１４１が第１の受信パケットを受信する処理（すなわち、第１の受信パケットのペイロードから抽出されたデータのホスト一時バッファ部への出力）を終了すると、第７のシーケンス処理部（図示省略）が、第１の受信パケットに対応する通信情報エントリを参照及び更新する。例えば、第１の受信パケットによって指定されたポート番号に基づいて、第１の受信パケットとサービスとが対応付けられ、そのサービスに対応する通信情報エントリ（例えば第１の通信情報エントリ２４１）が特定される。
【０１０８】
参照された受信パケットの管理情報が（０、０）であった場合、第７のシーケンス処理部は、受信パケットの管理情報を（１、０）に更新する。（１、０）は、第１の受信パケットが受信されたが、第１の受信パケットから抽出されたデータのアップロードがまだ終了していないことを示す。
【０１０９】
図４の例では、第１の受信パケット解析部１４１が第１の受信パケットを受信した後、その第１の受信パケットからのデータの抽出が終了する前に、第２の受信パケット解析部１４２が第２の受信パケットを受信することができる。この場合、第８のシーケンス処理部（図示省略）が受信パケットの管理情報を参照し、その値を（２、０）に更新する。
【０１１０】
その後、第１の受信パケットから抽出されたデータのアップロードが終了すると、第７のシーケンス処理部は、通信情報エントリを参照する。参照された通信情報エントリ内の受信パケットの管理情報が（２、０）であった場合、第７のシーケンス処理部は、その値を（２、１）に更新する。
【０１１１】
図４の処理においても、各シーケンス処理部が通信情報エントリを参照してから更新するまでの間に、他のシーケンス処理部がその通信情報エントリを参照も更新もできないように排他制御が実行される。これによって、複数の受信パケットの処理を並列に実行した場合でも、通信プロトコル処理の首尾一貫性が維持される。
【０１１２】
競合調停（排他制御）の他の具体例を説明する。第１の通信情報エントリ２４１のフィールドのうち、首尾一貫性を維持するために排他制御すべき情報フィールドには、送信する旨を判断済み（ひいてはダウンロードし、送信し、通信相手に到達しているかもしれない）のデータ長と、通信相手から受信済みで解析・解釈済みの、送信データに対する受信確認応答番号とを含む場合、各シーケンス処理部によるその情報フィールドの参照及び更新を、上記の排他制御と同様に行う。この排他制御は、パケットの送信を命令するシーケンス処理部と、パケットの受信によってその対応処理を判断するシーケンス処理部との間で排他制御を行う。
【０１１３】
上記のように、本実施形態の通信プロトコル回路は、並列化された箇所同士で高効率に通信情報を排他制御することによって、情報破綻させることなく首尾一貫性を維持しながら通信プロトコルを処理することができる。
【産業上の利用可能性】
【０１１４】
本発明は、通信プロトコル処理を行う回路に限らず、ホスト端末に接続する通信プロトコル処理拡張ボード、通信端末装置、又は通信中継装置にも適用できる。
【図面の簡単な説明】
【０１１５】
【図１】本発明の実施形態の通信装置及び通信プロトコル処理回路の構成を示したブロック図である。
【図２】本発明の実施形態の通信プロトコル処理回路内の通信制御部の詳細構成を示したブロック図である。
【図３】本発明の実施形態の通信プロトコル処理回路の送信動作を示したタイミングチャートである。
【図４】本発明の実施形態の通信プロトコル処理回路の受信動作を示したタイミングチャートである。
【符号の説明】
【０１１６】
１０２  通信プロトコル処理回路
１２１  通信制御部
１２２  ホスト一時バッファ部
１２３  ネットワーク一時バッファ部
１２４  ＤＭＡ制御部
１２５  ネットワークインターフェイス
１５１  競合調停部
【図１】
2010193364.tif 000003
【図２】
2010193364.tif 000004
【図３】
2010193364.tif 000005
【図４】
2010193364.tif 000006