説明

通信プロトコル処理回路、情報処理装置及び通信プロトコル処理方法

【課題】向上していく通信メディア帯域に近い高速なスループットを達成しつつ、首尾一貫性のある通信プロトコル処理を実現する。
【解決手段】送信パケットを生成する送信パケット生成部と、受信パケットを解析する受信パケット解析部と、通信情報を管理して受信パケットに対する対応やパケットの送信を決定するシーケンス処理部と、をそれぞれ複数備え、それぞれを並列処理させる。さらに、複数のシーケンス処理部によるメモリアクセス及び送信パケットの生成要求等を調停する競合調停部を備え、その競合調停部は、それぞれのシーケンス処理部が一時独占しているメモリの領域を示すレジスタを備え、それぞれのシーケンス処理部は通信情報管理用メモリの領域の一時独占及びその解除を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本願明細書に開示される技術は、通信プロトコルを処理する技術に関し、特に、高速な通信スループットを容易に実現する通信プロトコル処理技術に関する。
【背景技術】
【0002】
インターネットを利用した通信サービス及び通信トラフィックは年々増えており、それを実現するための通信メディアや通信端末においてもその帯域及び処理能力は向上している。現在、通信メディアの帯域はおおむね年率2倍、通信端末(その中で主要な処理を行う汎用プロセッサ)の処理能力はおおむね年率1.5倍の伸び率で向上している。一例としては、多くのPC(Personal Computer)が標準的に備えたネットワークのインターフェイスは、以前は帯域100Mbpsの100BASEであったが、現在は帯域1Gbpsの1000BASEとなっている。そして今後は帯域10Gbpsの10GBASEが採用されていく見込みである。
【0003】
インターネット或いはその技術に基づいたネットワークを利用して通信相手と通信するには、通信端末は、Ethernet(登録商標、以下同じ)のような物理データリンク層の通信プロトコルだけではなく、ネットワーク層(いわゆるIP(Internet Protocol))、トランスポート層(いわゆるUDP(User Datagram Protocol)又はTCP(Transmission Control Protocol))及びアプリケーション層の通信プロトコルも処理する必要がある。通信端末において、物理データリンク層の通信プロトコルは専用ハードウェアにて処理されるのが一般的である。一方、それ以外のいわゆるTCP/IPと呼ばれる通信プロトコルは汎用プロセッサによってソフトウェア的に処理されるのが一般的である。
【0004】
現在、汎用プロセッサにてソフトウェア的に通信プロトコルを処理するPCは、それらの通信プロトコルを1Gbpsのスループットで処理すること、ひいては1GbpsのEthernetの帯域を高効率に利用することが困難になっている。今後、通信メディア帯域と汎用プロセッサ処理能力の伸び率が前述のトレンド通り進むと、通信メディアの帯域と通信端末の処理スループットの差は更に広がり、通信端末による通信メディアの利用効率は更に悪くなる見込みである。
【0005】
通信プロトコルを専用ハードウェアにて処理する技術は、例えば、特許文献1に記載されている。特許文献1に記載された通信制御プロセッサは、それぞれ固有のプロトコル処理を行う複数の通信制御部と、パケットデータのフィールドを判別してパケットデータを対応する通信制御部に渡すプロトコル判別部から成る。これによって、機能的に複数の通信プロトコルで通信することができる。
【特許文献1】特開平5−292147号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
例えば、一プロトコルによる通信メディア帯域の向上に追随する高速なスループットが要求される通信サービスを実現する場合、上記背景技術によれば次の問題が発生する。前提とした一プロトコルの通信に対して、上記背景技術では一つの通信制御部及びプロトコル判別部が全ての受信パケットデータを処理し、残りの通信制御部はその間パケットデータを処理することがなくアイドル状態である。このため、処理動作を続ける一つの通信制御部又はプロトコル判別部が処理のボトルネックとなり、高速なスループットの達成が困難である。
【0007】
高速なスループットに達成するために、ボトルネック箇所の動作クロックの周波数を向上させるのが一案である。しかしながら、半導体の素子遅延及び消費電力が大きな問題となるため、動作クロックの周波数を安易に向上することはできない。実際、従来技術の動作クロックの周波数を向上させることによって、10Gbps又はそれ以上の通信スループットを達成するのは困難な見込みである。
【0008】
本発明が解決しようとする課題は、向上していく通信メディア帯域に近い高速なスループットを達成し、首尾一貫性(コヒーレンシ)を損なわずに通信プロトコルを処理する、半導体の素子遅延及び消費電力の実現上の問題が比較的小さな、回路及び装置を提供することである。
【課題を解決するための手段】
【0009】
本願で開示する代表的な発明は、複数の送信パケット生成部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、メモリには、通信情報が格納され、通信情報は、送信パケット生成部が生成及び出力すべきパケットを識別するための情報を含み、競合調停部には、通信情報の参照及び更新が複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、各送信パケット生成部は、各シーケンス処理部からの命令に基づいて、パケットを生成及び出力し、各シーケンス処理部は、通信情報を参照して、送信パケット生成部が生成及び出力すべきパケットを判断し、生成及び出力すべきパケットの生成及び出力を送信パケット生成部に命令し、通信情報を、生成及び出力を命令したことを識別するための情報に更新し、通信情報を参照及び更新する前に、競合調停部に格納された情報に基づいて、通信情報の参照及び更新が他のシーケンス処理部によって排他的に制御されているか否かを判定し、通信情報の参照及び更新が他のシーケンス処理部によって排他的に制御されている場合、排他的な制御が解除されるまで通信情報の参照及び更新を待ち、通信情報の参照及び更新が他のシーケンス処理部によって排他的に制御されていない場合、競合調停部に格納された情報を更新することによって通信情報の参照及び更新の排他的な制御を開始した後、通信情報の参照及び更新を実行し、通信情報の参照及び更新が終了した後、競合調停部に格納された情報を更新することによって通信情報の参照及び更新の排他的な制御を解除することを特徴とする。
【発明の効果】
【0010】
本発明の一実施形態によれば、半導体の素子遅延及び消費電力の問題を比較的小さく抑えながら、向上していく通信メディア帯域に近い高速なスループットを容易に達成することができる。さらに、本発明の一実施形態によれば、並列化した箇所同士で高効率に通信情報を排他制御することによって、首尾一貫性を持たせて通信プロトコルを処理することができる。
【発明を実施するための最良の形態】
【0011】
向上していく通信メディア帯域に近い高速なスループットを達成容易とするために、本発明の実施形態の通信プロトコル処理回路では、処理論理量が比較的多く回路の素子遅延が深くなりがちな箇所が並列化される。具体的には、後述するように、本発明の実施形態の通信プロトコル処理回路は、送信パケットを生成する送信パケット生成部と、受信パケットを解析する受信パケット解析部と、通信情報を管理して受信パケットに対する対応及びパケットの送信を決定するシーケンス処理部と、を複数備え、それぞれを低周波にて動作させることによって、並列処理させる。
【0012】
更に、本発明の実施形態の通信プロトコル処理回路は、並列化された箇所同士で高効率に排他制御する機構を備える。具体的には、後述するように、本発明の実施形態の通信プロトコル処理回路は、複数のシーケンス処理部による通信情報管理用メモリアクセス及び送信パケットの生成要求等の調停を行う競合調停部を備える。その競合調停部はそれぞれのシーケンス処理部が一時独占している通信情報管理用メモリの領域を示すレジスタを備え、それぞれのシーケンス処理部は通信情報管理用メモリの領域の一時独占及びその解除を行う。
【0013】
以下、本発明の実施形態について図面を参照して説明する。
【0014】
図1は、本発明の実施形態の通信装置及び通信プロトコル処理回路の構成を示したブロック図である。
【0015】
通信プロトコル処理回路は通信装置の中に備えるべきものであるが、図1では説明の便宜上、通信装置を通信ホスト装置101と通信プロトコル処理回路102とに分けて記載している。
【0016】
まず通信ホスト装置101について説明する。通信ホスト装置101単体は公知技術で実現可能である。通信ホスト装置101は、通信プロトコル処理回路102を介してネットワーク104に接続され、ネットワーク104を介して一つ以上の通信相手(図示省略)との間の通信サービスを実現する。
【0017】
具体的には、通信ホスト装置101は、能動的に、又は、通信相手からネットワーク104を介して受信したパケットを通信プロトコル処理回路102が解析した結果に基づいて受動的に、通信相手及び通信サービスを指定して通信を開始する旨を通信プロトコル処理回路102に初期設定する。その通信サービスの実行中、通信ホスト装置101は、ホストメモリ112に格納された送信対象データを送信する旨を通信プロトコル処理回路102に指示し、また通信相手から受信したパケットから抽出したデータをホストメモリ112に格納する旨を通信プロトコル処理回路102に指示する。
【0018】
これと並行して、通信ホスト装置101は、ホスト周辺インターフェイス113及びホストバス114を介してストレージ装置103から送信対象データを読み出してホストメモリ112に格納し、ホストメモリ112に格納された受信抽出データを読み出してストレージ装置103に格納する。更にその通信サービスの最後に、通信ホスト装置101は、能動的又は受動的に、通信を終了する旨を通信プロトコル処理回路102に指示する。通信ホスト装置101が行うこれらの判断及び制御は、ホストプロセッサ111が実行するソフトウェアプログラム(図示省略)によって実現される。
【0019】
次に、本発明の主要な特徴である通信プロトコル処理回路102の詳細を説明する。通信プロトコル処理回路102は、通信制御部121、ホスト一時バッファ部122、ネットワーク一時バッファ部123、DMA制御部124、ネットワークインターフェイス125、複数の送信パケット生成部131〜133、及び複数の受信パケット解析部141〜143から成る。図2には、一例として、3個の送信パケット生成部131〜133及び3個の受信パケット解析部141〜143を示すが、これらの数は3に限定されない。
【0020】
通信制御部121は、競合調停部151、通信情報管理用メモリ152、アップロード命令キュー153、ダウンロード命令キュー154、受信パケット解析格納結果キュー155及び送信パケット生成命令キュー156から成る。ホスト一時バッファ部122は、複数のホスト一時バッファ用メモリ161〜163から成り、ネットワーク一時バッファ部123は、複数のネットワーク一時バッファ用メモリ171〜173から成る。
【0021】
図1には、ホスト一時バッファ部122が第1のホスト一時バッファ用メモリ161から第12のホスト一時バッファ用メモリ163までの12個のホスト一時バッファ用メモリを備える例を示す(ただし、第3のホスト一時バッファ用メモリから第11のホスト一時バッファ用メモリまでの図示は省略する)。しかし、ホスト一時バッファ用メモリの数は12に限定されない。ネットワーク一時バッファ用メモリ171〜173についても同様である。
【0022】
図2は、本発明の実施形態の通信プロトコル処理回路102内の通信制御部121の詳細構成を示したブロック図である。
【0023】
図2において、図1と同一の符号は、図1に示したものと同一のものを表している。通信制御部121は、図1に示した競合調停部151等に加えて、複数のシーケンス処理部201〜203及びタイマ291を備える。図2には、通信制御部121が第1のシーケンス処理部201から第9のシーケンス処理部203までの9個のシーケンス処理部を備える例を示す(ただし、第3のシーケンス処理部から第8のシーケンス処理部までの図示は省略する)。しかし、シーケンス処理部の数は9に限定されない。
【0024】
通信制御部121内の競合調停部151は、複数の一時独占通信情報エントリレジスタ211〜221、通信情報エントリオフセットレジスタ231及び通信情報エントリサイズレジスタ232を備える。図2には、競合調停部151が第1の一時独占通信情報エントリレジスタ211から第9の一時独占通信情報エントリレジスタ221までの10個のシーケンス処理部を備える例を示す(ただし、第3の一時独占通信情報エントリレジスタから第8の一時独占通信情報エントリレジスタまでの図示は省略する)。しかし、一時独占通信情報エントリレジスタの数は10に限定されない。
【0025】
通信制御部121内の通信情報管理用メモリ152、アップロード命令キュー153、ダウンロード命令キュー154、受信パケット解析格納結果キュー155及び送信パケット生成命令キュー156はそれぞれ、複数の通信情報エントリ241〜243、複数のアップロード命令エントリ251〜253、複数のダウンロード命令エントリ261〜263、複数の受信パケット解析格納結果エントリ271〜273及び複数の送信パケット生成命令エントリ281〜283を保持する。
【0026】
図2には、第1の通信情報エントリ241から第10000の通信情報エントリ243、第1のアップロード命令エントリ251から第3のアップロード命令エントリ253、第1のダウンロード命令エントリ261から第5のダウンロード命令エントリ263、第1の受信パケット解析格納結果エントリ271から第6の受信パケット解析格納結果エントリ273、及び、第1の送信パケット生成命令エントリ281から第5の送信パケット生成命令エントリ283を示す(ただし、第3から第9999の通信情報エントリ、第3から第4のダウンロード命令エントリ、第3から第5の受信パケット解析格納結果エントリ及び第3から第4の送信パケット生成命令エントリの図示は省略する)。しかし、上記のエントリの数は、図2に示した例に限定されない。
【0027】
通信プロトコル処理回路102の送受信動作について説明する。通信プロトコル処理回路102が送受信動作に至る前に、ホストプロセッサ111で実行されるソフトウェアプログラムによって通信情報エントリオフセットレジスタ231及び通信情報エントリサイズレジスタ232に所定の値が予め設定される。具体的には、ホストプロセッサ111からの各レジスタへの書き込み要求を、ホストバス114及びDMA制御部124を介して通信制御部121が受け取り、その書き込み要求に従って通信制御部121が各レジスタに値を書き込む。
【0028】
これらの値は、通信情報エントリの番号に対応する通信情報管理用メモリ152の領域のアドレスを表す。具体的には、通信情報エントリオフセットレジスタ231に設定された値をA、通信情報エントリサイズレジスタ232に設定された値をBとおくと、通信情報管理用メモリ152における第Nの通信情報エントリに対応する格納アドレスはA+B×(N−1)からA+B×N−1までである。
【0029】
また、ホストプロセッサ111で実行されるソフトウェアプログラムによって、通信相手、通信サービス、及び、ホストメモリ112内の送信対象データの格納領域に関する情報が通信情報エントリとして設定される。
【0030】
一つないし複数の通信情報エントリが一つの通信サービスに割り当てられる。各通信情報エントリ241〜243は、そのエントリの有効フラグ、通信ホスト装置101自身のネットワークアドレス(例えば物理アドレス又はIPアドレス)、通信相手のネットワークアドレス、通信ホスト装置101自身のサービス番号(例えばUDP又はTCPのポート番号)、通信相手のサービス番号、通信状態、通信処理状態、ホストメモリ112内の送信対象データを格納している領域のアドレス(メモリアドレス)、ホストメモリ112内の受信抽出データを格納すべき領域のアドレス、送信済データ長、応答確認済データ長、及び、受信済データ長等を含む。これらの情報に基づいて、次に生成及び送信すべきパケットの有無や、そのパケットの種別、そのパケットのペイロード部分に埋め込む送信対象データのホストメモリ112内の格納領域アドレスやその領域全体のサイズ、そのうち送信済みのデータ長などを特定することができる。また、受信すべきパケットの有無や、そのパケットの種別、そのパケットのペイロード部分から抽出する受信データのホストメモリ112内の格納領域アドレスやその領域全体のサイズ、そのうち受信済みのデータ長なども特定することができる。
【0031】
また、ホストプロセッサ111で実行されるソフトウェアプログラムによって、第1のシーケンス処理部201が予め起動されている。この第1のシーケンス処理部201は、通信情報管理用メモリ152に格納した通信情報エントリ241〜243及びタイマ291を継続的に参照して、パケット送信の判断、ホストプロセッサ111からの指示の完了の報告、及び、通信異常状態のホストプロセッサ111への割り込み報告を行うシーケンスを実行し続ける。
【0032】
なお、図1及び図2に記載した構成のうち、複数の送信パケット生成部131〜133、複数の受信パケット解析部141〜143及び複数のシーケンス処理部201〜203は、典型的には専用のハードウェアによって実現される。しかし、これらは、汎用のプロセッサがメモリに格納されたプログラムを実行することによって実現されてもよい。
【0033】
通信プロトコル処理回路102がパケット送信を決定してから送信するまでの詳細動作について説明する。
【0034】
図3は、本発明の実施形態の通信プロトコル処理回路102の送信動作を示したタイミングチャートである。
【0035】
第1のシーケンス処理部201は、通信情報管理用メモリ152内のそれぞれの通信情報エントリ241〜243を参照(及び必要に応じて更新)して、パケット送信の判断(301)を行う。そして、第1のシーケンス処理部201は、第Xの通信情報エントリ(例えば第1の通信情報エントリ241)に関してパケットを送信する旨を判断すると、アイドル状態となっていた第2のシーケンス処理部202をサブシーケンスとして起動し、第Xの通信情報エントリに関してパケットを送信する旨を指示する。それによって第2のシーケンス処理部202は、第1の送信パケットの生成処理のシーケンス(302)を開始する。
【0036】
第2のシーケンス処理部202は、まず第Xの通信情報エントリを参照及び更新して、送信対象データが格納されているホストメモリ112の領域及び送信パケットの種別等を知る。このとき、第2のシーケンス処理部202は、他のシーケンス処理部202が第Xの通信情報エントリを参照及び更新できないように排他制御する。この排他制御のために、第2の一時独占通信情報エントリレジスタ212が使用される。
【0037】
なお、図3及び後述する図4の処理において、各シーケンス処理部は、通信情報エントリを参照及び更新するときに、各シーケンス処理部に対応する一時独占通信情報エントリレジスタを使用して、同様の排他制御を実行する。これらの排他制御については後で詳細に説明する。
【0038】
次に、第2のシーケンス処理部202は、ダウンロード(すなわちホストメモリ112からホスト一時バッファ部122へのデータコピー)命令を発行する。ダウンロード命令は、ホストメモリ112に格納された送信対象データの先頭メモリアドレス及びデータ長を含む。これらのアドレス及びデータ長は、第Xの通信情報エントリから取得される。
【0039】
発行されたダウンロード命令は、空き状態であったダウンロード命令キュー154内の第1のダウンロード命令エントリ261となり、ホスト一時バッファ部122及びDMA制御部124を介してホストバス114に対して発行される。これによって、ホストメモリ112に格納された第一の送信対象データがホストバス114及びDMA制御部124を介してホスト一時バッファ部122に入力(303)される。ホスト一時バッファ部122は、入力されたデータを、空き状態となっていた第1のホスト一時バッファ用メモリ161に格納する。
【0040】
第1の送信対象データの格納を完了すると、ホスト一時バッファ部122は第1のホスト一時バッファ用メモリ161に格納した旨をホスト一時バッファ部122のエントリ情報(第1のデータエントリ)として通信制御部121に報告する。
【0041】
ダウンロード完了の報告を受けると、ダウンロード命令キュー154は第1のダウンロード命令エントリ261を消す。第2のシーケンス処理部202は続いて送信パケット生成命令を発行する。送信パケット生成命令は、送信パケットの種別と、送信パケットのヘッダを構成するネットワークアドレス等の情報と、ホスト一時バッファ部122のエントリ情報(第1のデータエントリ)と、から成る。
【0042】
発行された送信パケット生成命令は、空き状態であった送信パケット生成命令キュー156内の第1の送信パケット生成命令エントリ281となり、アイドル状態となっていた第1の送信パケット生成部131に対して発行される。
【0043】
送信パケットの生成の命令を受けた第1の送信パケット生成部131は、命令に従って第1の送信パケットの生成及び出力(304)を開始する。第1の送信パケット生成部131は、ホスト一時バッファ部122のエントリ情報(第1のデータエントリ)に対応するデータを渡す旨をホスト一時バッファ部122に指示しながら、まず送信パケットのヘッダを構成する情報から送信パケットのヘッダを生成及び出力する。ホスト一時バッファ部122は、指示されたエントリ情報(第1のデータエントリ)に対応するデータ、すなわち第1のホスト一時バッファ用メモリ161に格納している第1の送信対象データを第1の送信パケット生成部131に渡し、第1の送信パケット生成部131は、次にホスト一時バッファ部122から渡された第1の送信対象データを送信パケットのペイロードとして出力する。
【0044】
こうして生成及び出力された第1の送信パケットは、ネットワーク一時バッファ部123に渡される。第1の送信パケットの生成を完了すると、第1の送信パケット生成部131は通信制御部121に完了報告し、アイドル状態に移る。
【0045】
送信パケット生成の完了報告を受けると、送信パケット生成命令キュー156はその命令のエントリを消す。その命令を発行した第2のシーケンス処理部202は、続いて通信情報管理用メモリ152内の第Xの通信情報エントリを参照及び更新して、その通信情報エントリにパケット送信した旨を反映する。さらに第2のシーケンス処理部202は、ホスト一時バッファ部122に対して、ホスト一時バッファ部122のエントリ情報(第1のデータエントリ)を消すように指示する。ホスト一時バッファ部122はその指示に従って第1のホスト一時バッファ用メモリ161を空き状態に移行させる。
【0046】
第1のシーケンス処理部201のサブシーケンスを実行することを指示された第2のシーケンス処理部202は、最後に、その役目を終えてアイドル状態に移る。
【0047】
上記と並行して、ネットワーク一時バッファ部123は、空き状態となっていた第1のネットワーク一時バッファ用メモリ171に、第1の送信パケット生成部131が生成及び出力する第1の送信パケットを格納する。第1の送信パケットの格納を完了すると、ネットワーク一時バッファ部はそれを出力(305)し、ネットワークインターフェイス125を介してネットワーク104へと送信パケットを送信する。その送信が完了すると、ネットワーク一時バッファ部123は、第1のネットワーク一時バッファ用メモリ171を空き状態に移す。
【0048】
第1のシーケンス処理部201は、第2のシーケンス処理部202に第Xの通信情報エントリ(例えば第1の通信情報エントリ241)に関してパケットを送信する旨を指示した後、さらに通信情報管理用メモリ152内のそれぞれの通信情報エントリ241〜243を参照及び更新してパケット送信の判断を行う。そして第Yの通信情報エントリ(例えば第2の通信情報エントリ242)に関してパケットを送信する旨を判断すると、このとき第2のシーケンス処理部202は実行中であるため、第1のシーケンス処理部201はアイドル状態となっていた第3のシーケンス処理部(図示省略)をサブシーケンスとして起動し、第Yの通信情報エントリに関してパケットを送信する旨を指示する。それによって第3のシーケンス処理部は、第2の送信パケットの生成処理のシーケンス(312)を開始する。
【0049】
その後も引き続き、第1のシーケンス処理部201はパケット送信の判断を行い続け、必要に応じてサブシーケンスを起動する。
【0050】
起動された第3のシーケンス処理部は、上記の第2のシーケンス処理部202の場合と同様に、通信情報管理用メモリ152内の第Yの通信情報エントリを参照し、更新し、対応するダウンロード命令及び送信パケット生成命令を発行し、ホスト一時バッファ部122の対応するエントリ情報を消すように指示する。またアップロード命令キュー153及び送信パケット生成命令キュー156の振る舞いも上記と同様である。
【0051】
図3の例では、ダウンロードされた第2の送信対象データのホスト一時バッファ部122への格納、及び、生成された第2の送信パケットのネットワーク一時バッファ部123への格納が実行される時刻には、第Xの通信情報エントリに関するエントリがそれぞれ第1のホスト一時バッファ用メモリ161内及び第1のネットワーク一時バッファ用メモリ171内に存在している。このため、ダウンロードされた第2の送信対象データ及び生成された第2の送信パケットは、それぞれ、空き状態である第2のホスト一時バッファ用メモリ162及び第2のネットワーク一時バッファ用メモリ172に格納される。
【0052】
第2の送信パケットが生成される時刻には、第Xの通信情報エントリに関する処理を第1の送信パケット生成部131が実行中である。このため、アイドル状態の第2の送信パケット生成部132が第2の送信パケットを生成する。このように本実施形態の通信プロトコル処理回路102では、複数の機能ブロックが並行動作しながら送信処理を実行する。
【0053】
図3が示す通り、本実施形態の通信プロトコル処理回路102によれば、ネットワーク一時バッファ部123からネットワークインターフェイス125への出力、ひいてはネットワークインターフェイス125からネットワーク104へのパケットの送信は、通信メディア帯域に近い高速なスループットを達成できることがわかる。
【0054】
具体的には、一例として、通信メディアが帯域10Gbpsの10GBASEであり、ネットワーク一時バッファ部123からネットワークインターフェイス125には、32ビット幅のデータが、312.5MHzの動作周波数で出力されると仮定する。この場合、スループットは32ビット×312.5MHz=10,000Mbps=10Gbpsである。この場合、図3が示す通りそれぞれの送信パケット間に微小なマージン時間が存在するものの、通信メディア帯域に近い高速な送信スループットを達成できる。
【0055】
また、通信制御部121と複数の送信パケット生成部131〜133の動作、及び、通信制御部121と複数の送信パケット生成部131〜133とホスト一時バッファ部122とネットワーク一時バッファ部123との間の接続については、上記の312.5MHzよりも低い周波数で動作させることができる。具体的には、上記と同じくデータ幅を32ビットとしても、3個の送信パケット生成部131〜133を並列に使用しているため、それらを312.5÷3=104.2MHzで動作させても図3のタイミングチャートに示す動作が実現される。
【0056】
動作周波数を低くすると、処理に要する時間が動作周波数に反比例して増加する。図3においてそれぞれの送信パケットの送信パケット生成部による生成時間が、ネットワークインターフェイス125への出力に要する時間よりも3倍程度長く図示されているのは、そのことを表している。本発明の通信プロトコル回路によれば、処理論理量が比較的多いために回路の素子遅延が深くなりがちなこれらの処理の動作周波数を低くできるため、半導体の素子遅延及び消費電力の実現上の問題を比較的小さくすることができる。
【0057】
さらに、上記の処理によれば、排他制御によって首尾一貫性が維持される。このことについては後に詳細に説明する。
【0058】
次に、通信プロトコル処理回路102がパケットを受信してから対応処理を行うまでの詳細動作について説明する。
【0059】
図4は、本発明の実施形態の通信プロトコル処理回路102の受信動作を示したタイミングチャートである。
【0060】
ネットワークインターフェイス125を介してネットワーク104から第1の受信パケットを受信(401)すると、ネットワーク一時バッファ部123は、空き状態となっていた第7のネットワーク一時バッファ用メモリ(図示省略)に第1の受信パケットを格納する。
【0061】
第1の受信パケットの受信及び格納を完了すると、ネットワーク一時バッファ部123は、格納した第1の受信パケットを、アイドル状態となっていた第1の受信パケット解析部141へ渡す(402)。ネットワーク一時バッファ部123は、第1の受信パケットを渡し終えると、第7のホスト一時バッファ用メモリを空き状態に移す。
【0062】
第1の受信パケット解析部141は、第1の受信パケットを受け取りながら、第1の受信パケットを解析し、そのパケットのヘッダから必要情報を抽出して通信制御部121に渡し、ペイロードから通信ホスト装置101に渡すべきデータを抽出してホスト一時バッファ部122に渡す(403)。そのパケットの受け取り及び解析が完了すると、第1の受信パケット解析部141は解析結果(すなわちそのパケットの種別)を通信制御部121に報告し、アイドル状態に移る。
【0063】
ホスト一時バッファ部122は、空き状態となっていた第7のホスト一時バッファ用メモリ(図示省略)に第1の受信パケットから抽出したデータを格納する。そのデータの格納を完了すると、ホスト一時バッファ部122は第7のホスト一時バッファ用メモリにデータを格納した旨をホスト一時バッファ部122のエントリ情報(第2のデータエントリ)として通信制御部121に報告する。
【0064】
第1の受信パケット解析部141から通信制御部121に渡されるヘッダ情報及び解析結果、及び、ホスト一時バッファ部122から通信制御部121に渡される格納結果(第2のデータエントリとして格納した旨)は、空き状態であった受信パケット解析格納結果キュー155の第1の受信パケット解析格納結果エントリ271として保持される。受信パケット解析格納結果キュー155に新たなエントリが発生したことを受けて、アイドル状態となっていた第7のシーケンス処理部(図示省略)がその受信パケットの対応(404)を実行するために起動される。
【0065】
第7のシーケンス処理部は、まず受信パケット解析格納結果キュー155が保持している第1の受信パケットの種別を参照して、通信情報管理用メモリ152内の複数の通信情報エントリからその受信パケットに合致するものを探し出す旨を判断する。そして、第7のシーケンス処理部は、受信パケット解析格納結果キュー155が保持しているヘッダ情報を参照し、それに合致する通信情報管理用メモリ152内の第Xの通信情報エントリを探し出す。
【0066】
そして、第7のシーケンス処理部は、探し出した第Xの通信情報エントリ(例えば、第3の通信情報エントリ(図示省略))を参照(及び必要に応じて更新)して、受信パケット抽出データを格納すべきホストメモリ112の領域を知る。次に、第7のシーケンス処理部は、アップロード(ホスト一時バッファ部122からホストメモリ112へのデータコピー)命令を発行する。このアップロード命令は、ホストメモリ112に格納すべき受信パケット抽出データの先頭メモリアドレスとデータ長とホスト一時バッファ部122のエントリ情報(第2のデータエントリ)とから成る。
【0067】
発行されたアップロード命令は、空き状態であったアップロード命令キュー153内の第1のアップロード命令エントリ251となり、ホスト一時バッファ部122及びDMA制御部124を介してホストバス114に対して発行される。このときホスト一時バッファ部122は、第1の受信パケット抽出データを準備する。これによって、DMA制御部124及びホストバス114を介してホストメモリ112に第1の受信パケット抽出データが格納される(405)。第1の受信パケット抽出データをホストメモリ112に渡し終えると、ホスト一時バッファ部122はアップロード命令に従ってアップロードが完了した旨を通信制御部121に報告する。
【0068】
アップロードの完了報告を受けると、アップロード命令キュー153は第1のアップロード命令エントリ251を消す。第7のシーケンス処理部は続いて通信情報管理用メモリ152内の第Xの通信情報エントリを参照及び更新して、その第Xの通信情報エントリにパケット受信及びそれに対応した旨を反映する。
【0069】
また第7のシーケンス処理部は、ホスト一時バッファ部122に対して、ホスト一時バッファ部122のエントリ情報(第2のデータエントリ)を消すように指示する。ホスト一時バッファ部122はその指示に従ってエントリ情報を消す。その結果、第7のホスト一時バッファ用メモリは空き状態に移る。
【0070】
受信パケット解析格納結果キュー155のエントリに対して対応処理を実行するために起動された第7のシーケンス処理部は最後にその役目を終えてアイドル状態に移る。その移行を受けて、受信パケット解析格納結果キュー155はそれに対応する受信パケット解析格納結果エントリ271を消す。
【0071】
ネットワークインターフェイス125がネットワーク104から第1の受信パケットを受信した後、第2の受信パケットの受信(411)が始まる。ネットワーク一時バッファ部123は、空き状態となっていた第8のネットワーク一時バッファ用メモリ(図示省略)に第2の受信パケットを格納する。第2の受信パケットの受信及び格納を完了すると、ネットワーク一時バッファ部123は、格納した第2の受信パケットを、アイドル状態となっていた第2の受信パケット解析部142へ渡す(412)。その後、ネットワーク一時バッファ部123は、上記の第1の受信パケットの場合と同様に、以降のパケットの受信の待ち状態となる。
【0072】
第2の受信パケットを受け取った第2の受信パケット解析部142の動作は、上記の第1の受信パケットを受け取った第1の受信パケット解析部141の動作と同じである。また、ホスト一時バッファ部122及び受信パケット解析格納結果キュー155の振る舞いも上記と同じである。
【0073】
第2の受信パケット抽出データのホスト一時バッファ部への格納、並びに、ヘッダ情報、解析結果及び格納結果の受信パケット解析格納結果キューへの保持が実行される時刻には、第1の受信パケットに関するエントリがそれぞれ第7のホスト一時バッファ用メモリ内及び第1の受信パケット解析格納結果エントリ271として存在している。このため、第2の受信パケット抽出データは、第8のホスト一時バッファ用メモリ(図示省略)に格納され、ヘッダ情報、解析結果及び格納結果は、第2の受信パケット解析格納結果エントリ272として保持される。
【0074】
図4の例では、受信パケット解析格納結果キュー155に第2の受信パケットに関する新たなエントリが発生した時刻に、第7のシーケンス処理部が第1の受信パケットに対応する処理を実行中である。このため、その時刻までアイドル状態となっていた第8のシーケンス処理部(図示省略)が第2の受信パケットに対応する処理(413)のために起動される。第8のシーケンス処理部が実行する、第2の受信パケットに対応する処理(413)は、上記の第7のシーケンス処理部が実行する、第1の受信パケットに対応する処理(404)と同様である。このように本実施形態の通信プロトコル処理回路102では、複数の機能ブロックが並行動作しながら受信処理を行う。
【0075】
図4が示す通り、本実施形態の通信プロトコル処理回路102によれば、ネットワークインターフェイス125が受信パケットを連続して受信したとしても、首尾一貫性を損なうことなく受信処理を実行できることがわかる。
【0076】
具体的には、図3を参照して説明した例と同様に、ネットワークインターフェイス125からネットワーク一時バッファ部123には32ビット幅のデータが、312.5MHzの動作周波数で出力されると仮定する。この場合、スループットは32ビット×312.5MHz=10,000Mbps=10Gbpsである。この場合、図4が示す通りそれぞれの受信パケット間に微小なマージン時間が存在するものの、通信メディア帯域に近い高速な送信スループットを達成できる。
【0077】
また、複数の受信パケット解析部141〜143と通信制御部121の動作、及び、複数の受信パケット解析部141〜143と通信制御部121とホスト一時バッファ部122とネットワーク一時バッファ部123との間の接続については、上記の312.5MHzよりも低い周波数で動作させることができる。具体的には、上記と同じくデータ幅を32ビットとしても、3個の受信パケット解析部141〜143を並列に使用しているため、それらを312.5÷3=104.2MHzで動作させても図4のタイミングチャートに示す動作が実現される。
【0078】
動作周波数を低くすると、処理に要する時間が動作周波数に反比例して増加する。図4においてそれぞれの受信パケットの受信パケット解析部による解析時間が、ネットワークインターフェイス125からの入力に要する時間よりも3倍程度長く図示されているのは、そのことを表している。本発明の通信プロトコル回路によれば、処理論理量が比較的多いために回路の素子遅延が深くなりがちなこれらの処理の動作周波数を低くできるため、半導体の素子遅延及び消費電力の実現上の問題を比較的小さくすることができる。
【0079】
以上説明した通信プロトコル処理回路102の送信動作及び受信動作は、通信プロトコル処理の首尾一貫性を保ちながら、並行して動作する。このような動作は、通信制御部121内の複数のシーケンス処理部201〜203及び競合調停部151が、通信情報管理用メモリ152へのアクセスの競合調停(排他制御)を実行することによって達成される。以下、このような競合調停(排他制御)について説明する。
【0080】
通信制御部121において最大9個のシーケンス処理が同時に実行される他に、DMA制御部124を介した通信ホスト装置101からのアクセスパスが存在する。これらに対して、第1のシーケンス処理部201には第1の一時独占通信情報エントリレジスタ211が対応付けられ、第2のシーケンス処理部202には第2の一時独占通信情報エントリレジスタ212が対応付けられ、第3〜第8のシーケンス処理部(図示省略)にはそれぞれ第3〜第8の一時独占通信情報エントリレジスタ(図示省略)が対応付けられ、第9のシーケンス処理部203には第9の一時独占通信情報エントリレジスタ213が対応付けられ、通信ホスト装置101からのアクセスパスには第10の一時独占通信情報エントリレジスタ221が対応付けられている。これら複数の一時独占通信情報エントリレジスタ211〜221の値がいずれも有効でない場合、いずれの通信情報エントリ241〜243も一時独占されていないことを意味する。複数のシーケンス処理部201〜203及び通信ホスト装置101による通信情報管理用メモリ152への複数のアクセス要求があった場合、所定のルールに則って調停が行われた結果、複数のアクセス要求のうち一つが選択される。
【0081】
一方、複数のシーケンス処理部201〜203又は通信ホスト装置101による通信情報管理用メモリ152内のいずれかの通信情報エントリの一時独占要求があり、かつ、その通信情報エントリの番号が他の一時独占要求及び一時独占通信情報エントリレジスタ211〜221が保持している有効な値と競合していない場合、その要求元に対応する一時独占通信情報エントリレジスタにその通信情報エントリの番号が有効値として設定される。
【0082】
一時独占を要求された通信情報エントリの番号が、一時独占通信情報エントリレジスタ211〜221が保持している有効な値と競合していないが、他の一時独占要求と競合している場合、所定のルールに則って調停が行われた結果、同じ番号の通信情報エントリに対する複数の一時独占要求のうち一つが選択される。そして、一時独占要求の要求元に対応する一時独占通信情報エントリレジスタに、選択された通信情報エントリの番号が有効値として設定される。
【0083】
一時独占を要求された通信情報エントリの番号が、一時独占通信情報エントリレジスタ211〜221が保持している有効な値と競合している場合、その要求は競合待ち状態となる。
【0084】
このように、シーケンス処理部201〜203又は通信ホスト装置101が通信情報管理用メモリ152内の通信情報エントリを一時独占すると、競合調停部151は、一時独占通信情報エントリレジスタが保持する番号と、通信情報エントリオフセットレジスタ231と通信情報エントリサイズレジスタ232の値とに基づいて、一時独占している通信情報エントリの格納アドレスを導出し、そのアドレスに対する他のシーケンス処理部201〜203又は通信ホスト装置101からのアクセス要求を競合待ち状態とする。
【0085】
通信情報エントリを一時独占したシーケンス処理部201〜203又は通信ホスト装置101は、通信情報管理用メモリ152内の独占した通信情報エントリを参照及び更新した後、独占する必要がなくなると、独占の解除を要求する。その結果、解除を要求したシーケンス処理部201〜203又は通信ホスト装置101に対応する一時独占通信情報エントリレジスタは無効値となる。
【0086】
上記の競合調停(排他制御)の具体例を、図3を参照して説明する。
【0087】
以下、図3に示した全ての送信パケットが、同一のサービスに関する(言い換えると、同一の通信情報エントリに関する)パケットである場合を例として説明する。
【0088】
第1のシーケンス処理部201は、例えば、第1の通信情報エントリ241に関してパケットを送信すると判断すると、第2のシーケンス処理部202を起動し、第1の通信情報エントリ241に関してパケットを送信する旨を指示する。この指示に従って送信されるパケットを、以下、第1の送信パケットと記載する。
【0089】
この指示を受信した第2のシーケンス処理部202は、第1の一時独占通信情報エントリレジスタ211から第10の一時独占通信情報エントリレジスタ221までを参照して、いずれの一時独占通信情報エントリレジスタにも第1の通信情報エントリ241を識別する番号が登録されていないことを確認する。
【0090】
いずれかの一時独占通信情報エントリレジスタに第1の通信情報エントリ241を識別する番号が登録されている場合、第1の通信情報エントリ241は、第2のシーケンス処理部202以外のシーケンス処理部によって排他制御されている。言い換えると、第1の通信情報エントリ241は、第2のシーケンス処理部202以外のシーケンス処理部によって独占的に使用されている。この場合、第2のシーケンス処理部202は、第1の通信情報エントリ241を参照も更新もすることができない。このため、第2のシーケンス処理部202は、第1の通信情報エントリ241の排他制御が終了するまでアイドル状態で待機する。
【0091】
いずれの一時独占通信情報エントリレジスタにも第1の通信情報エントリ241を識別する番号が登録されていない場合、第2のシーケンス処理部202は、第2のシーケンス処理部202に対応する第2の一時独占通信情報エントリレジスタ212に第1の通信情報エントリ241を識別する番号を登録する。これによって、第1の通信情報エントリ241が排他制御される。言い換えると、第1の通信情報エントリ241を識別する番号が第2の一時独占通信情報エントリレジスタ212に登録されてから削除されるまでの間、第1の通信情報エントリ241は、第2のシーケンス処理部202によって独占的に使用される。その間、第2のシーケンス処理部202以外のシーケンス処理部は、第1の通信情報エントリ241を参照及び更新することが禁止される。
【0092】
第2のシーケンス処理部202は、第1の通信情報エントリ241の排他制御を開始した後、第1の通信情報エントリ241を参照及び更新する。具体的には、第1の通信情報エントリ241に含まれる送信パケットの管理情報を更新する。送信パケットの管理情報は、生成が開始された送信パケットを識別する情報、及び、送信が終了した送信パケットを識別する情報を含む。以下の説明では、送信パケットの管理情報を、(A、B)の形式で記載する。この場合、「A」は生成が開始された送信パケットの番号、「B」はネットワーク一時バッファ部123への出力が終了した送信パケットの番号である。送信パケットの管理情報の初期値は(0、0)である。
【0093】
上記のように第1の送信パケットを送信する旨を指示された場合、第2のシーケンス処理部202は、送信パケットの管理情報を参照する。参照された送信パケットの管理情報が(0、0)であった場合、第2のシーケンス処理部202は、送信パケットの管理情報を(1、0)に更新する。(1、0)は、第1の送信パケットの生成が開始されたが、その出力がまだ終了していないことを示す。
【0094】
このように送信パケットの管理情報を参照及び更新した後、第2のシーケンス処理部202は、第2の一時独占通信情報エントリレジスタ212から第1の通信情報エントリ241を識別する番号を削除する。具体的には、第2のシーケンス処理部202は、第2の一時独占通信情報エントリレジスタ212に無効値を登録する。これによって第2の一時独占通信情報エントリレジスタ212から第1の通信情報エントリ241を識別する番号が削除され、その結果、第2のシーケンス処理部202による第1の通信情報エントリ241の排他制御が終了する。
【0095】
その後、既に説明したように、第2のシーケンス処理部202は、第1の送信対象データのダウンロード(303)及び第1の送信パケットの生成(304)を指示する。
【0096】
図3の例では、第1の送信対象データのダウンロード及び第1の送信パケットの生成が実行されている間、第1のシーケンス処理部201は、第2の送信パケットを送信する指示、第3の送信パケットを送信する指示、第4の送信パケットを送信する指示、及び、第5の送信パケットを送信する指示を順次発行する。
【0097】
第2の送信パケットを送信する指示を受けた第3のシーケンス処理部(図示省略)は、上記の第2のシーケンス処理部202と同様、第1の通信情報エントリ241の排他制御を開始し、その内容を参照する。図3の例では、この時点で、送信パケットの管理情報は(1、0)である。第3のシーケンス処理部は、送信パケットの管理情報を(2、0)に更新する。
【0098】
同様に、第4のシーケンス処理部(図示省略)、第5のシーケンス処理部(図示省略)及び第6のシーケンス処理部(図示省略)が、それぞれ、送信パケットの管理情報を(3、0)、(4、0)及び(5、0)に順次更新する。
【0099】
一方、第2のシーケンス処理部202は、第1の送信パケットの生成(304)が終了し、生成された第1の送信パケットのネットワーク一時バッファ部123への出力が終了すると、第1の通信情報エントリ241に含まれる送信パケットの管理情報を参照及び更新する。しかし、その時点で第1の通信情報エントリ241が第6のシーケンス処理部によって排他制御されている場合、第2のシーケンス処理部202はその排他制御が終了するまでアイドル状態で待機する。
【0100】
第6のシーケンス処理部による排他制御が終了すると、第2のシーケンス処理部202は、第1の通信情報エントリ241の排他制御を開始し、送信パケットの管理情報を参照及び更新する。このとき、参照された送信パケットの管理情報は(5、0)であるため、第2のシーケンス処理部202は、それを(5、1)に更新する。これは、第1から第5の送信パケットの生成が開始され、第1の送信パケットの出力が終了したことを示す。
【0101】
このように、図3の例では、各シーケンス処理部が通信情報エントリを参照してから、参照された通信情報エントリを更新するまでの間、他のシーケンス処理部がその通信情報エントリを参照も更新もできないように排他制御される。
【0102】
ここで、上記のような排他制御が実行されない場合に発生する問題を説明する。
【0103】
上記のように、第6のシーケンス処理部は、送信パケットの管理情報の値(4、0)を参照し、これを(5、0)に更新する。第1の通信情報エントリ241の排他制御がされていない場合、第2のシーケンス処理部202は、第1の送信パケットの出力が終了すると、第6のシーケンス処理部による参照から更新までの間に、送信パケットの管理情報を参照することができる。その結果、例えば、第6のシーケンス処理部が送信パケットの管理情報(4、0)を参照し、次に第2のシーケンス処理部202が送信パケットの管理情報(4、0)を参照し、次に第6のシーケンス処理部が送信パケットの管理情報を(4、0)から(5、0)に更新する場合がある。
【0104】
この場合、第2のシーケンス処理部202は、既に送信パケットの管理情報として(4、0)を参照しているため、それが(5、0)に更新されたことを知らずに、(4、0)から(4、1)に更新する。これによって、実際には既に第5の送信パケットの生成が開始されているにもかかわらず、そのことを示す情報が失われる。このように、通信情報エントリの排他制御を実行しない場合、通信プロトコルの処理の首尾一貫性が失われる場合がある。
【0105】
しかし、上記のように通信情報エントリを排他制御することによって、複数の送信パケットの生成を並列に処理した場合でも、通信プロトコル処理の首尾一貫性が維持される。
【0106】
同様に、受信したパケットを処理する場合にも通信情報エントリの排他制御が実行される(図4参照)。この場合、各通信情報エントリは、受信パケットの管理情報を含む。受信パケットの管理情報は、受信パケット解析部が受信したパケットを識別する情報、及び、ホスト一時バッファ部122からホストバス114への出力(すなわちアップロード)が終了したパケットを識別する情報を含む。例えば、受信パケット管理情報が(C、D)の形式で表示される場合、「C」は受信パケット解析部が受信したパケットの番号、「D」はアップロードが終了したパケットの番号である。
【0107】
図4の例では、第1の受信パケット解析部141が第1の受信パケットを受信する処理(すなわち、第1の受信パケットのペイロードから抽出されたデータのホスト一時バッファ部への出力)を終了すると、第7のシーケンス処理部(図示省略)が、第1の受信パケットに対応する通信情報エントリを参照及び更新する。例えば、第1の受信パケットによって指定されたポート番号に基づいて、第1の受信パケットとサービスとが対応付けられ、そのサービスに対応する通信情報エントリ(例えば第1の通信情報エントリ241)が特定される。
【0108】
参照された受信パケットの管理情報が(0、0)であった場合、第7のシーケンス処理部は、受信パケットの管理情報を(1、0)に更新する。(1、0)は、第1の受信パケットが受信されたが、第1の受信パケットから抽出されたデータのアップロードがまだ終了していないことを示す。
【0109】
図4の例では、第1の受信パケット解析部141が第1の受信パケットを受信した後、その第1の受信パケットからのデータの抽出が終了する前に、第2の受信パケット解析部142が第2の受信パケットを受信することができる。この場合、第8のシーケンス処理部(図示省略)が受信パケットの管理情報を参照し、その値を(2、0)に更新する。
【0110】
その後、第1の受信パケットから抽出されたデータのアップロードが終了すると、第7のシーケンス処理部は、通信情報エントリを参照する。参照された通信情報エントリ内の受信パケットの管理情報が(2、0)であった場合、第7のシーケンス処理部は、その値を(2、1)に更新する。
【0111】
図4の処理においても、各シーケンス処理部が通信情報エントリを参照してから更新するまでの間に、他のシーケンス処理部がその通信情報エントリを参照も更新もできないように排他制御が実行される。これによって、複数の受信パケットの処理を並列に実行した場合でも、通信プロトコル処理の首尾一貫性が維持される。
【0112】
競合調停(排他制御)の他の具体例を説明する。第1の通信情報エントリ241のフィールドのうち、首尾一貫性を維持するために排他制御すべき情報フィールドには、送信する旨を判断済み(ひいてはダウンロードし、送信し、通信相手に到達しているかもしれない)のデータ長と、通信相手から受信済みで解析・解釈済みの、送信データに対する受信確認応答番号とを含む場合、各シーケンス処理部によるその情報フィールドの参照及び更新を、上記の排他制御と同様に行う。この排他制御は、パケットの送信を命令するシーケンス処理部と、パケットの受信によってその対応処理を判断するシーケンス処理部との間で排他制御を行う。
【0113】
上記のように、本実施形態の通信プロトコル回路は、並列化された箇所同士で高効率に通信情報を排他制御することによって、情報破綻させることなく首尾一貫性を維持しながら通信プロトコルを処理することができる。
【産業上の利用可能性】
【0114】
本発明は、通信プロトコル処理を行う回路に限らず、ホスト端末に接続する通信プロトコル処理拡張ボード、通信端末装置、又は通信中継装置にも適用できる。
【図面の簡単な説明】
【0115】
【図1】本発明の実施形態の通信装置及び通信プロトコル処理回路の構成を示したブロック図である。
【図2】本発明の実施形態の通信プロトコル処理回路内の通信制御部の詳細構成を示したブロック図である。
【図3】本発明の実施形態の通信プロトコル処理回路の送信動作を示したタイミングチャートである。
【図4】本発明の実施形態の通信プロトコル処理回路の受信動作を示したタイミングチャートである。
【符号の説明】
【0116】
102 通信プロトコル処理回路
121 通信制御部
122 ホスト一時バッファ部
123 ネットワーク一時バッファ部
124 DMA制御部
125 ネットワークインターフェイス
151 競合調停部

