JP2003524312A - ネットワークインターフェースにおいて割込みを示す方法および装置 - Google Patents

ネットワークインターフェースにおいて割込みを示す方法および装置

Info

Publication number
JP2003524312A
JP2003524312A JP2000602938A JP2000602938A JP2003524312A JP 2003524312 A JP2003524312 A JP 2003524312A JP 2000602938 A JP2000602938 A JP 2000602938A JP 2000602938 A JP2000602938 A JP 2000602938A JP 2003524312 A JP2003524312 A JP 2003524312A
Authority
JP
Japan
Prior art keywords
interrupt
state
packet
indicator
communication device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2000602938A
Other languages
English (en)
Inventor
デントン ジェントリー,
リンダ チェン,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2003524312A publication Critical patent/JP2003524312A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6225Fixed service order, e.g. Round Robin
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Bus Control (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

(57)【要約】 ホストプロセッサへのパケットの転送に応答して、ネットワークインターフェースのような通信デバイスからホストプロセッサへ割込みが発行される。以前の割込みが処理されてから所定の時間期間が経過したか、または所定数のパケットが転送された場合にのみ、パケットの転送に応答して割込みが生成される。時間カウンタは時間経過を追跡するために用いられ得、パケットカウンタは転送されたパケット数を追跡するために用いられ得る。ホストプロセッサが1つの割込みを処理した後、時間カウンタおよびパケットカウンタは閾値にリセットされ、その後最終時間カウントおよび最終パケットカウントへとディクリメントを始める。閾値および/または最終時間カウントおよび最終パケットカウントを調整して、ネットワークトラフィックの処理に悪影響しないように割込みが十分な回数生成されることを確実にすることができる。

Description

【発明の詳細な説明】
【0001】 (背景) 本発明は、コンピュータネットワークの分野に関する。詳細には、本発明は、
通信デバイス(例えば、ネットワークインターフェース回路(NIC))からの
割込み(interrupt)の発行を調整(modulate)または抑止(
suppress)するシステムおよび方法を提供する。
【0002】 コンピュータとネットワークとの間のインターフェースは、コンピュータとネ
ットワークとの間を行き来する通信における障害となる場合が多い。ここ数年来
においてコンピュータの性能(例えば、プロセッサ速度)が飛躍的に向上し、コ
ンピュータネットワーク伝送速度も同様の向上を遂げた一方で、ネットワークイ
ンターフェース回路が通信を処理する様式の非効率性がますます明白になってい
る。コンピュータまたはネットワークの速度が刻々と増加するにつれて、コンピ
ュータとネットワークとの間のインターフェースがその速度に追随できていない
ことがこれほど明らかになったことはない。これらの非効率性は、ネットワーク
とコンピュータとの間で通信が処理される様式においていくつかの基本的問題を
伴う。他の通信デバイスおよびコンジット(例えば、ネットワークデバイス(例
えば、ルータ、ゲートウェイ、スイッチ)および入力/出力デバイス(例えば、
媒体コントローラ(例えば、ディスクドライブ))においても、同様の非効率性
が存在する。
【0003】 今日において最も普及しているネットワークの形態は、パケットを用いた形態
である場合が多い。これらの種類のネットワーク(例えば、インターネットおよ
び多くのローカルエリアネットワーク)は、情報をパケット形式で送信する。各
パケットは、別個に生成され、発信側のエンドステーションにより送信され、宛
先エンドステーションによって別個に受け取られ、処理される。加えて、各パケ
ットは、例えばバストポロジーネットワークにおいて、発信側のエンドステーシ
ョンと宛先エンドステーションとの間に配置された多数のステーションによって
受け取られ、処理され得る。
【0004】 パケットネットワークに関する1つの基本的問題は、所与の量のデータを1つ
のエンドステーションから別のエンドステーションに通信する際、多数のパケッ
トを用い得る点である。ステーション間でやり取りされるデータの長さが特定の
最短長さよりも長い場合、そのデータは、複数の部分に分割され、各部分は、別
個のパケットによって搬送される。1つのパケットが搬送することのできるデー
タの量は、パケットを運搬(convey)するネットワークによって限定され
得、最大転送単位(MTU)で表される場合が多い。オリジナルのデータの集合
体(aggregation)は、「データグラム」としても知られ、1つのデ
ータグラムの一部を搬送する各パケットは、当該データグラムの残りのパケット
と殆ど同様に処理され得る。
【0005】 送信されるデータの量が増加すると、宛先エンドステーションに送信し、宛先
エンドステーションによって処理されなければならないパケットの数も同様に増
加する。必然的に、処理が必要なパケット量が増加すれば、エンドステーション
のプロセッサと、当該エンドステーションと協働するネットワークインターフェ
ースとに対する要求も増加する。処理を必要とするパケットの数は、データグラ
ム中に設定されているデータの量以外の要因にも影響される。例えば、1つのパ
ケット中にカプセル化されたデータの量が増加すると、送信する必要のあるパケ
ット数は減少する。しかし、上述したように、1つのパケットは、使用されるネ
ットワークの種類に応じた最大許容サイズを有する(例えば、標準的なイーサネ
ット(登録商標)トラフィックの場合の最大転送単位は約1,500バイトであ
る)。ネットワーク速度も、NICが所与の時間中に処理することのできるパケ
ット数に影響する。例えば、1ギガビットのイーサネット(登録商標)ネットワ
ークがピーク速度で動作する場合、NICは、約1,480,000パケット/
秒でパケット受信を行う必要があり得る。そのため、処理対象パケットの数は、
コンピュータのプロセッサにとって有意な負担となり得る。この状況は、各パケ
ットは実質的に同様の様式で処理されるのに各パケットを別個に処理しなければ
ならない状況によって、ますます悪化する。
【0006】 ネットワークインターフェース回路間とホストコンピュータまたは他の通信デ
バイスとの間の効率的相互作用に対する別の障害は、ネットワークインターフェ
ース回路が割込みを多く発行した場合にホストプロセッサの利用率が低下するこ
とから発生する。詳細には、多くの現行のネットワークインターフェース回路に
おいて、各パケットがネットワークからホストコンピュータに転送されるたびに
、割込みがホストプロセッサに発行され得る。ネットワークのトラフィック速度
が増加すると、割込み生成速度もそれに比例して増加する。従って、ネットワー
クインターフェース回路に到着するパケット数が多いほど、プロセッサがコンテ
キストのスイッチングおよび割込みの処理に費やす時間も増加し、また、プロセ
ッサの有効利用率も低下する。
【0007】 ネットワークインターフェース回路の性能が向上し、パケットがホストプロセ
ッサに転送される速度は高速化するにつれて、割込み生成速度は、プロセッサが
1つの割込みを処理するために必要な時間においてプロセッサ利用を独占するレ
ベルにまで達し得る。幸運な状況において、1つのプロセッサは、1つの割込み
サービスルーチンの間に複数のパケットを処理することはできるが、このような
処理も、パケットが高速で到着した場合はオフセットとなり得る。ネットワーク
インターフェースから割込みを生成する速度を抑止または調整するメカニズムが
無ければ、高性能のネットワークインターフェースがホストプロセッサを圧倒す
る事態があり得る。パケットがネットワークインターフェース回路に到着する速
度がこのように高速化し得るために、プロセッサは、割込みをサービスし、割込
み間に受け取ったパケットを処理するだけのために過度の長さの時間を費やして
おり、そのため、プロセッサの他のタスクを行う能力が極度に低下する原因とな
っている。
【0008】 ホストプロセッサがネットワークトラフィックの受取りを認知することのでき
る別の方法としてポーリングがある。エンドステーションは、例えば、ネットワ
ークインターフェース回路をポーリングして、処理対象のパケットが有るか否か
を判定し得る。しかし、ポーリングは、ネットワークトラフィックのレベルが比
較的高くないと非効率である。加えて、ポーリングをブロックするかまたは別の
場合に既存のインプリメンテーションにおいて動作が継続できないようにする必
要がある場合、ネットワークトラフィックが停止状態にさせられる場合があり得
る。
【0009】 従って、ネットワークトラフィックの受取りについてホストプロセッサに警告
する現行の方法では、今日の高性能のコンピュータシステムと高速ネットワーク
とを相互接続させるだけの十分な性能を提供できない場合が多い。ホストコンピ
ュータへの負荷が大き過ぎる事態をネットワークインターフェース回路が考慮で
きない場合、コンピュータの性能は極度に低下し得る。詳細には、割込みが使用
されると、高レベルのトラフィックの間のホストプロセッサの性能が低下し得、
ポーリングは、低レベルのトラフィックに対して不適切であり得る。
【0010】 (要旨) 本発明の1つの実施形態において、ネットワークインターフェースをポーリン
グするシステムおよび方法が提供される。この実施形態において、ポーリングモ
ードのオペレーションの間、通常時にネットワークパケットの到着についてホス
トプロセッサを警告する割込みを中断する。上記ネットワークインターフェース
がポーリングされるたびに、あらゆる待機パケットが処理される。しかし、閾値
の長さの時間または閾値の数のパケットが未処理状態で処理された場合、割込み
がイネーブルされ、上記パケットがサービスされることが確実にされる。従って
、本発明の1つの実施形態において、ポーリングモードのオペレーションが割込
み調整と組み合わせられ得る。
【0011】 ネットワークインターフェースは、ネットワークからのパケットをホストコン
ピュータへ転送するパケットとして受信する。ポーリングが開始する前に、パケ
ットが上記ネットワークインターフェースによって受信され、上記ホストコンピ
ュータに転送されると、ホストプロセッサに警告を発する割込みが生成され得る
。しかし、割込みの処理は、上記ネットワークインターフェースにおいて受信さ
れるトラフィックのレベルに応じて、有意なオーバーヘッドを上記プロセッサに
課し得る。従って、本発明の1つ以上の実施形態は、上記パケットの良好なタイ
ミングでの処理を妨げることなく、上記ネットワークパケットの転送に応答して
生成される割込みの数を低減するように構成される。より詳細には、上記割込み
生成は、ポーリングモードのオペレーションの間中断される。上記ネットワーク
インターフェースがポーリングされるたびに、受信されたパケットは、割込みを
待機する必要なく処理され得る。従って、本発明の1つの実施形態において、ポ
ーリングモードのオペレーションの間、割込みは生成されない。
【0012】 しかし、ポーリングが失敗するかまたはブロックされた場合、上記割込み生成
はイネーブルされ得る。すると、上記ホストコンピュータへの割込み発行割合(
rate)は調整され得、これにより、上記ホストコンピュータが他の機能行う
時間を持つことが確実になる。詳細には、1つの実施形態において、前回のネッ
トワークインターフェースのポーリングまたは前回の割込みは処理されているた
め、最短の時間が経過するかまたは最少数のパケットが受信されない限り、受信
されるパケットに対して割込みは発行されない。
【0013】 上記ネットワークインターフェースがポーリングされるたびに、ホストプロセ
ッサによる割込み処理が終了すると、時間カウンタおよび/またはパケットカウ
ンタが初期化される。例示的に、上記カウンタは、プログラム可能な閾値に設定
される。上記プログラム可能な閾値は、経過可能な時間の最大値と、別の割込み
が発行される前に受信可能なパケットの最大数とを表す。初期化後、上記カウン
タは、最終プログラム可能な値(例えば、0)に向かってディクリメントし始め
る。この実施形態において、ポーリングが継続する限り、上記カウンタは繰り返
し再初期化され、ゆえに満了状態になることはなく、割込みは発生しない。別の
実施形態において、上記カウンタは、初期値に初期化され、その後、閾値に向か
ってインクリメントする。
【0014】 本発明の1つの実施形態において、ホストコンピュータ上で動作するポーリン
グプロセスまたはソフトウェアモジュールは、上記ネットワークインターフェー
スのステータスレジスタをミラーリングするバーチャルレジスタまたは「エイリ
アス」レジスタを調べることにより、上記ネットワークインターフェースをポー
リングする。このようなエイリアスレジスタは、上記ステータスレジスタが読み
出される別の経路(例えば、アドレス)として機能する。従って、上記ステータ
スレジスタ中のインジケータが状態を変化させて上記ネットワークインターフェ
ース中の特定のイベントまたは条件を示すと、上記エイリアスレジスタ中の上記
対応するインジケータも変化する。上記ネットワークインターフェースがポーリ
ングされるときに、上記エイリアスレジスタ中のインジケータが上記パケット転
送を示す状態に設定されると、上記ポーリングモジュールは、上記待機パケット
(単数または複数)を処理する。上記ポーリングモジュールは上記ステータスレ
ジスタの代わりに上記エイリアスレジスタを読み出すため、上記ポーリングモジ
ュールが上記ネットワークインターフェースをポーリングするたびに、上記エイ
リアスレジスタはクリアされる。上記エイリアスレジスタがクリアされると、プ
ログラム可能なマスクによって決定された通りに上記ステータスレジスタ中の1
つ以上のインジケータもクリアされ得る。例示的に、上記マスクは複数のエント
リを含み、これらのエントリの各々は、上記ステータスレジスタ中のインジケー
タおよび上記エイリアスレジスタ中のマッチングするインジケータ両方に対応す
る。各マスクエントリ中の値は、対応するエイリアスレジスタインジケータがク
リアされたときに関連するステータスレジスタインジケータをクリアするか否か
を判定する。
【0015】 本発明の別の実施形態において、フィードバックインジケータが、上記ネット
ワークインターフェースのステータスレジスタに追加されるか、または関連付け
られる。上記フィードバックインジケータは、割込みに応答する割込みハンドラ
が上記ステータスレジスタを調べ、自身が呼び出された理由を判定することが可
能になる前に、通常上記ポーリングモジュールが上記ステータスレジスタをクリ
アするときに発生する割込み要求問題を回避することを支援する。詳細には、(
上記フィードバックインジケータ以外の)ステータスレジスタインジケータの状
態が変化したために割込みが生成されると、上記フィードバックインジケータは
、割込みが生成されたことを示す状態に設定される。次いで、上記ステータスレ
ジスタの残りは、上記割込みハンドラが上記レジスタを読み出すまで上記ポーリ
ングモジュールによってクリアされ得るが、上記フィードバックインジケータは
、有効な割込みが発行されたことを明らかにする。上記割込みハンドラが自身が
呼び出された理由を判定できない場合、上記フィードバックインジケータが無い
と、エラー回復プロシージャが開始され得、これにより、上記ネットワークイン
ターフェースのオペレーションが妨害される。この実施形態において、上記ポー
リングソフトウェアは、各ポーリングの間上記ステータスレジスタを直接調べ得
、または、上述したようにエイリアスレジスタが用いられ得る。エイリアスレジ
スタが用いられる場合、上述したマスクは、上記エイリアスレジスタがクリアさ
れたときに上記フィードバックインジケータがクリアされないように構成される
【0016】 (詳細な説明) 以下の説明を、当業者であれば誰でも本発明を作成および利用できるように記
載し、本発明およびその要件の特定の用途の文脈において提供する。開示される
実施形態の様々な改変例が、当業者にとって容易に明らかであり、本明細書中に
規定する一般的原理は、本発明の意図および範囲を逸脱することなく、他の実施
形態および用途に適用され得る。従って、本発明は、記載の実施形態に限定され
るものとして意図されておらず、本明細書中に開示される原理および機能に合致
する最大範囲と調和する。
【0017】 詳細には、以下において、本発明の実施形態を、ネットワークインターフェー
ス回路(NIC)の形態で説明する。このネットワークインターフェース回路は
、インターネットに適合する特定の通信プロトコルに従ってフォーマットされた
通信パケットを受信する。しかし、当業者であれば、本発明はインターネットに
適合する通信プロトコルに限定されず、他のプロトコルとの共用およびNIC以
外の通信デバイスにおける用途にも容易に適合可能であることを認識する。
【0018】 本発明の本実施形態を実行するプログラム環境は、例示的に、汎用コンピュー
タまたは専用デバイス(例えば、ハンドヘルドコンピュータ)を取り入れる。こ
のようなデバイス(例えば、プロセッサ、メモリ、データ格納部、入力/出力ポ
ートおよびディスプレイ)の詳細は周知であり、簡略化のため省略する。
【0019】 本発明の技術は、様々な技術を用いてインプリメント可能であることも理解さ
れるべきである。例えば、本明細書中に記載の方法は、プログラム可能なマイク
ロプロセッサ上で動作するソフトウェアとしてインプリメントされ得、また、マ
イクロプロセッサの組み合わせあるいは他の特別設計されたアプリケーション専
用集積回路、プログラム可能な論理デバイス、またはこれらの様々な組み合わせ
のいずれかを用いたハードウェアとしてもインプリメントされ得る。詳細には、
本明細書中に記載の方法は、記憶媒体(例えば、搬送波、ディスクドライブ、ま
たは他のコンピュータで読出し可能な媒体)上に常駐する一連のコンピュータで
実行可能な命令によってインプリメントされ得る。
【0020】 (導入) 本発明の1つの実施形態において、ネットワークインターフェース回路(NI
C)は、ホストコンピュータシステムとネットワーク(例えば、インターネット
)との間でやり取りされる通信パケットを受信および処理するように構成される
。詳細には、NICは、NICに結合されたネットワークによってサポートされ
るプロトコルスタック(例えば、通信プロトコルの組み合わせ)に従ってフォー
マットされたパケットを受信および操作するように構成される。
【0021】 プロトコルスタックは、7層のISO−OSI(International
Standards Organization−Open Systems
Interconnection)モデルフレームワークを参照して説明でき
る。従って、1つの例示的プロトコルスタックは、第4の層においてトランスポ
ートコントロールプロトコル(TCP)を含み、第3の層においてインターネッ
トプロトコル(IP)を含み、第2の層においてイーサネット(登録商標)を含
む。説明目的のため、本明細書中、「イーサネット(登録商標)」という用語を
、標準化されたIEEE(米国電気・電子通信学会)802.3の仕様およびバ
ージョン2の非標準化形式のプロトコルをまとめて指すものとして用い得る。異
なる形式のプロトコルを識別する必要がある場合、この標準形式に「802.3
」の指定を含ませることにより、標準形式を識別することが可能である。
【0022】 本発明の他の実施形態は、他のプロトコル(例えば、公知のプロトコル(例え
ば、Appletalk、IPX(インターネットワークパケット交換)、AT
M(非同期転送モード)等)および現在未知のプロトコルの両方)に従う通信と
協働するように構成される。当業者であれば、本発明により提供される方法は、
新規の通信プロトコルにも容易に適合可能であることを認識する。
【0023】 加えて、以下に説明するパケットの処理、割込みの調整およびポーリング動作
を、NIC以外の通信デバイス上で行うことが可能である。例えば、モデム、ス
イッチ、ルータあるいは他の通信ポート(例えば、シリアル、パラレル、USB
、SCSI)またはデバイスも、同様に構成可能であり、動作可能である。以下
に説明する本発明の1つ以上の実施形態においては、情報の搬送をパケット形式
で行うが、他の実施形態においては、「パケット」は、データまたは情報の他の
集合体を含み得る。例えば、以下に説明する1つの実施形態は、(例えば、磁気
ディスクあるいは光学ディスク用の)ディスクコントローラまたはパケット以外
の単位でデータ受信およびデータ処理を行う他の媒体コントローラに適用可能で
ある。
【0024】 前述したネットワークインターフェース回路のインプリメンテーションの場合
、NICがパケットをホストコンピュータに転送するたびに(またはほとんどそ
のたびに)、NICは割込みを生成し得る。このようなNICの場合、ネットワ
ークから受信されるトラフィックのレベルが高いほど、割込みが多くなることに
よる処理要件により、ネットワークトラフィックを処理する責任を負うホストプ
ロセッサに対する負担が過度に大きくなり得る。従って、以下に説明する本発明
の様々な実施形態では、ネットワークからのパケット受信に応答して、ホストコ
ンピュータシステムへの割込みを調整、制限または抑止する方法を提供する。
【0025】 例示的に、本発明の様々な実施形態は、様々なレベルのネットワークトラフィ
ックに向けられる。詳細には、ネットワークトラフィックが増加するにつれて、
抑止すべき割込みの数も増加する。しかし、これを行う際、ホストプロセッサは
、各割込み期間中に処理すべきパケットが増加する事態に遭遇し得る。従って、
ネットワークトラフィックがさらに高いレベルになった場合、ポーリング動作モ
ードを開始して、全ての割込みを行う必要を無くすことが可能である。
【0026】 ポーリング動作モードにおいて、ポーリングモジュール(例えば、ホストコン
ピュータ上で動作するソフトウェア)が所望の周波数で動作し続ける限り、割込
みを完全に抑止することが可能である。ポーリングモジュールがブロックされる
かまたは別の場合にポーリングモジュールが機能を停止した場合、調整付きまた
は調整無しに割込みを再イネーブルすることが可能である。
【0027】 (中程度の(moderate)ネットワークトラフィック用の割込みモジュ
レータ) 本発明の1つの実施形態において、ネットワークインターフェース回路(NI
C)によるパケット転送に応答してネットワークインターフェース回路がホスト
コンピュータに割込みを発行する速度を調整する割込みモジュレータが提供され
る。このセクションにおいて、中程度およびそれ以上のトラフィックレベルに特
に適した割込みモジュレータおよび調整方法について説明する。
【0028】 特定のトラフィックレベルの範囲の定義(例えば、「軽い」、「中程度」、「
重い」等)は、必ず不正確となる。しかし、トラフィックレベルを明らかにする
1つの方法は、ネットワークインターフェースが受け取ったパケット数およびプ
ロセッサのパケット処理能力を両方とも考慮し得る。この方法は、プロセッサの
速度および能力が上がるほど、プロセッサの速度および能力が低い場合よりも、
所与の時間中により多くの数のパケットを処理することができる点を考慮に入れ
ている。言い換えれば、1秒間に1,000,000個のパケットを受け取り、
各パケットについて1個の割込みを受け取ることは、あるプロセッサにとっては
負担が大きいように見えるが、別の高速のプロセッサにとってはごく僅かな負担
であり得る。
【0029】 ホストコンピュータへのパケット転送速度およびホストプロセッサの速度の両
方を考慮するため、ネットワークインターフェースから割込みがサービスされる
たびに、処理されたパケットの数を用いて、ネットワークトラフィックが受け取
ったトラフィックのレベルを測定することが可能である。典型的には、ネットワ
ークからパケットが到着し、パケットがホストコンピュータに転送されると、ネ
ットワークインターフェース回路は、ホストプロセッサに割込みを発行する。プ
ロセッサの速度またはコンフィギュレーションに応じて、別のパケットが受け取
られ、別の割込みが発行される前に、必要な割込み処理を敏速に行うことが不可
能な場合があり得る。従って、プロセッサは、実際に第1の割込みに応答するま
でに、第1の割込みの直後に到着した複数のパケットの処理を終了し得る。一方
、プロセッサが非常に高速である場合、プロセッサは、一度に1つより多いパケ
ットを処理することが滅多にないようなタイミングが良好な様式で、各個々の割
込みに応答し得る。
【0030】 従って、本発明のこの実施形態においてネットワークインターフェース回路が
受信するトラフィックのレベルについて説明する目的のために、ホストプロセッ
サが1個の割り込み間に約10個のパケットを処理する場合に中程度のロードが
存在する場合を考えてみる。1個の割込みにおいて10個未満のパケットを処理
する場合、トラフィックレベルは軽いと見なされ得る。1回の割込みサービスル
ーチン間に約50個のパケットを処理する場合、ロードは重いと印付けされ得る
。これらのパケット基準は、所与の期間にわたってとられる平均値または中間値
であり得、または、個々の割込みの処理中に行なわれる瞬間的基準でもあり得る
。加えて、これらの数値は固定値ではなく、サイズおよび(例えば、プロトコル
の点における)パケットの種類等の要素に応じて変更可能である。
【0031】 このセクションにおいて、中程度レベルのトラフィックの受信に応答して生成
された割込みを調整する方法について説明する。以下において、トラフィックレ
ベルが重い環境において割込みを調整または抑止する方法について説明する。こ
れ以降のセクションにおいて説明する割込みモジュレータおよび割込みを調整す
る方法は、パケットがネットワークインターフェース回路からネットワークに伝
送されるのに応答して発行される割込みの速度を調整する用途にも適用可能であ
る。
【0032】 前述したように、いくつかのネットワークインターフェース回路において、ネ
ットワークから受信される各パケットまたはホストコンピュータに転送される各
パケットについて、ホストコンピュータに割込みを発行することが可能である。
パケットの転送速度が高速化するほど、ホストプロセッサがネットワークトラフ
ィックと関連付けられた割込みを処理するのに必要な時間が増加し、プロセッサ
が他のタスクに費やすことが可能な時間が減少する。割込みが通信デバイス(例
えば、ネットワークインターフェース回路)からホストコンピュータに発行され
る速度を調整することにより、割込みとパケットとの比率を、1:1から1:N
(N>1)に減少することができる。ホストコンピュータが応答する必要のある
ネットワークインターフェース割込みの数を低減すると、ホストコンピュータの
他のタスク(例えば、ユーザ活動)に対する応答性を向上させ、ネットワークト
ラフィックを処理するために費やされるプロセッサ時間を低減することができる
。詳細には、ネットワークトラフィックが中程度レベルであると見なされるレベ
ルにまで一旦上昇すると、ホストプロセッサは、恐らく、処理を必要とする割込
み数が低減することから生じる利点を受けることとなる。
【0033】 本発明の1つの実施形態において、パケットがNICによって受信され、ホス
トコンピュータに転送される場合に通常生成される割込みは、交互にイネーブル
およびディセーブルされる。詳細には、1つの割込みがホストプロセッサに発行
され、ホストプロセッサによってサービスされた後、所定の時間が経過するかま
たは特定の量のネットワークトラフィックがホストコンピュータシステムに送ら
れると、別の割込みが生成される。この実施形態において、時間カウンタを用い
て(例えば、クロック信号によって示されるような)時間の経過を追跡し、かつ
/または、パケットカウンタを用いて、ホストへのパケット転送を追跡すること
が可能である。本発明の別の実施形態において、コンテンツカウンタを用いて、
ホストに送られるトラフィック量を、パケット以外の単位(例えば、バイト、デ
ータグラム)で追跡することが可能である。
【0034】 例示的に、ホストコンピュータが割込みを処理した後、時間カウンタおよびパ
ケットカウンタを閾値に設定する。プログラム可能なレジスタまたは他のデータ
構造体中に格納され得る適切な閾値は、中程度レベルのトラフィックの場合、時
間が20マイクロセカンドであり、パケット数は7である。その後、時間カウン
タは、クロック信号または他の時間経過通知手段に応答してディクリメント(例
えば、0に向かってカウント)し、パケットカウンタは、パケット転送信号また
はパケットがホストコンピュータに転送されたことを示す他のインジケータに応
答して、ディクリメントする。パケット転送信号は、例えば、パケットをホスト
メモリにコピーする責任を負うNICモジュールによって生成され得る。時間カ
ウンタまたはパケットカウンタのいずれかが(レジスタまたは他のプログラム可
能なデータ格納単位で格納され得る)0または他の何らかの最終値に達した後、
パケットの転送に応答して割込みが生成される。最終値に到達した後、ホストコ
ンピュータが最終割込みを処理した後、転送されたパケットについて割込みが生
成され得る。
【0035】 本発明の1つの実施形態において、パケットがネットワークインターフェース
に到着する速度が増加するかまたは各割込み期間中に処理されるパケットの数が
増加するにつれて、プログラム可能な閾値時間およびパケット値を増加させるこ
とが可能である。本発明のこの実施形態においてカウンタは閾値から最終値(例
えば、0)に向かってディクリメントするが、別の実施形態において、カウンタ
を初期値(例えば、0)に設定し、その後、カウンタを自身の閾値に向かってイ
ンクリメントさせる。
【0036】 1997年8月19日に発行された、米国特許第5,659,758号(以下
、「’758号特許」と呼ぶ)に、Interrupt Modulator
for Receiving Bursty High Speed Netw
ork Trafficについて記載があり、本明細書中、同特許を参考として
援用する。この’758号特許には、ホストコンピュータに割込みが発行された
ときにリセットされるカウンタの使用に関する記載がある。言い換えれば、’7
58号特許において、時間カウンタまたはパケットカウンタは、ネットワークイ
ンターフェースによって割込みが生成されたときにリセットされ、その後、割込
みのサービス中にもインクリメントする。
【0037】 本発明による割込み調整は、時間カウンタおよびパケットカウンタをリセット
する方法において、’758号特許と異なる。詳細には、本発明のこの実施形態
において、これらのカウンタは、割込み発行時にリセットされるのではなく、ホ
ストコンピュータが割込みを処理した後にリセットされる。上述したように、本
発明の1つの実施形態において、ホストプロセッサが第1の割込みサービスを終
了した後に最短時間が経過するかまたは特定の数のパケットが受け取られると、
第2の割込みがネットワークインターフェースによって開始される。当業者であ
れば、このスキームは、連続的割込み間にさらなる時間境界(separati
on)を提供し、これにより、ホストプロセッサがネットワークインターフェー
スからの割込みをサービスする際に費やされる時間量をさらに低減する。’75
8号特許下において、ホストプロセッサが1つの割込みの処理を完了するために
時間閾値(例えば、20マイクロセカンド)に近い時間を要する場合、割込みが
イネーブルされ得、第1の割込みがサービスされた直後に、割込みが発行される
【0038】 図1は、本発明の1つの実施形態によるNIC用の割込みモジュレータの図で
ある。この実施形態において、ホストコンピュータが割込みを処理した後、時間
カウンタおよびパケットカウンタを、自身の閾値(例えば、それぞれ20マイク
ロセカンドおよび7パケット)に設定し、次いで、時間の経過およびパケットの
転送状態に応じて、これらのカウンタをディクリメントさせる。カウンタが最終
値(例えば、0)に達すると、カウンタはカウントを終了(expire)し、
その時点において、別の割込みが生成され得る。以下に説明する本発明の実施形
態では閾値を約20マイクロセカンドおよび約7パケットとしているが、別の実
施形態では、広範囲の閾値が適切である。詳細には、本発明の1つの実施形態を
実施することが可能な1つのネットワーク環境(例えば、インターネット)は、
関連付けられたプロトコルスタックの第2の層、第3の層および第4の層におい
て、イーサネット(登録商標)プロトコル、IPプロトコルおよびTCPプロト
コルをそれぞれ用いる。この環境において、20〜50マイクロセカンドの範囲
が、時間カウンタにとって適切であり得、4〜10パケットの範囲が、パケット
カウンタにとって適切であり得る。
【0039】 適切な閾値は、特定のNICにおいて受信されたパケットが適合するプロトコ
ルまたは他の特定のネットワーク環境の特性に従って決定され得る。パケットお
よび割込みの処理が7パケットまたは20マイクロセカンドよりも遅延しても適
切に機能することが可能なプロトコルもある。例えば、ネットワークファイルシ
ステム(NFS)プロトコルは、約1ミリセカンドの時間閾値および約50のパ
ケット閾値を用いることができる。
【0040】 本発明の図示の実施形態において、割込みは、PCI(周辺部品相互接続)バ
スによってホストプロセッサに送信される。詳細には、発行された割込みは、パ
ケットがネットワークインターフェースからホストコンピュータに転送されるの
に応答して生成され得るPCI INTA信号に対応する。
【0041】 図1において、割込みモジュレータ100は、時間カウンタ102およびパケ
ットカウンタ106を含む。時間カウンタ102は、1つ以上の時間閾値レジス
タ(例えば、閾値レジスタ104a、104b)と関連付けられる。これらの時
間閾値レジスタは、初期化時または再初期化時に時間カウンタ102の設定の基
本閾値となり得る閾値時間カウントを格納する。パケットカウンタ106は、1
つ以上のパケット閾値レジスタ(例えば、閾値レジスタ108a、108b)と
関連付けられる。これらのパケット閾値レジスタは、初期化時または再初期化時
にパケットカウンタ106の設定の基本閾値となり得る閾値パケットカウントを
格納する。
【0042】 図1に示す時間閾値レジスタおよびパケット閾値レジスタは、プログラム可能
なメモリ(例えば、レジスタ、RAM、フラッシュメモリ)形式でインプリメン
トされるため、ホストコンピュータ上で動作するソフトウェア(例えば、aデバ
イスドライバ)によって設定または変更することが可能である。図1に示すよう
に、複数の閾値レジスタを時間カウンタおよび/またはパケットカウンタに結合
させて、これにより、これらのカウンタを、ネットワークトラフィックのレベル
に応じて異なる値にリセットすることが可能である。詳細には、NICにおいて
受信されるかまたはホストプロセッサによって処理されるトラフィックのレベル
に応じて、閾値を変更することが所望され得る。従って、トラフィックが変動す
ると、時間カウンタおよびパケットカウンタを、異なる閾値に再初期化すること
が可能である。割込みモジュレータは、特定の数の閾値レジスタに限定されず、
1つ以上の任意の数の閾値レジスタを含み得る。別の代替的実施形態において、
閾値時間および/またはパケットカウントは、読取り専用メモリに格納される。
【0043】 時間カウンタ102およびパケットカウンタ106は、NICの初期化(例え
ば、電源投入)時に、時間閾値レジスタおよびパケット閾値レジスタ中の値にリ
セット(例えば、初期化)することが可能である。時間カウンタ102およびパ
ケットカウンタ106はまた、以下に説明するように、NICによってサーブさ
れるホストコンピュータが割込み処理を終えた際にも、リセットされ得る。
【0044】 クロック信号110は、時間カウンタ102に結合され、タイミング調整目的
のために用いられ得る。時間カウンタ102は、各クロックサイクルまたはクロ
ック信号110によって搬送されるサイクルの組み合わせについて、ディクリメ
ントまたはインクリメントされ得る。ここで説明している実施形態において、時
間カウンタ102は、クロック信号110によって信号送信されるかまたは示さ
れる各時間単位(例えば、マイクロセカンド)について、ディクリメントされる
【0045】 パケット転送信号112は、パケットの転送を、ネットワークインターフェー
スからホストコンピュータに信号送信する。パケット転送信号112はこのよう
にして、パケットカウンタ106およびステータスレジスタ114に結合される
。パケット転送信号112は、ホストメモリまたは他の何らかのモジュールにパ
ケットを転送するNICモジュールによって生成され得る。
【0046】 例示的に、ステータスレジスタ114は、1つ以上のステータスインジケータ
から構成される。本発明の1つの実施形態において、ステータスインジケータは
、NIC中のアクション、発生またはエラーに応答して設定され得る。当業者で
あれば理解するように、PCI INTA割込みは、ステータスレジスタインジ
ケータが設定(例えば、1の値の格納)されるたびに、先行する(previo
us)ネットワークインターフェース回路において生成され得る。しかし、本明
細書において上述したように、割込みモジュレータ100は、ホストによるネッ
トワークパケットの受信および/または伝送と関連付けられた割込みを調整する
ように設計される。言い換えれば、ネットワークからホストコンピュータへのパ
ケット転送によって生じた割込みは、時間カウンタまたはパケットカウンタが所
定の値を越えるまで抑止され得るが、他の種類の割込みは、抑止され得ない。詳
細には、エラー条件(例えば、不完全なパケット、故障パケット、カウンタのオ
ーバーラン)が1つ以上あれば、割込みを通常通り生成してもよい。
【0047】 最終時間レジスタ116および最終パケットレジスタ122は、最終値(例え
ば、0)を格納する。この最終値は、時間カウンタ102およびパケットカウン
タ106との比較対象として、かつ、割込みをイネーブルするあるいは再イネー
ブルするタイミングを決定するために用いられる。本発明の図示の実施形態にお
いて、これらのレジスタは、プログラム可能なデータ格納ユニット(例えば、R
AM、フラッシュメモリ)である。
【0048】 初期化時、時間カウンタ102は、時間閾値レジスタ104a(または例えば
別の時間閾値レジスタ(例えば、レジスタ104b))中に格納されている閾値
に設定される。クロック信号110に応答して時間カウンタがディクリメントさ
れると、ディクリメントされた値は、コンパレータ118によって最終時間レジ
スタ116中の値と比較される。時間カウンタ102のディクリメントされた値
が最終時間レジスタ116中の値以上(例えば、これは、少なくとも20マイク
ロセカンドの時間の経過を示す)である場合、時間切れ信号120がアクティブ
にされる。ネットワークトラフィックの受信速度が増加すると、時間閾値レジス
タ104a中に格納されている値は、変更(例えば、増加)され得る。または、
図1に示すように、トラフィックレベル(例えば、1個の割込みにおいて処理さ
れるパケット数、所与の時間にわたって受信されるパケット数)に応じて、別の
閾値を別の時間閾値レジスタからロードしてもよい。時間カウンタ102の初期
化用として用いられる時間閾値レジスタの値の決定は、ホストコンピュータに転
送されるトラフィック量に基づいて行なわれる。最終時間レジスタ116中の値
も、変更可能である。
【0049】 同様に、パケットカウンタ106は、初期化時、パケット閾値レジスタ108
a(または別のパケット閾値レジスタ(例えば、レジスタ108b))中に格納
されている値に設定される。パケット転送信号112に応答してパケットカウン
タ106がディクリメントされると、ディクリメントされた値は、コンパレータ
124によって最終パケットレジスタ122中の値と比較される。パケットカウ
ンタ106のディクリメントされた値が最終パケットレジスタ122中の値以上
である場合、パケット超過(exceed)信号126がアクティブにされる。
ネットワークトラフィックの受信速度が増加すると、パケット閾値レジスタ10
8a中に格納されている値は、変更(例えば、増加)され得る。または、図1に
示すように、トラフィックレベル(例えば、1個の割込みにおいて処理されるパ
ケット数、所与の時間で受信されるパケット数)に応じて、別の閾値を別のパケ
ット閾値レジスタからロードしてもよい。最終パケットレジスタ122中の値も
、変更可能である。
【0050】 時間切れ信号120またはパケット超過信号126のいずれかがアクティブに
された場合、ORゲート128がイネーブルされ、ANDゲート132の割込み
イネーブル信号130がアクティブにされる。ANDゲート132への別の入力
が、ステータスレジスタ114によって提供され、この入力は、パケット転送信
号112に応答してステータスビットが設定される際にアクティブにされる。従
って、割込み信号134(例えば、PCI INTA)がアクティブにされるの
は、時間カウンタ102またはパケットカウンタ106が終了(expirat
ion)したためにパケットが転送され、割込みがイネーブルされたときのみで
ある。
【0051】 本発明の別の実施形態において、初期時間および最終時間またはパケット値の
変更が可能である。言い換えれば、図1中の時間閾値レジスタおよびパケット閾
値レジスタは、最終時間レジスタ116および最終パケットレジスタ122とそ
れぞれスワッピングされ得る。従って、この実施形態において、時間カウンタお
よび/またはパケットカウンタは、初期値(例えば、0)に初期化され、次いで
、閾値にまでインクリメントされる。
【0052】 本発明の図示の実施形態において、割込み信号134は、ホストコンピュータ
中のプロセッサ(例えば、Sun Microsystems、Inc.製のS
PARCTMプロセッサ)によって受信される。当業者であれば認識するように、
ホストプロセッサが割込み信号の処理を終えると、ステータスレジスタ114(
例えば、パケット転送信号112に対応するステータスレジスタインジケータ)
は、ホストプロセッサによってクリアされる。ステータスインジケータがクリア
されるのに応答して、時間カウンタ102およびパケットカウンタ106は再初
期化される。
【0053】 ホストプロセッサが割込み処理を終えた後に時間カウンタおよびパケットカウ
ンタをリセットすると、ホストプロセッサが、パケット転送に関連する別の割込
みを処理しなければならなくなる前に、有意となり得る時間にわたって他の機能
および任務を行うことが可能となる。詳細には、この実施形態において、別のパ
ケット転送される割込みがホストプロセッサに送られる前に、約20マイクロセ
カンドが経過し、または約7パケットがNICによって受信されていなければな
らない。
【0054】 当業者であれば、このセクションにおいて説明した割込みを調整するメカニズ
ムおよび方法は、ネットワークインターフェース回路以外の通信デバイスにも適
用可能であることを認識する。詳細には、これらのメカニズムおよび方法は、ゲ
ートウェイ、ルータ、ブリッジ、モデムおよびパケット受信を行う他の通信デバ
イスの形式でインプリメントされ得る。入力デバイスおよび出力デバイス(例え
ば、媒体コントローラ)も、開示の割込み調整技術の利点を受けることができる
【0055】 図2は、1組の状態と、このような状態との間の遷移(transition
)とを示す状態図であり、図1に示す本発明の実施形態において用いられ得る。
上述したように、ネットワークインターフェースからのパケット転送と関連付け
られた割込みは、割込みモジュレータ100によってディセーブルまたはイネー
ブルにされ得る。従って、図2中には2つの主要な状態(すなわち、割込みディ
セーブル状態202および割込みイネーブル状態204)が存在する。例示的に
、割込みディセーブル状態202において、通常はパケット転送に応答して生成
され得る割込みが抑止される。割込みイネーブル状態204において、パケット
転送に応答して生成され得る割込みは抑止されない。
【0056】 割込みディセーブル状態202において、割込みモジュレータ100は、カウ
ンタ初期化状態206またはカウンタディクリメント状態208のいずれかであ
り得る。詳細には、状態206において、カウンタ(例えば、図1からの時間カ
ウンタ202および/またはパケットカウンタ206)を、初期値または閾値に
初期化する。カウンタディクリメント状態208において、時間カウンタ、パケ
ットカウンタまたは他のカウンタがディクリメントする。例えば、時間カウンタ
は、クロック信号に応答してディクリメントし得、または、パケットカウンタは
、パケットの到着または転送に応答してディクリメントし得る。本発明の別の実
施形態において、カウンタが閾値からディクリメントするのではなく閾値に向か
ってインクリメントする場合、状態208は、カウンタインクリメント状態であ
る。
【0057】 本発明の図示の実施形態において、カウンタ中に初期値が格納されると、割込
みモジュレータ100は、遷移210を通じて、カウンタ初期化状態からカウン
タディクリメント状態に自動的に変化する。あるいは、この遷移は、時間信号の
受信またはパケットの受信に応答して発生し得る。
【0058】 割込みモジュレータは、カウンタディクリメント状態208である間、遷移2
12を通じて割込みイネーブル状態204に遷移し得る。本発明のこの実施形態
において、図1に関連して上述したように、遷移212が開始するのは、カウン
タが最終値に到達したときである。
【0059】 割込みイネーブル状態204からカウンタ初期化状態206への遷移214が
開始され得るのは、ホストプロセッサが、割込みイネーブル状態204の期間中
に生成された割込みの処理を終了したときである。ここで説明している本発明の
実施形態において、割込み処理の完了は、ステータスレジスタ中の1つ以上のス
テータスインジケータをクリアすることによって示され得る。
【0060】 最後に、本発明の1つの別の実施形態において、割込みモジュレータは、遷移
216を通じてカウンタディクリメント状態208からカウンタ初期化状態20
6に遷移し得る。遷移216は、(例えば、ネットワークからのパケット受信以
外のイベントと関連付けられた割込みのために)ステータスレジスタが読み出さ
れたことを示し得る。詳細には、割込みは、エラー条件のためにNICによって
生成され得る。次いで、割込みサービスルーチンが呼び出され、これにより、報
告されたエラーが処理され、最後の割込み以後に受信された任意のパケットも処
理され得る。待機パケットを全て処理することにより、エラー条件と関連付けら
れた割込みの処理後の状況は、ホストプロセッサがパケット転送と関連付けられ
た割込みの処理を終えた後に存在する状況と類似する。従って、NICによって
維持されるカウンタ(単数または複数)は、通常のパケット転送と関連付けられ
た割込みが処理されたばかりであるかのように再初期化され得る。
【0061】 図3は、割込みモジュレータ100で割込みを調整する1つの方法を示すフロ
ーチャートである。状態300は開始状態であり、割込みモジュレータ100を
含むネットワークインターフェースへの電源投入に対応し得る。あるいは、開始
状態300は、ネットワークインターフェースによるパケット転送に応答して生
成された割込みをホストプロセッサが処理する工程も含み得る。
【0062】 状態302において、電源投入条件またはホストプロセッサによる割込み処理
の終了に応答して、時間カウンタおよびパケットカウンタが初期化される。例示
的に、時間カウンタを、20マイクロセカンド(または他の適切なプログラム可
能な時間)に設定し、パケットカウンタを、7パケット(または他の適切なプロ
グラム可能なパケット数)に設定する。初期化後、以下に説明するように、これ
らの時間カウンタおよびパケットカウンタは、プログラム可能な最終値(例えば
、それぞれ0マイクロセカンドおよび0パケット)に向かってディクリメントす
る。本発明の1つの別の実施形態において、時間カウンタおよびパケットカウン
タは、状態302において0または他の初期値に設定され、次いで、その後、こ
れらの値から自身の閾値へとインクリメントされる。
【0063】 状態304において、ネットワークインターフェースからのパケット転送と関
連付けられた割込みが、一時的にディセーブルされる。それでも、割込みの発行
に向けた特定の工程(例えば、ステータスレジスタ中のインジケータの設定)が
、パケット転送に応答して行われ得る。しかし、以下に説明するように、時間カ
ウンタまたはパケットカウンタのいずれかが自身の閾値に到達するまで、パケッ
ト転送割込みは、ホストプロセッサに送信されない。
【0064】 状態306において、時間カウンタおよびパケットカウンタのいずれかまたは
両方が、ディクリメントする(例えば、負方向にまたは0に向かってインクリメ
ントする)。詳細には、時間カウンタは概して、自身が初期化されたときから自
身が再初期化されるまで連続的にディクリメントする。しかし、割込みがイネー
ブルされると、時間カウンタは停止または中断され得る(例えば、ディクリメン
トが中止される)。割込みが処理された後、時間カウンタは閾値に再初期化され
、再度ディクリメントし始める。しかし、パケットカウンタは、時間経過よりも
不確実なイベント(すなわち、ネットワークインターフェースからのパケット転
送)に応答してディクリメントする。例示的に、ネットワークインターフェース
によって各パケットがホストコンピュータに転送されるたびに、パケットカウン
タカウントは1だけ低減する。
【0065】 状態308において、時間カウンタおよびパケットカウンタのいずれかまたは
両方が自身の最終値に到達したか否かを判定する。これらのカウンタ両方が自身
の最終値に到達しない限り、図示のプロシージャは、状態306に戻り、カウン
タをディクリメントする工程を継続する。しかし、どちらかのカウンタが自身の
閾値に到達した場合、このプロシージャは状態310に進む。
【0066】 状態310において、時間カウンタおよびパケットカウンタのいずれかまたは
両方が自身の閾値に到達したため、ネットワークパケットの転送に関連付けられ
た割込みをイネーブルする。例示的に、次のパケットがホストコンピュータに転
送されると、ホストプロセッサに割込みが伝送される。あるいは、最後の割込み
以後に1つ以上のパケットが(例えば、ホストコンピュータへの転送対象として
)ネットワークインターフェースにおいて受信された場合、状態310の開始時
に近い時間において、割込みが発行され得る。
【0067】 状態310の間または状態310の後の時点で割込みが発行された後、割込み
モジュレータ100は、(例えば、パケット転送時に設定されたステータスレジ
スタインジケータがクリアされるのを検出することにより)割込み処理の終了を
検出する。この時点において、これらのカウンタは再初期化され、プロシージャ
は上述したように進行する。図示のプロシージャは、終了状態312において終
了する。
【0068】 上記のプロシージャにおいて、ネットワークを発着地とするパケット転送と関
連付けられたネットワークインターフェースからの割込みを調整する。他の割込
み(例えば、ネットワークインターフェース内のエラー状況または無効パケット
を反映する割込み)も、正常な割込みとして発行され得る。しかし、本発明の別
の実施形態において、パケット到着割込み以外の1つ以上の割込みも調整され得
る。
【0069】 (ネットワークトラフィックが大量であるときの割込みの抑止) 前セクションにおいて、割込みモジュレータと、トラフィックが中程度レベル
または同等のレベルであるときにネットワークインターフェースによって転送さ
れるパケットの割込みを調整する方法を提供した。このような割込みモジュレー
タは、時間カウンタおよび/またはパケットカウンタを用いて、ネットワークイ
ンターフェースからホストコンピュータプロセッサへの割込み生成を一時的にデ
ィセーブルおよびイネーブルし得る。その結果、割込みモジュレータによって生
成され、かつホストプロセッサによるサービスを受けさせる必要のある割込みの
数が有意に低減できる。割込みへのサービスを行う時間を低減することにより、
大量の(substantive)タスクに対するホストプロセッサの応答性を
向上させることができる。ネットワークインターフェースからホストコンピュー
タへのパケット到着を信号送信するように設計された割込みが一時的に抑止され
る場合があるものの、有利なことに、この調整スキームは、パケットにタイミン
グ良く注意を向けることを確実にする。
【0070】 しかし、パケット到着速度が高速化すると、プロセッサは、1つの割込みに応
答するたびに、より多くの処理対象パケットを有するようになり得る。または、
ホストへのパケット到着速度が速過ぎると、時間カウンタまたはパケットカウン
タの使用状況(use)に関係なく大量の割込みが生成される事態が起こり得る
。どちらにしても、割込み調整により得られる利点は、トラフィック量が大量で
あるような環境では、ある程度まで減少し得る。前述したように、本発明の1つ
の実施形態において、ネットワークインターフェース回路においてトラフィック
が大量である環境は、ホストプロセッサが、パケット受信に応答して発行された
割込みに応答するたびに約50パケットを処理する状況を含み得る。
【0071】 ネットワークインターフェースからのパケット転送速度が極めて高速である場
合、パケットカウンタの閾値がリセットされるそばから閾値が突破される場合が
ある。閾値が突破されるたびに、別の割込みがホストプロセッサに生成される。
もちろん、パケットカウンタの閾値は、(例えば、別のパケット閾値レジスタか
ら閾値をロードすることにより)状況に応じて比較的高い値に設定することがで
きるが、転送速度がそれでも極めて高速である場合、プロセッサは、1つの割込
みを受信するたびに、大量のパケットを処理するために過度な長さの時間を費や
し得る。このような環境では適切に機能できない通信プロトコルもある。または
、パケットカウンタ閾値が増加した後にホストコンピュータへのパケット転送速
度が急激に低下した場合、次の割込みおよびその後の1つ以上のパケットの処理
が遅延され得る。
【0072】 時間カウンタを用いても、トラフィックレベルが重い事態に関連する問題を軽
減できない場合がある。詳細には、時間カウンタが比較的高い時間閾値を有する
場合、閾値が超過する前にネットワークインターフェースによって転送されるパ
ケット数は、ここでも、割込みが生成されたとき、プロセッサが割込みが生成さ
れたときにパケットを処理する際に有意な長さの時間を費やすことを要求し得る
。(例えば、別の時間閾値レジスタを用いることにより)時間閾値が低い値に設
定されている場合、低いパケットカウンタ閾値を用いた場合の結果と同様に、プ
ロセッサに対する割込みの負荷が大きくなり過ぎ得る。
【0073】 そのため、トラフィックが大量な場合、ホストプロセッサがパケットまたは割
込みの処理に費やし得る時間は、ホストコンピュータの他のタスクに対する応答
性を低下させ得る。ネットワークインターフェースまたは他の通信デバイスにお
いて受信されるネットワークトラフィック(例えば、パケット)の量が高いレベ
ルに到達すると、ホストコンピュータに割込み以外のパケット転送について警告
する特定のメカニズムをより効率的にすることができる。
【0074】 従って、本発明の1つの実施形態において、大量のトラフィック(例えば、パ
ケット)を受信するネットワークインターフェースまたは他の通信デバイスのた
めに、ポーリングモードのオペレーションをイネーブルする。この実施形態にお
いて、ネットワークインターフェースを定期的にポーリングして、ホストコンピ
ュータに転送されたパケットがあるか否か、または、ホストプロセッサによる処
理を受ける準備ができているパケットがあるか否かを判定する。上記判定結果が
「はい」である場合、割込みの発送に関連するオーバーヘッドを招くことなく、
これらのパケットを処理することができる。しかし、ポーリングの使用は、割込
み調整で補足され得る。詳細には、割込みモジュレータは、ネットワークインタ
ーフェースが繰り返しポーリングされている限り、割込みを抑止し得る。しかし
、ポーリングオペレーションがストールまたはブロックされた場合、割込みモジ
ュレータは、割込みが定期的に生成され、これにより、ホストプロセッサが、受
信したパケットにタイミング良く注意を向けることに集中できることを確実にし
得る。
【0075】 従って、このセクションは、割込みモジュレータおよび前セクションにおいて
説明した割込みを調整する方法に照らして理解されるべきである。同様に、この
セクションにおいて紹介した概念は、前セクションにおいて説明した割込み調整
のシステムおよび方法にも、全体的または部分的に適用可能である。
【0076】 前述したように、この実施形態におけるトラフィックレベルは、ホストプロセ
ッサが1つの割込みに応答するたびに処理されるパケットの数によって規定され
得る。詳細には、1個の割込みの間に約50パケットが処理される場合、トラフ
ィックは重いと見なされ得る。本発明の別の実施形態において、ネットワークト
ラフィックの尺度として、パケット数だけではなく、サイズおよび/またはパケ
ットの種類が考えられ得る。
【0077】 本発明の1つの実施形態において、ネットワークインターフェースは、ホスト
コンピュータ上で動作するソフトウェア(例えば、プログラムモジュールまたは
他の一連のコンピュータで実行可能な命令)によって繰り返しポーリングされる
。ポーリングの周波数は、毎500〜1000マイクロセカンドのオーダーであ
り得る。このポーリングソフトウェアは、例えば、ネットワークインターフェー
ス用のデバイスドライバの一部を成し得る。さらに、このポーリングソフトウェ
アは、プロセッサ(例えば、Sun Microsystems、Inc.製の
SPARCTMプロセッサ)上のスレッドとして動作し得る。当業者であれば認識
するように、実行可能なスレッドは、ポーリングオペレーション間において変化
し得る条件に基づいて、ブロックされ得る。
【0078】 1つの実施形態において、ポーリングソフトウェアは、ネットワークインター
フェースのステータスレジスタまたはステータスレジスタ中のインジケータ(例
えば、ビット)を調べることにより、パケット転送を検出し得る。例示的に、確
認対象のインジケータを、パケット転送に応答して第1の状態から第2の状態に
変更し、ポーリング後に第1の状態にリセットする。
【0079】 本発明の1つの実施形態において、ポーリングは割込み調整によって補足され
、ソフトウェアがネットワークインターフェースをポーリングするたびに、割込
みモジュレータを再初期化する(例えば、その時間および/またはパケットカウ
ンタを閾値にリセットする)。従って、ポーリングが継続する限り、カウンタを
繰り返し再初期化し、通常ネットワークパケットの受信によって生成される割込
み全てを妨害(forestall)する。
【0080】 詳細には、ポーリングモジュールがブロックされると、割込みモジュレータ内
の時間カウンタまたはパケットカウンタは、自身の最終値に到達し得る。次いで
、最後のポーリングオペレーションまたは割込み以降にパケット転送が行なわれ
ると、割込みが生成される。この実施形態におけるカウンタの閾値は、図1〜3
に関連して説明した本発明の実施形態で記載された閾値よりも高い。例えば、ネ
ットワーク環境(例えば、インターネット)の場合、パケットはイーサネット(
登録商標)プロトコル、IPプロトコルおよびTCPプロトコルに適合し、時間
閾値の適切な範囲は、1〜5ミリセカンドであり、パケット閾値の適切な範囲は
、500〜2500パケットである。詳細には、本発明の1つの実施形態におい
て、時間カウンタの閾値は約2ミリセカンドであり得、パケットカウンタの閾値
は、約1000であり得る。
【0081】 本発明の他の実施形態および異なるネットワーク環境あるいは異なるオペレー
ション環境において、他の値も適切であり得る。また、ネットワークから受信さ
れるトラフィック量が変動すると、閾値は調節され得る。上述したように、異な
る閾値レジスタが、異なるレベルのトラフィックの間に時間カウンタおよび/ま
たはパケットカウンタを再初期化するための異なる閾値を格納し得る。
【0082】 上述したように、ポーリングオペレーションは、スレッドまたはマルチタスク
環境中の他の実行モジュールによって実行され得る。スレッドは、例えば、ポー
リングを行なわない場合に変化し得る条件に基づいてブロックされ得る。しかし
、スレッドは、所定のまたは可変性の(例えば、プログラム可能な)周波数(例
えば、1000〜2000時間/秒)で動作するように解放され得る。各ポーリ
ングオペレーションのタイミングは、割込みモジュレータの時間カウンタによっ
て反映される時間経過またはポーリングソフトウェアあるいはホストコンピュー
タによって維持される別のタイマによって判定され得る。有利なことに、スレッ
ドあるいは他のプロセスまたはポーリングオペレーション間において活動停止状
態のままでいられるモジュールを用いると、メモリが動作するたびにメモリにロ
ードされなければならないモジュールと関連する処理オーバーヘッド(例えば、
ロード、初期化、コンテキストの切換え)を回避することができる。しかし、1
つの別の実施形態において、ポーリングソフトウェアは、ネットワークインター
フェースがポーリングされるたびにロードされ、実行される一連の実行可能な命
令を構成する。言い換えれば、この別の実施形態において、ポーリングソフトウ
ェアは、単に中断状態に入るのではなく、各ポーリングオペレーション後に終了
する。
【0083】 ポーリングが開始し得るのは、特定のレベルのネットワークトラフィックが検
出された(例えば、1つの割込みに対する1つのサービスにおいて50パケット
が処理された)場合である。1つの代替例として、ポーリングは、ホストコンピ
ュータプロセッサのロードが特定のレベル(例えば、利用度の90%)に到達し
たときに開始され得る。
【0084】 上述したように、ポーリングソフトウェアは、動作または動作終了を妨げられ
得る。ポーリングソフトウェアがカウンタを終了しカウンタをリセットできるよ
うになる前に割込みモジュレータのカウンタが自身の最終値に到達すると、割込
みがイネーブルされ得る。ポーリングソフトウェアが動作不可能な状態でい続け
る場合、(前セクションにおいて説明するように)割込みが繰り返しディセーブ
ルおよびイネーブルされ得る。ポーリングソフトウェアは、回復すると、(特に
、ネットワークトラフィックのレベルがそれでも重い場合に)ポーリングを再開
し得る。あるいは、ネットワークトラフィックレベルが降下した場合、ネットワ
ークインターフェースは、ポーリングモードのオペレーションから割込み調整に
遷移し得る。この遷移は、ポーリングソフトウェアがブロックされた直後ではな
く、トラフィックレベルが下降するたびに発生し得る。あるいは、ポーリングモ
ードから割込み調整への再遷移は、ソフトウェアが任意のパケット(またはパケ
ット閾値未満)を取り出さずに所定の回数ポーリングを行った場合に発生し得る
。異なるオペレーションモード間の遷移の一部として異なる閾値レジスタからの
異なる時間および/またはパケット閾値を用いて、時間カウンタおよびパケット
カウンタを初期化することができる。
【0085】 図4は、割込み調整を用いてまたは用いずにポーリングオペレーションを行う
ための本発明の一実施形態のオペレーションを示す状態図である。図4において
、2つの主用な状態(すなわち、割込みディセーブル状態402および割込みイ
ネーブル状態404)を示す。ディセーブル状態402は、大量のパケットを受
信するネットワークインターフェースの主要な状態であることが想定される。
【0086】 割込みディセーブル状態402内には、3つのサブ状態(すなわち、ポーリン
グ状態406、カウンタ初期化状態408およびカウンタディクリメント状態4
10)がある。ポーリング状態406の間、ネットワークインターフェースをポ
ーリングして、前回のポーリング(または割込み)以降に転送されたパケットが
あるか否かを判定する。以下に説明するネットワークインターフェースをポーリ
ングする1つの方法において、ホストコンピュータ上で動作するポーリングモジ
ュールを用いて、ネットワークインターフェースのステータスレジスタを調べる
。例示的に、ステータスレジスタは、ネットワークインターフェース中のイベン
トまたは条件に応じて状態を変化させる1つ以上のインジケータを含む。1つの
このようなインジケータは、パケット転送を反映し得る。
【0087】 カウンタ初期化状態408において、1つ以上のカウンタを初期化する(例え
ば、カウンタの閾値または他の初期値に設定する)。上述したように、割込みモ
ジュレータは、時間カウンタおよび/またはパケットカウンタを用いて、割込み
をイネーブルすべきタイミング(例えば、ポーリングがブロックされたとき)を
判定することができる。また、ポーリングソフトウェアまたはホストコンピュー
タは、別のポーリングタイマを維持して、ネットワークインターフェースをポー
リングすべきタイミングを判定することができる。
【0088】 カウンタディクリメント状態410において、時間カウンタおよび/またはパ
ケットカウンタを、0に向かってディクリメントする。加えて、各ポーリングオ
ペレーションのタイミングを調整するための上記のポーリングタイマが、(例え
ば、当該ポーリングタイマが閾値または初期値(例えば、0)に設定されるかに
応じて)インクリメントまたはディクリメントされ得る。現在説明している実施
形態では時間カウンタおよびパケットカウンタがディクリメントされる(例えば
、閾値から0方向に負の方向にインクリメントされる)様子を示しているが、別
の実施形態において、これらのカウンタは初期値(例えば、0)に設定され、自
身の閾値に向かってインクリメントされる。
【0089】 図4において、1つの状態から別の状態へと変化する複数の遷移を示す。ネッ
トワークインターフェースがポーリングされた後、ポーリング状態406からカ
ウンタ初期化状態408に遷移412が発生し得る。ポーリング期間中にポーリ
ングモジュールがカウンタをリセットする必要がある場合にも、遷移412が開
始され得る。例えば、1回のポーリング中に大量のパケットを処理する必要があ
り得、そのため、比較的長時間のプロセッサ時間が必要となり得る。カウンタ満
了後に発生する割込みを回避するために、ポーリングモジュールは、1つ以上の
カウンタを再初期化するのに十分な期間だけ、オペレーションを中断し得る。
【0090】 カウンタがリセットされた後、遷移414を通じてカウンタディクリメント状
態410に入る。遷移414は、パケットまたは時間のカウントを開始して、割
込みをイネーブルするかまたはネットワークインターフェースを再度ポーリング
する必要があることを信号送信するイベント(例えば、パケットの受信)を表し
得る。しかし、例示的に、遷移414は、カウンタが再初期化されると自動的に
発生する。
【0091】 ポーリングタイマが満了するかまたは自身の閾値に到達したため、遷移416
に示すように、カウンタディクリメント状態410からポーリング状態406に
入る。ポーリングタイマの閾値は好適には、割込みモジュレータの時間閾値より
も低く、これにより、1つの割込みの生成におけるポーリングオペレーションの
優先を反映する。しかし、(時間カウンタが再初期化された後に)ポーリングオ
ペレーションが終了され得る前に時間カウンタが満了するか、または自身の最終
値に到達した場合、遷移418は、カウンタディクリメント状態410から割込
みイネーブル状態418への遷移を示す。遷移418はまた、パケット数の閾値
の受信によっても開始され得る。遷移420によって示すように割込みがホスト
プロセッサによるサービスを受けた後、割込みイネーブル状態404からカウン
タ初期化状態408に遷移する。
【0092】 ポーリングソフトウェアがブロックされるか、または別の場合に自身の動作の
完了を妨げられた場合、ポーリング状態406は、遷移422を通じて割込みイ
ネーブル状態404に直接進行し得る。この遷移をイネーブルする際、割込みモ
ジュレータによって用いられる時間カウンタおよび/またはパケットカウンタは
、ポーリング状態406の間でディクリメントし続け得る。従って、遷移422
は、遷移が発生する状態を除いて、遷移418に非常に類似し得る。
【0093】 最後に、本発明の1つの実施形態において、ネットワークからのパケット受信
以外のイベント(例えば、エラー)と関連する割込みが発行されたため、ディク
リメントカウンタ状態410からカウンタ初期化状態408への遷移424が発
生し得る。
【0094】 本発明の1つの実施形態において、ポーリングオペレーションは、ネットワー
クインターフェースのステータスレジスタを調べる工程を含む。上述したように
また当業者には公知であるように、ネットワークインターフェースは、ステータ
スレジスタまたは他のデータ構造体を用いて、インターフェース内の条件または
アクションを信号送信し得る。ステータスレジスタは、例えば、ネットワークイ
ンターフェースによるパケットの受信および/または伝送に関連する複数のステ
ータスビットまたはインジケータを含み得る。パケット受け入れに関連する例示
的インジケータを挙げると、パケット転送インジケータ、(例えば、パケットが
ドロップされたことを示す)オーバーフローインジケータ、(例えば、パケット
受信、CRCエラーおよび長さエラー等のイベントを追跡するカウンタがロール
オーバーしたことを示す)1つ以上のロールオーバーインジケータ等がある。パ
ケット伝送に関連する例示的インジケータを挙げると、(例えば、不完全なパケ
ットがドロップされたことを示す)パケット伝送インジケータ、アンダーフロー
インジケータ、パケットオーバーサイズインジケータ、および(例えば、伝送エ
ラーを追跡するカウンタのロールオーバーを示す)1つ以上のロールオーバーイ
ンジケータがある。各インジケータは概して、通常の状況下でありかつNICが
非アクティブである間、(例えば、第1の値(例えば、0)を格納する)第1の
状態であり、ネットワークインターフェースが初期化されるか、または他の特定
のイベントが発生すると、第1の状態にリセットされ得る。特定のイベントまた
はインジケータに関連する条件に応答して、インジケータは、(例えば、第2の
値(例えば、1)を格納する)第2の状態に設定され得る。
【0095】 例えば、ネットワークからパケットが受信され、ホストコンピュータに転送さ
れると、パケット転送インジケータは、自身の第2の状態に設定され得る。パケ
ットがネットワークインターフェースからネットワークに転送されると、パケッ
ト伝送インジケータは、第2の状態に設定され得る。さらに別のビットまたはイ
ンジケータが、エラー条件(例えば、故障パケットの受信、パケット受信中のエ
ラー)に応答して、自身の第2の状態に設定され得る。
【0096】 ステータスレジスタ中のインジケータが自身の第2の状態に設定されると、割
込みがホストプロセッサに自動発行され得る。次いで、割込みサービスルーチン
(ISR)が、ホストプロセッサによって実行され、これにより、割込み(例え
ば、パケット転送、パケット伝送、エラー)の理由を判定する。次いで、ISR
は、割込みに応答して、何らかの機能を行い得る(例えば、受信されたパケット
を自身のプロトコルスタックを通じて処理する、エラー回復プロシージャを実行
する)。ステータスレジスタの典型的なインプリメンテーションにおいて、割込
みサービスルーチンを用いて、割込みを発生させたインジケータを自身の第1の
状態に戻す。さらに、ISRがステータスレジスタを読み出すと、割込みを発生
させたステータスインジケータだけではなく全ステータスインジケータを、一様
にクリアする(例えば、第1の状態に戻す)。
【0097】 トラフィックが大量である環境においてネットワークインターフェースが動作
する場合、割込み要求に関連する問題が発生し得る。具体的には、割込み(例え
ば、パケット転送の信号送信)に応答して呼び出された割込みサービスルーチン
は、ステータスレジスタが既にクリアされたことを発見し得る。従って、ISR
は、割込みが発行された理由を判定することができない。その結果、ISRが誤
って呼び出されたように見え、この状況は、ネットワークインターフェースのオ
ペレーションにおける深刻なエラーとして解釈され得る。その場合、ネットワー
クインターフェースは、認知された問題をクリアしようとして、再初期化または
診断ルーチンを受け得る。そうすると、ネットワークトラフィックの処理および
ネットワークインターフェースのオペレーションに必然的に悪影響が生じる。
【0098】 ポーリングを用いる本発明の1つの実施形態は、この問題から免除され得ない
。詳細には、この実施形態において、ポーリングソフトウェアは、ステータスレ
ジスタのパケット転送インジケータを調べることにより、パケット転送を確認す
る。ポーリングソフトウェアは、この調査と共にステータスレジスタまたはパケ
ット転送インジケータをクリアし得るため、パケット転送によって生じた割込み
に応答してISRを呼び出しても、割込みの理由を判定するには既にタイミング
が遅くなり得、そのため、何らかの形態のエラー回復につながる。
【0099】 本発明の1つの実施形態においてこの「割込み要求」問題は、余分なビットま
たは他のインジケータ(例えば、フィードバックインジケータ)をステータスレ
ジスタに追加することにより、対処可能である。図5は、この実施形態における
インプリメンテーションに適したステータスレジスタを示す。
【0100】 図5において、ネットワークインターフェースのステータスレジスタ502は
、パケット転送インジケータ504、パケット伝送インジケータ506、第1の
エラーインジケータ508およびISRインジケータ514を含む。ステータス
レジスタ502中の他の記載されていないインジケータは、他の条件またはネッ
トワークインターフェース中において遭遇されるイベントに対応する。例示的に
、各インジケータ(恐らくはISRインジケータ514を除く)は、初期化後に
(例えば、値0で特徴付けられる)第1の状態となり、各ポーリングオペレーシ
ョン後は、対応するアクションまたは条件に応答して第2の状態になり得る。ス
テータスレジスタ中の(インジケータ514以外の)各インジケータは、ORゲ
ート510の入力端部に接続される。例示的に、ORゲート510に結合されて
いるインジケータのうちいずれかが(例えば、値1によって特徴付けられる)第
2の状態になると、割込みライン512上に割込みが生成され、ホストプロセッ
サまたは割込みハンドラに送信される。
【0101】 上述したように、割込みに応答して呼び出されたISRは、ステータスレジス
タ502を読み出し、当該割込みの理由を判定しようとする。しかし、ホストコ
ンピュータ上で動作するポーリングモジュールは、ポーリングオペレーションと
連動してステータスレジスタをクリアし得る。ISRがステータスレジスタを読
み出し、割込み発行の理由を判定できる前にポーリングモジュールがステータス
レジスタをクリアした場合、時間のかかるエラー回復プロシージャが呼び出され
得る。
【0102】 従って、図示の実施形態において、ISRインジケータ514がステータスレ
ジスタ502に追加され、割込みライン512に結合される。例示的に、ISR
インジケータ514は、割込みライン512上で割込みが発行されるまで、(例
えば、値0によって特徴付けられる)第1の状態のままである。そのとき、IS
Rインジケータ514は、(例えば、値1によって特徴付けられる)第2の状態
に遷移する。従って、ISRインジケータは、ステータスレジスタ502の構成
要素(component)の状態変化に起因する割込み生成のタイミングを反
映するフィードバックインジケータまたはサマリインジケータと考えることがで
きる。しかし、重大なことに、ISRインジケータが自身の第2の状態に入った
とき、ORゲート510はアクティブにならない。
【0103】 本発明の現在説明している実施形態において、ポーリングの間、ポーリングモ
ジュールを用いてステータスレジスタ502を調べ、ネットワークインターフェ
ースによるパケット転送が行なわれたか否かを判定する。ソフトウェアは、レジ
スタを調べる際、ISRが行うのと同様に、1つ以上のステータスインジケータ
をクリアまたは0にし得る(例えば、自身の第1の状態に戻す)。インターフェ
ースのポーリングが開始してまもなく、(例えば、エラーインジケータ508に
よって示されるエラー条件によって)割込みが生成された場合、ポーリングソフ
トウェアは、割込みハンドラが呼び出し理由を判定し得る前に、ステータスレジ
スタをクリアし得る。従って、本発明の図示の実施形態において、割込みハンド
ラは、ISRインジケータ514を調べることができ、よって、有効な割込みが
存在し、ネットワークインターフェースの再初期化またはエラー回復プロシージ
ャの実行を行う必要は無いと判定する。ISRは典型的には、レジスタを調べた
後、(恐らくはISRインジケータ514を含む)ステータスレジスタをクリア
する。
【0104】 本発明の1つの実施形態において、ポーリングモジュールは、ステータスレジ
スタ502をポーリングする際にISRインジケータ514がクリアされること
(例えば、0に戻されること)を回避するように具体的に構成される。例示的に
、ISRインジケータ514は、特定のイベント(例えば、割込みに応答して割
込みサービスルーチンが呼び出されるイベント)に応答して実行され得るホスト
コンピュータからの書込みオペレーションを介して、クリアされる。従って、ポ
ーリングモジュールは、ポーリング中、ステータスレジスタ中の他のインジケー
タをクリアし得るが、ISRインジケータは別個にクリアされる。図6に関連し
てすぐ下のセクションにおいて説明するこのオペレーション別の実施形態におい
て、バーチャルステータスレジスタまたはエイリアスステータスレジスタの利用
を通じて、ステータスレジスタ502内のインジケータを選択的にクリアする。
このインプリメンテーションにおいて、1つのISRインジケータをクリアする
ために別個の書込みオペレーションは不要である。
【0105】 図6は、図5に示す本発明の実施形態に改良を加えたものである。この改良例
において、エイリアスレジスタを、ステータスレジスタと関連付ける。図示の実
施形態中のエイリアスレジスタは実質的にステータスレジスタであるが、異なる
アドレスを通じてアクセスされる。そのため、エイリアスレジスタは、ステータ
スレジスタ中のビットあるいはインジケータが設定あるいはクリアされる事態ま
たはエイリアスレジスタ中の対応するビットあるいはインジケータが同じ状態に
設定される事態が発生するたびに、ステータスレジスタをミラーリングまたは模
倣する。しかし、(例えば、エイリアスレジスタをクリアすることによって)エ
イリアスレジスタ中のインジケータをクリアしたからといって、対応するステー
タスレジスタインジケータが必ずクリアされるとは限らない。その代わり、マス
クを用いて、ステータスレジスタインジケータを選択的にクリアできるようにす
る。従って、本発明の1つの特定の実施形態において、エイリアスレジスタは、
代替可能でかつ追跡可能な経路をステータスレジスタに提供する「バーチャル」
レジスタである。
【0106】 本発明の図示の実施形態において、ステータスレジスタを調べて(例えば、読
み出して)パケットが到着したか否かを判定する代わりに、ポーリングソフトウ
ェアが、エイリアスレジスタを調べる。ポーリングソフトウェアがエイリアスレ
ジスタを調べるたびに、1つ以上のエイリアスレジスタインジケータが、自身の
第1の状態に戻され得る(例えば、エイリアスレジスタが、読み出されるときに
クリアされる)。加えて、マスクを適用して、エイリアスレジスタがクリアされ
た場合にどのステータスレジスタインジケータがクリアされたかを判定する。例
示的に、マスクは、各ビット用のエントリまたはステータスレジスタのインジケ
ータを有し、エイリアスレジスタ中の各インジケータ用のエントリも有する。各
マスクエントリ中に格納された値は、関連するエイリアスレジスタインジケータ
がクリアされた場合に、対応するステータスレジスタインジケータをクリアすべ
き(例えば、値0に戻す)か否かを示す。マスクエントリ中の第1の値(例えば
、1)は、対応するステータスレジスタビットをクリアすべきことを示し、第2
の値(例えば、0)は、対応するステータスレジスタビットをクリアすべでない
ことを示す。
【0107】 当業者であれば、エイリアスレジスタを用いて、そのエイリアスレジスタをス
テータスレジスタからマスキングすることにより得られる利点を理解する。詳細
には、このコンフィギュレーションを用いれば、エイリアスレジスタを読み出す
ポーリングソフトウェアを、ソフトウェアがクリアするステータスレジスタイン
ジケータに関連するイベントを処理するように構成するだけでよい。例えば、ポ
ーリングソフトウェアがパケット転送イベントの処理のみを行い、ゆえにステー
タスレジスタ中のパケット転送インジケータのみをクリアする場合、ソフトウェ
アを他のイベントまたは条件を処理するように構成する必要は無い。それとは対
照的に、本発明の1つの実施形態において、エイリアスレジスタが無い場合、ポ
ーリングソフトウェアは、全てのステータスレジスタインジケータをクリアする
ため、ステータスレジスタインジケータによって記録された関連するエラーまた
は条件全てを処理できなければならない。
【0108】 ここで図6を参照して、ステータスレジスタ502は、図5に関連して説明し
た構成と同様の構成である。しかし、この図示の実施形態において、ISRイン
ジケータ514はオプションである。
【0109】 エイリアスレジスタ602のサイズは、ステータスレジスタ502のサイズと
同等であるが、但し、ISRインジケータ514に対応するエイリアスISRイ
ンジケータ614は省略可能である。従って、エイリアスレジスタ602中のパ
ケット転送インジケータ604、パケット伝送インジケータ606および第1の
エラーインジケータ608は、ステータスレジスタ502中の同様のエントリに
対応する。
【0110】 エイリアスレジスタ602中の各インジケータは、ステータスレジスタ502
中の自身の対応物が変化するたびにその対応物にマッチングするように状態を変
化させるが、エイリアスレジスタ602がクリアされると、マスク610は、逆
動作(reverse action)をフィルタリングする。詳細には、(例
えば、ポーリングを受けることに応答して)エイリアスレジスタ602中の1つ
以上のエイリアスインジケータがクリアされると、ステータスレジスタ502中
で指定されたインジケータのみがクリアされる。図示のインプリメンテーション
において、マスク610は、エイリアスレジスタと共にクリアされるステータス
レジスタ中の各インジケータについて、1つのインジケータを格納する。従って
、図6において、エイリアスレジスタ602がクリアされると(例えば、ポーリ
ングモジュールによって読み出されると)、ステータスレジスタ502において
パケット転送インジケータ504およびパケット伝送インジケータ506のみが
クリアされる。残りのインジケータは、自身の現在の状態を保持する。
【0111】 1つの実施形態において、ISRインジケータをエイリアスレジスタおよびマ
スクと共に用いて、ISRインジケータに対応するマスクエントリは、エイリア
スレジスタがクリアされたときにステータスレジスタ中のISRインジケータは
クリアされないことを示す値(例えば、0)を格納する。
【0112】 (レジスタまたは他のデータ構造体としてインプリメント可能な)プログラム
可能なマスクは、ホストコンピュータ上で動作するソフトウェアによって構成さ
れ得る。詳細には、各マスクエントリの設定は、ソフトウェアによって処理され
るアクションに従って決定され得る。例えば、ある実施形態において、ソフトウ
ェアが、「通常の」イベント(例えば、パケットの転送または伝送)のみを処理
する場合、マスクは、エイリアスレジスタが読み出された場合にステータスレジ
スタ中の対応するインジケータ(単数または複数)のみをクリアするように構成
され得る。別の実施形態において、ポーリングソフトウェアは、ステータスレジ
スタインジケータに関連するあらゆる条件またはイベントをバーチャルに処理し
得る。
【0113】 図示の実施形態において、図6中のエイリアスレジスタ602は、ステータス
レジスタ502にアクセスするためのバーチャルレジスタであるが、ステータス
レジスタが読み出された際、ステータスレジスタが(すなわち、ステータスレジ
スタ502として)直接アクセスされたか、または(すなわち、エイリアスレジ
スタ602を通じて)間接的にアクセスされたかを判定することができる。当業
者であれば認識するように、アクセスに関連するアドレスを調べれば、ステータ
スレジスタが直接アクセスされたかまたは自身のエイリアスを通じてアクセスさ
れたかが明らかになる。
【0114】 例示的に、ネットワークトラフィックレベルが重い間(例えば、ポーリングモ
ードのオペレーションがアクティブの場合)、ステータスレジスタは、エイリア
スレジスタ(例えば、エイリアスアドレス)を通じてアクセスされる。そうでな
い場合、ステータスレジスタは直接アクセスされ得る。加えて、異なるレベルの
トラフィックに対して、割込みモジュレータ中の時間カウンタおよび/またはパ
ケットカウンタ用に異なる閾値を用いることが所望され得ることを上述した。し
たがって、本発明の1つの実施形態において、割込みモジュレータは、(例えば
、別個の閾値レジスタ中に)複数の時間閾値および/またはパケット閾値を格納
する場合、カウンタ中にロードされる閾値は、ステータスレジスタがアクセスさ
れる様式によって判定され得る。
【0115】 詳細には、トラフィックレベルが重いとはいえない間(例えば、1つの割込み
の間に約50パケット未満のパケットを処理する場合)、ステータスレジスタ5
02は直接アクセスされ得る。ステータスレジスタ502がクリアされるたびに
、第1の時間閾値および/またはパケット閾値が、時間カウンタおよびパケット
カウンタにロードされる。トラフィックが重くなり、エイリアスレジスタがイン
プリメントされると、エイリアスレジスタがクリアされるたびに、第2の時間閾
値および/またはパケット閾値が、時間カウンタおよびパケットカウンタ中にロ
ードされる。
【0116】 図7は、ポーリングおよび割込み調整を用いて、ネットワークから受け取られ
たパケットの処理を有意に遅延させずにネットワークインターフェースによる割
込み生成を抑止する1つの方法を示すフローチャートである。図示のプロシージ
ャにおいて、ネットワークインターフェースは、割込みモードのオペレーション
からポーリングモードに遷移する。状態700は開始状態である。
【0117】 状態702において、割込みモードのオペレーションがアクティブになる。こ
のモードのオペレーションにおいて、ネットワークインターフェースから生成さ
れた割込みに応答して、ネットワークからのパケットがホストコンピュータプロ
セッサによって処理される。しかし、割込み生成速度は、上述したように調整可
能である。例えば、中程度レベルのトラフィックをネットワークインターフェー
スにおいて受信する場合、前セクションにおいて説明した割込み調整方法を用い
ることができる。
【0118】 状態704において、トラフィックレベルあるいは割込み速度または他のなん
らかのトラフィック測定基準が、ポーリングモードのオペレーションをインプリ
メントする方が効率的であることを示すか否かが判定される。例えば、1つの割
込みの間に処理されるパケットの数がプログラム可能な閾値(例えば、50)を
越えるか否かが判定され得る。この判定を行うための他の基準を挙げると、ネッ
トワークインターフェースがホストにパケットを転送する際に発行する割込みの
速度(例えば、約10,000/秒)またはプロセッサの利用レベル(例えば、
約90%)等がある。これらの閾値は、一度あるいは同時に測定され得、あるい
は、平均化され得、また、別の場合、一定の時間に亘ってあるいは複数の割込み
に亘って組み合わされ得る。適用可能な閾値が満たされた場合、図示のプロシー
ジャは、状態702に戻る。
【0119】 状態706において、ポーリングモードのオペレーションが開始される。本発
明の1つの実施形態において、ホストコンピュータプロセッサによって、ポーリ
ングモジュールがアクティブにされるかまたは実行対象としてロードされる。例
示的に、ポーリングモジュールまたはスレッドは、ホストコンピュータメモリ内
に常駐し、以下に説明するように、定期的にアクティブにされ、これにより、ネ
ットワークインターフェースをポーリングして、ネットワークインターフェース
から受信されたパケットの有無を判定する。ネットワークインターフェースから
受信されたパケットが有る場合、ポーリングモジュールは、パケットを処理し、
次いで中断モードに戻る。
【0120】 状態708において、1つ以上の割込みモジュレータカウンタ(例えば、時間
カウンタおよび/またはパケットカウンタ)用の閾値を、設定するか、または、
割込み調整中に用いられた低い値から増加させる。これらのカウンタをアクティ
ブにし、その後、上述したようにディクリメントまたはインクリメントする。閾
値を増加させることにより、割込みモジュレータによって発行され得る割込みが
、多少なりともより小さな周波数で発行される。割込みを遅延させれば、ポーリ
ングモジュールが自身のポーリングおよびパケット処理を行うことと、ホストプ
ロセッサが割込みへのサービスに伴うオーバーヘッドを回避することとが可能と
なる。
【0121】 この実施形態において割込みモジュレータは、パケットカウンタおよび/また
は時間カウンタ用の複数のレジスタ中に複数の閾値を格納し、これにより、カウ
ンタ閾値の変更を容易化することが可能となる。複数の閾値レジスタを用いて、
これらのカウンタは容易に再初期化またはスイッチされ得、これにより異なる閾
値を用いることが可能となる。詳細には、(例えば、エイリアスレジスタを用い
ずに)中程度レベルのネットワークトラフィックで動作する場合、(例えば、割
込みによって)ステータスレジスタがクリアされるたびに、パケットカウンタま
たは時間カウンタを第1の閾値に再初期化することができる。しかし、ポーリン
グおよび恐らくはエイリアスレジスタの使用によって特徴付けられる重たいトラ
フィック環境で動作する場合において、エイリアスレジスタがポーリングソフト
ウェアによって読み出された場合、カウンタを第2の閾値に再初期化することが
できる。
【0122】 状態710において、時間カウンタまたはパケットカウンタを調べて、カウン
タが満了したかまたはカウンタの限界値(例えば、0)に到達したかを判定する
。カウンタが満了したかまたはカウンタの限界値(例えば、0)に到達した場合
、状態712において、最後のポーリングまたは割込み以降にパケットが転送さ
れた場合、割込みを発行して、パケットがホストプロセッサの注意を待機してい
る旨をホストプロセッサに通知する。次いで、図示のプロシージャは、終了状態
718で終了する。
【0123】 状態710においてカウンタが満了していない場合、状態714においてポー
リングタイマを調べる。ポーリングタイマが満了したかまたはポーリングオペレ
ーションの時期である旨を示すと、ポーリングモジュールは、状態716におい
てネットワークインターフェースをポーリングし、任意の待機パケットを処理す
る。ポーリングタイマは、割込みモジュレータの時間カウンタと一体または別個
であり得る。
【0124】 状態710は、割込みモジュレータが閾値に到達すると、ネットワークインタ
ーフェースはポーリングオペレーションを待機し続けないことを示す。1つの別
の実施形態において、ポーリングタイマの調査は、パケットカウンタまたは時間
カウンタの調査よりも頻繁に行われ得る。言い換えれば、状態710〜712お
よび714〜716を逆転して、これにより、ポーリングオペレーションの時期
ではないことが決定された場合のみに割込みモジュレータのカウンタを調べるこ
とが可能となる。
【0125】 状態712または状態716の後、図示のプロシージャは状態718において
終了する。従って、図示のプロシージャは、1つのポーリングまたは割込みのみ
を示す。しかし、本発明の1つの実施形態において、終了状態718は、割込み
モードを再開すべきか否かを決定するテストと取り換えられる。終了状態718
が割込みモードを再開すべきか否かを決定するテストと取り換えられた場合、カ
ウンタ閾値は、リセットされ(例えば、恐らくは、別の閾値レジスタ中に保持さ
れている値にまで低減され)、プロシージャは状態702に戻り得る。終了状態
718が割込みモードを再開すべきか否かを決定するテストと取り換えられない
場合、プロシージャは状態710に戻るか、または、カウンタに調節が必要な場
合、状態708に戻る。上述したように、割込みモードのオペレーションを再開
すべきか否かを決定するテストは、ネットワークトラフィックのレベル、パケッ
トの到着速度あるいは転送速度、1つの割込みの間に処理されるパケット数、プ
ロセッサの利用レベルまたは他の何らかの測定基準の調査を伴い得る。詳細には
、パケット転送が検出されずにネットワークインターフェースが所定の数の回数
にわたってポーリングされた場合、割込みモードのオペレーションが適合され得
る。
【0126】 上記の実施形態をインプリメントするために、ホストコンピュータ上で動作す
るソフトウェア(例えば、デバイスドライバ)は、変更を必要とし得る。詳細に
は、タイマがソフトウェアがネットワークインターフェースをポーリングすべき
タイミングを判定できるように、ソフトウェアを改変することが可能である。加
えて、ソフトウェアは、ステータスレジスタではなくエイリアスレジスタを調査
(およびクリア)するようにも改変可能である。
【0127】 トラフィックが重い環境においてポーリングを行う間、ソフトウェアは、ネッ
トワークインターフェースのステータスレジスタまたはエイリアスレジスタを調
べるたびに、多数の処理対象パケットを有し得る。パケット処理中に割込みモジ
ュレータのカウンタが自身の閾値に到達する事態を回避するために、ポーリング
ソフトウェアは、オペレーションを一時停止、中断または割込んで、これにより
カウンタ(単数または複数)を再初期化し得る。例えば、割込みモジュレータの
時間カウンタが1ミリセカンドに設定されると、ポーリングソフトウェアは、そ
の時間カウンタが最後に再初期化された後にその時間カウンタを1ミリセカンド
未満に再初期化することを確実にしようとする。ポーリングソフトウェアは、時
間カウンタ、自身のカウンタ、あるいは別のカウンタあるいはクロック信号を調
べて、カウンタを再初期化すべきタイミングを判定し得る。
【0128】 例示的に、ポーリングソフトウェアが予期される量のトラフィックを処理する
際に必要とすると予定時間を用いて、割込みモジュレータの時間カウンタ用の閾
値を少なくとも部分的に判定する。時間カウンタの閾値およびポーリング周波数
も、ホストコンピュータプロセッサの速度により影響を受け得る。
【0129】 本発明の1つの実施形態において、割込みモジュレータを用いて、ホストプロ
セッサに発行される割込みの数を制御する場合、割込みマスクは、ステータスレ
ジスタと関連付けられ得る。割込みマスクは、前述したエイリアスレジスタマス
クと別個である。詳細には、1つの割込みマスクは、各ステータスレジスタイン
ジケータ用のエントリと、インジケータが第1の状態から第2の状態に変化した
ときに割込みを生成するか否かを示す各エントリの値とを含み得る。従って、割
込みマスクは、図5中のステータスレジスタ502とORゲート510との間の
位置に論理的に映像化され得る。上記の本発明の実施形態において、割込みマス
クは、特定のオペレーション環境に応じて利用可能または利用不可能である。
【0130】 Sun、Sun Microsystems、SPARCおよびSolari
sは、米国および他の国々にあるSun Microsystems,Inco
rporatedの商標または登録商標である。
【0131】 本発明の上記の説明および実施形態は、例示および説明目的のためのみに提示
される。これらの説明および実施形態は、完全なものとして意図されておらず、
また、本発明を開示の形式に限定されることを意図するものでもない。当業者に
とって、多くの改変および変更が明らかである。従って、上記の開示内容は、本
発明を限定するものではなく、本発明の範囲は、本明細書中の特許請求の範囲に
よって規定される。
【図面の簡単な説明】
【図1】 図1は、本発明の実施形態による、ネットワークインターフェース回路によっ
て生成される割込みを調整する割込みモジュレータである。
【図2】 図2は、本発明の実施形態による、図1の割込みモジュレータが割込みをイネ
ーブルおよびディセーブルする際の活動を示す状態図である。
【図3】 図3は、本発明の実施形態による、図1の割込みモジュレータを動作させる1
つの方法を示すフローチャートである。
【図4】 図4は、本発明の実施形態による、ポーリングおよび割込み調整を用いてホス
トコンピュータによって処理される割込みの数を低減する様子を示す状態図であ
る。
【図5】 図5は、本発明の実施形態による、割込み生成を示すネットワークインターフ
ェースステータスレジスタの図である。
【図6】 図6は、本発明の実施形態による、ホストコンピュータによって処理される割
込みの数を低減するために用いられるエイリアスレジスタおよびマスクと共に用
いられるネットワークインターフェースステータスレジスタである。
【図7】 図7は、本発明の実施形態による、ポーリングおよび割込み調整を通じて、ホ
ストコンピュータによって処理されるパケット転送割込みの数を低減する1つの
方法を示すフローチャートである。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AE,AL,AM,AT,AU,AZ, BA,BB,BG,BR,BY,CA,CH,CN,C R,CU,CZ,DE,DK,DM,EE,ES,FI ,GB,GD,GE,GH,GM,HR,HU,ID, IL,IN,IS,JP,KE,KG,KP,KR,K Z,LC,LK,LR,LS,LT,LU,LV,MA ,MD,MG,MK,MN,MW,MX,NO,NZ, PL,PT,RO,RU,SD,SE,SG,SI,S K,SL,TJ,TM,TR,TT,TZ,UA,UG ,UZ,VN,YU,ZA,ZW (72)発明者 チェン, リンダ アメリカ合衆国 カリフォルニア 95129, サン ノゼ, バーケット ドライブ 1318 Fターム(参考) 5B061 CC05 CC09 CC10 RR02 5B089 GA06 KA06 KC07 KG02 5K030 HA08 JL08 LA04 5K034 KK27 NN02 NN26

Claims (27)

    【特許請求の範囲】
  1. 【請求項1】 ネットワークインターフェースのポーリングを容易にする方
    法であって、 ネットワークインターフェースからの割込みの生成を示すように構成されたフ
    ィードバックインジケータ(514)を含む1組のステータスインジケータ(5
    02)を維持する工程と、 該ネットワークインターフェースから第1のパケットを転送する工程と、 該ネットワークインターフェースからの割込みを生成する工程と、 該割込みの生成に応答して、第1の状態から第2の状態へ該フィードバックイ
    ンジケータを変更する工程と を包含し、該パケットが処理されると、該フィードバックインジケータ以外に
    該ステータスインジケータのうちの1つ以上が該第1の状態に設定される、方法
  2. 【請求項2】 1組のエイリアスステータスインジケータ(602)を維持
    する工程であって、該エイリアスステータスインジケータの各々は、対応するス
    テータスインジケータが前記第1の状態から前記第2の状態へ変化する場合に、
    該第1の状態から該第2の状態に変化するように構成され、該エイリアステータ
    スインジケータがエイリアスフィードバックインジケータを含む、工程と、 パケットが前記ネットワークインターフェースから転送されたかどうかを判定
    するために、該ネットワークインターフェースにおいて、ホストコンピュータの
    ポーリングモジュールからポーリングを受け取る工程と をさらに包含する、請求項1に記載の方法。
  3. 【請求項3】 前記エイリアスステータスインジケータのうちの1つ以上を
    前記第2の状態から前記第1の状態に設定する工程と、 前記フィードバックインジケータ以外に前記ステータスインジケータのうちの
    1つ以上を前記第2の状態から前記第1の状態に選択的に設定する工程と をさらに包含する、請求項2に記載の方法。
  4. 【請求項4】 前記割込みを生成する工程が、割込みをホストコンピュータ
    に発行する工程を包含する、請求項1に記載の方法。
  5. 【請求項5】 前記割込みサービス中に、前記フィードバックインジケータ
    を前記第2の状態から前記第1の状態に戻す工程をさらに包含する、請求項4に
    記載の方法。
  6. 【請求項6】 通信デバイスからパケットを転送する方法であって、 通信デバイス内の所定の条件またはイベントを示すように構成された1組のス
    テータスインジケータ(502)を維持する工程であって、該ステータスインジ
    ケータが第1のステータスインジケータ(504)および割込みインジケータ(
    514)を含む、工程と、 該通信デバイスからパケットを転送する工程と、 該ステータスインジケータのうちの1つ以上を第1の状態から第2の状態に変
    更する工程と、 該ステータスインジケータの該変更に応答して、割込みをシグナリングする工
    程と、 該割込みインジケータを第2の状態に配置する工程と、 該1つ以上のステータスインジケータを該第2の状態から該第1の状態に戻す
    工程と、 該パケットの処理を終了した後に、該割込みインジケータを調べる工程と を包含する方法。
  7. 【請求項7】 前記割込みインジケータを前記第2の状態から前記第1の状
    態に戻す工程をさらに包含する、請求項6に記載の方法。
  8. 【請求項8】 前記第1のステータスインジケータは、前記パケットの前記
    転送中に遭遇するエラーに対応する、請求項6に記載の方法。
  9. 【請求項9】 前記1組のステータスインジケータにおける対応するステー
    タスインジケータが、前記第1の状態から前記第2の状態に変化する場合に、状
    態を変化するように構成される1組の擬似ステータスインジケータ(602)を
    維持する工程をさらに包含し、 該1組の擬似ステータスインジケータが、前記第1のステータスインジケータ
    (604)に対応する第1の擬似ステータスインジケータおよび前記割込みイン
    ジケータに対応する擬似割込みインジケータを含む、請求項6に記載の方法。
  10. 【請求項10】 ポーリングをホストコンピュータから受け取る工程をさら
    に包含し、該ポーリングは、パケットが前記通信デバイスから転送されたかどう
    かを判定するように設計される、請求項9に記載の方法。
  11. 【請求項11】 前記戻す工程は、 前記擬似ステータスインジケータのうちの1つ以上を前記第2の状態から前記
    第1の状態に設定する工程と、 前記第1のステータスインジケータを該第2の状態から該第1の状態に選択的
    に設定する工程と を包含する、請求項10に記載の方法。
  12. 【請求項12】 前記選択的に設定する工程は、マスク値を調べる工程を包
    含し、該マスク値は、対応する擬似ステータスインジケータが前記第1の状態に
    設定される場合に、ステータスインジケータが該第1の状態に設定されるかどう
    かを示すように構成される、請求項11に記載の方法。
  13. 【請求項13】 前記マスク値は、前記擬似割込みインジケータが前記第1
    の状態に戻される場合に、前記割込みインジケータが該第1の状態に戻されない
    ことを示すようにさらに構成される、請求項12に記載の方法。
  14. 【請求項14】 割込み信号ライン(134)および割込みモジュレータ(
    100)を含む通信デバイスであって、該割込み信号ライン(134)および割
    込みモジュレータ(100)は、該割込み信号ラインを介して該通信デバイスか
    らの割込みの発行を制御し、該割込みモジュレータが、 該通信デバイス内の条件またはイベントを示すように構成されたステータスイ
    ンジケータ(504、506、508)であって、該ステータスインジケータは
    、該条件またはイベントに応答して第1の状態から第2の状態へ設定される、ス
    テータスインジケータと、 該条件またはイベントに応答して、該割込み信号ラインを介して割込みを発行
    するように構成された割込み発生器と、 該割込み信号ラインに結合された割込みフィードバックインジケータ(514
    )であって、該割込みフィードバックインジケータは、該割込みの該発行に応答
    して、該第2の状態に設定される、割込みフィードバックインジケータと を含む、通信デバイス。
  15. 【請求項15】 前記割込みフィードバックインジケータは、前記割込みに
    応答して実行される割込み処理ルーチンを示す割込みサービス信号に応答して、
    前記第2の状態から前記第1の状態にリセットされるようにさらに構成される、
    請求項14に記載の通信デバイス。
  16. 【請求項16】 前記割込みフィードバックインジケータは、前記割込みに
    応答して、プロセッサが実行する割込み処理ルーチンの一部として、前記第2の
    状態から前記第1の状態にリセットされるようにさらに構成される、請求項14
    に記載の通信デバイス。
  17. 【請求項17】 前記割込みモジュレータは、 クロック信号に応答してインクリメント可能な時間カウントを格納するように
    構成された、時間カウンタ(102)と、 前記通信デバイスからパケットの前記転送に応答してインクリメント可能なパ
    ケットカウントを格納するように構成されたパケットカウンタ(106)と をさらに含み、前記ステータスインジケータは、該パケットの転送を示すよう
    に構成されたパケット転送インジケータ(504)であり、 前記割込み発生器は、該時間カウントが最終時間カウントに達するか、または
    該パケットカウントが最終パケットカウントに達する場合にのみ、該パケットの
    転送に応答して、割込みを生成するように構成される、請求項14に記載の通信
    デバイス。
  18. 【請求項18】 前記割込みモジュレータは、 第1の初期時間カウントを格納するように構成された第1の時間閾値格納デバ
    イス(104a)と、 第2の初期時間カウントを格納するように構成された第2の時間閾値格納デバ
    イス(104b)と、 第1の初期パケットカウントを格納するように構成された第1のパケット閾値
    格納デバイス(108a)と、 第2の初期パケットカウントを格納するように構成された第2のパケット閾値
    格納デバイス(108b)と をさらに含む、請求項17に記載の通信デバイス。
  19. 【請求項19】 前記時間カウントは、前記ステータスインジケータが前記
    第2の状態から前記第1の状態にリセットされる場合に、前記第1の初期時間カ
    ウントおよび前記第2の初期時間カウントのいずれかにリセットされる、請求項
    18に記載の通信デバイス。
  20. 【請求項20】 前記時間カウントは、前記割込みに応答して実行される割
    込み処理ルーチンを示す割込みサービス信号に応答して、前記第1の初期時間カ
    ウントおよび前記第2の初期時間カウントのいずれかにリセットされる、請求項
    18に記載の通信デバイス。
  21. 【請求項21】 前記パケットカウントは、前記ステータスインジケータは
    前記第2の状態から前記第1の状態にリセットされる場合に、前記第1の初期パ
    ケットカウントおよび前記第2の初期パケットカウントのいずれかにリセットさ
    れる、請求項18に記載の通信デバイス。
  22. 【請求項22】 前記パケットカウントは、前記割込みに応答して実行され
    る割込み処理ルーチンを示す割込みサービス信号に応答して、前記第1の初期パ
    ケットカウントおよび前記第2の初期パケットカウントのいずれかにリセットさ
    れる、請求項18に記載の通信デバイス。
  23. 【請求項23】 前記ステータスインジケータは、前記通信デバイスで受け
    取られたステータスクエリを示すポーリング信号に応答して、前記第1の状態に
    リセットされる、請求項14に記載の通信デバイス。
  24. 【請求項24】 前記割込みモジュレータは、 前記ステータスインジケータが前記第1の状態から前記第2の状態に設定され
    る場合に、該第1の状態から該第2の状態に設定されるように構成された擬似ス
    テータスインジケータ(604、606、608)をさらに含む、請求項14に
    記載の通信デバイス。
  25. 【請求項25】 前記擬似ステータスインジケータは、前記通信デバイスで
    受け取られたステータスクエリの示すポーリング信号に応答して、前記第2の状
    態から前記第1の状態にリセットされる、請求項24に記載の通信デバイス。
  26. 【請求項26】 前記割込みモジュレータは、前記擬似ステータスインジケ
    ータが前記第1の状態にリセットされる場合に、前記ステータスインジケータが
    該第1の状態にリセットされるかどうかを示すように構成されるプログラマブル
    マスク(610)をさらに含む、請求項24に記載の通信デバイス。
  27. 【請求項27】 プロセッサが実行すると、該プロセッサに通信デバイスの
    ポーリングを容易にする方法を実行させる命令を格納する、プロセッサ読み出し
    可能格納媒体であって、該方法は、 通信デバイスからの割込みの生成を示すように構成されたフィードバックイン
    ジケータを含む1組のステータスインジケータを維持する工程と、 該通信デバイスから第1のパケットを転送する工程と、 該通信デバイスからの割込みを生成する工程と、 該割込みの生成に応答して、該フィードバックインジケータを第1の状態から
    第2の状態に変更する工程と を包含し、該パケットが処理されると、該フィードバックインジケータ以外に
    該ステータスインジケータのうち1つ以上が、該第1の状態に設定される、プロ
    セッサ読み出し可能格納媒体。
JP2000602938A 1999-03-01 2000-02-29 ネットワークインターフェースにおいて割込みを示す方法および装置 Withdrawn JP2003524312A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/259,936 1999-03-01
US09/259,936 US6467008B1 (en) 1999-03-01 1999-03-01 Method and apparatus for indicating an interrupt in a network interface
PCT/US2000/005342 WO2000052585A2 (en) 1999-03-01 2000-02-29 Method and apparatus for interrupt handling

Publications (1)

Publication Number Publication Date
JP2003524312A true JP2003524312A (ja) 2003-08-12

Family

ID=22987063

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000602938A Withdrawn JP2003524312A (ja) 1999-03-01 2000-02-29 ネットワークインターフェースにおいて割込みを示す方法および装置

Country Status (5)

Country Link
US (1) US6467008B1 (ja)
EP (1) EP1157517A2 (ja)
JP (1) JP2003524312A (ja)
AU (1) AU3248400A (ja)
WO (1) WO2000052585A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005109214A1 (ja) * 2004-05-10 2005-11-17 Matsushita Electric Industrial Co., Ltd. 受信フレーム処理装置
JP2009134358A (ja) * 2007-11-28 2009-06-18 Fujitsu Ltd 通信プログラム、通信装置および通信方法
US8788735B2 (en) 2008-09-18 2014-07-22 Hitachi Industrial Equipment Systems Co., Ltd. Interrupt control apparatus, interrupt control system, interrupt control method, and interrupt control program

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760799B1 (en) 1999-09-30 2004-07-06 Intel Corporation Reduced networking interrupts
US6741594B1 (en) * 2000-06-15 2004-05-25 Advanced Micro Devices, Inc. Arrangement for identifying data packet types from multiple protocol formats on a network switch port
US6968392B1 (en) * 2000-06-29 2005-11-22 Cisco Technology, Inc. Method and apparatus providing improved statistics collection for high bandwidth interfaces supporting multiple connections
JP3389920B2 (ja) * 2000-07-10 2003-03-24 日本電気株式会社 ディスクアレイ装置およびディスクアレイ装置の割り込み実行方法
DE50114481D1 (de) 2000-09-22 2008-12-24 Infineon Technologies Ag Vorrichtung zur Auswahl und Weiterleitung von empfangenen Unterbrechungsanfragen gemäss konfigurierbarer Konditionen
US7103906B1 (en) * 2000-09-29 2006-09-05 International Business Machines Corporation User controlled multi-device media-on-demand system
US6865631B2 (en) * 2000-12-14 2005-03-08 International Business Machines Corporation Reduction of interrupts in remote procedure calls
US7093118B2 (en) * 2001-06-27 2006-08-15 Intel Corporation System and method for external bus device support
US7730202B1 (en) * 2001-07-16 2010-06-01 Cisco Technology, Inc. Dynamic interrupt timer
CN1636373B (zh) * 2001-09-26 2010-06-16 西门子公司 对数据网络的命令单元进行访问的方法
US6868466B2 (en) * 2001-09-27 2005-03-15 Intel Corporation Apparatus and method for packet ingress interrupt moderation
JP2003196166A (ja) * 2001-10-19 2003-07-11 Kawasaki Microelectronics Kk データ転送装置
US20030217185A1 (en) * 2002-03-29 2003-11-20 Anshuman Thakur Method and apparatus for reducing interrupts in a high-speed ethernet media access controller (MAC) by interrupt canceling
US7230929B2 (en) * 2002-07-22 2007-06-12 Qlogic, Corporation Method and system for dynamically assigning domain identification in a multi-module fibre channel switch
US7154886B2 (en) * 2002-07-22 2006-12-26 Qlogic Corporation Method and system for primary blade selection in a multi-module fiber channel switch
US7334046B1 (en) 2002-08-05 2008-02-19 Qlogic, Corporation System and method for optimizing frame routing in a network
KR100924693B1 (ko) * 2002-09-04 2009-11-03 삼성전자주식회사 인터럽트의 발생횟수를 최소화하는 네트워크 인터페이스카드(Network Interface Card) 및인터럽트 발생방법
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
US7362717B1 (en) 2002-10-03 2008-04-22 Qlogic, Corporation Method and system for using distributed name servers in multi-module fibre channel switches
US6886141B1 (en) * 2002-10-07 2005-04-26 Qlogic Corporation Method and system for reducing congestion in computer networks
US20040111537A1 (en) * 2002-12-05 2004-06-10 Intel Corporation Method, system, and program for processing operations
US7054972B2 (en) * 2002-12-13 2006-05-30 Lsi Logic Corporation Apparatus and method for dynamically enabling and disabling interrupt coalescing in data processing system
US7388843B2 (en) 2003-07-16 2008-06-17 Qlogic, Corporation Method and apparatus for testing loop pathway integrity in a fibre channel arbitrated loop
US7463646B2 (en) 2003-07-16 2008-12-09 Qlogic Corporation Method and system for fibre channel arbitrated loop acceleration
US7152132B2 (en) * 2003-07-16 2006-12-19 Qlogic Corporation Method and apparatus for improving buffer utilization in communication networks
US7355966B2 (en) 2003-07-16 2008-04-08 Qlogic, Corporation Method and system for minimizing disruption in common-access networks
US7792115B2 (en) 2003-07-21 2010-09-07 Qlogic, Corporation Method and system for routing and filtering network data packets in fibre channel systems
US7406092B2 (en) 2003-07-21 2008-07-29 Qlogic, Corporation Programmable pseudo virtual lanes for fibre channel systems
US7420982B2 (en) 2003-07-21 2008-09-02 Qlogic, Corporation Method and system for keeping a fibre channel arbitrated loop open during frame gaps
US7646767B2 (en) 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7430175B2 (en) 2003-07-21 2008-09-30 Qlogic, Corporation Method and system for managing traffic in fibre channel systems
US7894348B2 (en) 2003-07-21 2011-02-22 Qlogic, Corporation Method and system for congestion control in a fibre channel switch
US7684401B2 (en) 2003-07-21 2010-03-23 Qlogic, Corporation Method and system for using extended fabric features with fibre channel switch elements
US20050086401A1 (en) * 2003-10-17 2005-04-21 Intel Corporation Method, apparatus, system, and article of manufacture for generating interrupts
US20050097226A1 (en) * 2003-10-31 2005-05-05 Sun Microsystems, Inc. Methods and apparatus for dynamically switching between polling and interrupt to handle network traffic
US7421521B2 (en) * 2004-04-05 2008-09-02 Intel Corporation System, method and device for real time control of processor
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
US7340167B2 (en) 2004-04-23 2008-03-04 Qlogic, Corporation Fibre channel transparent switch for mixed switch fabrics
US7669190B2 (en) 2004-05-18 2010-02-23 Qlogic, Corporation Method and system for efficiently recording processor events in host bus adapters
US7937499B1 (en) 2004-07-09 2011-05-03 Oracle America, Inc. Methods and apparatus for dynamically switching between polling and interrupt mode for a ring buffer of a network interface card
US7404020B2 (en) 2004-07-20 2008-07-22 Qlogic, Corporation Integrated fibre channel fabric controller
US8295299B2 (en) 2004-10-01 2012-10-23 Qlogic, Corporation High speed fibre channel switch element
US7411958B2 (en) 2004-10-01 2008-08-12 Qlogic, Corporation Method and system for transferring data directly between storage devices in a storage area network
US7676611B2 (en) 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
DE102005009874B4 (de) * 2005-03-01 2010-04-15 Infineon Technologies Ag Verfahren zur Signalisierung eines Zustandes oder Ereignisses
JP4856983B2 (ja) * 2006-03-02 2012-01-18 株式会社日立製作所 ストレージシステム及びスケジューリング方法
JP2007206955A (ja) * 2006-02-01 2007-08-16 Sony Corp 情報処理装置および方法、プログラム、並びに記録媒体
US7548560B1 (en) 2006-02-27 2009-06-16 Qlogic, Corporation Method and system for checking frame-length in fibre channel frames
US7613816B1 (en) 2006-11-15 2009-11-03 Qlogic, Corporation Method and system for routing network information
US20090319810A1 (en) * 2007-01-11 2009-12-24 Panasonic Corporation Receiving apparatus and activation control method for receiving apparatus
US7913009B2 (en) * 2007-06-20 2011-03-22 Microsoft Corporation Monitored notification facility for reducing inter-process/inter-partition interrupts
US8223678B2 (en) * 2007-06-29 2012-07-17 Intel Corporation Power management of periodic transmissions from networking applications
JP5349816B2 (ja) * 2008-03-18 2013-11-20 富士通株式会社 回線監視装置及び回線監視方法
US8006006B2 (en) * 2008-06-19 2011-08-23 International Business Machines Corporation System and method for aggregating transmit completion interrupts
US8619775B2 (en) * 2008-07-21 2013-12-31 Ltn Global Communications, Inc. Scalable flow transport and delivery network and associated methods and systems
GB2478687B (en) 2008-12-22 2014-05-21 Ltn Global Communications Inc A system and method for recovery of packets in overlay networks
US8599851B2 (en) 2009-04-03 2013-12-03 Ltn Global Communications, Inc. System and method that routes flows via multicast flow transport for groups
US9106569B2 (en) 2009-03-29 2015-08-11 Ltn Global Communications, Inc. System and method that routes flows via multicast flow transport for groups
US8510403B2 (en) 2010-06-30 2013-08-13 Juniper Networks, Inc. Self clocking interrupt generation in a network interface card
JP5630232B2 (ja) * 2010-09-10 2014-11-26 株式会社リコー 情報処理装置、情報処理方法及び情報処理プログラム
US8560749B2 (en) * 2011-02-11 2013-10-15 Intel Corporation Techniques for managing power consumption state of a processor involving use of latency tolerance report value
US9021143B2 (en) 2012-11-30 2015-04-28 Intel Corporation Polling of I/O devices on host initiated communication transports
USRE49652E1 (en) 2013-12-16 2023-09-12 Qualcomm Incorporated Power saving techniques in computing devices
US10305928B2 (en) * 2015-05-26 2019-05-28 Cisco Technology, Inc. Detection of malware and malicious applications
JP7000088B2 (ja) * 2017-09-15 2022-01-19 株式会社東芝 通知制御装置、通知制御方法及びプログラム
US20190188111A1 (en) * 2019-02-26 2019-06-20 Intel Corporation Methods and apparatus to improve performance data collection of a high performance computing application
US11620154B2 (en) * 2020-01-02 2023-04-04 International Business Machines Corporation Suppressing interrupts to an application thread
US11349771B2 (en) * 2020-04-30 2022-05-31 Hewlett Packard Enterprise Development Lp Method and system for enhanced queue management in a switch

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317692A (en) 1991-01-23 1994-05-31 International Business Machines Corporation Method and apparatus for buffer chaining in a communications controller
US5412782A (en) 1992-07-02 1995-05-02 3Com Corporation Programmed I/O ethernet adapter with early interrupts for accelerating data transfer
US5319752A (en) 1992-09-18 1994-06-07 3Com Corporation Device with host indication combination
US5463752A (en) * 1992-09-23 1995-10-31 International Business Machines Corporation Method and system for enhancing the efficiency of communication between multiple direct access storage devices and a storage system controller
US5471618A (en) * 1992-11-30 1995-11-28 3Com Corporation System for classifying input/output events for processes servicing the events
US5414858A (en) * 1992-12-11 1995-05-09 International Business Machines Corporation System and method for dynamically varying between interrupt and polling to service requests of computer peripherals
SG47794A1 (en) 1993-09-30 1998-04-17 Intel Corp Buffer memory management for a computer network node
US5797037A (en) 1995-03-31 1998-08-18 Cirrus Logic, Inc. Interrupt request control logic reducing the number of interrupts required for I/O data transfer
US5659758A (en) 1995-07-07 1997-08-19 Sun Microsystems, Inc. Interrupt modular for receiving bursty high speed network traffic
US5943479A (en) 1997-01-02 1999-08-24 Digital Equipment Corporation Method for reducing the rate of interrupts in a high speed I/O controller
US6065073A (en) * 1998-08-17 2000-05-16 Jato Technologies, Inc. Auto-polling unit for interrupt generation in a network interface device

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005109214A1 (ja) * 2004-05-10 2005-11-17 Matsushita Electric Industrial Co., Ltd. 受信フレーム処理装置
JP2009134358A (ja) * 2007-11-28 2009-06-18 Fujitsu Ltd 通信プログラム、通信装置および通信方法
US8788735B2 (en) 2008-09-18 2014-07-22 Hitachi Industrial Equipment Systems Co., Ltd. Interrupt control apparatus, interrupt control system, interrupt control method, and interrupt control program

Also Published As

Publication number Publication date
EP1157517A2 (en) 2001-11-28
WO2000052585A2 (en) 2000-09-08
AU3248400A (en) 2000-09-21
WO2000052585A3 (en) 2001-03-08
US6467008B1 (en) 2002-10-15

Similar Documents

Publication Publication Date Title
JP2003524312A (ja) ネットワークインターフェースにおいて割込みを示す方法および装置
JP2002538729A (ja) 高速ネットワーク環境において割込みを抑止する方法および装置
US8677042B2 (en) Interrupt moderation
KR100969223B1 (ko) 피씨아이-이 엘원 에이에스피엠 이탈 지연을 개선하기 위한방법 및 시스템
WO2020236284A1 (en) System and method for facilitating efficient packet forwarding in a network interface controller (nic)
US7912082B2 (en) Shared virtual network interface
US7684330B2 (en) Flow based congestion control
US6868466B2 (en) Apparatus and method for packet ingress interrupt moderation
US20080091868A1 (en) Method and System for Delayed Completion Coalescing
Larsen et al. Architectural breakdown of end-to-end latency in a TCP/IP network
US6970921B1 (en) Network interface supporting virtual paths for quality of service
US20060221831A1 (en) Packet flow control
US6754755B1 (en) Service request system using an activity indicator to reduce processing overhead
JP3127523B2 (ja) 通信制御装置およびデータ送信方法
US11876859B2 (en) Controlling packet delivery based on application level information
JP2002538550A (ja) ネットワークインターフェースにおいて割込みを調整する方法および装置
WO2005055546A1 (ja) セッション中継装置、セッション中継方法及びセッション中継プログラム
WO2007074343A2 (en) Processing received data
KR100441884B1 (ko) 패킷 처리 엔진과 메인 프로세서간에 고속 블록 데이터전송을 수행하는 네트워크 시스템 및 그것의 dma운영방법
US7114022B2 (en) Method for generating interrupt signal and media access controller utilizing the same
EP1221099A1 (en) Remote event handling in a packet network
JP2003218878A (ja) 情報処理装置、記録媒体及びプログラム

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070501