(57)【特許請求の範囲】
【請求項１】
バッファにパケットの一部を取り込んでプロトコルを解釈し、該パケットが他装置からの自局で処理すべきパケットのとき該パケットを内部のメインメモリ上のパケット領域に転送し、装置内のメインメモリ上のパケット領域からのパケットのとき該パケットを送信するパケット送受信装置であって、
パケットデータしきい値とこれに対応する送信開始しきい値とのペアを予め複数個用意したテーブルと、
ディスクリプタ毎に送信するパケットの送信パケット長が当てはまるパケットデータしきい値のうち最小のものに対応する送信開始しきい値を前記テーブルの中から選択して送信開始置として設定する手段とを備えたことを特徴とするパケット送受信装置。
【請求項２】
請求項１記載のパケット送受信装置において、
前記送信開始値の設定後、その設定された送信開始値を満たすbyte数分のデータが前記バッファに入力されたときにパケット送信を開始することを特徴とするパケット送受信装置。
【請求項３】
請求項１または２記載のパケット送受信装置において、
前記テーブルを登録する手段を具備することを特徴とするパケット送受信装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、イーサネット等のパケット通信におけるパケット送受信装置に係り、特に、パケットの送信開始タイミングを動的に制御するパケット送受信装置に関する。
【０００２】
【従来の技術】
イーサネット（登録商標）やIEEE1394、USB といった通信方式ではパケットを単位としたデータの送受信により通信を行っている。イーサネットはIEEE802.3規格に定められており、CSMA／CD方式のネットワーク規格である。IEEE1394はその名の通りIEEE1394規格で定められた通信方式である。USBはUSBコンソーシアムによって企画化されている通信方式である。
【０００３】
これらの通信方式では可変長のパケットが用いられている。通常、特定用途向け集積回路(ASIC)等で実装された制御装置上にFIFOなどのバッファを持ち、受信したパケットの種別、長さ等の判別を行い、自局が処理すべきであるデータパケットをメインメモリ上のパケット領域にDMAにより転送して処理を行い、逆に、送信はメインメモリ上のパケット領域からデータをDMAにより転送しながら送信を行っている。
【０００４】
【発明が解決しようとする課題】
ところで、パケット送信において問題となるのは外部の速度とDMA速度の速度差の問題である。DMAが、他のDMAの実行などによって遅れる場合などを考慮し、実用上十分な量のデータがFIFOバッファに入った時点で送信を開始する（この実用上十分な量として固定の送信開始しきい値が設定される）のが通常のやり方であった。
【０００５】
これにより、DMAが送信速度に対して間に合わない送信アンダーラン状態を回避している。しかし、パケットの大きさはイーサネット（登録商標）の場合、64byteから1518byteまでの大きなばらつきがある。大きなパケット長の場合にレアケースを考慮して十分な容量をしきい値として確保すれば、短いパケットの場合を含めてすべてのパケットでFIFOバッファに入ったデータ量がしきい値をこえるか、しきい値以下の大きさのパケットの場合はパケット終了を検出するかした場合に送信を開始することになる。これは常にそのしきい値分の入力が来るまで送信の開始が遅れることを意味し、この送信開始の遅れが問題である。
【０００６】
本発明の目的は、上記問題点を解決し、送信時のFIFOバッファ上の送信開始しきい値による送信開始の遅れを減らし、送信のoverheadをなくすことにある。
【０００７】
【課題を解決するための手段】
本発明によれば前記目的は、バッファにパケットの一部を取り込んでプロトコルを解釈し、該パケットが他装置からの自局で処理すべきパケットのとき該パケットを内部のメインメモリ上のパケット領域に転送し、装置内のメインメモリ上のパケット領域からのパケットのとき該パケットを送信するパケット送受信装置であって、パケットデータしきい値とこれに対応する送信開始しきい値とのペアを予め複数個用意したテーブルと、ディスクリプタ毎に送信するパケットの送信パケット長が当てはまるパケットデータしきい値のうち最小のものに対応する送信開始しきい値を前記テーブルの中から選択して送信開始置として設定する手段とを備えたことにより達成される。
【０００８】
また、前記目的は、前記送信開始値の設定後、その設定された送信開始値を満たすbyte数分のデータが前記バッファに入力されたときにパケット送信を開始することにより達成される。
【００１０】
また、前記目的は、前記テーブルを登録する手段を備えることにより達成される。
【００１１】
【発明の実施の形態】
以下に、IEEE802.3規格に基づいたイーサネットの場合に適合するパケット送受信装置を例として、本発明の一実施形態を説明する。
【００１２】
図１は、パケット送受信システムの構成例であり、プログラムROM １、メインメモリ２、ＣＰＵ３、ネットワークアダプタ４、システムバス５を備える。この構成例において、本発明の実施形態のパケット送受信装置に対応するものは、ASIC（特定用途向け集積回路）等で実装されたネットワークアダプタ４である。
【００１３】
パケット送受信システムは、プログラムROM１が起動されることにより、ネットワークアダプタ４の機能を利用して送受信を行う。パケットの送受信はメインメモリ２に対するDMA で行われる。メインメモリ２上のDMA すべきパケット領域を管理するパケットバッファもメインメモリ２上に置かれ、ネットワークアダプタカードがDMA によって内容を読みとり、管理情報の書き戻しを行う。
【００１４】
図２は、パケット送受信装置（ネットワークアダプタ）の構成を示し、ホストインタフェース１３、FIFO RAM１４、１７、送信FIFOバッファ１５、受信FIFOバッファ１６、ネットワーク管理部１８、送信制御部１９、イーサネットコントローラ２０、受信制御部２１、クロック２２、エンコーダ２３、デコーダ２４、AUI ２５、ツイステッドペアトランシーバ２６を備え、ホストインタフェース１３にはEEPROM１１、ブートPROM１２が接続されている。
【００１５】
ツイステッドペアトランシーバ２６で受信されデコーダ２４でプリアンブル除去、CRC チェック、pad 除去等の加工等の処理を含むデコードをされたデータ対して、受信制御部２１およびイーサネット（登録商標）コントローラ２０によりIEEE 802.3により定められた受信制御がなされる。イーサネット（登録商標）コントローラ２０によりパケット送受信装置で受け取るべきパケットと判別されたデータパケットが受信され、受信されたデータパケットは受信FIFOバッファ１６にコピーされる。コピーされた内容はホストインターフェース１３の機能によりDMA されシステムバス５を介してメインメモリ２にDMA 転送される。
【００１６】
送信は、ホストインターフェース１３の機能によりDMA され、システムバス５を介してメインメモリ２上のパケットデータがDMA 転送され送信FIFOバッファ１５に送り込まれる。送信FIFOバッファ１５上のデータは、IEEE 802.3によって定められた送信制御がなされ、エンコーダ２３によりプリアンブル付加、CRC 生成、pad データ生成等の加工が施されたのちにツイスッテドペアトランシーバ２６からネットワーク上に送信される。
【００１７】
図３にパケットバッファの構成を示す。また、図４にパケットバッファの構成要素であるディスクリプタの構造を示す。
【００１８】
パケットバッファは、図３に示すように、DMA 対象であるパケット領域を管理するためのメインメモリ上の領域である。本発明の実施形態では送信用に１つ、受信用に２つの入力パケットバッファ、１つの結果保持パケットバッファを持つ。受信用のパケットバッファは、長さの異なるパケット領域を管理する。パケットバッファは、複数のディスクリプタからなる。ディスクリプタは、次のディスクリプタのアドレスを保持するリンクをもち通常リングバッファを構成する。また、ディスクリプタは、パケット領域のステータス情報を記憶するステータスと、パケット領域の先頭アドレスを示すパケット領域アドレスを有する。
【００１９】
また、送信用のパケットバッファの１つのディスクリプタは、１つのパケットを表現し、１つのパケットは複数のパケット領域からなっていてよい。つまり１つのパケットを複数の領域に分散して持つことが出来る。
【００２０】
図４に示すディスクリプタにおいて、リンクフィールドには次のディスクリプタのアドレスが設定されている。ステータスフィールドのコントロールビットにはOWNビットが含まれており、パケット領域数にはディスクリプタが管理する１つのパケットが記憶されたパケット領域の数が設定されており、データ長にはパケットのデータ長が設定されている。パケット領域アドレスのフィールドには、パケット領域長とパケット領域アドレスの組が、パケットのデータ長に応じた数だけあり、パケット領域長にはパケット領域の長さ（大きさ）が設定され、パケット領域アドレスにはパケット領域の先頭アドレスが設定されている。
【００２１】
送信時に、ホストインタフェース１３はソフトウエアにより設定されたパケットバッファのディスクリプタをDMA によってロードし、ディスクリプタにおけるコントロールビットのOWN ビットを調べ、OWN ビットが立っているときのみ送信を行う。立っていないときは、ある時間間隔でディスクリプタをDMA で読み直し、OWN ビットが立つまでそれを繰り返すポーリングモードか、あるいは、その場で動作を停止するバッチモードのいずれかがとられる。
【００２２】
OWN ビットが立っている場合には、パケット領域数分のパケット領域アドレスの指定があるものとして、そのパケット領域アドレスが指すパケット領域より送信データをDMA により送信FIFOバッファ１５に転送し、送信FIFOバッファ１５に格納されたデータの送信を行う。１つのディスクリプタ分のデータ（すなわち、１つのパケット分のデータ）の送信が終了すると、次に、ディスクリプタのリンクが示すアドレスで指定されるディスクリプタについて同様の処理を行う。ただし、リンクの示すアドレスが０である場合は送信を停止する（すなわち、ソフトウエアに対して送信終了割り込みを発生する）。
【００２３】
図５に送信時の処理フローを示す。
【００２４】
まず、送信データしきい値・送信開始しきい値対応表レジスタ群を設定する（ステップ５１１）。
【００２５】
送信データしきい値・送信開始しきい値対応表レジスタ群の例は、図６に示され、送信データ（パケットデータ）しきい値と対応する送信開始しきい値のペアを複数個登録できるレジスタ群である。本発明の実施形態では５つのペアを登録できるものとする。図６の例では、送信データしきい値レジスタ１〜５のそれぞれには送信データしきい値として６４バイト、１２８バイト、５１２バイト、１０２４バイト、２０４８バイトがセットされ、送信データしきい値レジスタ１〜５のそれぞれとペアを組む送信開始しきい値レジスタ１〜５にはそれぞれ３２バイト、６４バイト、１２８バイト、２５６バイト、５１２バイトがセットされている。
【００２６】
データ送信時に、送信するパケットのデータ長（パケット長）と各送信データしきい値を比較し、データ長が当てはまる送信データしきい値の内の最小の送信データしきい値を選択する。そして、この選択した送信データしきい値とペアを組む送信開始しきい値を、送信するパケットに対する送信開始しきい値として選択する。この選択した送信開始しきい値を送信制御部に設定して送信動作を行う。
【００２７】
例えば、送信するパケットのデータ長が８００バイトだとすると、当てはまる送信データしきい値の内の最小の送信データしきい値は１０２４バイトであり、この送信データしきい値とペアを組む送信開始しきい値は２５６バイトであり、送信開始しきい値は２５６バイトとなる。
【００２８】
次に、最初のディスクリプタのアドレスをホストインタフェースに設定する（ステップ５１２）。
【００２９】
次いで、送信開始指示をホストインタフェースに出す（ステップ５１３）。
【００３０】
ホストインタフェースは、設定されたディスクリプタのアドレスを読み出し、このアドレスによりディスクリプタをDMAによりロードする（ステップ５１４）。
【００３１】
ロードしたディスクリプタのステータスフィールドのコントロールビット内にOWNビットが立っているか、すなわちOWNビットが‘１’であるか判定する（ステップ５１５）。
【００３２】
OWN ビットが‘１’であれば、ステップ５１６に進む。
【００３３】
OWN bit が０であるばあいポーリングにより‘１’になるまでまち、‘１’である場合にステップ５１６に進む。
【００３４】
次に、ロードしたディスクリプタのステータスフィールドのデータ長と、設定された送信データしきい値・送信開始しきい値対応表レジスタ群にセットされている送信データしきい値を比較し、上記ステータスフィールドのデータ長が当てはまる送信データしきい値の内の最小の送信データしきい値を選択し、この選択した送信データしきい値とペアを組む送信開始しきい値を、送信するパケットに対する送信開始しきい値として選択する。この選択した送信開始しきい値を送信制御部に設定する（ステップ５１６）。
【００３５】
次いで、ロードしたディスクリプタのパケット領域アドレスにより指定されるパケット領域内のデータを送信FIFOバッファにDMAで転送する（５１７）。
【００３６】
ステップ５１７が終了すると、次のディスクリプタアドレスをホストインタフェースに設定する（ステップ５１８）。そして、ステップ５１４以下の処理を繰り返し行う。
【００３７】
次に、パケットの送信制御は、送信制御部により行われる。
【００３８】
パケット領域からDMA で転送されたデータは、送信FIFOバッファに格納される。DMA 開始後、送信FIFOバッファに受け取られたデータのバイト数が送信制御部に設定された送信開始しきい値を越えると、送信制御部はデータの送信を開始する（ステップ５１９）。
【００３９】
データの送信は、送信FIFOバッファからデータを取り出しながら行われる（ステップ５２０）。
【００４０】
指定されたデータ長分のDMA が終了するとパケット終了を意味するデータを送信FIFOバッファに書き込む。送信制御部ではこのパケット終了データを受け取るとパケット終了処理を行い元の状態に戻る。
【００４１】
ホストインターフェースはDMA が終了するとディスクリプタで指示されている次のディスクリプタを設定して同じ処理を繰り返す。
【００４２】
なお、本発明の実施形態の説明では、送信時にcollision やエラーが発生した場合のDMA の一時停止や送信エラー処理は発明そのものの本質とは特に関係ないので、このDMA の一時停止や送信エラー処理の説明は省略している。
【００４３】
また、本発明の実施形態の説明では、ethernetの場合について説明しているが、IEEE1394やUSB など他のパケット送信についても同様の処理により送信の効率を上げることが出来ることは自明のことである。
【００４４】
【発明の効果】
請求項１記載の発明では、パケット長が短い場合に送信開始を迅速に行うことができ、送信の間隔があくことなくパフォーマンスが向上する。
【００４５】
請求項２ないし３記載の発明では、パケット長に応じた適切な送信開始タイミングを得ることができ、パケット長にかかわらず送信の間隔があくことなくパフォーマンスが向上する。
【００４６】
請求項４記載の発明では、DMA 速度やバスのパフォーマンスに合わせてしきい値を変更して最適なパフォーマンスに設定することができる。
【図面の簡単な説明】
【図１】パケット送受信システムの構成例示す図である。
【図２】パケット送受信装置（ネットワークアダプタ）の構成を示す図である。
【図３】パケットバッファの構成を示す図である。
【図４】パケットバッファの構成要素であるディスクリプタの構造を示す図である。
【図５】送信時の処理フローを示す図である。
【図６】  送信データしきい値・送信開始しきい値対応表レジスタ群の例を示す図である。
【符号の説明】
１  プログラムＲＯＭ
２  メインメモリ
３  ＣＰＵ
４  ネットワークアダプタ
５  システムバス
１１  ＥＥＰＲＯＭ
１２  ブートＰＲＯＭ
１３  ホストインタフェース
１４、１７  ＦＩＦＯ ＲＡＭ
１５  送信ＦＩＦＯバッファ
１６  受信ＦＩＦＯバッファ
１８  ネットワーク管理部
１９  送信制御部
２０  イーサネットコントローラ
２１  受信制御部
２２  クロック
２３  エンコーダ
２４  デコーダ
２５  ＡＵＩ
２６  ツイステッドペアトランシーバ
【図１】
0003753622.tif 000002
【図２】
0003753622.tif 000003
【図３】
0003753622.tif 000004
【図４】
0003753622.tif 000005
【図５】
0003753622.tif 000006
【図６】
0003753622.tif 000007