【特許請求の範囲】
【請求項1】
複数の送信パケット生成部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、
前記メモリには、通信情報が格納され、
前記通信情報は、前記送信パケット生成部が生成及び出力すべきパケットを識別するための情報を含み、
前記競合調停部には、前記通信情報の参照及び更新が前記複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、
前記各送信パケット生成部は、前記各シーケンス処理部からの命令に基づいて、パケットを生成及び出力し、
前記各シーケンス処理部は、
前記通信情報を参照して、前記送信パケット生成部が生成及び出力すべきパケットを判断し、
前記生成及び出力すべきパケットの生成及び出力を前記送信パケット生成部に命令し、
前記通信情報を、前記生成及び出力を命令したことを識別するための情報に更新し、
前記通信情報を参照及び更新する前に、前記競合調停部に格納された情報に基づいて、前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されているか否かを判定し、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されている場合、前記排他的な制御が解除されるまで前記通信情報の参照及び更新を待ち、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されていない場合、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を開始した後、前記通信情報の参照及び更新を実行し、
前記通信情報の参照及び更新が終了した後、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする通信プロトコル処理回路。
【請求項2】
複数の受信パケット解析部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、
前記メモリには、通信情報が格納され、
前記通信情報は、対応処理を行うべき受信パケットを識別するための情報を含み、
前記競合調停部には、前記通信情報の参照及び更新が前記複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、
前記各受信パケット解析部は、パケットを受信すると、前記受信したパケットを解析し、
前記各シーケンス処理部は、
前記各受信パケット解析部がパケットを受信して解析した後に前記通信情報を参照して、前記受信したパケットの対応処理を判断し、
前記受信したパケットの対応処理を行い、
前記通信情報を、前記パケットが受信されたことを識別するための情報に更新し、
前記通信情報を参照及び更新する前に、前記競合調停部に格納された情報に基づいて、前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されているか否かを判定し、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されている場合、前記排他的な制御が解除されるまで前記通信情報の参照及び更新を待ち、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されていない場合、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を開始した後、前記通信情報の参照及び更新を実行し、
前記通信情報の参照及び更新が終了した後、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする通信プロトコル処理回路。
【請求項3】
前記競合調停部は、各々が前記複数のシーケンス処理部に対応する複数のレジスタを含み、
前記各シーケンス処理部は、
前記各シーケンス処理部に対応する前記レジスタに、前記各シーケンス処理部が前記通信情報の参照及び更新を排他的に制御していることを識別するための情報を格納することによって、前記通信情報の参照及び更新の排他的な制御を開始し、
前記各シーケンス処理部に対応する前記レジスタから、前記各シーケンス処理部が前記通信情報の参照及び更新を排他的に制御していることを識別するための情報を削除することによって、前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする請求項1又は2に記載の通信プロトコル処理回路。
【請求項4】
ネットワークに接続される情報処理装置であって、
前記情報処理装置は、前記ネットワークに接続されるインターフェイスと、前記インターフェイスを介して送信されるパケットを生成する複数の送信パケット生成部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、
前記メモリには、通信情報が格納され、
前記通信情報は、前記送信パケット生成部が生成及び出力すべきパケットを識別するための情報を含み、
前記競合調停部には、前記通信情報の参照及び更新が前記複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、
前記各送信パケット生成部は、前記各シーケンス処理部からの命令に基づいて、パケットを生成し、
前記インターフェイスは、前記各送信パケット生成部が生成したパケットを前記ネットワークに出力し、
前記各シーケンス処理部は、
前記通信情報を参照して、前記送信パケット生成部が生成及び出力すべきパケットを判断し、
前記生成及び出力すべきパケットの生成及び出力を前記送信パケット生成部に命令し、
前記通信情報を、前記生成及び出力を命令したことを識別するための情報に更新し、
前記通信情報を参照及び更新する前に、前記競合調停部に格納された情報に基づいて、前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されているか否かを判定し、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されている場合、前記排他的な制御が解除されるまで前記通信情報の参照及び更新を待ち、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されていない場合、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を開始した後、前記通信情報の参照及び更新を実行し、
前記通信情報の参照及び更新が終了した後、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする情報処理装置。
【請求項5】
ネットワークに接続される情報処理装置であって、
前記情報処理装置は、前記ネットワークに接続されるインターフェイスと、前記インターフェイスを介して受信したパケットを解析する複数の受信パケット解析部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、
前記メモリには、通信情報が格納され、
前記通信情報は、対応処理を行うべき受信パケットを識別するための情報を含み、
前記競合調停部には、前記通信情報の参照及び更新が前記複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、
前記インターフェイスは、前記ネットワークからパケットを受信し、
前記各受信パケット解析部は、前記インターフェイスが受信したパケットを解析し、
前記各シーケンス処理部は、
前記各受信パケット解析部がパケットを受信して解析した後に前記通信情報を参照して、前記受信したパケットの対応処理を判断し、
前記受信したパケットの対応処理を行い、
前記通信情報を、前記パケットが受信されたことを識別するための情報に更新し、
前記通信情報を参照及び更新する前に、前記競合調停部に格納された情報に基づいて、前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されているか否かを判定し、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されている場合、前記排他的な制御が解除されるまで前記通信情報の参照及び更新を待ち、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されていない場合、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を開始した後、前記通信情報の参照及び更新を実行し、
前記通信情報の参照及び更新が終了した後、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする情報処理装置。
【請求項6】
前記競合調停部は、各々が前記複数のシーケンス処理部に対応する複数のレジスタを含み、
前記各シーケンス処理部は、
前記各シーケンス処理部に対応する前記レジスタに、前記各シーケンス処理部が前記通信情報の参照及び更新を排他的に制御していることを識別するための情報を格納することによって、前記通信情報の参照及び更新の排他的な制御を開始し、
前記各シーケンス処理部に対応する前記レジスタから、前記各シーケンス処理部が前記通信情報の参照及び更新を排他的に制御していることを識別するための情報を削除することによって、前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする請求項4又は5に記載の情報処理装置。
【請求項7】
通信プロトコル処理回路が実行する通信プロトコル処理方法であって、
前記通信プロトコル処理回路は、複数の送信パケット生成部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、
前記メモリには、通信情報が格納され、
前記通信情報は、前記送信パケット生成部が生成及び出力すべきパケットを識別するための情報を含み、
前記競合調停部には、前記通信情報の参照及び更新が前記複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、
前記通信プロトコル処理方法は、
前記各送信パケット生成部が、前記各シーケンス処理部からの命令に基づいて、パケットを生成及び出力する手順と、
前記各シーケンス処理部が、前記通信情報を参照して、前記送信パケット生成部が生成及び出力すべきパケットを判断する手順と、
前記各シーケンス処理部が、前記生成及び出力すべきパケットの生成及び出力を前記送信パケット生成部に命令する手順と、
前記各シーケンス処理部が、前記通信情報を、前記生成及び出力を命令したことを識別するための情報に更新する手順と、
前記各シーケンス処理部が、前記通信情報を参照及び更新する前に、前記競合調停部に格納された情報に基づいて、前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されているか否かを判定する手順と、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されている場合、前記各シーケンス処理部が、前記排他的な制御が解除されるまで前記通信情報の参照及び更新を待つ手順と、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されていない場合、前記各シーケンス処理部が、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を開始した後、前記通信情報の参照及び更新を実行する手順と、
前記通信情報の参照及び更新が終了した後、前記各シーケンス処理部が、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を解除する手順と、を含むことを特徴とする通信プロトコル処理方法。
【請求項8】
通信プロトコル処理回路が実行する通信プロトコル処理方法であって、
前記通信プロトコル処理回路は、複数の受信パケット解析部と、複数のシーケンス処理部と、競合調停部と、メモリと、を備え、
前記メモリには、通信情報が格納され、
前記通信情報は、対応処理を行うべき受信パケットを識別するための情報を含み、
前記競合調停部には、前記通信情報の参照及び更新が前記複数のシーケンス処理部のいずれかによって排他的に制御されているか否かを示す情報が格納され、
前記通信プロトコル処理方法は、
前記各受信パケット解析部が、パケットを受信すると、前記受信したパケットを解析する手順と、
前記各シーケンス処理部が、前記各受信パケット解析部がパケットを受信して解析した後に前記通信情報を参照して、前記受信したパケットの対応処理を判断する手順と、
前記各シーケンス処理部が、前記受信したパケットの対応処理を行う手順と、
前記各シーケンス処理部が、前記通信情報を、前記パケットが受信されたことを識別するための情報に更新する手順と、
前記各シーケンス処理部が、前記通信情報を参照及び更新する前に、前記競合調停部に格納された情報に基づいて、前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されているか否かを判定する手順と、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されている場合、前記各シーケンス処理部が、前記排他的な制御が解除されるまで前記通信情報の参照及び更新を待つ手順と、
前記通信情報の参照及び更新が他の前記シーケンス処理部によって排他的に制御されていない場合、前記各シーケンス処理部が、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を開始した後、前記通信情報の参照及び更新を実行する手順と、
前記通信情報の参照及び更新が終了した後、前記各シーケンス処理部が、前記競合調停部に格納された情報を更新することによって前記通信情報の参照及び更新の排他的な制御を解除する手順と、を含むことを特徴とする通信プロトコル処理方法。
【請求項9】
前記競合調停部は、各々が前記複数のシーケンス処理部に対応する複数のレジスタを含み、
前記各シーケンス処理部は、
前記各シーケンス処理部に対応する前記レジスタに、前記各シーケンス処理部が前記通信情報の参照及び更新を排他的に制御していることを識別するための情報を格納することによって、前記通信情報の参照及び更新の排他的な制御を開始し、
前記各シーケンス処理部に対応する前記レジスタから、前記各シーケンス処理部が前記通信情報の参照及び更新を排他的に制御していることを識別するための情報を削除することによって、前記通信情報の参照及び更新の排他的な制御を解除することを特徴とする請求項7又は8に記載の通信プロトコル処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate