(57)【要約】【課題】  ホスト装置と入出力バスを介して接続され、ホスト装置から通知されるディスクリプタによりネットワーク媒体を介してパケットの送受信を制御する通信制御装置において、ネットワーク処理の効率化を図る。【解決手段】  ホスト装置より通知されたディスクリプタから管理テーブルを作成し、通信制御装置１に実装される記憶手段１０にキャッシュとしてディスクリプタ・チェインを展開する。ホスト装置から通知されたディスクリプタから記憶手段１０のＦＩＦＯ制御を行なってもよく、記憶手段１０からディスクリプタを読み出して、再度使用するディスクリプタ・アドレスを指定するネットワーク・プロセッサ・ユニット１４を有するように構成する。ネットワーク・プロセッサ・ユニット１４がマルチ・プロセッサでの場合には、多重アクセスにおいて、使用中のディスクリプタがキャッシュ・リプレイスされないようにする。【選択図】  図１
2005184051.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置と入出力バスを介して接続され、前記ホスト装置から通知されるディスクリプタによりネットワーク媒体を介してパケットの送受信を制御する通信制御装置において、
前記ホスト装置より通知されたディスクリプタから管理テーブルを作成し、該通信制御装置に実装される記憶手段にキャッシュとしてディスクリプタ・チェインを展開することを特徴とする通信制御装置。
【請求項２】
前記ホスト装置から通知されたディスクリプタから前記記憶手段のＦＩＦＯ制御を行なうことを特徴とする請求項１記載の通信制御装置。
【請求項３】
前記記憶手段からディスクリプタを読み出し、再度使用するディスクリプタ・アドレスを指定するネットワーク・プロセッサ・ユニットを有することを特徴とする請求項１または２記載の通信制御装置。
【請求項４】
前記ネットワーク・プロセッサ・ユニットがマルチ・プロセッサであり、多重アクセスにおいて、使用中のディスクリプタがキャッシュ・リプレイスされないようにする手段を有することを特徴とする請求項１、２または３記載の通信制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御装置に関し、特に、ホスト装置とＩ／Ｏバス（入出力バス）を介して接続され、ネットワーク媒体を制御してパケットの送受信を行なうための通信制御装置に関する。
【背景技術】
【０００２】
近年のインターネットの普及により、膨大なネットワーク処理を行うための高速なネットワーク・サーバの需要が高まっている。インターネットでは、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）と呼ばれる通信プロトコルを用いているが、プロトコルを処理するための負荷は、サーバのホスト・ＣＰＵ（Central Processing Unit）にとっては無視できないほど大きいものとなっている。
【０００３】
この問題を解決するため、通信制御装置にネットワーク・プロセッサ・ユニットを組み込み、ある程度のプロトコル処理をネットワーク・プロセッサ・ユニット側で実行させ、ホスト・ＣＰＵの負荷を低下させる方法が提案されている。ここで、ネットワーク・プロセッサ・ユニットがパケットの送受信を行なう際に、ホスト装置側の送受信バッファアドレスや、バッファサイズ等のホストＣＰＵより記述されたディスクリプタが必要となる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、ネットワーク・プロセッサ・ユニットがＴＣＰ等のコネクション・オリエンテッドなプロトコルの処理を行なう場合には、パケットの再送処理やＡＣＫ（ACKnowledge）パケットの処理等が発生し、ディスクリプタのリードが何度も生じる。
【０００５】
さらに、ネットワーク・プロセッサ・ユニットは、ネットワーク処理性能を上げるため、ディスクリプタを高速かつ容易に読み出してパケット送受信処理を行なう必要がある。そのため、ホスト・ＣＰＵは、セッション確立の数だけディスクリプタ・チェインを用意し、ディスクリプタの参照の簡易性を高め、リードタイムの軽減を図ることが必要となる。
【０００６】
しかし、膨大なネットワーク処理を行うためにセッションの確立も多数になり、セッション確立の数に比例して、ホスト・メモリ上に展開されたディスクリプタ・チェインの数も増大し、通信制御装置に実装される小容量のメモリでは、すべてのディスクリプタ・チェインを展開することができなくなるという問題があった。
【０００７】
そこで、本発明は、上記従来の技術における問題点に鑑みてなされたものであって、ネットワーク・プロセッサ・ユニットによるディスクリプタ制御のオーバーヘッドを低減することができ、ディスクリプタ・リードの性能を低下させることがなく、ネットワーク処理の効率化を図ることのできる通信制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明は、ホスト装置と入出力バスを介して接続され、前記ホスト装置から通知されるディスクリプタによりネットワーク媒体を介してパケットの送受信を制御する通信制御装置において、前記ホスト装置より通知されたディスクリプタから管理テーブルを作成し、該通信制御装置に実装される記憶手段にキャッシュとしてディスクリプタ・チェインを展開することを特徴とする。
【０００９】
そして、本発明によれば、ホスト装置より通知されたディスクリプタを通信制御装置の記憶手段にチェイン展開することにより、該記憶手段の状態に関わらず、該通信制御装置のネットワーク・プロセッサ・ユニットに実装するファームウェアから容易にかつ、高速にリード処理を実行することができ、ネットワーク・プロセッサ・ユニットによるディスクリプタ制御のオーバーヘッドを低減することができる。
【００１０】
前記通信制御装置において、前記ホスト装置から通知されたディスクリプタから前記記憶手段のＦＩＦＯ制御を行なうようにすることができる。これによって、セッション状態に応じてキャッシュのリプレイスを実行することができる。
【００１１】
また、前記通信制御装置を、前記記憶手段からディスクリプタを読み出し、再度使用するディスクリプタ・アドレスを指定するネットワーク・プロセッサ・ユニットを有するように構成することができる。
【００１２】
これによって、ネットワーク・プロセッサ・ユニットが使用するディスクリプタのメモリ・アドレスを直接指定することができ、送受信が再開した場合でも、ネットワーク・プロセッサ・ユニットが指定したディスクリプタから読み出すことができ、リード処理を高速で実行することができる。
【００１３】
さらに、前記通信制御装置において、前記ネットワーク・プロセッサ・ユニットがマルチ・プロセッサであり、多重アクセスにおいて、使用中のディスクリプタがキャッシュ・リプレイスされないようにする手段を有するように構成することができる。
【００１４】
これによって、送受信中のセッションをロックすることにより、送受信中のセッションのリプレイスが起こらないようにすることができ、ネットワーク・プロセッサ・ユニットによるディスクリプタ・リード性能が低下するのを防止することができる。
【発明の効果】
【００１５】
以上説明したように、本発明によれば、ネットワーク・プロセッサ・ユニットによるディスクリプタ制御のオーバーヘッドを低減し、ディスクリプタ・リードの性能を低下させずにネットワーク処理の効率化を図ることのできる通信制御装置を提供することができる。
【発明を実施するための最良の形態】
【００１６】
次に、本発明の実施の形態について図面を参照しながら詳細に説明する。
【００１７】
図１は、本発明にかかる通信制御装置の全体構成を示すブロック図であって、この通信制御装置１は、ディスクリプタをキャッシュするディスクリプタ・キャッシュ・メモリ１０と、ディスクリプタ・キャッシュ機構の制御を行なうディスクリプタ・キャッシュ・コントローラ１１と、ホスト・メモリ４からデータ転送を行なうＤＭＡ（Direct Memory Access）コントローラ１２と、Ｉ／Ｏバス２と通信制御装置１との間の制御を行なうＩ／Ｏバス・コントローラ１３と、ホスト・メモリ４からのパケット・データを授受するネットワーク・プロセッサ・ユニット１４と、送受信のスケジューリングを行なう送信／受信スケジューラ・ユニット１５とを備える。尚、送信／受信スケジューラ・ユニット１５は、パケット・データ等が送受信されるネットワーク媒体３と接続され、Ｉ／Ｏバス・コントローラ１３は、Ｉ／Ｏバス２を介して、ディスクリプタ・チェインや、送受信パケットが展開されているホスト・メモリ４及びホスト・ＣＰＵ５と接続される。
【００１８】
次に、上記ディスクリプタ・キャッシュ・メモリ１０について、図２を参照しながら詳細に説明する。
【００１９】
このディスクリプタ・キャッシュ・メモリ１０は、ホスト・メモリ４に展開される各セッションのディスクリプタ・チェインを通信制御装置１に実装されるメモリ容量の限界まで展開する。各セッションのディスクリプタ・キャッシュ・メモリ１０には、固定容量の制限を設ける。ホスト・ＣＰＵ５から新たなセッションが確立されたことをＩ／Ｏバス・コントローラ１３を介してディスクリプタ・キャッシュ・コントローラ１１が通知を受けた際に、新たなセッションのディスクリプタ・チェインを展開するように、ディスクリプタ・キャッシュ・コントローラ１１は、ＤＭＡコントローラ１２に指示し、ＤＭＡコントローラ１２を介して、ホスト・メモリ４上に展開されているセッションのディスクリプタ・チェインがディスクリプタ・キャッシュ・メモリ１０上に記憶される。
【００２０】
次に、図３、図４及び図５を参照しながら、ディスクリプタ・キャッシュ・コントローラ１１を構成するディスクリプタ・キャッシュ・テーブル１００、リプレイス対象ＦＩＦＯ（First In First Out）１０１及びリプレイス・ロック・レジスタ１０２について詳細に説明する。
【００２１】
ディスクリプタ・キャッシュ・テーブル１００は、ホスト・メモリ４上に展開されるディスクリプタ・チェイン数と等しい数のテーブルを備え、各セッションのディスクリプタ・チェイン情報を管理する。ホスト・ＣＰＵ５からセッションが確立されたことについてＩ／Ｏバス・コントローラ１３を介してディスクリプタ・キャッシュ・コントローラ１１が通知を受けた際には、ディスクリプタ・キャッシュ・コントローラ１１は、ディスクリプタ・キャッシュ・テーブル１００内の情報を更新する。
【００２２】
リプレイス対象ＦＩＦＯ１０１は、新たなセッションが確立される度に更新されるディスクリプタ・キャッシュ・メモリ１０の状態を管理する。ディスクリプタ・キャッシュ・メモリ１０の容量を超えるセッションが確立された際には、リプレイス対象ＦＩＦＯ１０１の先頭セッションがディスクリプタ・キャッシュ・メモリ１０からリプレイスされる対象のセッションとなる。
【００２３】
リプレイス・ロック・レジスタ１０２は、ネットワーク・プロセッサ・ユニット１４が使用中のディスクリプタが属するセッションＩＤ（IDentification）を管理する。このレジスタの情報を使用し、ディスクリプタ・キャッシュ・コントローラ１１は、リプレイス・ロックの状態を管理する。ネットワーク・プロセッサ・ユニット１４がマルチ・プロセッサの場合には、ネットワーク・プロセッサ・ユニット１４の数と等しい数のリプレイス・ロック・レジスタ１０２を備える。ディスクリプタ・キャッシュ・メモリ１０の容量を超えるセッションが確立された際には、リプレイス対象ＦＩＦＯ１０１の先頭に位置するセッションＩＤがディスクリプタ・キャッシュ・メモリからリプレイスされる対象となるが、リプレイスされる対象のセッションＩＤと、リプレイス・ロック・レジスタ１０２のセッションＩＤとが一致する場合には、リプレイス対象のセッションのリプレイスを停止する。
【００２４】
次に、図６を参照しながら、ディスクリプタ・キャッシュ・テーブル１００を構成するスタート・ディスクリプタ・アドレス２００及びエンド・ディスクリプタ・アドレス２０１について詳細に説明する。
【００２５】
ディスクリプタは、ホスト・メモリ４上でチェイン構造となっており、ディスクリプタ・キャッシュ・テーブル１００は、各セッションのディスクリプタ・チェインのスタート・ディスクリプタ・アドレス２００と、エンド・ディスクリプタ・アドレス２０１とを管理して、この情報をもとに、該当セッションの通信が開始／再開された場合には、ディスクリプタ・チェインをディスクリプタ・キャッシュ・メモリ１０上に展開する。
【００２６】
次に、図７を参照しながら、ネットワーク・プロセッサ・ユニット１４を構成するディスクリプタ・リード・レジスタ３００及びアドレス・指示レジスタ３０１について詳細に説明する。
【００２７】
ネットワーク・プロセッサ・ユニット１４がディスクリプタを読み出す際には、ディスクリプタ・リード・レジスタ３００に該当セッションＩＤを指定することにより、ディスクリプタ・キャッシュ・コントローラ１１からディスクリプタがネットワーク・プロセッサ・ユニット１４へと転送される。アドレス・指示レジスタ３０１は、該当セッションの送受信が再開された場合、どのディスクリプタの処理から始めたいかを、ネットワーク・プロセッサ・ユニット１４が指定するレジスタである。ディスクリプタ・キャッシュ・コントローラ１１は、このレジスタに指定されたディスクリプタを先頭とするディスクリプタ・チェインをディスクリプタ・キャッシュ・メモリ１０上に展開する。
【００２８】
次に、上記構成を有する通信制御装置１のパケット送受信及びディスクリプタ・リプレイス動作について説明する。
【００２９】
（１）図１において、ホストＣＰＵ５からＩ／Ｏバス２を介して、ディスクリプタ・キャッシュ・コントローラ１１に通知することにより、ディスクリプタ・キャッシュ・コントローラ１１は、セッションが確立されたことを認識する。
（２）ディスクリプタ・キャッシュ・コントローラ１１は、ＤＭＡコントローラ１２に該当セッションのディスクリプタを、図２に示すディスクリプタ・キャッシュ・メモリ１０に記憶するように指示し、ＤＭＡコントローラ１２はホスト・メモリ４上に展開されるディスクリプタ・チェインをディスクリプタ・キャッシュ・メモリ１０に記憶する。
（３）ディスクリプタ・キャッシュ・メモリ１０上に展開された時点で、ディスクリプタ・キャッシュ・コントローラ１１は、ディスクリプタ・キャッシュ・テーブル１００（図３参照）のスタート・ディスクリプタ・アドレス２００（図６参照）と、エンド・ディスクリプタ・アドレス２０１とをディスクリプタ・キャッシュ・メモリ１０上に展開されるディスクリプタ・チェインの先頭アドレス、最後尾アドレスで更新する。また、リプレイス対象ＦＩＦＯ１０１に新たに確立されたセッションＩＤが存在しない場合には、該当セッションＩＤをエンキューする。
【００３０】
（４）セッションが確立されたセッションＩＤをディスクリプタ・キャッシュ・コントローラ１１から送信／受信スケジューラユニット１５に通知する。
（５）送信／受信スケジューラユニット１５から送信／受信要求が存在する旨の通知がネットワーク・プロセッサ・ユニット１４に送られる。
（６）ネットワーク・プロセッサ・ユニット１４は、ディスクリプタ・リード・レジスタ３００（図７参照）を用いて、該当セッションＩＤを指示して、ディスクリプタ・キャッシュ・コントローラ１１を介して、ディスクリプタ・キャッシュ・メモリ１０からディスクリプタを読み出す。
【００３１】
（７）ディスクリプタ・キャッシュ・コントローラ１１は、ディスクリプタ・リード・レジスタ３００が書き込まれたタイミングで、ネットワーク・プロセッサ・ユニット１４と対応するリプレイス・ロック・レジスタ１０２（図５参照）を読み出されたセッションＩＤの値でセットする。
（８）ネットワーク・プロセッサ・ユニット１４は、ディスクリプタ・リードが完了すると、アドレス・指示レジスタ３０１（図７参照）を使用して、送受信が再開された時に使用するディスクリプタ・アドレスをディスクリプタ・キャッシュ・コントローラ１１に通知する。
（９）ディスクリプタ・キャッシュ・コントローラ１１は、アドレス・指示レジスタ３０１に書き込まれたアドレスでスタート・ディスクリプタ・アドレス２００（図６参照）を更新する。
【００３２】
（１０）送受信を行なっている際に、ディスクリプタ・キャッシュ・メモリ１０の容量を超えるセッションが確立された場合には、リプレイス対象ＦＩＦＯ１０１（図４参照）の先頭にあるセッションが使用するディスクリプタ・キャッシュ・メモリ１０を新たに確立されたセッションＩＤのディスクリプタ・チェインのエリアとして使用する。
（１１）リプレイス対象のセッションＩＤがリプレイス・ロック・レジスタ１０２のセッションＩＤと一致する場合には、リプレイスを行なわないで、ロックさせておく。
【００３３】
次に、本発明にかかる通信制御理装置の第２の実施形態について、図８を中心に参照しながら説明する。第１の実施形態においては、ディスクリプタ・キャッシュ・メモリ１０をホスト・メモリ４よりも小容量のメモリとしていたが、本実施の形態では、ホスト・メモリと同容量のメモリ１０’を有する。
【００３４】
以下、ディスクリプタ・キャッシュ・メモリ１０’を用いた場合の通信制御装置１’のパケット送受信及びディスクリプタ・リプレイス動作について詳細に説明する。
（１）ホストＣＰＵ５からＩ／Ｏバスを介して、ディスクリプタ・キャッシュ・コントローラ１１に通知することにより、ディスクリプタ・キャッシュ・コントローラ１１は、新たなセッションが確立されたことを認識する。
（２）ディスクリプタ・キャッシュ・コントローラ１１は、ＤＭＡコントローラ１２に該当セッションのディスクリプタをディスクリプタ・キャッシュ・メモリ１０’に記憶するように指示し、ＤＭＡコントローラ１２は、ホスト・メモリ４上に展開されるディスクリプタ・チェインをディスクリプタ・キャッシュ・メモリ１０’に記憶する。
（３）ディスクリプタ・キャッシュ・メモリ１０’上に展開された時点で、ディスクリプタ・キャッシュ・コントローラ１１は、ディスクリプタ・キャッシュ・テーブル１００（図３参照）のスタート・ディスクリプタ・アドレス２００（図６参照）と、エンド・ディスクリプタ・アドレス２０１とをディスクリプタ・キャッシュ・メモリ１０’上に展開されるディスクリプタ・チェインの先頭アドレス、最後尾アドレスで更新する。
【００３５】
（４）セッションが確立されたセッションＩＤをディスクリプタ・キャッシュ・コントローラ１１から送信／受信スケジューラユニット１５に通知する。
（５）送信／受信スケジューラユニット１５から送信／受信要求が存在する旨の通知がネットワーク・プロセッサ・ユニット１４に送られる。
（６）ネットワーク・プロセッサ・ユニット１４は、ディスクリプタ・リード・レジスタ３００を用いて、該当セッションＩＤを指示して、ディスクリプタ・キャッシュ・コントローラ１１を介して、ディスクリプタ・キャッシュ・メモリ１０’からディスクリプタをリードする。
【００３６】
以上のように、第１の実施の形態にかかる通信制御装置１では、キャッシュのリプレイス動作が発生し、ネットワーク・プロセッサ・ユニット１４のファームウェアが実施する指示も増える。そのため、リプレイスにかかる動作をすべて削除することができる第２の実施の形態にかかる通信制御装置１’の方が高性能である。
【図面の簡単な説明】
【００３７】
【図１】本発明にかかる通信制御装置の第１の実施形態の構成を示すブロック図である。
【図２】図１の通信制御装置のディスクリプタ・キャッシュ・メモリの構成を示すブロック図である。
【図３】図１の通信制御装置のディスクリプタ・キャッシュ・コントローラを構成するリプレイス対象ＦＩＦＯを示すブロック図である。
【図４】図１の通信制御装置のディスクリプタ・キャッシュ・コントローラを構成するディスクリプタ・キャッシュ・テーブルを示すブロック図である。
【図５】図１の通信制御装置のディスクリプタ・キャッシュ・コントローラを構成するリプレイス・ロック・レジスタを示すブロック図である。
【図６】図１の通信制御装置のディスクリプタ・キャッシュ・テーブルを構成するスタート・ディスクリプタ・アドレス及びエンド・ディスクリプタ・アドレスを示すブロック図である。
【図７】図１の通信制御装置のネットワーク・プロセッサ・ユニットを構成するディスクリプタ・リード・レジスタ及びアドレス・指示レジスタを示すブロック図である。
【図８】本発明にかかる通信制御装置の第２の実施形態の構成を示すブロック図である。
【符号の説明】
【００３８】
１、１’        通信制御装置
２        Ｉ／Ｏバス
３        ネットワーク媒体
４        ホスト・メモリ
５        ホストＣＰＵ
１０、１０’    ディスクリプタ・キャッシュ・メモリ
１１      ディスクリプタ・キャッシュ・コントローラ
１２      ＤＭＡコントローラ
１３      Ｉ／Ｏバス・コントローラ
１４      ネットワーク・プロセッサ・ユニット
１５      送信／受信スケジューラユニット
１００    ディスクリプタ・キャッシュ・テーブル
１０１    リプレイス対象ＦＩＦＯ
１０２    リプレイス・ロック・レジスタ
２００    スタート・ディスクリプタ・アドレス
２０１    エンド・ディスクリプタ・アドレス
３００    ディスクリプタ・リード・レジスタ
３０１    アドレス・指示レジスタ
【図１】
2005184051.tif 000003
【図２】
2005184051.tif 000004
【図３】
2005184051.tif 000005
【図４】
2005184051.tif 000006
【図５】
2005184051.tif 000007
【図６】
2005184051.tif 000008
【図７】
2005184051.tif 000009
【図８】
2005184051.tif 000010