(57)【特許請求の範囲】
【請求項１】
ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置において、
前記ホストより通知されたデスクリプタからホスト・メモリ上のデスクリプタ・チェーンを辿り、前記デスクリプタ及びデスクリプタ・チェーン中のデスクリプタの内容をキャッシュする仮想デスクリプタ・ギャザー・リストを構築するデスクリプタ・キャッシュ機構を備え、
前記デスクリプタ・キャッシュ機構が、前記仮想デスクリプタ・ギャザー・リストの一部を、受信デスクリプタ・キャッシュ・ウィンドウ、および送信デスクリプタ・キャッシュ・ウィンドウとして参照させることを特徴とする通信制御装置。
【請求項２】
ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置において、
前記ホストより通知されたデスクリプタからホスト・メモリ上のデスクリプタ・チェーンを辿り、前記デスクリプタ及びデスクリプタ・チェーン中のデスクリプタの内容をキャッシュする仮想デスクリプタ・ギャザー・リストを構築するデスクリプタ・キャッシュ機構を備え、
前記デスクリプタ・キャッシュ機構が、前記仮想デスクリプタ・ギャザー・リストの一部を、受信デスクリプタ・キャッシュ・ウィンドウ、および送信デスクリプタ・キャッシュ・ウィンドウ、および送信完了デスクリプタ・キャッシュ・ウィンドウとして参照させることを特徴とする通信制御装置。
【請求項３】
ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置において、
ネットワーク媒体を制御してパケットの送受信を行うＭＡＣコントローラと、
Ｉ／Ｏバスと通信制御装置間の制御を行うＩ／Ｏバス・コントローラと、
前記Ｉ／Ｏバス・コントローラを介してホスト・メモリとのデータ転送を行うＤＭＡコントローラと、
ホスト・メモリ上のデスクリプタ・チェーンにあるデスクリプタが仮想デスクリプタ・ギャザー・リストの一部としてキャッシュされるデスクリプタ・キャッシュ・メモリと、
前記ホストより通知されたデスクリプタからホスト・メモリ上のデスクリプタ・チェーンを辿って解析することにより仮想デスクリプタ・ギャザー・リストを構築し、該仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，および送信デスクリプタ・キャッシュ・ウィンドウとして参照させるデスクリプタ・キャッシュ・コントローラと、
前記デスクリプタ・キャッシュ・コントローラから渡された受信デスクリプタより受信パケットをストアすべき前記ホスト・メモリのアドレスを得、該アドレスを前記ＤＭＡコントローラへ通知してＤＭＡライト動作を起動することにより前記Ｉ／Ｏバス・コントローラを介して受信パケットを前記ホスト・メモリに転送し、前記デスクリプタ・キャッシュ・コントローラから渡された送信デスクリプタより送信パケットがストアされているホスト・メモリのアドレスを得、該アドレスを前記ＤＭＡコントローラへ通知することにより送信パケットを送信するネットワーク・プロセッサ・ユニットと
を有することを特徴とする通信制御装置。
【請求項４】
ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置において、
ネットワーク媒体を制御してパケットの送受信を行うＭＡＣコントローラと、
Ｉ／Ｏバスと通信制御装置間の制御を行うＩ／Ｏバス・コントローラと、前記Ｉ／Ｏバス・コントローラを介してホスト・メモリとのデータ転送を行うＤＭＡコントローラと、
ホスト・メモリ上のデスクリプタ・チェーンにあるデスクリプタが仮想デスクリプタ・ギャザー・リストの一部としてキャッシュされるデスクリプタ・キャッシュ・メモリと、
前記ホストより通知されたデスクリプタからホスト・メモリ上のデスクリプタ・チェーンを辿って解析することにより仮想デスクリプタ・ギャザー・リストを構築し、該仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，送信デスクリプタ・キャッシュ・ウィンドウ，および受信完了デスクリプタ・キャッシュ・ウィンドウとして参照させるデスクリプタ・キャッシュ・コントローラと、
前記デスクリプタ・キャッシュ・コントローラから渡された受信デスクリプタより受信パケットをストアすべき前記ホスト・メモリのアドレスを得、該アドレスを前記ＤＭＡコントローラへ通知してＤＭＡライト動作を起動することにより前記Ｉ／Ｏバス・コントローラを介して受信パケットを前記ホスト・メモリに転送し、前記デスクリプタ・キャッシュ・コントローラから渡された送信デスクリプタより送信パケットがストアされているホスト・メモリのアドレスを得、該アドレスを前記ＤＭＡコントローラへ通知することにより送信パケットを送信するネットワーク・プロセッサ・ユニットと
を有することを特徴とする通信制御装置。
【請求項５】
前記デスクリプタ・キャッシュ・コントローラが、各デスクリプタ・キャッシュ・ウィンドウのスライド・モードとして、
指定サイズだけウィンドウをスライドさせるニューメリック・ウィンドウ・スライド・モードと、
指定デスクリプタ位置へウィンドウを直接動かすダイレクト・ウィンドウ・スライド・モードと
を設けることを特徴とする請求項１，請求項２，請求項３または請求項４記載の通信制御装置。
【請求項６】
ホストによりハッシュ・パターンが登録されるハッシュ・テーブル・メモリと、
通知されたパターンを元に前記ハッシュ・テーブル・メモリに対してハッシュ・サーチを掛けてコネクションを特定し、そのコネクション番号を前記デスクリプタ・キャッシュ・コントローラへ通知するハッシュ・サーチ・エンジンとをさらに備え、
前記デスクリプタ・キャッシュ・コントローラが、受信パケットからコネクションを特定して受信デスクリプタをホスト・メモリからプリフェッチするプリフェッチ機構を有することを特徴とする請求項１，請求項２，請求項３，請求項４または請求項５記載の通信制御装置。
【請求項７】
ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置のデスクリプタ制御方法において、
前記通信制御装置のサポートするプロトコルがコネクション・レスのプロトコルの場合に、１コネクション毎に、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを辿って解析することにより受信用および送信用の仮想デスクリプタ・ギャザー・リストをそれぞれ構築する工程と、
前記受信用および送信用の仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，および送信デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする工程と
を含むことを特徴とするデスクリプタ制御方法。
【請求項８】
ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置のデスクリプタ制御方法において、
前記通信制御装置のサポートするプロトコルがコネクション・オリエンテッドなプロトコルの場合に、１コネクション毎に、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを辿って解析することにより受信用，送信用および受信完了用の仮想デスクリプタ・ギャザー・リストをそれぞれ構築する工程と、
前記受信用，送信用および受信完了用の仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，送信デスクリプタ・キャッシュ・ウィンドウ，および受信完了デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする工程とを
含むことを特徴とするデスクリプタ制御方法。
【請求項９】
ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置のデスクリプタ制御方法において、
前記通信制御装置のサポートするプロトコルがコネクション・レスのプロトコルの場合に、１コネクション毎に、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを辿って解析することにより受信用および送信用の仮想デスクリプタ・ギャザー・リストをそれぞれ構築する工程と、
送受信アクションが発生する前に必要となるデスクリプタをホスト・メモリからプリフェッチする工程と、
前記受信用および送信用の仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，および送信デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする工程と
を含むことを特徴とするデスクリプタ制御方法。
【請求項１０】
ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置のデスクリプタ制御方法において、
前記通信制御装置のサポートするプロトコルがコネクション・オリエンテッドなプロトコルの場合に、１コネクション毎に、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを辿って解析することにより受信用，送信用および受信完了用の仮想デスクリプタ・ギャザー・リストをそれぞれ構築する工程と、
送受信アクションが発生する前に必要となるデスクリプタをホスト・メモリからプリフェッチする工程と、
前記受信用，送信用および受信完了用の仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，送信デスクリプタ・キャッシュ・ウィンドウ，および受信完了デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする工程と
を含むことを特徴とするデスクリプタ制御方法。
【請求項１１】
各デスクリプタ・キャッシュ・ウィンドウのスライド・モードとして、
指定サイズだけウィンドウをスライドさせるニューメリック・ウィンドウ・スライド・モードと、
指定デスクリプタ位置へウィンドウを直接動かすダイレクト・ウィンドウ・スライド・モードと
を設けることを特徴とする請求項７，請求項８，請求項９または請求項１０記載のデスクリプタ制御方法。
【請求項１２】
コンピュータに、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを辿って解析することにより仮想デスクリプタ・ギャザー・リストを構築する処理と、
前記仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，および送信デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする処理と
を実行させるためのプログラム。
【請求項１３】
コンピュータに、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを辿って解析することにより仮想デスクリプタ・ギャザー・リストを構築する処理と、
送受信アクションが発生する前に必要となるデスクリプタをホスト・メモリからプリフェッチする処理と、
前記仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，および送信デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする処理と
を実行させるためのプログラム。
【請求項１４】
コンピュータに、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを辿って解析することにより仮想デスクリプタ・ギャザー・リストを構築する処理と、
前記仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，送信デスクリプタ・キャッシュ・ウィンドウ，および受信完了デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする処理と
を実行させるためのプログラム。
【請求項１５】
コンピュータに、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを辿って解析することにより仮想デスクリプタ・ギャザー・リストを構築する処理と、
送受信アクションが発生する前に必要となるデスクリプタをホスト・メモリからプリフェッチする処理と、前記仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，送信デスクリプタ・キャッシュ・ウィンドウ，および受信完了デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする処理とを実行させるためのプログラム。
【請求項１６】
各デスクリプタ・キャッシュ・ウィンドウのスライド・モードとして、指定サイズだけウィンドウをスライドさせるニューメリック・ウィンドウ・スライド・モードと、
指定デスクリプタ位置へウィンドウを直接動かすダイレクト・ウィンドウ・スライド・モードと
を設けることを特徴とする請求項１２，請求項１３，請求項１４または請求項１５記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は通信制御装置およびデスクリプタ制御方法に関し、特にホストとＩ／Ｏバスを介して接続され、ネットワーク媒体を制御してパケット（フレームともいう）の送受信を行う通信制御装置およびそのデスクリプタ制御方法に関する。
【０００２】
【従来の技術】
近年、インターネットの世界的規模での普及により、膨大なネットワーク処理をこなすための高速なネットワーク・サーバの需要が高まっている。
【０００３】
インターネットではＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  ＣｏｎｔｒｏｌＰｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）と呼ばれる通信プロトコル（以下、単にプロトコルという）を用いているが、プロトコルを処理するための負荷はサーバのホストＣＰＵ（Ｃｅｎｔｒａｌ  ＰｒｏｃｅｓｓｉｎｇＵｎｉｔ）にとっては無視できないほど重い。この問題を解決するために、通信制御装置にネットワーク・プロセッサ・ユニットを組み込み、ある程度のＴＣＰ／ＩＰ処理をネットワーク・プロセッサ・ユニット側で実行させ、ホストＣＰＵの負荷を減らす方法が考案されている。
【０００４】
ネットワーク・プロセッサ・ユニットが受信パケットをホスト・メモリへ転送する際には、ホスト側の受信バッファのアドレスやサイズなどの、ホストＣＰＵにより記述されたデスクリプタが必要となる。一般的にデスクリプタはチェーン構造を持っており、通信制御装置側はデスクリプタ・チェーンを辿ってデスクリプタを読み込み、通信処理を行う。
【０００５】
【発明が解決しようとする課題】
しかし、特にＴＣＰなどのコネクション・オリエンテッドなプロトコル処理のオフロードを考慮した場合、パケットの再送処理やＡＣＫ（ＡＣＫｎｏｗｌｅｄｇｅ）パケット処理等が存在し、単純にデスクリプタ・チェーンを辿ってデスクリプタを読み進むだけでなく、過去のデスクリプタに戻って通信処理を行う必要性が生じる。
【０００６】
さらに、ネットワーク処理の性能を上げるために、受信パケットをユーザ・データ空間へ直接転送する、いわゆるゼロコピーを行う場合、デスクリプタ・チェーンはＴＣＰのコネクション数だけ必要となり、デスクリプタの制御が一層複雑化する。このため、通信制御装置内のネットワーク・プロセッサ・ユニットにとってのデスクリプタ制御の容易性のみならず、デスクリプタ・アクセス制御に関する高速化手法が求められている。
【０００７】
本発明の目的は、ネットワーク・プロセッサ・ユニットがホスト・メモリ上に散在するデスクリプタ・チェーンを辿る必要がないようにして、ネットワーク・プロセッサ・ユニットのデスクリプタ制御のオーバーヘッドを減らすことができるようにした通信制御装置およびデスクリプタ制御方法を提供することにある。
【０００８】
また、本発明の他の目的は、ネットワーク・プロセッサ・ユニットが送受信処理を行う際にデスクリプタの参照を必要とする場合は、常に必要なデスクリプタがデスクリプタ・キャッシュに読み込まれているようにして、デスクリプタ・アクセスの遅延が低減されるようにした通信制御装置およびデスクリプタ制御方法を提供することにある。
【０００９】
なお、先行技術文献として、特開平６−２１６９７０，特開平７−０２３０６０等がある。特開平６−２１６９７０に開示された通信制御アダプタは、上位システムからの確認応答フレーム送信要求を受けずに、独立して通信制御アダプタで確認応答フレームを生成して送信することにより、確認応答フレームを迅速に返送できるようにしたものであるが、デスクリプタの制御を行うものではなく、本発明とは構成および効果が全く異なるものである。
【００１０】
また、特開平７−０２３０６０に開示されたバッファ変換制御方式は、プロトコル制御部が管理するバッファ管理テーブルとＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）コントローラが管理する送受信ディスクリプタテーブルの間に送受信バッファ管理変換テーブルを設けることにより、ＬＡＮアダプタ（本発明の通信制御装置に相当）と通信制御装置（本発明のホストに相当）間での送受信バッファの共有を可能にするものであるが、ホストで管理されるデスクリプタを通信制御装置にキャッシュして管理するものではなく、本発明とは構成および効果が全く異なるものである。
【００１１】
【課題を解決するための手段】
本発明の通信制御装置は、ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置において、前記ホストより通知されたデスクリプタからホスト・メモリ上のデスクリプタ・チェーンを自動的に辿って解析することによりデスクリプタ・ギャザー・リストを仮想的に構築し、該仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，および送信デスクリプタ・キャッシュ・ウィンドウとして参照させるデスクリプタ・キャッシュ機構を備えることを特徴とする。
【００１２】
また、本発明の通信制御装置は、ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置において、前記ホストより通知されたデスクリプタからホスト・メモリ上のデスクリプタ・チェーンを自動的に辿って解析することによりデスクリプタ・ギャザー・リストを仮想的に構築し、該仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，送信デスクリプタ・キャッシュ・ウィンドウ，および送信完了デスクリプタ・キャッシュ・ウィンドウとして参照させるデスクリプタ・キャッシュ機構を備えることを特徴とする。
【００１３】
さらに、本発明の通信制御装置は、ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置において、ネットワーク媒体を制御してパケットの送受信を行うＭＡＣコントローラと、Ｉ／Ｏバスと通信制御装置間の制御を行うＩ／Ｏバス・コントローラと、前記Ｉ／Ｏバス・コントローラを介してホスト・メモリとのデータ転送を行うＤＭＡコントローラと、ホスト・メモリ上のデスクリプタ・チェーンにあるデスクリプタが仮想デスクリプタ・ギャザー・リストの一部としてキャッシュされるデスクリプタ・キャッシュ・メモリと、前記ホストより通知されたデスクリプタからホスト・メモリ上のデスクリプタ・チェーンを自動的に辿って解析することによりデスクリプタ・ギャザー・リストを仮想的に構築し、該仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，および送信デスクリプタ・キャッシュ・ウィンドウとして参照させるデスクリプタ・キャッシュ・コントローラと、前記デスクリプタ・キャッシュ・コントローラから渡された受信デスクリプタより受信パケットをストアすべき前記ホスト・メモリのアドレスを得、該アドレスを前記ＤＭＡコントローラへ通知してＤＭＡライト動作を起動することにより前記Ｉ／Ｏバス・コントローラを介して受信パケットを前記ホスト・メモリに転送し、前記デスクリプタ・キャッシュ・コントローラから渡された送信デスクリプタより送信パケットがストアされているホスト・メモリのアドレスを得、該アドレスを前記ＤＭＡコントローラへ通知することにより送信パケットを送信するネットワーク・プロセッサ・ユニットとを有することを特徴とする。
【００１４】
さらにまた、本発明の通信制御装置は、ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置において、ネットワーク媒体を制御してパケットの送受信を行うＭＡＣコントローラと、Ｉ／Ｏバスと通信制御装置間の制御を行うＩ／Ｏバス・コントローラと、前記Ｉ／Ｏバス・コントローラを介してホスト・メモリとのデータ転送を行うＤＭＡコントローラと、ホスト・メモリ上のデスクリプタ・チェーンにあるデスクリプタが仮想デスクリプタ・ギャザー・リストの一部としてキャッシュされるデスクリプタ・キャッシュ・メモリと、前記ホストより通知されたデスクリプタからホスト・メモリ上のデスクリプタ・チェーンを自動的に辿って解析することによりデスクリプタ・ギャザー・リストを仮想的に構築し、該仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，送信デスクリプタ・キャッシュ・ウィンドウ，および受信完了デスクリプタ・キャッシュ・ウィンドウとして参照させるデスクリプタ・キャッシュ・コントローラと、前記デスクリプタ・キャッシュ・コントローラから渡された受信デスクリプタより受信パケットをストアすべき前記ホスト・メモリのアドレスを得、該アドレスを前記ＤＭＡコントローラへ通知してＤＭＡライト動作を起動することにより前記Ｉ／Ｏバス・コントローラを介して受信パケットを前記ホスト・メモリに転送し、前記デスクリプタ・キャッシュ・コントローラから渡された送信デスクリプタより送信パケットがストアされているホスト・メモリのアドレスを得、該アドレスを前記ＤＭＡコントローラへ通知することにより送信パケットを送信するネットワーク・プロセッサ・ユニットとを有することを特徴とする。
【００１５】
また、本発明の通信制御装置は、前記デスクリプタ・キャッシュ・コントローラが、各デスクリプタ・キャッシュ・ウィンドウのスライド・モードとして、指定サイズだけウィンドウをスライドさせるニューメリック・ウィンドウ・スライド・モードと、指定デスクリプタ位置へウィンドウを直接動かすダイレクト・ウィンドウ・スライド・モードとを設けることを特徴とする。
【００１６】
さらに、本発明の通信制御装置は、ホストによりハッシュ・パターンが登録されるハッシュ・テーブル・メモリと、通知されたパターンを元に前記ハッシュ・テーブル・メモリに対してハッシュ・サーチを掛けてコネクションを特定し、そのコネクション番号を前記デスクリプタ・キャッシュ・コントローラへ通知するハッシュ・サーチ・エンジンとをさらに備え、前記デスクリプタ・キャッシュ・コントローラが、受信パケットからコネクションを特定して受信デスクリプタをホスト・メモリからプリフェッチするプリフェッチ機構を有することを特徴とする。
【００１７】
一方、本発明のデスクリプタ制御方法は、ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置のデスクリプタ制御方法において、前記通信制御装置のサポートするプロトコルがコネクション・レスのプロトコルの場合に、１コネクション毎に、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを自動的に辿って解析することにより受信用および送信用の仮想デスクリプタ・ギャザー・リストをそれぞれ構築する工程と、前記受信用および送信用の仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，および送信デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする工程とを含むことを特徴とする。
【００１８】
また、本発明のデスクリプタ制御方法は、ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置のデスクリプタ制御方法において、前記通信制御装置のサポートするプロトコルがコネクション・オリエンテッドなプロトコルの場合に、１コネクション毎に、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを自動的に辿って解析することにより受信用，送信用および受信完了用の仮想デスクリプタ・ギャザー・リストをそれぞれ構築する工程と、前記受信用，送信用および受信完了用の仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，送信デスクリプタ・キャッシュ・ウィンドウ，および受信完了デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする工程とを含むことを特徴とする。
【００１９】
さらに、本発明のデスクリプタ制御方法は、ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置のデスクリプタ制御方法において、前記通信制御装置のサポートするプロトコルがコネクション・レスのプロトコルの場合に、１コネクション毎に、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを自動的に辿って解析することにより受信用および送信用の仮想デスクリプタ・ギャザー・リストをそれぞれ構築する工程と、送受信アクションが発生する前に必要となるデスクリプタをホスト・メモリからプリフェッチする工程と、前記受信用および送信用の仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，および送信デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする工程とを含むことを特徴とする。
【００２０】
さらにまた、本発明のデスクリプタ制御方法は、ホストとＩ／Ｏバスを介して接続され、ホストから通知されるデスクリプタによりネットワーク媒体を制御してパケットの送受信を行う通信制御装置のデスクリプタ制御方法において、前記通信制御装置のサポートするプロトコルがコネクション・オリエンテッドなプロトコルの場合に、１コネクション毎に、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを自動的に辿って解析することにより受信用，送信用および受信完了用の仮想デスクリプタ・ギャザー・リストをそれぞれ構築する工程と、送受信アクションが発生する前に必要となるデスクリプタをホスト・メモリからプリフェッチする工程と、前記受信用，送信用および受信完了用の仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，送信デスクリプタ・キャッシュ・ウィンドウ，および受信完了デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする工程とを含むことを特徴とする。
【００２１】
また、本発明のデスクリプタ制御方法は、各デスクリプタ・キャッシュ・ウィンドウのスライド・モードとして、指定サイズだけウィンドウをスライドさせるニューメリック・ウィンドウ・スライド・モードと、指定デスクリプタ位置へウィンドウを直接動かすダイレクト・ウィンドウ・スライド・モードとを設けることを特徴とする。
【００２２】
他方、本発明のプログラムは、コンピュータに、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを自動的に辿って解析することにより仮想デスクリプタ・ギャザー・リストを構築する処理と、前記仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，および送信デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする処理とを実行させることを特徴とする。
【００２３】
また、本発明のプログラムは、コンピュータに、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを自動的に辿って解析することにより仮想デスクリプタ・ギャザー・リストを構築する処理と、送受信アクションが発生する前に必要となるデスクリプタをホスト・メモリからプリフェッチする処理と、前記仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，および送信デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする処理とを実行させることを特徴とする。
【００２４】
さらに、本発明のプログラムは、コンピュータに、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを自動的に辿って解析することにより仮想デスクリプタ・ギャザー・リストを構築する処理と、前記仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，送信デスクリプタ・キャッシュ・ウィンドウ，および受信完了デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする処理とを実行させることを特徴とする。
【００２５】
さらにまた、本発明のプログラムは、コンピュータに、ホスト・メモリ上に散在するデスクリプタがそれぞれアドレス・ポインタによりチェーンされたデスクリプタ・チェーンを自動的に辿って解析することにより仮想デスクリプタ・ギャザー・リストを構築する処理と、送受信アクションが発生する前に必要となるデスクリプタをホスト・メモリからプリフェッチする処理と、前記仮想デスクリプタ・ギャザー・リストの一部を受信デスクリプタ・キャッシュ・ウィンドウ，送信デスクリプタ・キャッシュ・ウィンドウ，および受信完了デスクリプタ・キャッシュ・ウィンドウとして参照することにより送受信時に必要となるデスクリプタへアクセスする処理とを実行させることを特徴とする。
【００２６】
また、本発明のプログラムは、各デスクリプタ・キャッシュ・ウィンドウのスライド・モードとして、指定サイズだけウィンドウをスライドさせるニューメリック・ウィンドウ・スライド・モードと、指定デスクリプタ位置へウィンドウを直接動かすダイレクト・ウィンドウ・スライド・モードとを設けることを特徴とする。
【００２７】
本発明による通信制御装置およびデスクリプタ制御方法では、パケットの送受信にホストから通知されるデスクリプタにより送受信を行う通信制御装置において、デスクリプタ本体がホストの物理メモリ（ホスト・メモリ）上に散在し、それぞれがアドレス・ポインタによりチェーンされたデスクリプタ・チェーンに対し、仮想的なデスクリプタ・ギャザー・リストを構築してデスクリプタ・キャッシュとし、仮想デスクリプタ・ギャザー・リストの一部を参照するウィンドウを設けることにより、通信制御装置内に組み込まれたファームウェアがデスクリプタ・チェーンを辿ることなく、送受信時に必要となるデスクリプタにアクセスすることが可能となる。
【００２８】
また、通信制御装置がサポートするプロトコルに合わせ、１通信コネクション（以下、単にコネクションという）に対し、複数種類の仮想デスクリプタ・ギャザー・リストを構築することにより、送信および受信のデスクリプタ管理の容易性が増す。
【００２９】
さらに、コネクション毎にデスクリプタ・キャッシュ機構を構成し、送受信アクションが発生する前に必要となるデスクリプタをホスト・メモリから読み込むプリフェッチ機構を設けることにより、ホストからのデスクリプタ取得の遅延を隠蔽する。
【００３０】
以上の機能により、通信制御装置におけるデスクリプタの解析およびデスクリプタ取得のオーバーヘッドを大幅に削減し、通信性能の向上を図ることが可能となる。
【００３１】
単一または複数のホスト・プロセッサ，メモリ・コントローラ，ホスト・メモリ，およびＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）コントローラからなるコンピュータ・システム（基本構成は図２を参照。以後、通信制御装置を除くコンピュータ・システム部分をホストと呼ぶ）に対し、Ｉ／Ｏデバイスとして接続される通信制御装置においては、受信時は予めホストから受信パケットのストア先としてデスクリプタによりメモリ・アドレスおよびバッファ・サイズが示される。デスクリプタは、次に続くデスクリプタのアドレス・ポインタを持っており、受信デスクリプタ・チェーンとして通信制御装置に通知される。送信も同様に、送信データがストアされているメモリ・アドレスおよびデータ・サイズが示される送信デスクリプタ・チェーンとして通信制御装置に通知される。
【００３２】
本発明の対象となる通信制御装置は、内部にパケット送受信制御用のネットワーク・プロセッサ・ユニット（基本構成は図１）を有し、ホストより通知されたデスクリプタをリードし、これを解析してパケットの送受信を行うものである。
【００３３】
送受信の際、ネットワーク・プロセッサ・ユニット自身が、ホストによってホスト・メモリ上に生成されたデスクリプタ・チェーンを辿る必要が無いように、通信制御装置内にデスクリプタ・キャッシュ機構を構成する。デスクリプタ・キャッシュ機構は、ホスト・メモリ内に散在するデスクリプタをチェーンの順番通りに連続して並べたデスクリプタ・ギャザー・リストを仮想的に構築し、仮想デスクリプタ・ギャザー・リストの一部をウィンドウとしてネットワーク・プロセッサ・ユニットに参照させる機能である。
【００３４】
このウィンドウは、通信制御装置が処理するプロトコルに適した実装がなされる。例えば、Ｅｔｈｅｒｎｅｔ（登録商標）／ＩＰ／ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）等のコネクション・レスのプロトコルでは、１コネクション毎に、受信デスクリプタ・キャッシュ・ウィンドウ，および送信デスクリプタ・キャッシュ・ウィンドウを実装する。ＴＣＰ等のコネクション・オリエンテッドなプロトコルでは、さらに送信完了用デスクリプタ・キャッシュ・ウィンドウを実装する。これらデスクリプタ・キャッシュ・ウィンドウ・セットは、通信制御装置がサポートするコネクション数だけ実装する。
【００３５】
これにより、ネットワーク・プロセッサ・ユニットは、コネクション番号，およびウィンドウのオフセットを指定することにより、任意のデスクリプタをリードすることが可能となる。また、デスクリプタを消費する度にウィンドウを任意のサイズだけスライドさせるニューメリック・ウィンドウ・スライド・モードと、特定のディスクリプタ位置へダイレクトにスライドさせるダイレクト・ウィンドウ・スライド・モードとを持たせる。前者は特にＥｔｈｅｒｎｅｔ（登録商標）／ＩＰ／ＵＤＰ等のコネクション・レスのプロトコルの送受信に適したモードであり、後者は特にＴＣＰ等のコネクション・オリエンテッドなプロトコルの送受信に特化したモードである。
【００３６】
これらのデスクリプタ・キャッシュ機構により、ネットワーク・プロセッサ・ユニットは、デスクリプタ・チェーンの解析の必要が無くなり、ファームウェアの容易性とデスクリプタに関する処理性能の向上とを図ることが可能となる。
【００３７】
また、通信制御装置にハッシュ・サーチ・エンジンなどを搭載し、受信パケットのコネクションを自動的に判別する機能を有する場合は、実際にネットワーク・プロセッサ・ユニットに受信処理通知が渡される前に、事前に該当コネクションの受信デスクリプタをホスト・メモリからリードするプリフェッチ機構を持たせる。
【００３８】
同様に送信の際も、実際にネットワーク・プロセッサ・ユニットに送信処理通知が渡される前に、ホストからの送信要求が通信制御装置に通知された時点でコネクションを判別し、送信デスクリプタをホスト・メモリからプリフェッチするプリフェッチ機構を持たせる。
【００３９】
以上により、ネットワーク・プロセッサ・ユニットのデスクリプタ取得の遅延を隠蔽することが可能となり、結果的に通信制御装置の通信性能の向上を図ることが可能となる。
【００４０】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００４１】
［第１の実施の形態］
図２は、本発明の第１の実施の形態に係る通信制御装置（ネットワーク・インタフェース・デバイス）１００を含むシステムの基本構成を示す。このシステムは、単一または複数のＣＰＵ１０がプロセッサ・バス２０を介して、メモリ・コントローラ３０に接続されている。メモリ・コントローラ３０は、ＣＰＵ１０と、ホスト・メモリ４０と、Ｉ／Ｏコントローラ５０との間の制御を行う。Ｉ／Ｏコントローラ５０には、Ｉ／Ｏバス６０を介して単一または複数のＩ／Ｏデバイス７０が接続される。通信制御装置１００もＩ／Ｏデバイスの一種であり、この場合、Ｅｔｈｅｒｎｅｔ（登録商標），ＬＡＮ等のネットワーク媒体１５０の制御を行うＩ／Ｏデバイスとして位置づけられる。
【００４２】
なお、このシステムは一例であり、本発明は上位システムには依存しない。また、例として挙げたシステムは、いわゆるパーソナルコンピュータ，ワークステーション，サーバのシステムと何ら変わるところはなく、この場合、Ｉ／Ｏバス６０は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスまたはＰＣＩ−Ｘバスで構成されるのが一般的であり、ネットワーク媒体１５０は、インターネットやＬＡＮ等のＥｔｈｅｒｎｅｔ（登録商標）であることが一般的である。
【００４３】
以後、この基本システム中、Ｉ／Ｏバス６０より上位側を単純にホストと呼ぶ。
【００４４】
図１は、通信制御装置１００の構成を示す回路ブロック図である。通信制御装置１００は、ネットワーク媒体１５０を制御してパケットの送受信を行うＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）コントローラ１０４と、受信パケットおよび送信パケットをストアする送信／受信パケット・バッファ１０３と、Ｉ／Ｏバス６０と通信制御装置１０間の制御を行うＩ／Ｏバス・コントローラ１０１と、Ｉ／Ｏバス・コントローラ１０１を介してホスト・メモリ４０とのデータ転送を行うＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ１０２と、送受信のスケジューリングを行う送信／受信スケジューラ１０６と、受信パケットの解析，ホスト・メモリ４０へのデータ転送の起動，および送信データ転送の起動と送信処理などを行うネットワーク・プロセッサ・ユニット１０５と、デスクリプタ・キャッシュ機構の制御を行うデスクリプタ・キャッシュ・コントローラ１０７と、デスクリプタ本体をキャッシュするデスクリプタ・キャッシュ・メモリ１０８とから成る。
【００４５】
図３は、ホストのＣＰＵ１０が生成するデスクリプタのフォーマットの一例を示す図である。このデスクリプタは、デスクリプタを消費したことをホストへ通知するためのダン・ビット（Ｄｏｎｅ  Ｂｉｔ）２００，デスクリプタの属性などを設定するコントロール・コード部２０１，デスクリプタ・チェーンのための次のデスクリプタのアドレス・ポインタであるネクスト・デスクリプタ・アドレス２０２，ならびに受信デスクリプタの場合は受信パケットのストア先を示し、送信デスクリプタの場合はパケットとして送信すべきデータがストアされているアドレスを示すバッファ・アドレスおよびバッファ・サイズの複数の組２０３とから成っている。ホストのＣＰＵ１０は、送受信デスクリプタをホスト・メモリ４０上に生成する。ネットワーク・プロセッサ・ユニット１０５は、パケットの送受信の際にデスクリプタを参照し、受信の場合は受信パケット・データをホスト・メモリ４０へ転送する。この時、ネットワーク・プロセッサ・ユニット１０５は、ダン・ビット２００をＤＭＡコントローラ１０２を介してＤＭＡライト（Ｗｒｉｔｅ）でセットし、ホストは割り込みなどをきっかけにダン・ビット２００を参照してデスクリプタの完了を認知すると送受信それぞれに対する処理を実行する。
【００４６】
図４は、本発明によるデスクリプタ・キャッシュ機構の概念を解説した図である。ホストにより生成されるデスクリプタは、ホスト・メモリ４０上にデスクリプタ・チェーンを構成しており、その物理的なストア位置は散在している（符号３００参照）。デスクリプタ・キャッシュ・コントローラ１０７は、自動的にデスクリプタ・チェーンを辿り、仮想デスクリプタ・ギャザー・リスト３０１を構築する。この仮想デスクリプタ・ギャザー・リスト３０１は、仮想的なものであり、実体は存在しない。
【００４７】
デスクリプタ・キャッシュのサイズは、デスクリプタ・キャッシュ・メモリ１０８の容量と通信制御装置１００がサポートするトータルのコネクション数との関係で決まる。従って、実際には、仮想デスクリプタ・ギャザー・リスト３０１中、コネクションあたりのキャッシュ・サイズ分だけデスクリプタ・キャッシュ・メモリ１０８へキャッシュされる。
【００４８】
ネットワーク・プロセッサ・ユニット１０５は、キャッシュされた仮想デスクリプタ・ギャザー・リスト３０１の一部をウィンドウという概念として参照することが可能であり、符号３０２は１コネクション分のウィンドウを示している。
【００４９】
ここで、ウィンドウは、単にそのコネクションに割り当てられたキャッシュ・サイズのメモリである。例えば、ウィンドウに２ＫＢが割り当てられたとすると、デスクリプタ・キャッシュ・コントローラ１０７は、ホストより通知されたデスクリプタを読み、デスクリプタ・キャッシュにストアする。その際、ネクスト・デスクリプタ・アドレス２０２を参照することにより、続きのデスクリプタのアドレスを得、さらにデスクリプタを２ＫＢ分読んでいく。結果として、ネットワーク・プロセッサ・ユニット１０５から見れば、デスクリプタ・チェインを繋げた仮想デスクリプタ・ギャザー・リスト３０１の２ＫＢ分がデスクリプタ・キャッシュに存在し、あたかもウィンドウとして見えることになる。
【００５０】
１コネクションにつき、受信デスクリプタをキャッシュする受信デスクリプタ・キャッシュ・ウィンドウと、送信デスクリプタをキャッシュする送信デスクリプタ・キャッシュ・ウィンドウとの２種類のウィンドウが構成される。
【００５１】
また、ＴＣＰ等のコネクション・オリエンテッドなプロトコルでは、送信の完了は通信相手からのＡＣＫパケットにより完了し、その際、過去に参照した送信デスクリプタを再度参照する必要があり、送信デスクリプタ・キャッシュ・ウィンドウとは参照ウィンドウ位置が異なる、送信完了デスクリプタ・キャッシュ・ウィンドウが構成される。これら３種類のデスクリプタ・キャッシュ・ウィンドウからなるデスクリプタ・キャッシュ・ウィンドウ・セットが通信制御装置１００がサポートするコネクション数分存在し、図５に示すように、デスクリプタ・キャッシュ・メモリ１０８にマップされる。
【００５２】
ネットワーク・プロセッサ・ユニット１０５は、デスクリプタ・キャッシュ・メモリ１０８のアドレス指定により、任意のコネクションのデスクリプタ・キャッシュ・ウィンドウをリードすることが可能であり、この場合、ネットワーク・プロセッサ・ユニット１０５へ返されるデスクリプタのフォーマットは、図６で示されるフォーマットとなる。
【００５３】
図６のデスクリプタは、デスクリプタを消費したことをホストへ通知するためのダン・ビット（Ｄｏｎｅ  Ｂｉｔ）４００，デスクリプタの属性などを設定するコントロール・コード部４０１，デスクリプタ自身の物理アドレスを示すデスクリプタ・アドレス４０２，ならびに受信デスクリプタの場合は受信パケットのストア先を示し、送信デスクリプタの場合はパケットとして送信すべきデータがストアされているアドレスを示すバッファ・アドレスおよびバッファ・サイズの複数の組４０３とから成っている。このデスクリプタは、図３に示したホストが生成するデスクリプタとは異なり、符号４０２の部分がデスクリプタ自身の物理アドレスを示す。デスクリプタ自身の物理アドレスは、ネットワーク・プロセッサ・ユニット１０５がデスクリプタ使用後の終了ステータスをホスト・メモリ４０へ書き込む際に必要となる。
【００５４】
これにより、ネットワーク・プロセッサ・ユニット１０５は、ホスト・メモリ４０上のデスクリプタ・チェーンを辿る必要が無くなり、ウィンドウ位置を制御するだけで自動的に任意のデスクリプタをリードすることが可能となる。
【００５５】
なお、デスクリプタ・キャッシュ・コントローラ１０７は、辿るべきチェーン先のネクスト・デスクリプタ・アドレスを内部的に保持し、自動的にデスクリプタ・チェーンを辿ってデスクリプタをキャッシュしていく。
【００５６】
各ウィンドウの制御は、図７で示すデスクリプタ・キャッシュ・コントロール・レジスタで行われる。このレジスタには、コネクション番号を示すＰＣＢ（Ｐｒｏｔｏｃｏｌ  Ｃｏｎｔｏｒｏｌ  Ｂｌｏｃｋ）  ＩＤ（ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）フィールドと、ウィンドウのスライド指示起動を示し、ウィンドウ制御が完了されるとリセットされるスタート／ビジー・ビットＳと、送信デスクリプタ・キャッシュ・ウィンドウ，受信デスクリプタ・キャッシュ・ウィンドウ，または送信完了デスクリプタ・キャッシュ・ウィンドウを選択するディレクション・フィールドＤと、ニューメリック・ウィンドウ・スライド・モードまたはダイレクト・ウィンドウ・スライド・モードのいずれかを選択するビットＷと、ダイレクト・ウィンドウ・スライド・モード時に指定するデスクリプタの物理アドレスを設定するフィールドと、ニューメリック・ウィンドウ・スライド・モードの場合のスライド・サイズをセットするフィールドＯｆｆｓｅｔとを持つ。
【００５７】
デスクリプタ・キャッシュ機構のウィンドウ・スライド・モードには、ニューメリック・ウィンドウ・スライド・モードと、ダイレクト・ウィンドウ・スライド・モードとがあり、それぞれ挙動が異なる。
【００５８】
図８は、ニューメリック・ウィンドウ・スライド・モードを示したものである。ニューメリック・ウィンドウ・スライド・モードは、指定デスクリプタ数分、下方向にウィンドウをスライドさせるモードである。仮想デスクリプタ・ギャザー・リスト３０１に対し、太枠線がネットワーク・プロセッサ・ユニット１０５から参照可能なウィンドウを示している。符号６００〜６０２は、パケットを送信および受信する度にデスクリプタを消費し、デスクリプタ・キャッシュ・コントロール・レジスタにより、ウィンドウをスライドさせた状況を示している。ニューメリック・ウィンドウ・スライド・モードは、Ｅｔｈｅｒｎｅｔ（登録商標）／ＩＰ  Ｒａｗ／ＵＤＰのような、送受信を完了すると即デスクリプタを消費可能（ここでいう消費とは、通信制御装置１００でデスクリプタ指示の処理を終え、ホストにその旨を通知することを指す）であり、二度とそのデスクリプタを参照する必要のないコネクション・レスのプロトコルに向いたウィンドウ制御方法である。なお、デスクリプタが枯渇した状態６０３になると、デスクリプタ・キャッシュ・コントローラ１０７は、オール”０”のデスクリプタを返す。
【００５９】
一方、図９は、ダイレクト・ウィンドウ・スライド・モードを示したものである。パケットの送信を例にとって説明すると、ウィンドウ位置７００からウィンドウ位置７０２までニューメリック・ウィンドウ・スライド・モードによりウィンドウをスライドさせ、パケットを送信したとする。しかし、ネットワーク上の何らかの障害によりパケットが喪失し、パケットの送信相手（リモート・ホスト）よりパケットの再送要求が行われる時がある。例えば、再送要求のあったパケットが図９のデスクリプタ＃０が示す送信である場合、ネットワーク・プロセッサ・ユニット１０５は、デスクリプタ・キャッシュ・コントロール・レジスタへダイレクト・ウィンドウ・スライド・モードの指示と、デスクリプタ＃０の物理アドレスとを指定することにより、ウィンドウの先頭をデスクリプタ＃０の先頭へ直接移動させることが可能である。また、再送後は、再びデスクリプタ＃１０のウィンドウ位置７０２へダイレクト・ウィンドウ・スライド・モードによりウィンドウを戻し、引き続き送信を行うことが可能である。このように、ダイレクト・ウィンドウ・スライド・モードは、ＴＣＰのように、再送要求を持つコネクション・オリエンテッドなプロトコルに向いたウィンドウ制御方法である。
【００６０】
さらに、コネクション・オリエンテッドなプロトコルの特徴として、送信パケットを送信相手が受信したことを示すＡＣＫパケットの存在が挙げられる。コネクション・オリエンテッドなプロトコルでは、パケットをネットワーク送信しただけでは、送信が完了したことにはならず、送信相手より該当するパケットに対するＡＣＫパケットが返されて送信が完了する。従って、この間、デスクリプタの消費は保留される。しかし、送信処理時はデスクリプタを順にスライドして行くため、消費が保留されたデスクリプタはウィンドウ外となってしまう。ＡＣＫパケットを受信した時点で再度ウィンドウをスライドしていたのでは、デスクリプタ・キャッシュのフラッシュが頻発し、キャッシュ効率が著しく下がってしまう。これを避けるために、送信側には送信完了デスクリプタ・キャッシュ・ウィンドウを別途構成する。
【００６１】
図１０は、送信デスクリプタ・キャッシュ・ウィンドウ７１０と送信完了デスクリプタ・キャッシュ・ウィンドウ７１１との関係を示した図である。再送などの無い送信時は送信デスクリプタ・キャッシュ・ウィンドウ７１０をニューメリック・ウィンドウ・スライド・モードによりウィンドウを進めつつ、送信を行っていく。一方、送信完了デスクリプタ・キャッシュ・ウィンドウ７１１は、送信済みだが、送信完了をホストへ通知していない、未消費のデスクリプタの参照を可能とするウィンドウであり、ネットワーク・プロセッサ・ユニット１０５は、ＡＣＫパケットを受信するたびに、このウィンドウを参照し、ホストへ送信完了通知を行う。送信完了デスクリプタ・キャッシュ・ウィンドウ７１１により、効率よく送信デスクリプタをキャッシュすることが可能となる。
【００６２】
図１１は、一般的なＴＣＰにおける送信パケットのスライディング・ウィンドウ（Ｓｌｉｄｉｎｇ Ｗｉｎｄｏｗ）の概念を示す図である。ちなみに、ＴＣＰのスライディング・ウィンドウはＴＣＰ／ＩＰの用語であり、本発明におけるデスクリプタ・キャッシュ・ウィンドウとは全く別の概念である。図１１中の四角形一つがデスクリプタの一つを表す。Ｓｅｎｔ／ＡＣＫｅｄは既にパケットが送信され、ＡＣＫパケットを受信し、ホストへ送信完了通知したデスクリプタを示す。従って、ネットワーク・プロセッサ・ユニット１０５は、この領域のデスクリプタを二度と参照する必要がない。Ｓｅｎｔ／ＵｎＡＣＫｅｄは、パケットの送信を完了したが、送信相手からのＡＣＫパケットを受信していない状況のデスクリプタである。ネットワーク・プロセッサ・ユニット１０５は、少なくとも次のＡＣＫパケットを受信した際に、どのデスクリプタに対応するＡＣＫパケットなのかを調べ、対応するデスクリプタの送信完了通知をホストへ行うために、デスクリプタ８００からデスクリプタ８０１までのデスクリプタ・アドレスを記憶しておく必要がある。ＵｎＳｅｎｔ／Ｉｎｓｉｄｅは、まだ未送信だが、送信相手から通知されたＴＣＰ送信ウィンドウ内にあるデスクリプタが存在していることを示す。ネットワーク・プロセッサ・ユニット１０５は、ＳＮＤ.ＮＸＴからＡＣＫ＋Ｗｉｎｄｏｗ−１までの送信を行う。ネットワーク・プロセッサ・ユニット１０５は、送信ポイントとしてＳＮＤ.ＮＸＴ地点のデスクリプタ８０２のアドレスを記憶しておく必要がある。
【００６３】
図１２は、実際のＴＣＰにおける送信パケットの送信シーケンスを示している。ネットワーク・プロセッサ・ユニット１０５は、送信デスクリプタ・キャッシュ・ウィンドウ９００をニューメリック・ウィンドウ・スライド・モードで順にデスクリプタをリードしながら送信相手が受信可能範囲まで送信を行っていく。一方、送信相手よりＡＣＫパケットを受信した場合は、送信完了デスクリプタ・キャッシュ・ウィンドウ９０１を参照し、対応するデスクリプタをリードしてデスクリプタを消費していく。送信完了デスクリプタ・キャッシュ・ウィンドウ９０１は、過去に送信デスクリプタ・キャッシュ・ウィンドウ９００が辿ったデスクリプタをリードしていることになる。ネットワーク上でパケットの喪失などが無い場合、両ウィンドウはニューメリック・ウィンドウ・スライド・モードのみでデスクリプタ・キャッシュ・ウィンドウをスライドしていく。
【００６４】
以上、通信制御装置１００内のデスクリプタ・キャッシュ機構に対し、受信用，送信用，送信完了用の３種類の特徴的なデスクリプタ・キャッシュ・ウィンドウを設けることにより、ネットワーク・プロセッサ・ユニット１０５は、ホスト・メモリ４０上に散在するデスクリプタ・チェーンを辿る必要が一切無くなり、その分、通信処理に高いウェイトを置くことが可能となる。また、デスクリプタ・キャッシュ・ウィンドウは、コネクション・レス／コネクション・オリエンテッドなどの各プロトコル処理を考慮して構成されており、結果的にネットワーク・プロセッサ・ユニット１０５のファームウェアの簡易化にも寄与する。
【００６５】
なお、このように構成された第１の実施の形態に係る通信制御装置１００の詳しい動作の説明については、後述する第２の実施の形態に係る通信制御装置１００’の動作の説明と重複するので、第２の実施の形態に係る通信制御装置１００’の動作の説明をもって代えることとする。
【００６６】
ところで、第１の実施の形態に係る通信制御装置１００のデスクリプタ・キャッシュ機構は、サポートするコネクション数のデスクリプタ・キャッシュ・ウィンドウ・セットを持っている。各コネクションのデスクリプタは、ネットワーク・プロセッサ・ユニット１０５が必要とする時点で常にキャッシュされていることが性能的に望まれる。これに対して、ホストから通知されたデスクリプタを逐一キャッシュする方法もあるが、例えば、送信と違い、受信デスクリプタはパケット受信時のみに参照されるため、すぐに必要となるとは限らない。このため、ホストから通知された受信デスクリプタを逐一キャッシュすると、ホストと通信制御装置１００間のＩ／Ｏバス６０の負荷が増え、本来パケット・データの送受信に使用されるべきバスの帯域をデスクリプタのリードで使用してしまう可能性がある。
【００６７】
［第２の実施の形態］
図１３は、本発明の第２の実施の形態に係る通信制御装置１００’の構成を示す回路ブロック図である。本実施の形態に係る通信制御装置１００’は、デスクリプタが必要とされるときだけ、そのコネクションに対応するデスクリプタをリード可能とするように、図１に示した第１の実施の形態に係る通信制御装置１００内に、ハッシュ・サーチ・エンジン１０９と、ハッシュ・テーブル・メモリ１１０とを付加して構成されている。さらに、デスクリプタ・キャッシュ・コントローラ１０７にデスクリプタのプリフェッチ機構が追加されている。
【００６８】
デスクリプタ・キャッシュ・コントローラ１０７は、ホストより送信デスクリプタの通知を受けると、直ちに送信デスクリプタのプリフェッチを開始する。送信デスクリプタの通知は、すなわちパケットの送信を意味することから、送信に関しては逐一デスクリプタをキャッシュする。受信に関しては、デスクリプタ・キャッシュ・コントローラ１０７は、ハッシュ・サーチ・エンジン１０９によるコネクションの特定をもって受信デスクリプタのプリフェッチを起動する。詳しくは、ハッシュ・サーチ・エンジン１０９から送信／受信スケジューラ１０６を介してデスクリプタ・キャッシュ・コントローラ１０７に通知され、デスクリプタ・キャッシュ・コントローラ１０７が実際のデスクリプタ・キャッシュの制御を行って、実際のプリフェッチ要求を生成することにより、ＤＭＡコントローラ１０２を介してＩ／Ｏバス６０上にリードが発行される。
【００６９】
ホストは、予めＥｔｈｅｒｎｅｔ（登録商標）／ＩＰ／ＵＤＰ／ＴＣＰなどのコネクションを特定するために、例えばＭＡＣアドレス,ＩＰアドレス,ポートＩＤ等のハッシュのマッチング・パターン（ハッシュ・パターン）を、ネットワーク・プロセッサ・ユニット１０５を介してハッシュ・テーブル・メモリ１１０に登録する。
【００７０】
ＭＡＣコントローラ１５０は、パケットを受信すると、受信パケットのヘッダからＭＡＣアドレス,ＩＰアドレスなどを抜き出してパターンとしてハッシュ・サーチ・エンジン１０９へ通知する。
【００７１】
ハッシュ・サーチ・エンジン１０９は、通知されたパターンを元にハッシュ・テーブル・メモリ１１０に対してハッシュ・サーチを掛けてコネクションを特定し、デスクリプタ・キャッシュ・コントローラ１０７へコネクション番号（ＰＣＢＩＤ）を通知する。ハッシュ・サーチは、一般的なもので、パケットのヘッダからプロトコル別にパラメータを引き抜き、ハッシュ演算に掛けてアドレスを算出し、そこをハッシュ・テーブル・メモリ１１０からリードして通知されたパターンと一致するかどうかを比較する。
【００７２】
デスクリプタ・キャッシュ・コントローラ１０７は、通知されたコネクション番号を元に、受信デスクリプタをホスト・メモリ４０からリードする。
【００７３】
次に、このように構成された第２の実施の形態に係る通信制御装置１００’の動作について説明する。ただし、ここでは、ネットワーク媒体１５０がＥｔｈｅｒｎｅｔ（登録商標）である場合を例として説明する。
【００７４】
基本的にパケットの受信パスと送信パスは異なるので分けて説明する。なお、図１に示したハッシュ・サーチ機構のない第１の実施の形態に係る通信制御装置１００では、ネットワーク・プロセッサ・ユニット１０５のファームウェア自身がハッシュ・サーチ相当の動作を行うことになる。従って、処理の大部分がファームウェアに依存する第１の実施の形態に係る通信制御装置１００より、ある程度ハードウェアが受信処理をサポートする第２の実施の形態に係る通信制御装置１００’の方が高性能であるといえる。
【００７５】
（１）  受信動作
【００７６】
１.  ＭＡＣコントローラ１０４は、ネットワーク媒体１５０よりパケットを受信する。
【００７７】
２.  ＭＡＣコントローラ１０４は、パケットのＥｔｈｅｒｎｅｔ（登録商標）ヘッダを調べ、デスティネーションＭＡＣアドレスが自分宛かどうかを調べる。ＭＡＣコントローラ１０４には、自通信制御装置１００のＭＡＣアドレスを設定するレジスタが存在している。このレジスタは、ホストにより設定される。（Ｅｔｈｅｒｎｅｔ（登録商標）の通信制御装置１００としては自明な機能のために特に記載していない。）
【００７８】
３. 自分宛の場合、ＭＡＣコントローラ１０４は、送信／受信パケット・バッファ１０３へ受信パケットをストアする。
【００７９】
４. これと同時に、ＭＡＣコントローラ１０４は、受信したパケットのプロトコルを調査し、Ｅｔｈｅｒｎｅｔ（登録商標）／ＩＰ  Ｒａｗ／ＴＣＰ／ＵＤＰなどのプロトコルに分類し、各プロトコルに応じたハッシュ・パターンを抜き出してハッシュ・サーチ・エンジン１０９に情報をフォワードする。この情報はパケット・インフォメーションと呼ばれ、ハッシュ・パターンの他に、受信パケットをストアした送信／受信パケット・バッファ１０３のアドレスを付加する。例えば、プロトコルがＩＰ Ｒａｗである場合、ハッシュ・パターンは、プロトコルＩＤとなる。また、プロトコルがＴＣＰ／ＵＤＰである場合、ハッシュ・パターンは、ソースＩＰアドレス，デスティネーションＩＰアドレス，ソース・ポート，およびデスティネーション・ポートとなる。
【００８０】
５.  ハッシュ・サーチ・エンジン１０９は、パケット・インフォメーション内のハッシュ・パターンを使用してハッシュ・サーチを行い、コネクション番号（ＰＣＢ  ＩＤ）を特定し、これをパケット・インフォメーションに付加して送信／受信スケジューラ１０６へフォワードする。なお、ハッシュ・パターンおよびコネクション番号の登録は、予めホストにより行われる。（登録方法やハッシュ・サーチ・エンジン１０９の詳細は特に触れないが、ホストからのハッシュ・パターン登録要求に対し、その登録手段がハッシュ・サーチ・エンジン１０９に設けられている。）
【００８１】
６.  送信／受信スケジューラ１０６は、ホストからの送信要求とネットワーク媒体１５０からの受信要求とに対し、ネットワーク・プロセッサ・ユニット１０５への処理ディスパッチのスケジューリングを行う。受信要求の場合は、同時にネットワーク・プロセッサ・ユニット１０５へパケット・インフォメーションもフォワードする。
【００８２】
７.  送信／受信スケジューラ１０６へパケット・インフォメーションがフォワードされた時点で、受信パケットのコネクション番号をデスクリプタ・キャッシュ・コントローラ１０７へ通知する。もし、デスクリプタ・キャッシュ・メモリ１０８内にそのコネクション番号のデスクリプタが存在しない場合は、ＤＭＡコントローラ１０２を起動して、そのコネクション番号のデスクリプタをホスト・メモリ４０からリードしてデスクリプタ・キャッシュ・メモリ１０８にプリフェッチ（ストア）する。（この時に、デスクリプタ・キャッシュ・コントローラ１０７は、デスクリプタ・チェーンを辿る動作を行うことになる。）なお、各コネクション番号毎の受信デスクリプタ・チェーンがホスト・メモリ４０上には存在しており、予めコネクション番号,およびそのデスクリプタのアドレスはホストによりデスクリプタ・キャッシュ・コントローラ１０７に通知されているものとする。これは、一般的には、ドアベル（Ｄｏｏｒｂｅｌｌ）と呼ばれる通知方法で、そのためのハードウェアも実装されているが、ここでは特に触れない。
【００８３】
８. 送信／受信スケジューラ１０６より受信処理ディスパッチを受け取ったネットワーク・プロセッサ・ユニット１０５は、パケット・インフォメーションを参照し、コネクション番号（ＰＣＢ  ＩＤ）や受信パケットの詳細情報をリードする。
【００８４】
９. 送信／受信パケット・バッファ１０３にストアされている受信パケットをホスト・メモリ４０へ転送するために、ネットワーク・プロセッサ・ユニット１０５は、受信デスクリプタを参照する。受信デスクリプタは、各コネクション毎に存在し、受信パケットをストアすべきホスト・メモリ４０のアドレスやサイズを示している。ネットワーク・プロセッサ・ユニット１０５は、コネクション番号を元に、リードすべき受信デスクリプタ・キャッシュ・ウィンドウのアドレスを生成し、受信デスクリプタをリードする。
【００８５】
１０.  上記７で受信デスクリプタのプリフェッチが行われていることから、デスクリプタ・キャッシュ・コントローラ１０７は、デスクリプタ・キャッシュ内の受信デスクリプタ１０３をネットワーク・プロセッサ・ユニット１０５へ渡す。
【００８６】
１１.  ネットワーク・プロセッサ・ユニット１０５は、受信デスクリプタより、受信パケットをストアすべきホスト・メモリ４０のアドレスを得、これをＤＭＡコントローラ１０２へ通知して、ＤＭＡライト動作を起動する。この時、通知される情報としては、ホスト・メモリ４０のアドレス，転送サイズ，および受信パケットの収められた送信／受信パケット・バッファ１０３のアドレスである。
【００８７】
１２.  ＤＭＡライト要求はＩ／Ｏバス・コントローラ１０１へ渡り、先の情報を元に送信／受信パケット・バッファ１０３内の受信パケット・データがホスト・メモリ４０へ転送される。
【００８８】
１３.  以上により、受信パケットがホストへ渡る。なお、特に本発明から外れるので触れていないが、実際にはホスト側へは、デスクリプタの完了通知，および割り込みの通知も行われる。デスクリプタの完了通知は、ホスト上のデスクリプタのダン・ビット・フィールド（図３の符号２００参照）をセットし、消費したデスクリプタのホスト・メモリ４０上のアドレスを、別途ホストへの通知手段で示す。また、割り込みの通知は、割り込みをホストのＣＰＵ１０へ上げて、受信デスクリプタを消費し、受信パケットをデスクリプタの指示通りホスト・メモリ４０へ転送したことを通知する。
【００８９】
１４.  ネットワーク・プロセッサ・ユニット１０５は、受信デスクリプタ・キャッシュ・ウィンドウに対してウィンドウ・スライドを実施する。これは、ウィンドウの先頭ディスクリプタを消費し、参照する必要が無くなったことに依る。要は、次に使うべきデスクリプタを受信デスクリプタ・キャッシュ・ウィンドウ内に捕捉しておく。このウィンドウ・スライドを行うことにより、ネットワーク・プロセッサ・ユニット１０５は、実際にはホスト・メモリ４０上にあるデスクリプタ・チェーンを辿る必要が無くなる。
【００９０】
（２）  送信動作
【００９１】
送信動作は受信と逆方向であるが、受信に比して若干シンプルである。
【００９２】
１.  ホストのＣＰＵ１０は、送信データをホスト・メモリ４０上に用意し、これを示す受信デスクリプタも（必要であれば受信デスクリプタ・チェーンとして）ホスト・メモリ４０上に生成する。
【００９３】
２. 送信要求をドアベルで通知する。実際には、Ｉ／Ｏバス・コントローラ１０１にある送信ドアベル・レジスタへ、コネクション番号，デスクリプタ・チェーンの先頭のデスクリプタをストアしてあるホスト・メモリ４０のアドレス，およびチェーンしてあるデスクリプタの総数をライトする。
【００９４】
３.  送信ドアベル通知は、送信／受信スケジューラ１０６とデスクリプタ・キャッシュ・コントローラ１０７との両者へ通知される。デスクリプタ・キャッシュ・コントローラ１０７は、そのコネクション番号のデスクリプタがデスクリプタ・キャッシュに存在しない場合、またはデスクリプタ・キャッシュにまだ空きがある場合、直ちにＤＭＡコントローラ１０２を起動してホスト・メモリ４０からデスクリプタをリードしてデスクリプタ・キャッシュ・メモリ１０８にプリフェッチ（ストア）する。（この時に、デスクリプタ・キャッシュ・コントローラ１０７は、デスクリプタ・チェーンを辿る動作を行うことになる。）
【００９５】
４.  送信／受信スケジューラ１０６から送信要求がネットワーク・プロセッサ・ユニット１０５に通知される。この時の情報としては、コネクション番号のみがフォワードされる。
【００９６】
５.  ホスト・メモリ４０にストアされている送信パケットをネットワーク媒体１５０へ出力するために、ネットワーク・プロセッサ・ユニット１０５は、送信デスクリプタを参照する。送信デスクリプタは、各コネクション毎に存在し、送信パケットがストアされているホスト・メモリ４０のアドレスやサイズを示している。ネットワーク・プロセッサ・ユニット１０５は、コネクション番号を元に、リードすべき送信デスクリプタ・キャッシュ・ウィンドウ９００のアドレスを生成し、送信デスクリプタをリードする。
【００９７】
６.  上記３で送信デスクリプタのプリフェッチが行われていることから、デスクリプタ・キャッシュ・コントローラ１０７は、デスクリプタ・キャッシュ内の送信デスクリプタをネットワーク・プロセッサ・ユニット１０５へ渡す。
【００９８】
７.  ネットワーク・プロセッサ・ユニット１０５は、送信デスクリプタより送信パケットがストアされているホスト・メモリ４０のアドレスを得、これをＤＭＡコントローラ１０２へ通知して、ＤＭＡリード（Ｒｅａｄ）動作を起動する。この時、通知される情報としては、ホスト・メモリ４０のアドレス，および転送サイズである。
【００９９】
８.  ＤＭＡリード要求はＩ／Ｏバス・コントローラ１０１へ渡り、先の情報を元にホスト・メモリ４０から送信／受信パケット・バッファ１０３へ送信パケット・データが転送される。
【０１００】
９.  次いで、送信要求はＭＡＣコントローラ１０４へ通知され、送信／受信パケット・バッファ１０３中の送信パケットがネットワーク媒体１５０へ送信される。
【０１０１】
１０.  以上により、送信が行われる。本発明から外れるので特には触れないが、送信後はホスト側へは、受信同様の通知も行われる。
【０１０２】
１１.  ネットワーク・プロセッサ・ユニット１０５は、受信デスクリプタ・キャッシュ・ウィンドウに対してウィンドウ・スライドを実施する。これは受信と同じである。
【０１０３】
以上、通信制御装置１００内にハッシュ・サーチ・エンジン１０９を設け受信パケットのコネクション番号を事前に確定しておくことで、受信デスクリプタのプリフェッチが可能となり、送信デスクリプタのプリフェッチと併せ、ホストからのデスクリプタ取得の遅延を隠蔽する。また、ネットワーク・プロセッサ・ユニット１０５が必要なときに必要なデスクリプタをネットワーク・プロセッサ・ユニット１０５へ提供することが可能となり、パケットの送受信処理性能の向上を図ることが可能となる。
【０１０４】
【発明の効果】
第１の効果は、ネットワーク・プロセッサ・ユニットのデスクリプタ制御のオーバーヘッドを減らすことが可能である。その理由は、ホスト・メモリ上に散在するデスクリプタ・チェーンを通信制御装置内のデスクリプタ・キャッシュ・コントローラが解析して仮想デスクリプタ・ギャザー・リストを構築し、これを２種類または３種類のデスクリプタ・キャッシュ・ウィンドウを介してネットワーク・プロセッサ・ユニットに参照させることにある。これにより、ネットワーク・プロセッサ・ユニットは、ホスト上のデスクリプタ・チェーンの管理および制御が不要となり、デスクリプタ制御のオーバーヘッドが減ることになる。
【０１０５】
第２の効果は、ネットワーク・プロセッサ・ユニットによる、通信処理の際に使用されるデスクリプタ・アクセスの遅延低減が可能である。その理由は、通信制御装置がサポートするコネクション分のデスクリプタ・キャッシュを持ち、送信に関してはホストよりデスクリプタの通知が来た時点で送信デスクリプタをプリフェッチし、受信に関してはハッシュ・サーチによりコネクションを特定し、同様に受信デスクリプタをプリフェッチしていることにある。これにより、ネットワーク・プロセッサ・ユニットが送受信処理を行う際にデスクリプタの参照を必要とする場合は、常に必要なデスクリプタがデスクリプタ・キャッシュに読み込まれているため、デスクリプタ・アクセスの遅延が低減されることになる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係る通信制御装置の構成を示す回路ブロック図である。
【図２】第１の実施の形態に係る通信制御装置が含まれるシステムの基本構成を示すブロック図である。
【図３】第１の実施の形態におけるデスクリプタのフォーマット図である。
【図４】第１の実施の形態におけるデスクリプタ・キャッシュ機構の概念を説明する図である。
【図５】図１中のデスクリプタ・キャッシュ・メモリのマッピングを示す図である。
【図６】第１の実施の形態におけるデスクリプタ・キャッシュ内でのデスクリプタのフォーマットを示す図である。
【図７】図１中のデスクリプタ・キャッシュ・コントローラ内のデスクリプタ・キャッシュ・コントロール・レジスタの内容を示す図である。
【図８】第１の実施の形態におけるニューメリック・ウィンドウ・スライド・モードを示す図である。
【図９】第１の実施の形態におけるダイレクト・ウィンドウ・スライド・モードを示す図である。
【図１０】第１の実施の形態における送信完了デスクリプタ・キャッシュ・ウィンドウの概念を示す図である。
【図１１】ＴＣＰにおける送信ウィンドウの例を示す図である。
【図１２】図１１中のＴＣＰ送信ウィンドウとデスクリプタ・キャッシュ・ウィンドウとの動作例を示す図である。
【図１３】本発明の第２の実施の形態に係る通信制御装置の構成を示す回路ブロック図である。
【符号の説明】
１０  ＣＰＵ
２０  プロセッサ・バス
３０  メモリ・コントローラ
４０  ホスト・メモリ
５０  Ｉ／Ｏコントローラ
６０  Ｉ／Ｏバス
７０  Ｉ／Ｏデバイス
１００，１００’  通信制御装置
１０１  Ｉ／Ｏバス・コントローラ
１０２  ＤＭＡコントローラ
１０３  送信／受信パケット・バッファ
１０４  ＭＡＣコントローラ
１０５  ネットワーク・プロセッサ・ユニット
１０６  送信／受信スケジューラ
１０７  デスクリプタ・キャッシュ・コントローラ
１０８  デスクリプタ・キャッシュ・メモリ
１０９  ハッシュ・サーチ・エンジン
１１０  ハッシュ・テーブル・メモリ
１５０  ネットワーク媒体
２００  ダン・ビット
２０１  コントロール・コード部
２０２  ネクスト・デスクリプタ・アドレス
２０３  バッファ・アドレスおよびバッファ・サイズの組
３０１  仮想デスクリプタ・ギャザー・リスト
３０２  １コネクション分のウィンドウ
４００  ダン・ビット
４０１  コントロール・コード部
４０２  デスクリプタ・アドレス
４０３  バッファ・アドレスおよびバッファ・サイズの組
７００，７０２  ウィンドウ位置
７１０  送信デスクリプタ・キャッシュ・ウィンドウ
７１１  送信完了デスクリプタ・キャッシュ・ウィンドウ
８００〜８０２  デスクリプタ
９００  送信デスクリプタ・キャッシュ・ウィンドウ
９０１  送信完了デスクリプタ・キャッシュ・ウィンドウ
【図１】
0003791448.tif 000002
【図２】
0003791448.tif 000003
【図３】
0003791448.tif 000004
【図４】
0003791448.tif 000005
【図５】
0003791448.tif 000006
【図６】
0003791448.tif 000007
【図７】
0003791448.tif 000008
【図８】
0003791448.tif 000009
【図９】
0003791448.tif 000010
【図１０】
0003791448.tif 000011
【図１１】
0003791448.tif 000012
【図１２】
0003791448.tif 000013
【図１３】
0003791448.tif 000014