(57)【要約】ネットワークたとえばイーサネット・ベースのネットワークからの到着メッセージを処理して、このようなメッセージをメモリ内にファイルすること、このようなメッセージをキャッシュ内に選択的に隠蔽することを支援するために、情報処理システムにおいてパターン・マッチングが用いられる。パターン・マッチングによって、ソフトウェア・ベースのプロセッサ・タスクを増加させることなく、メッセージを容認および拒否する効率を増大させる。到着メッセージを、パターンが存在すること、パターンが存在しないことについて、検索することができる。到着メッセージを、複数のパターンが存在することについて、検索することができる。パターン・マッチングの結果は、メッセージを容認および拒否することに対して使用できるだけでなく、受信後の他のタスクに対しても使用することができる。他のタスクとは、たとえば、特定のパターン・マッチを有するメッセージの確認された相対的優先度または絶対的重要度に従って到着メッセージを選択的に記憶すること、パターン・マッチに従ってマルチ・プロセッサ・コンピュータ・システム内の異なる処理ドメインに対するメッセージの選択的な方向づけなどのことである。
2007525037.tif 000002
【特許請求の範囲】
【請求項１】
メモリ、キャッシュ、およびパケット・コントローラを有し、前記メモリおよび前記キャッシュはそれぞれ前記パケット・コントローラに結合される情報処理システム内でメッセージを処理するための方法であって、
メッセージを受信すること、
前記メッセージ上でパターン・マッチングを行なって、前記受信メッセージが第１のパターンを含むか否かを示すとともに該第１のパターンに対応するパターン・マッチ属性を与えるパターン・マッチ結果を与えること、
前記メッセージを容認すること、
前記パターン・マッチ結果に基づいてバッファ記述子キュー（ＢＤＱ）を選択すること、
前記選択されたＢＤＱに従って前記メッセージをメモリに記憶すること、
前記容認されたメッセージの少なくとも一部をキャッシュに選択的に記憶すること、
を備え、前記容認されたメッセージの一部を、前記パターン・マッチ属性によって示す、方法。
【請求項２】
請求項１に記載の方法において、前記パターン・マッチ属性は、前記第１のパターンに対応する複数のＢＤＱのうちの１つを示し、前記複数のＢＤＱのうちの１つは、前記選択されたＢＤＱに対応する、方法。
【請求項３】
請求項１に記載の方法において、前記第１のパターンに対応するパターン・マッチ属性は、前記選択されたＢＤＱとしてデフォルトＢＤＱを示す、方法。
【請求項４】
請求項１に記載の方法において、前記パターン・マッチ属性はパターン・マッチ取り出しインディケータを与え、前記容認されたメッセージの前記一部をキャッシュに選択的に記憶することは、前記パターン・マッチ取り出しインディケータに基づいて行なわれ、前記パターン・マッチ取り出しインディケータが、取り出しが前記第１のパターンに対して有効であると示す場合には、前記容認されたメッセージの前記一部をキャッシュに記憶し、前記パターン・マッチ取り出しインディケータが、取り出しが前記第１のパターンに対して無効であると示す場合には、前記容認されたメッセージの前記一部をキャッシュに記憶しない、方法。
【請求項５】
請求項４に記載の方法において、前記パターン・マッチ属性は、取り出しインデックスおよび取り出し長さを与えて、キャッシュに記憶される前記容認されたメッセージの前記一部を示す、方法。
【請求項６】
請求項４に記載の方法において、前記パターン・マッチ属性は、前記容認されたメッセージの前記一部をキャッシュに記憶するために行なう、前記第１のパターンに対応するキャッシュ書き込み形式を示す、方法。
【請求項７】
請求項１に記載の方法において、前記情報処理システムは、前記メモリおよび前記キャッシュに結合される複数のプロセッサを含み、該複数のプロセッサのそれぞれは、割り当てられたＢＤＱを有し、前記パターン・マッチ結果は、前記メッセージを処理するための前記複数のプロセッサのうちの１つを示す、方法。
【請求項８】
請求項１に記載の方法において、前記パターン・マッチ結果は、前記メッセージに対応する優先度を示す、方法。
【請求項９】
請求項１に記載の方法であって、さらに、前記選択されたＢＤＱの少なくとも一部をキャッシュに記憶することを備える方法。
【請求項１０】
請求項９に記載の方法において、前記パターン・マッチ属性は、前記選択されたＢＤＱの少なくとも一部をキャッシュに記憶するために行なう、前記第１のパターンに対応するキャッシュ書き込み形式を示す、方法。
【請求項１１】
請求項１に記載の方法において、前記メッセージ上でパターン・マッチングを行なうことは、
前記第１のパターンが前記メッセージ内に存在するか否かを判定することであって、前記第１のパターンはパターン・マッチ・データによって示され、該パターン・マッチ・データは、対応するパターン・マッチ制御を有する、判定すること、
前記第１のパターンが存在するか否かの判定に応答して、前記パターン・マッチ制御に基づいて前記パターン・マッチ結果を与えること、
を含む、方法。
【請求項１２】
請求項１１に記載の方法において、前記パターン・マッチ制御は、前記第１のパターンが複数のパターンの連結か否かを示す連結インディケータを含む、方法。
【請求項１３】
請求項１１に記載の方法において、前記パターン・マッチ制御は、連続検索が有効であるか否かを示す連続検索インディケータを含む、方法。
【請求項１４】
請求項１１に記載の方法において、前記パターン・マッチ制御は逆パターン・インディケータを含み、前記逆パターン・インディケータが第１の値を有する場合には、前記パターン・マッチ結果は前記メッセージ内に前記第１のパターンが存在するか否かを示し、前記逆パターン・インディケータが第２の値を有する場合には、前記パターン・マッチ結果は前記第１のパターンが前記メッセージ内に存在しないか否かを示す、方法。
【請求項１５】
請求項１に記載の方法において、前記メッセージは、前記パターン・マッチ結果に基づいて容認される、方法。
【請求項１６】
情報処理システムであって、
メモリと、
キャッシュと、
前記メモリおよび前記キャッシュに結合されるパケット・コントローラと、
を備え、前記パケット・コントローラは、
メッセージを受信するための入力と、
複数のパターンを記憶するパターン・マッチ・レジスタと、
前記複数のパターンのそれぞれに対応するパターン・マッチ属性を記憶するパターン属性レジスタと、
前記メッセージ上でパターン・マッチングを行なうために、かつ前記受信メッセージが前記複数のパターンのうちの第１のパターンを含むか否かを示すパターン・マッチ結果を与えるために結合されるパターン・マッチング・ロジックと、
前記受信メッセージを、容認された場合に記憶するために結合される受信バッファと、
前記容認されたメッセージを前記受信バッファからメモリに与えるために、かつ前記容認されたメッセージの少なくとも一部をキャッシュに与えるために結合されるメモリ・コントローラと、
を含み、前記容認されたメッセージの前記一部は、前記第１のパターンに対応するパターン・マッチ属性によって示される、情報処理システム。
【請求項１７】
請求項１６に記載の情報処理システムにおいて、前記容認されたメッセージは、選択されたＢＤＱに従ってメモリに与えられる、情報処理システム。
【請求項１８】
請求項１７に記載の情報処理システムにおいて、前記選択されたＢＤＱは、複数のＢＤＱのうちの１つであり、前記第１のパターンに対応するパターン・マッチ属性によって示される、情報処理システム。
【請求項１９】
請求項１７に記載の情報処理システムにおいて、前記メモリ・コントローラは、前記選択されたＢＤＱの少なくとも一部をキャッシュに与えるために結合される、情報処理システム。
【請求項２０】
請求項１９に記載の方法において、前記パターン・マッチ属性は、前記選択されたＢＤＱの前記少なくとも一部をキャッシュに記憶するために行なう、前記第１のパターンに対応するキャッシュ書き込み形式を示す、方法。
【請求項２１】
請求項１６に記載の情報処理システムにおいて、前記第１のパターンに対応するパターン・マッチ属性は、取り出しインデックスおよび取り出し長さを与えて、キャッシュに与えられた前記容認されたメッセージの前記一部を示す、情報処理システム。
【請求項２２】
請求項１６に記載の情報処理システムにおいて、前記第１のパターンに対応するパターン・マッチ属性は、前記容認されたメッセージの前記一部をキャッシュ内に記憶するために行なうキャッシュ書き込み形式を示す、情報処理システム。
【請求項２３】
方法であって、
メッセージを受信すること、
第１のパターンに対応する第１のパターン・マッチが前記受信メッセージ内で検出されるか否かを判定することであって、前記第１のパターンは、パターン・マッチ・データによって示されるとともに、対応するパターン・マッチ容認インディケータおよび対応する連続検索有効インディケータを有する、判定すること、
前記第１のパターン・マッチが検出され、かつ前記対応するパターン・マッチ容認インディケータが、検出された第１のパターンを有する前記受信メッセージの容認を示す場合には、前記対応する連続検索有効インディケータに基づいて前記受信メッセージを選択的に容認すること、
を備える方法。
【請求項２４】
請求項２３に記載の方法において、前記メッセージを受信することは、パケットの少なくとも一部を受信することを含む、方法。
【請求項２５】
請求項２４に記載の方法において、前記パケットがさらに、イーサネット・パケットとして特徴付けられる、方法。
【請求項２６】
請求項２３に記載の方法において、前記第１のパターン・マッチが検出され、かつ前記第１のパターンに対応する前記パターン・マッチ容認インディケータが前記受信メッセージの容認を示す場合には、前記受信メッセージを容認することを、前記第１のパターンに対応する前記連続検索インディケータが連続検索を示さない場合に行なう、方法。
【請求項２７】
請求項２３に記載の方法において、前記第１のパターン・マッチが検出され、かつ前記第１のパターンに対応するパターン・マッチ容認インディケータが前記受信メッセージの容認を示す場合には、前記受信メッセージを容認することを、
前記第１のパターンに対応する連続検索インディケータが連続検索を示し、かつ、
前記受信メッセージの拒否を示さない対応するパターン・マッチ容認インディケータを有する第２のパターンに対応する第２のパターン・マッチが検出された場合に行なう、方法。
【請求項２８】
請求項２７に記載の方法において、前記第２のパターンは前記パターン・マッチ・データによって示され、前記第２のパターンに対応するパターン・マッチ容認インディケータは、前記受信メッセージを容認すること、前記受信メッセージを容認も拒否もしないことのうちの一方を示す、方法。
【請求項２９】
請求項２７に記載の方法において、前記第２のパターンに対応するパターン・マッチ容認インディケータは、前記受信メッセージを容認すること、前記受信メッセージを容認も拒否もしないことのうちの一方を示し、前記パターン・マッチングは前記第２のパターンに対して無効である、方法。
【請求項３０】
請求項２３に記載の方法において、前記第１のパターン・マッチが検出され、かつ前記第１のパターンに対応するパターン・マッチ容認インディケータが前記受信メッセージの容認を示す場合には、前記受信メッセージを容認しないことを、
前記第１のパターンに対応する連続検索インディケータが連続検索を示し、かつ、
前記受信メッセージの拒否を示す対応するパターン・マッチ容認インディケータを有する第２のパターンに対応する第２のパターン・マッチが検出された場合に行なう、方法。
【請求項３１】
請求項２３に記載の方法において、前記対応するパターン・マッチ容認インディケータは、前記受信メッセージを容認すること、拒否すること、容認も拒否もしないことのうちの１つを示す、方法。
【請求項３２】
請求項２３に記載の方法であって、さらに、
前記第１のパターン・マッチが検出され、かつ前記第１のパターンに対応するパターン・マッチ容認インディケータが前記受信メッセージの拒否を示す場合には、前記メッセージを拒否すること、
を備える方法。
【請求項３３】
請求項２３に記載の方法において、前記第１のパターンが、対応する逆パターン・インディケータを有し、
前記逆パターン・インディケータが第１の値を有する場合には、前記受信メッセージが前記第１のパターンを含むときに前記第１のパターン・マッチが検出され、
前記逆パターン・インディケータが第２の値を有する場合には、前記受信メッセージが前記第１のパターンを含まないときに前記第１のパターン・マッチが検出される、
方法。
【請求項３４】
請求項２３に記載の方法において、前記第１のパターンは、前記第１のパターン・マッチが検出されるか否かを判定するための前記受信メッセージ内の箇所を示す対応するマッチ・インデックスを有する、方法。
【請求項３５】
請求項２３に記載の方法において、前記第１のパターンが、対応する連結インディケータを有し、前記方法は、さらに、
第２のパターン・マッチが前記受信メッセージ内で検出されるか否かを判定することであって、
前記第１のパターン・マッチおよび前記第２のパターン・マッチが検出され、前記第１のパターンに対応するパターン・マッチ容認インディケータが前記受信メッセージの容認を示し、かつ前記第１のパターンに対応する連結インディケータが前記第１および第２のパターンの連結を示す場合には、対応する連続検索有効インディケータに基づいて前記メッセージを選択的に容認し、
前記第２のパターン・マッチが検出されず、前記第１のパターンに対応する連結インディケータが前記第１および第２のパターンの連結を示す場合には、前記第１のパターン・マッチは検出されないとみなす、判定すること、
を備える方法。
【請求項３６】
請求項２３に記載の方法であって、さらに、
ハッシュ・ヒットが起きたか否かを判定するためにハッシュ関数を実行することであって、ハッシュ・ヒットが起き、前記第１のパターン・マッチが検出され、かつ前記第１のパターンに対応するパターン・マッチ容認インディケータが前記受信メッセージの容認を示す場合には、対応する連続検索有効インディケータに基づいて前記メッセージを選択的に容認する、実行すること、
を備える方法。
【請求項３７】
方法であって、
メッセージを受信すること、
複数のパターンのうちの第１のパターンに対応する第１のパターン・マッチが前記受信メッセージ内で検出されるか否かを判定することであって、前記第１のパターンは、対応するパターン・マッチ容認インディケータを有する、判定すること、
前記第１のパターン・マッチが検出される場合には、前記複数のパターンのうちの少なくとも１つに対応する連結インディケータが連結を示すか否かを判定すること、
前記第１のパターン・マッチが検出され、かつ前記複数のパターンのうちの前記少なくとも１つの連結インディケータが連結を示す場合に、前記複数のパターンのうちの第２のパターンに対応する第２のパターン・マッチが前記受信メッセージ内で検出されるか否かを判定することであって、前記連結インディケータは、前記第１および第２のパターンのうちの一方に対応し、前記第２のパターンは、対応するパターン・マッチ容認インディケータを有する、判定すること、
前記第１のパターン・マッチが検出され、前記第１および第２のパターンのうちの一方に対応する連結インディケータが連結を示し、かつ前記第２のパターン・マッチが検出される場合には、前記第１のパターンに対応するパターン・マッチ容認インディケータと前記第２のパターンに対応するパターン・マッチ容認インディケータとのうちの少なくとも一方に基づいて、前記受信メッセージを選択的に容認すること、
を備える方法。
【請求項３８】
請求項３７に記載の方法において、前記第１のパターンに対応するパターン・マッチ容認インディケータは、前記第１のパターンを用いて処理されるメッセージを容認すること、拒否すること、および容認も拒否もしないことのうちの１つを示し、前記第２のパターンに対応するパターン・マッチ容認インディケータは、前記第２のパターンを用いて処理されるメッセージを容認すること、拒否すること、および容認も拒否もしないことのうちの１つを示す、方法。
【請求項３９】
請求項３７に記載の方法において、前記連結インディケータと、前記受信メッセージを選択的に容認するために用いられるパターン・マッチ容認インディケータのうちの前記１つとの両方が、前記第１のパターンと前記第２のパターンとのうちの同じ一方に対応する、方法。
【請求項４０】
請求項３７に記載の方法において、前記第１のパターン・マッチが検出され、前記第１および第２のパターンのうちの一方に対応する連結インディケータが連結を示し、かつ前記第２のパターン・マッチが検出される場合には、前記第１のパターンに対応するパターン・マッチ容認インディケータと前記第２のパターンに対応するパターン・マッチ容認インディケータとのうちの少なくとも一方に基づいて、前記受信メッセージを拒否する、方法。
【請求項４１】
請求項３７に記載の方法において、前記第１のパターンは対応する逆パターン・インディケータを有し、前記第２のパターンは対応する逆パターン・インディケータを有し、
前記第１のパターンに対応する前記逆パターン・インディケータが第１の値を有する場合には、前記受信メッセージが前記第１のパターンを含まないときに前記第１のパターン・マッチは検出され、前記第１のパターンに対応する前記逆パターン・インディケータが第２の値を有する場合には、前記受信メッセージが前記第１のパターンを含むときに前記第１のパターン・マッチは検出され、
前記第２のパターンに対応する前記逆パターン・インディケータが前記第１の値を有する場合には、前記受信メッセージが前記第２のパターンを含まないときに前記第２のパターン・マッチは検出され、前記第２のパターンに対応する前記逆パターン・インディケータが前記第２の値を有する場合には、前記受信メッセージが前記第２のパターンを含むときに前記第２のパターンは検出される、方法。
【請求項４２】
請求項３７に記載の方法において、前記第１のパターン・マッチおよび前記第２のパターン・マッチが検出される場合、前記受信メッセージ内で前記第２のパターンの後に前記第１のパターンが生じる、方法。
【請求項４３】
請求項３７に記載の方法において、前記メッセージを受信することは、パケットの少なくとも一部を受信することを含む、方法。
【請求項４４】
請求項４３に記載の方法において、前記パケットがさらに、イーサネット・パケットとして特徴付けられる、方法。
【請求項４５】
請求項３７に記載の方法において、前記第１のパターンは、前記受信メッセージ内で前記第１のパターン・マッチが検出されるか否かを判定するための前記受信メッセージ内の第１の箇所を示す対応するマッチ・インデックスを有し、前記第２のパターンは、前記受信メッセージ内で前記第２のパターン・マッチが検出されるか否かを判定するための前記受信メッセージ内の第２の箇所を示す対応するマッチ・インデックスを有する、方法。
【請求項４６】
請求項３７に記載の方法において、前記第１のパターン・マッチが検出され、前記複数のパターンのうちの前記少なくとも１つの連結インディケータが連結を示し、かつ前記第２のパターン・マッチが検出される場合に、前記受信メッセージは容認される、方法。
【請求項４７】
請求項３７に記載の方法において、前記第１のパターン・マッチが検出され、前記複数のパターンのうちの前記少なくとも１つの連結インディケータが連結を示し、かつ前記第２のパターン・マッチが検出される場合に、前記受信メッセージは、連続検索を行なうか否かを示す連続検索インディケータに基づいて選択的に容認される、方法。
【請求項４８】
パケット・コントローラであって、
メッセージを受信する入力と、
第１のパターンに対応する第１のパターン・マッチが前記受信メッセージ内で検出されるか否かを判定するとともに、少なくとも１つのパターン・マッチ・レジスタを含むパターン・マッチング・ロジックであって、該パターン・マッチ・レジスタは、前記第１のパターンを示すパターン・マッチ・データを記憶するとともに、前記第１のパターンに対応するパターン・マッチ容認インディケータと前記第１のパターンに対応する連続検索有効インディケータとを含むパターン・マッチ制御を記憶する、パターン・マッチング・ロジックと、
前記パターン・マッチング・ロジックに結合される制御ロジックであって、前記第１のパターン・マッチが検出され、前記第１のパターンに対応するパターン・マッチ容認インディケータが前記受信メッセージの容認を示す場合には、前記第１のパターンに対応する連続検索有効インディケータに基づいて前記受信メッセージを選択的に容認する、制御ロジックと、
を備えるパケット・コントローラ。
【請求項４９】
請求項４８に記載のパケット・コントローラにおいて、前記第１のパターンに対応する連続検索インディケータが連続検索を示さず、前記第１のパターン・マッチが検出され、かつ前記第１のパターンに対応するパターン・マッチ容認インディケータが前記受信メッセージの容認を示す場合には、前記制御ロジックが前記受信メッセージを容認する、パケット・コントローラ。
【請求項５０】
請求項４８に記載のパケット・コントローラにおいて、前記第１のパターン・マッチが検出され、かつ前記第１のパターンに対応するパターン・マッチ容認インディケータが前記受信メッセージの容認を示す場合に、前記制御ロジックが前記受信メッセージを容認することを、
前記第１のパターンに対応する連続検索インディケータが連続検索を示し、かつ、
前記パターン・マッチ・データによって示されるとともに、前記受信メッセージの拒否を示さない前記パターン・マッチ制御によって示される対応するパターン・マッチ容認インディケータを有する第２のパターンに対応する第２のパターン・マッチが検出されるときに行なう、パケット・コントローラ。
【請求項５１】
請求項４８に記載のパケット・コントローラにおいて、前記第１のパターン・マッチが検出され、かつ前記第１のパターンに対応するパターン・マッチ容認インディケータが前記受信メッセージの容認を示す場合に、前記制御ロジックが前記受信メッセージを容認しないことを、
前記第１のパターンに対応する連続検索インディケータが連続検索を示し、かつ、
前記パターン・マッチ・データによって示されるとともに、前記受信メッセージの拒否を示す前記パターン・マッチ制御によって示される対応するパターン・マッチ容認インディケータを有する第２のパターンに対応する第２のパターン・マッチが検出されるときに行なう、パケット・コントローラ。
【請求項５２】
請求項４８に記載のパケット・コントローラにおいて、対応するパターン・マッチ容認インディケータは、前記受信メッセージを容認すること、拒否すること、容認も拒否もしないことのうちの１つを示す、パケット・コントローラ。
【請求項５３】
請求項４８に記載のパケット・コントローラにおいて、前記パターン・マッチ制御は、前記第１のパターンに対応する逆パターン・インディケータを含み、
前記逆パターン・インディケータが第１の値を有する場合には、前記受信メッセージが前記第１のパターンを含むときに前記第１のパターン・マッチは検出され、
前記逆パターン・インディケータが第２の値を有する場合には、前記受信メッセージが前記第１のパターンを含まないときに前記第１のパターン・マッチは検出される、パケット・コントローラ。
【請求項５４】
請求項４８に記載のパケット・コントローラにおいて、前記パターン・マッチ制御は、前記第１のパターン・マッチが検出されるか否かを判定するための前記受信メッセージ内の箇所を示す前記第１のパターンに対応するマッチ・インデックスを含む、パケット・コントローラ。
【請求項５５】
請求項４８に記載のパケット・コントローラにおいて、前記パターン・マッチ制御は、前記第１のパターンに対応する連結インディケータを含み、
前記パターン・マッチング・ロジックは、前記受信メッセージ内で第２のパターン・マッチが検出されるか否かを判定し、
前記制御ロジックは、前記第１のパターン・マッチおよび前記第２のパターン・マッチが検出され、前記第１のパターンに対応するパターン・マッチ容認インディケータが前記受信メッセージの容認を示し、かつ前記第１のパターンに対応する連結インディケータが前記第１および第２のパターンの連結を示す場合には、対応する連続検索有効インディケータに基づいて前記メッセージを選択的に容認し、前記第２のパターン・マッチが検出されず、かつ前記第１のパターンに対応する連結インディケータが前記第１および第２のパターンの連結を示す場合には、前記第１のパターン・マッチは検出されないとみなす、パケット・コントローラ。
【請求項５６】
パケット・コントローラであって、
メッセージを受信する入力と、
第１のパターンに対応する第１のパターン・マッチが前記受信メッセージ内で検出されるか否か、および第２のパターンに対応する第２のパターン・マッチが検出されるか否かを判定するパターン・マッチング・ロジックであって、少なくとも１つのパターン・マッチ・レジスタを含み、該パターン・マッチ・レジスタは、前記第１のパターンおよび前記第２のパターンを示すパターン・マッチ・データを記憶するとともに、前記第１のパターンに対応するパターン・マッチ容認インディケータと、前記第２のパターンに対応するパターン・マッチ容認インディケータと、前記第１のパターンに対応する連結インディケータと、前記第２のパターンに対応する連結インディケータとを含むパターン・マッチ制御を記憶する、パターン・マッチング・ロジックと、
前記パターン・マッチング・ロジックに結合される制御ロジックであって、前記第１のパターン・マッチが検出され、前記第２のパターン・マッチが検出され、かつ前記第１および第２のパターンのうちの一方に対応する連結インディケータが連結を示す場合に、前記第１のパターンに対応するパターン・マッチ容認インディケータと前記第２のパターンに対応するパターン・マッチ容認インディケータとのうちの少なくとも一方に基づいて前記受信メッセージを選択的に容認する、制御ロジックと、
を備えるパケット・コントローラ。
【請求項５７】
請求項５６に記載のパケット・コントローラにおいて、前記第１のパターンに対応するパターン・マッチ容認インディケータと前記第２のパターンに対応するパターン・マッチ容認インディケータとのうちの一方と、前記第１および第２のパターンのうちの一方に対応する連結インディケータとの両方が、前記第１のパターンと前記第２のパターンとのうちの同じ一方に対応する、パケット・コントローラ。
【請求項５８】
請求項５６に記載のパケット・コントローラにおいて、前記第１のパターン・マッチが検出され、前記第２のパターン・マッチが検出されず、かつ前記第１および第２のパターンのうちの一方に対応する連結インディケータが連結を示す場合に、前記制御ロジックは前記受信メッセージを容認しない、パケット・コントローラ。
【請求項５９】
請求項５６に記載のパケット・コントローラにおいて、前記パターン・マッチ制御は、前記第１のパターンに対応する逆パターン・インディケータと、前記第２のパターンに対応する逆パターン・インディケータとを含み、
前記第１のパターンに対応する逆パターン・インディケータが第１の値を有する場合には、前記受信メッセージが前記第１のパターンを含まないときに前記第１のパターン・マッチは検出され、前記第１のパターンに対応する逆パターン・インディケータが第２の値を有する場合には、前記受信メッセージが前記第１のパターンを含むときに前記第１のパターン・マッチは検出され、
前記第２のパターンに対応する逆パターン・インディケータが前記第１の値を有する場合には、前記受信メッセージが前記第２のパターンを含まないときに前記第２のパターン・マッチは検出され、前記第２のパターンに対応する逆パターン・インディケータが前記第２の値を有する場合には、前記受信メッセージが前記第２のパターンを含むときに前記第２のパターンは検出される、パケット・コントローラ。
【請求項６０】
請求項５６に記載のパケット・コントローラにおいて、前記パターン・マッチ制御は、前記受信メッセージ内で前記第１のパターン・マッチが検出されるか否かを判定するための前記受信メッセージ内の第１の箇所を示す前記第１のパターンに対応するマッチ・インデックスと、前記受信メッセージ内で前記第２のパターン・マッチが検出されるか否かを判定するための前記受信メッセージ内の第２の箇所を示す前記第２のパターンに対応するマッチ・インデックスと、を含む、パケット・コントローラ。
【請求項６１】
請求項５６に記載のパケット・コントローラにおいて、前記第１のパターン・マッチが検出され、前記第１および第２のパターンのうちの一方に対応する連結インディケータが連結を示し、かつ前記第２のパターン・マッチが検出される場合に、前記制御ロジックは前記受信メッセージを容認する、パケット・コントローラ。
【請求項６２】
請求項５６に記載のパケット・コントローラにおいて、前記パターン・マッチ制御は、前記第１のパターンおよび前記第２のパターンのうちの一方に対応する連続検索有効インディケータを含み、前記第１のパターン・マッチが検出され、複数のパターンのうちの少なくとも１つのパターンの連結インディケータが連結を示し、かつ前記第２のパターン・マッチが検出される場合に、前記制御ロジックが前記受信メッセージを選択的に容認することを、連続検索有効インディケータに基づいて、かつ前記第１のパターンに対応するパターン・マッチ容認インディケータと前記第２のパターンに対応するパターン・マッチ容認インディケータとのうちの少なくとも一方に基づいて行なう、パケット・コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク通信に関し、より詳細には、ネットワークたとえばイーサネット（登録商標）・ネットワークを介して受信したメッセージの処理に関する。
【背景技術】
【０００２】
ローカル・ エリア・ネットワーク（ＬＡＮ：Local Area Network）、ワイド・エリア・ネットワーク（ＷＡＮ：Wireless Area Network ）および他の形式のネットワークには通常、多くの情報処理システムが含まれており、これらは、種々のパケット・ベースの通信プロトコルに従って動作する接続部を介して結合されている。たとえば、イーサネットＩＥＥＥ８０２．３プロトコルは、広く用いられているＬＡＮプロトコルであり、搬送波感知多重アクセス／衝突検出方式（ＣＳＭＡ／ＣＤ：Carrier-Sense Multiple Access/Collision Direct）アプローチに基づいている。イーサネットおよびＩＥＥＥ８０２．３プロトコルは類似しており、同じＬＡＮ上で共存することができる。そのため、両方ともイーサネットと呼ばれることがある。１０／１００イーサネットによって、イーサネット速度が１０から１００メガビット／秒（Ｍｂｐｓ）に増加し、バックボーンおよびサーバ接続性に対して単純でコスト効率の高い選択肢が得られる。ギガビット・イーサネットは、基本イーサネット・プロトコルの最上部に構築される別のイーサネット・プロトコルである。しかし、このプロトコルによって、速度は１０／１００イーサネットの１０倍に増加して、１０００Ｍｂｐｓすなわち１ギガビット／秒（Ｇｂｐｓ）になる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ネットワーク内の装置は多くの場合、その装置を対象としたメッセージを受信するとともに、その装置を対象としていないメッセージも受信する。そのため、このような装置は、各到着メッセージを局所的に分析して、メッセージを容認すべきか否かを判定しなければならない。通常、各装置のアドレスは、各受信メッセージ内のアドレスと何らかの形で比較されなければならない。正確なアドレス・マッチには、多大な計算が必要である。なぜならば、アドレス長が長く、多数のアドレスを比較しなければならないからである。装置は他の多くの装置に対するメッセージを容認する可能性があり、また非常に多数のメッセージを受信する場合があり、またネットワークの速度は増加する傾向にある。そのため、到着メッセージを処理する（たとえば容認または拒否する）問題によって、ネットワーク内の種々の装置で障害が発生し、また全体的な性能が低下する。従来の送信先アドレス認識方法では、メディア・アクセス制御（ＭＡＣ：Media Access Control）レベルよりも高い開放型システム間相互接続（ＯＳＩ：Open Systems Interconnection）レベルで行なうポスト・フィルタリングが必要であり、またかなりのソフトウェアおよび汎用処理ハードウェアを介入させる必要がある。一部の技術では、連想メモリ（ＣＡＭ：Content Addressable Memory）を用いるが、このような技術は通常、高価であり、消費電力が過剰に大きく、柔軟性がない。したがって、到着メッセージを処理する性能を高めることが必要とされている。
【０００４】
各装置には通常、到着メッセージを単に容認または拒否するだけでなく、メッセージの受信に応答して行なう種々のタスクがある。そのため、メッセージを介して受信した何らかのデータを短時間のうちに記憶してこのデータにアクセスする必要がある。したがって、このようなメッセージの処理を高めることを、受信メッセージの前処理（たとえば、着信メッセージを、プロセッサまたはソフトウェア駆動のシステム・リソースによって検査する前にソートすること）によって行ない、このようなリソースを他のタスクに対して自由に使用させて、重要なまたは優先度の高いフレームにアクセスする待ち時間を減らせられると有利である。
【発明を実施するための最良の形態】
【０００５】
本発明は、添付図面を参照することによって、より良好に理解することができるとともに、その多くの目的、特徴、および優位性を当業者に対して明らかにすることができる。異なる図面においても同じ参照符号を用いて、同様のまたは同一の物品を表す。
【０００６】
以下の説明は、本発明の少なくとも１つの例についての詳細な説明を与えるためのものであり、本発明自体を限定するものと理解してはならない。むしろ、任意の数の変形を、この説明に添付される特許請求の範囲において適切に規定される本発明の範囲に含めることができる。
【０００７】
図１は、本発明の実施形態による情報処理および通信システム１００を例示するブロック図である。システム１００には、プロセッサ１１０、キャッシュ１２０、メモリ１３０、システム・バス１４０、周辺機器１５０、およびパケット・コントローラ１６０が含まれている。プロセッサ１１０、キャッシュ１２０、メモリ１３０、周辺機器１５０、およびパケット・コントローラ１６０はすべて、システム・バス１４０を介して結合されている。システム１００は、イーサネット、ギグ・イーサネット（Gig-Ethernet）および／もしくはＸギグ・イーサネット・コントローラ、またはそうでなければそれらと互換性のものであっても良く、およびネットワーク・スイッチもしくはルータ、またはネットワーク内で通信するための他の形式の装置であっても良い。
【０００８】
パケット・コントローラ１６０には、バス・インターフェース・ユニット（ＢＩＵ：Bus Interface Unit）１７０、受信部１８０、送信部１８５、およびメディア・アクセス・コントローラ（ＭＡＣ：Media Access Controller ）１９０が含まれている。バス・インターフェース・ユニット１７０は、システム・バス１４０に結合されている。バス・インターフェース・ユニット１７０は、接続部１７２を介して受信部１８０に結合され、接続部１７４を介して送信部１８５に結合されている。ＭＡＣ１９０は、接続部１９２を介して受信部１８０に結合され、接続部１９４を介して送信部１８５に結合されている。ＭＡＣ１９０は、物理層ハードウェアに結合されていて、物理的な（ＰＨＹ）接続部１９８を介して他の装置からメッセージたとえばパケットを受信する。
【０００９】
メッセージは、ＭＡＣ１９０において受信されて、受信部１８０に送られる。メッセージは、アドレス認識、ハッシング、パターン・マッチング、またはハッシングおよびパターン・マッチングに応じて、容認されることもあれば、容認されないこともある（たとえば、少なくとも図２〜９を参照して後述する）。容認されたメッセージからの情報は、メモリ１３０に送られる。パターン・マッチングによって、ある特定の情報が、プロセッサ１１０または他のシステム・リソースによる迅速なアクセスに特に適していると、識別されても良い。この場合、このような情報を、メモリ１３０に送る通常のメッセージ・データから取り出して、取り出したデータをキャッシュ１２０に隠蔽する（たとえば、少なくとも図２〜６および１０〜１１を参照して後述する）。
【００１０】
開示される送信先アドレス認識プロトコルによって、ポスト・フィルタリングに対する必要性が最小限になる。またこのプロトコルは、メディア・アクセス制御レベルで行なうことができ、より高いＯＳＩレベルでさらなるソフトウェアおよびハードウェアを介入させる必要がない。アドレスのいくつかの組に対して、ユーザは、ＭＡＣレベルにおいて完全なフィルタリングが得られるパターンの組を見出すことができる。完全なハッシュ−時間フィルタリングを保証するために、決定論的アルゴリズムを用いて必要なパターンを生成することができる。また開示されるプロトコルによって、パターン・マッチ検索が、送信先アドレス内だけでなく、容認されたフレーム全体を通して有効になるため、ハッシュ−時間フィルタリングの結果を精緻なものにすることができる。
【００１１】
メモリ１３０には、到着メッセージを記憶するためのフレーム・データ・バッファ１３４と、記憶したメッセージを追跡するためのバッファ記述子キュー１３２とが含まれている。これについては、後にさらに詳細に説明する。キャッシュ１２０には、１つまたは複数のバッファ記述子キュー１２２を記憶することができる記憶場所と、取り出したデータ１２４を、後にプロセッサ１１０が使用できるように隠蔽する（すなわち記憶する）ための記憶場所とが、含まれている。取り出すデータは、本明細書で説明するある特定のパターン・マッチング・プロトコルに従ってキャッシュ１２０に記憶するために、到着メッセージの通常のフレーム・データから取り出すデータである。取り出すデータは、たとえば、重要なデータ、サービス品質（ＱＯＳ：Quality Of Service）レベルのデータ、またはアクセス時間を短くすることが望ましい場合がある優先度の高い他のデータであっても良い。メモリ１３０およびキャッシュ１２０は、プロセッサ１１０によりアクセス可能であり、またシステム１００内の他の装置またはプロセッサ（図示せず）によりアクセス可能でさえあっても良い。
【００１２】
図２は、システム１００のパケット・コントローラ１６０の受信部１８０を例示するブロック図である。受信部１８０には、直接メモリ・アクセス（ＤＭＡ：Direct Memory Access）コントローラ２１０、受信ＦＩＦＯ２２０、およびアドレス／データ・フィルタ（ＡＤＦ：Address/Data Filter ）２３０が含まれている。ＡＤＦ２３０は、ＭＡＣ１９０からメッセージを受信するために、かつこのようなメッセージをＦＩＦＯ２２０に選択的に送るために、結合されている。アドレス／データ・フィルタ２３０によって受信可能であるフレームを有する典型的なメッセージ・パケットについて、後に図３を参照して詳しく説明する。ＤＭＡは、メッセージ情報（たとえば、アドレスおよびデータ情報、メッセージ・フィルタ結果たとえばパターン・ステータス情報（これについては後述する））を、ＦＩＦＯコントローラ２２２の制御の下で受信ＦＩＦＯ２２０から受信するために、結合されている。
【００１３】
ＡＤＦ２３０には、一時的なキュー２３４、パターン・マッチング・ロジック２３２、アドレス認識およびハッシュ・ロジック２３８が含まれている。一時的なキュー２３４、パターン・マッチング・ロジック２３２、アドレス認識およびハッシュ・ロジック２３８はそれぞれ、ＭＡＣ１９０からメッセージ（たとえばフレーム）を受信するために、結合されている。一時的なキュー２３４は、パターン・マッチング・ロジック２３２とアドレス認識およびハッシュ・ロジック２３８とからメッセージ・フィルタ結果情報を受信するために、かつフレーム（またはその一部）およびメッセージ・フィルタ情報を、受信ＦＩＦＯ２２０に、受信ＦＩＦＯ２２０に応答して送るために、結合されている。
【００１４】
パターン・マッチングおよびハッシング・ロジックを行なわないと、直接およびフル・アドレス比較を、すべての受信メッセージの送信先アドレスと、システム１００またはシステム１００がメッセージを容認するように構成される他のシステムのアドレスとの間で、行なわなければならなくなる。このようなフル・アドレス比較には通常、プロセッサ１１０を何らかの形で妨害することが伴う。なぜならば、比較は通常、ソフトウェアの制御の下で行なわれるからである。
【００１５】
しかし、例示する実施形態においては、パターン・マッチング・ロジック２３２およびハッシング・ロジック２３８が設けられていて、フル・アドレス比較を行なう頻度が減っており、その結果、プロセッサ１１０は他のタスクを自由に実行することができる。パターン・マッチング・ロジック２３２が、受信フレームに対してパターン・マッチング解析を行なうことで、パターン・マッチング結果に従ってフレームを選択的に容認することができる。パターン・マッチングは、パターン・マッチング（ＰＭ：Pattern Matching）レジスタ２３３に記憶される値（たとえば制御ビットまたはフィールド）の制御の下で行なわれる。ハッシング・ロジック２３８が受信フレームのアドレスに対してハッシング解析を行なうことで、ハッシュ・ヒットまたはミス結果に従ってフレームを選択的に容認することが可能となり、容認される確率が高いアドレスに対してフル・アドレス比較を行なう可能性がさらに高まる。
【００１６】
パターン・マッチング・ロジック２３２のＰＭレジスタ２３３には、１６個のエントリが含まれている。各エントリには、５個の３２ビット・レジスタが含まれている。図５を参照すると、各エントリには、パターン（ＰＭデータ）、パターン・マスク（ＰＭマスク）、およびパターン・マッチング制御（ＰＭ制御）フィールドが含まれている。パターン・マッチング制御フィールドには、マッチング・インデックス（ＭＩ：Matching Index）フィールド、連続検索有効（ＣＳＥ：Continuous Search Enable）フィールド、反転（ＩＶ：Invert）フィールド、連結パターン（ＣＰ：Concatenate Pattern ）フィールド、およびパターン・マッチ容認制御（ＰＭＡＣ：Pattern Match Acceptance Field）フィールドが、含まれている。
【００１７】
ＰＭデータ・フィールドには、受信フレームと比較するためのビット・パターンが含まれている。ＰＭデータ・ビット・パターン（たとえば４バイト・パターン）がフレーム内に見出された場合には、パターン・マッチが検出される。ＰＭデータ・ビット・パターンがフレーム内に見出されない場合には、パターン・マッチは検出されない。ＰＭデータ・フィールドは、例示した実施形態においては３２ビットの長さである。ＰＭマスク・フィールドには、比較が行なわれているときにパターン内のある特定のビットをマスキングするビットが含まれている。たとえば、ＰＭマスクが適切に設定されているときには、フレームの一部におけるベンダ識別ビットを無視しても良い。
【００１８】
マッチング・インデックス（ＭＩ）フィールドは、受信フレームのどのくらい深いところで、パターン・マッチングを、対応するＰＭデータに対して開始するべきかを示す。たとえば、ＭＩフィールドには６ビットが含まれて、検索開始範囲として０〜２５６ビットを示しても良い。一実施形態においては、ＭＩによって、パターン・マッチングを開始するインデックスが、４バイトの倍数で、受信フレーム（ＤＡフィールドからＦＣＳまでを含む）の始まりから指定される。ＭＩをクリアすると、送信先アドレスの最初の４バイトが、パターン・マッチングに対する開始点となる。ＭＩに対する最大のプログラム値は、現在説明している実施形態では、６３（２５２バイト・オフセット）である。各４バイト・パターンに対するＭＩ値は、連続または非連続のパターンを可能にするときでさえ、受け付ける。
【００１９】
連続検索有効（ＣＳＥ）フィールドは、マッチが見出されたときに取るべき動作の形式に影響を及ぼす。具体的には、ＣＳＥビットは、パターン・マッチが起きたら即座に動作を取るべきか、あるいはパターン・マッチが起きたらさらなるパターン・マッチ検索を行なうべきかを示す。ＣＳＥビットが設定されていると、エントリ上でマッチが起きた場合にパターン・マッチングを続けるべきであることを示す。たとえば、パターン・マッチが見出され、かつ連続検索が有効である場合には、パターン・マッチング・ロジック２３２は引き続き、ＰＭレジスタ２３３の他のレジスタからのＰＭデータの他のマッチを検索することを、２５６バイトの最大値まで行なう。他のマッチが起きなかった場合には、マッチした最後のエントリに対応する属性を用いる。継続されるパターンはすべて、パターン・マッチングに基づく最終的な容認に対して拒否してはならない。たとえば、最初のパターン・マッチは、少なくとも条件付きで容認しなければならず、その後のパターンはすべて、容認するか、またはフレームを容認するために容認も拒否もしてはならない。その後のパターン・マッチの拒否が行なわれた場合、ＣＳＥの値は無視され、フレームは拒否され、検索は停止される。パターン・マッチが見出され、連続検索が無効（ＣＳＥ＝０）である場合には、他のすべてのパターンの検索がパターン・マッチング・ロジック２３２によって停止され、フレームが容認もしくは拒否されるか、あるいは特定のパターン・マッチが起きたという事実に基づいて他の判定がされる。
【００２０】
連結パターン（ＣＰ）フィールドでは、ＰＭレジスタ２３３の各エントリにおいて利用可能なＰＭデータの３２ビットを超える値を比較することができる。ＣＰビットが設定されている場合には、現在のＰＭレジスタに続く隣接するＰＭレジスタ２３３は、このパターンの続きであるとみなされ、次のＰＭデータ・エントリは、現在のＰＭデータ・エントリに連結される。この場合、各ＰＭデータ・エントリは、パターン・マッチが起きるフレーム内で見出されなければならないが、２組のマッチング・ビットは、それらの個々のＭＩに従ってフレーム内のどこにでも存在する可能性がある。ＣＰビットが設定されていない場合には、パターンの連結は行なわれない。最後のＰＭレジスタ２３３のＣＰフィールドは、このフィールドに記憶されている値に関係なく、クリアされているとみなされる。ＣＰが設定される最も低い数値ＰＭレジスタ２３３には、パターン・マッチング制御と連結パターンに対して使用される属性情報（ＭＩ以外）とが含まれている。各連結パターンに対して、ＭＩフィールドを適切な４バイトの倍数に設定して、すべてのパターンがフレームの最初の４バイトに対してマッチングを試みるようなことがないようにしなければならない（ＭＩがクリアされた状態である場合）。
【００２１】
反転（ＩＶ）フィールドによって、フレームに対するパターンの比較を、真または補形式で行なうことができる。たとえば、反転が設定されていない場合（ＩＶ＝０）、パターン・マッチが起きるのは、データ・マッチングが起きている（たとえば、受信フレーム内にＰＭデータが見出される）ときだけである。反転が設定されている場合（ＩＶ＝１）、パターン・マッチが起きるのは、データ・マッチングが起きていない（たとえば、受信フレーム内にＰＭデータが見出されない）ときだけである。
【００２２】
ＰＭＡＣフィールドによって、フレームのフィルタリングが、パターン・マッチングに基づいて制御される。ＰＭＡＣには、以下のものを示す２ビットが記憶される。（ｉ）対応するパターンに対するパターン・マッチングが有効であるか否か、（ｉｉ）対応するパターンに対してパターン・マッチングが有効であるならば、パターン・マッチングの効果をいったん達成させる。たとえば、ＰＭＡＣフィールドが００である場合には、特定のエントリに対するパターン・マッチングは無効であり、対応するパターンに対してパターン・マッチングは起きず、パターン・マッチング・ロジック２３２は次のＰＭレジスタ２３３内の次のパターンに自由に進める。ＰＭＡＣフィールドが００ではない場合、パターン・マッチングは有効である。ＰＭＡＣフィールドが１１の場合、パターン・マッチが起きたらフレームを拒否する。ＰＭＡＣフィールドが１０の場合、連続検索が無効ならば（ＣＳＥ＝０）、フレームを無条件に容認し、連続検索が有効ならば（ＣＳＥ＝１）、条件付きで容認する。ＰＭＡＣフィールドが０１の場合、フレームを容認も拒否もしない。この場合、パターンは、マッチが起きたときにフレームを容認または拒否するために用いられる基準ではなく、パターン・マッチ結果に関して後処理を行なうために情報が収集されるが、収集される情報に基づいてフレームを容認または拒否する判定がされることはない。後処理には、以前のパターンに基づいてまたは送信先アドレス認識に基づいて容認されたフレーム上のデータを、ファイルするかあるいは取り出すことが含まれていても良いし、または他の分類機能を含めることもできる。フレームは、ハッシュ・プロセス、他のパターン・マッチング・プロセス等によって、後に容認することができる。
【００２３】
再び図２を参照すると、ＤＭＡ２１０には、受信バッファ２１１、取り出しエンジン２１２、パターン属性レジスタ２１３、バッファ記述子およびファイリング・プロセッサ（ＢＤＦＰ：Buffer Descriptor and Filtering Processor ）２１４、ステータス・レジスタ２１５、バッファ記述子アドレス・レジスタ２１６が含まれている。本明細書で説明する論理ブロックは典型的なものであり、異なる実施形態では、機能の論理パーティションが異なっていても良い。たとえば、一実施形態においては、ＤＭＡ２１０には、取り出し、バッファ記述子処理、およびファイリング処理を行なうためのメモリ・コントローラが含まれていると想定しても良い。
【００２４】
受信バッファ２１１は、受信ＦＩＦＯ２２０からメッセージ・フレームを受信するために結合されている。ステータス・レジスタ２１５は、受信ＦＩＦＯ２２０からパターン・ステータス（ＰＳ：Pattern Status）情報を受信するために結合されている。パターン・ステータスには、パターン番号（たとえばＰＭレジスタ番号）および対応するパターン・ヒット表示が含まれている。ＦＩＦＯコントローラ２２２は、このような情報の転送を制御するためにＤＭＡ２１０に結合されている。受信バッファ２１１は、フレーム・データを接続部１７２を介してバス・インターフェース・ユニット１７０に送るために結合されている。
【００２５】
取り出しエンジン２１２は、取り出し制御情報を受信バッファ２１１に送って、どのフレーム情報を取り出してキャッシュ１２０に転送するかを示すために結合されている。取り出しエンジン２１２は、取り出した情報に関する属性を接続部１７２を介してバス・インターフェース・ユニット１７０に送るために結合されている。たとえば、取り出しエンジン２１２は、受信ＦＩＦＯによってメモリおよびまたはキャッシュに送られるデータが、取り出されるのかあるいは通常なのかを示し、そのデータをメモリ１３０に記憶するのかあるいはメモリ１３０にも記憶してキャッシュ１２０にも隠蔽するのかを示し、データに付随する任意の優先度情報を示す。ステータス・レジスタ２１５は、パターン・ステータス情報を取り出しエンジン２１２に送って、どのフレーム・データを取り出すべきかを示す。また取り出しエンジン２１２は、パターン属性レジスタ２１３から取り出し制御情報を受信するために結合されている。たとえば、パターン属性レジスタ２１３は、取り出しインデックスおよび取り出し長さを取り出しエンジン２１２に送る（後述する）。
【００２６】
パターン属性レジスタ２１３は、どのバッファ・キューにおいてフレーム・データ（ＰＭＦ）をバッファ記述子アドレス・レジスタ２１６にファイルするかを示すファイリング情報を送るために結合されている。ステータス・レジスタ２１５は、パターン・マッチ情報たとえばマッチされた実際のパターンの表示をＢＤＦＰ２１４に送るために結合されている。バッファ記述子アドレス・レジスタ２１６は、各バッファ記述子キュー（ＢＤＱ４１０，４２０，４３０，および４４０）に対するベース・アドレス、各キュー・ポインタ（ＢＤＱ＿ＢＡＳＥ、ＢＤＱ＿ＣＵＲＲＥＮＴ、およびＢＤＱ＿ＮＥＸＴ）、ならびにデフォルト・キューをＢＤＦＰ２１４に送るために結合されている。ＢＤＦＰ２１４は、アドレスおよびデータ情報を接続部１７２を介してバス・インターフェース・ユニット１７０に送るために結合されている。
【００２７】
パターン属性レジスタは、マッチが起きたときの動作を指定するためにユーザによって書き込まれる。すなわち、フレーム情報をどこにファイルするか、フレーム情報をいつ取り出すか、受信フレームおよびその付随するバッファ記述子をどのように記憶するか、である。現在説明している実施形態においては、全体で１６個のレジスタまたはエントリがサポートされる。このようなレジスタの１つ（または代替レジスタ）は、デフォルト・レジスタとして指定しても良いし、さらにパターン・マッチが起きなかったときの動作を指定する情報を含んでいても良い。図５を参照すると、各エントリには、取り出されるキャッシュ（たとえばＬ２キャッシュ）書き込み形式（ＥＬＣＷＴ：Extracted Cache Write Type）、バッファ記述子キャッシュ書き込み形式（ＢＤＬＷＴ：Buffer Descriptor Cache Write Type）、キュー分類（ＱＣ：Queue Classification）、パターン・マッチ・ファイル（ＰＭＦ：Pattern Match File）、パターン・マッチ取り出し（ＰＭＥ：Pattern Match Extract ）、取り出されるインデックス（ＥＩ：Extracted Index ）、および取り出される長さ（ＥＬ：Extracted Index ）が含まれている。他のビット・フィールドが、任意の数の他の機能を有効にするかあるいはサポートするために含まれていても良い。たとえば、データ・スヌープ・ビットが、メモリに対する受信フレームのスヌーピングまたは受信したバッファ・データ・メモリ・アクセスのスヌーピングをサポートするために含まれていても良い。この場合、メモリに対するアクセスがあったときに、キャッシュは、メモリに対する読み出しまたは書き込みアクセスをスヌープして、キャッシュがアドレスを検出してその後に適切な動作を取れるようにすることができる。適切な動作とは、たとえば、キャッシュに記憶されたデータのコピーを無効にすること、メモリからキャッシュ・データを更新すること、またはメモリにデータを記憶することと実質的に並行してキャッシュにデータを記憶すること、である。パターン属性レジスタは、説明した情報の内容に対する典型的なメモリ場所である。他の実施形態においては、このような情報の内容（他のビット構成、分散されたレジスタ場所などを含む）を記憶するための他の構成が含まれていても良い。
【００２８】
取り出されるキャッシュ書き込み形式（ＥＬＣＷＴ）フィールドによって、取り出したデータに対して行なうべき書き込みトランザクション形式が指定される。パターン・マッチング取り出し（ＰＭＥ）フィールドが設定され、対応するパターン・マッチが起き、取り出し長さ（ＥＬ）フィールドが非ゼロであるならば、取り出し書き込みトランザクションが行なわれる。一実施形態においては、ＥＬＣＷＴが００である場合には、割り当てが行なわれず、ＥＬＣＷＴが０１である場合には、取り出しが行なわれず、ＥＬＣＷＴが１０である場合には、キャッシュ・ラインが割り当てられ、ＥＬＣＷＴが１１である場合には、キャッシュ・ラインが割り当てられてロックされる。連結パターン構成の場合、用いられるＥＬＣＷＴは、最も低い数値パターン属性レジスタからのものである。キャッシュに対する書き込みは、スヌープによって行なわれる。
【００２９】
バッファ記述子キャッシュ書き込み形式（ＢＤＬＷＴ）フィールドによって、受信フレームに対するバッファ記述子に対して行なうべき書き込みトランザクション形式が指定される。これが行なわれるのは、ＰＭＦまたはＰＭＥの値にかかわらず、パターン・マッチが起きた場合である。キャッシュに対する書き込みは、スヌープによって行なわれる。一実施形態においては、ＢＤＬＷＴが００である場合には、割り当てが行なわれず、ＢＤＬＷＴが１０である場合には、キャッシュ・ラインが割り当てられ、ＢＤＬＷＴが１１である場合には、キャッシュ・ラインが割り当てられてロックされる。
【００３０】
パターン・マッチ取り出し（ＰＭＥ）フィールドは、パターン・マッチ・ベースの取り出しが有効であるか否かを示す。パターン・マッチ取り出しビットが設定されている場合（ＰＭＥ＝１）には、取り出しは有効である。パターン・マッチ取り出しビットが設定されていない場合（ＰＭＥ＝０）には、取り出しは無効である。
【００３１】
ＰＭＦフィールドが設定されていて、対応するパターン・マッチが起きた場合に、到着フレームをファイルする受信キュー分類が、キュー分類（ＱＣ）によって指定される。連結パターン構成の場合、用いられるＱＣは、最初の４バイト・パターンからのものである。ＱＣが００である場合には、キュー＃０が使用され、ＢＤＱ０＿ＢＡＳＥが示すアドレスで始まるバッファ記述子が用いられる。ＱＣが０１である場合には、キュー＃１が使用され、ＢＤＱ１＿ＢＡＳＥが示すアドレスで始まるバッファ記述子が用いられる。ＱＣが１０である場合には、キュー＃２が使用され、ＢＤＱ２＿ＢＡＳＥが示すアドレスで始まるバッファ記述子が用いられる。ＱＣが１１である場合には、キュー＃３が使用され、ＢＤＱ３＿ＢＡＳＥが示すアドレスで始まるバッファ記述子が用いられる。
【００３２】
パターン・マッチ・ファイル（ＰＭＦ）は、フレームがファイルされるメモリ１３０内の場所を判定するためにＱＣフィールドが用いられるか否かを示す。たとえば、ＰＭＦ＝０で、マッチが起きた場合には、デフォルト属性レジスタ内のＱＣフィールドが、フレームがファイルされる場所を判定するために用いられる。ＰＭＦ＝１で、マッチが起きた場合には、マッチしたパターンに対応するレジスタ内のＱＣフィールドが、フレームがファイルされる場所を判定するために用いられる。
【００３３】
またパターン属性レジスタ２１３も、ユーザによって書き込まれ、パターン・マッチが起きてレジスタ２１３内のパターン・マッチ取り出し（ＰＭＥ）ビットが設定されている場合に用いるべき取り出しインデックスおよび取り出し長さが指定される。取り出されるインデックス（ＥＩ）は、データの取り出しを始める受信フレーム内の最初のバイトを示す。ＤＭＡコントローラ２１０はこのＥＩフィールドを用いて取り出しを行なうが、それは、パターン・マッチ取り出しフィールド（ＰＭＥ＝１）が設定されていて、対応するパターン・マッチが起きた場合である。連結パターン構成の場合（ＣＰ＝１）には、用いられるＥＩは、最も低い数値レジスタ（たとえば連結鎖内の最初のレジスタ）からのものである。取り出される長さ（ＥＬ）フィールドによって、受信フレームから取り出すべきバイトの数が指定される。ＤＭＡコントローラ２１０はＥＬフィールドを用いて取り出しを行なうが、それは、パターン・マッチ取り出しフィールド（ＰＭＥ＝１）が、対応するパターン・マッチに対して設定されている場合である。連結パターン構成の場合には、最も低い数値パターン属性レジスタからのＥＬが用いられる。ＥＬがゼロである場合には、取り出しは行なわれない。
【００３４】
図４は、複数の典型的なバッファ記述子キューＢＤＱＯ，ＢＤＱ１，ＢＤＱ２からＢＤＱＭまでを例示するブロック図である。各バッファ記述子キューには、ＢＤＱＯ，ＢＤ０４１２，ＢＤ１４１４，ＢＤ２４１６からＢＤＮ４１８までに対して示される記憶場所などの複数のバッファ記述子が含まれる。各バッファ記述子キューは、リング構造を有し、３つのポインタを介してアクセスされる。すなわち、ＢＤＱ＿ＢＡＳＥ、ＢＤＱ＿ＣＵＲＲＥＮＴ、およびＢＤＱ＿ＮＥＸＴである。各バッファ記述子記憶場所には、メモリ１３０および／またはキャッシュ１２０に記憶される受信フレーム情報に関する情報が記憶される。たとえば、このような情報としては、ステータスおよび制御４５２、データ長４５４、データ・バッファ・ポインタ４５６、パターン・マッチ・ステータス４５８、相対的取り出しインデックス４６０、取り出し長さ４６２、およびバイト・カウント４６４が挙げられる。各バッファ記述子キューは、対応するフレームに対して異なる優先度を表わすことができる。図１に示したように、バッファ記述子キューは、メモリ１３０に記憶され、ＢＤＬＷＴが適切に設定されているならばキャッシュ１２０に記憶されることもある。バッファ記述子キューを記憶することは、フレーム・データの対応する取り出しが行なわれている状態で行なっても良いし、行なわれていない状態で行なっても良い。
【００３５】
図６は、システム１００の典型的な処理フローを例示するフロー・チャートである。処理６１０においてフレームが受信されると直ちに、判定６２０において、フレームを容認すべきか否かがＡＤＦ２３０によって判定される。フレームを容認するためのプロセスについては、少なくとも図７〜９を参照して、本明細書においてさらに説明する。判定６２０においてフレームが容認されない場合、処理６１０において、ＡＤＦ２３０はさらなるフレームを待ち受ける。判定６２０においてフレームが容認された場合には、処理６３０において、フレームおよびパターン・ステータスが一時的なキュー２３４から受信ＦＩＦＯ２２０に送られる。フレームおよびパターン・ステータスが受信ＦＩＦＯ２２０に送られた後で、処理６４０において、パターン・ステータスおよびフレーム・データがＤＭＡ２１０に送られる。パターンがＤＭＡ２１０に転送されると直ちに、処理６５０において、ＤＭＡ２１０はフレーム・データをメモリに記憶することができる。また処理６５０において、パターン・マッチ・レジスタ２３３内の有効なパターンにマッチする任意のデータが、取り出されてキャッシュ１２０に隠蔽される。フレーム・データを記憶し、取り出したフレーム・データを隠蔽するためのプロセスについては、少なくとも図１０〜１１を参照して、本明細書においてさらに説明する。
【００３６】
図３に、フレーム受信処理６１０においてアドレス／データ・フィルタ２３０によって受信可能であるフレームを有する典型的なメッセージ・パケットを例示する。例示したフォーマットは、イーサネット／ＩＥＥＥ８０２．３規格メッセージとの互換性があるものである。メッセージ３００には、プリアンブル、開始フレーム区切り記号（ＳＦＤ：Start Frame Delimiter ）、およびフレームが含まれている。プリアンブルおよび開始フレーム区切り記号は、システムがフレームを受信および処理することを支援するためのセット・アップ情報を与える。プリアンブルは、受信機タイミング同期化のために用いられる１および０が交互に並んだ７バイト・フィールドである。たとえば各バイトには、値０ｘ５５が含まれている。開始フレーム区切り記号は、フレームの始まりを示す。開始フレーム区切り記号に対する典型的な値は、ひと続きの０ｘＤ５である（１０１０１０１１バイナリ。なぜならば、ビット順序付けは最下位ビットが最初だからである）。例示したフレームは、長さが６４〜１５１８バイトであり、６バイトの送信先アドレス（ＤＡ：Destination Address ）、６バイトの送信元アドレス、２バイトの形式／長さフィールド、４６〜１５００バイトのロジック・リンク制御（ＬＬＣ：Logic Link Control）フレーム、および４バイトのフレーム・チェック・シーケンスを含む。
【００３７】
フレームの送信先アドレスには、３バイトのベンダ・フィールドおよび３バイトのユーザ値が含まれる。ユーザ値の第１のビットによって、アドレスが、個々のアドレス（０）またはグループ・アドレス（１）として識別される。第２のビットによって、アドレスが局所的に規定されているか（１）、あるいは全体的に規定されているか（０）が示される。例示したように、送信元および送信先アドレスには、４８ビットが含まれる。他の実施形態においては、異なるアドレス長、たとえばＩＥＥＥ８０２．３仕様の初期バージョンにおける１６ビット・アドレスを用いても良い。
【００３８】
形式／長さフィールドは、イーサネット形式フィールドおよび／またはＩＥＥＥ８０２．３長さフィールドに対応する。形式フィールドは、フレームの残りで使用されるプロトコル（たとえばＴＣＰ／ＩＰ）を示す。長さフィールドは、フレームのデータ部分の長さを指定する。一般的に、長さフィールドは、イーサネットで使用されるどのような形式フィールドからも一意的であり、イーサネット・フレームおよびＩＥＥＥ８０２．３フレームの両方を同じネットワーク上で用いることが容易になっている。形式フィールドは、１５３６（０ｘ０６００）以上で６５５３５（０ｘＦＦＦＦ）未満の１０進数によって特定される。この数が０〜１，５００（０ｘ００００から０ｘ０５ＤＣまで）の場合には、このフィールドはＭＡＣクライアント・データの長さを示している。例示した実施形態においては、１，５０１〜１，５３６（０ｘ５ＤＤから０ｘ５ｆｆまで）の範囲は、未定義である。
【００３９】
論理リンク制御（ＬＬＣ）は、媒体形式（たとえばＦＤＤＩ、イーサネット、トークン・リングなど）にかかわらず、ネットワーク層にサービスをもたらす役割を果たす。ＬＬＣ層は、メディア・アクセス制御（ＭＡＣ）層とプロトコル・スタックの上部層との間で通信するために、ＬＬＣプロトコル・データ・ユニット（ＰＤＵ：Protocol Data Unit）を用いている。３つの変数によって、ＬＬＣ−ＰＤＵを介した上部層内へのアクセスが判定される。変数には、送信先サービス・アクセス・ポイント（ＤＳＡＰ：Destination Service Access Point）、送信元サービス・アクセス・ポイント（ＳＳＡＰ：Source Service Access Point ）、および制御変数が含まれる。ＤＳＡＰアドレスによって、上部層に対するプロトコル情報を与えるステーション内の固有の識別子が指定される。ＳＳＡＰによって、送信元アドレスに対する同じ情報が与えられる。
【００４０】
ＬＬＣフレームには、プリアンブルおよび情報フィールドが含まれている。プリアンブルには、ＤＳＡＰフィールド、ＳＳＡＰフィールド、および制御フィールドが含まれている。情報フィールドには、データおよび任意的なパディングが含まれている。一般的に、パディングが必要とされるのは、データが４６オクテット／バイトよりも小さくてＩＥＥＥ８０２．３規格で指定される６４オクテットの最小フレーム・サイズが保証される場合である。８０２．３ｘでは、データ・フィールドの１番目の２つのオクテットは、オプコード（ＯＰ：Opcode）（休止＝０ｘ０００１）として用いられ、２番目の２つのオクテットは、休止時間（ＰＴ：Pause Time）パラメータ（休止時間＝０ｘ００００（オンの場合）および０ｘＦＦＦＦ（オフの場合））を送信するために用いられる。加えて、拡張された休止制御パラメータ（ＰＴＥ）を得るために、３番目の２つのオクテット・フィールドを用いることができる。イーサネット・フレームでは、ＬＬＣの代わりに、同様のフィールドを有する異なるプロトコルを用いることができる。これらのフィールドの使用方法は、用いるプロトコルによって変わる。そのため、フィールドを検査してその内容を報告できる能力により、イーサネット・フレームの処理を著しく加速することができる。そして、このような能力は、パターン・マッチングを用いて高めることができる。
【００４１】
フレーム・チェック・シーケンス（ＦＣＳ：Frame Check Sequence）によって、標準的な３２ビットの巡回冗長チェック（ＣＲＣ：Cyclic Redundancy Check ）が指定される。このチェックは、プリアンブル、ＳＦＤ、およびＣＲＣ以外のすべてのフィールド上で、標準的なＣＣＩＴＴ−ＣＲＣ多項式を用いることによって得られる。
【００４２】
図７および８は、パターン・マッチング用いたメッセージのハッシュ・フィルタリングを行なうための方法を例示するフロー・チャートである。図７を参照すると、処理６１０において到着フレームが一時的なキュー２３４において受信された後で、パターン・マッチング・ロジック２３２がＰＭレジスタ２３３にアクセスし、種々のエントリを連続的に選択して、ＰＭレジスタ２３３に記憶されるパターンが、一時的なキュー２３４内のフレーム情報に含まれているか否かを判定する。
【００４３】
たとえば、ＡＤＦ２３０は、パターン・マッチ有効ビット（ＰＭＥＮ：Pattern Match Enable bit）を含むＡＤＦグローバル制御レジスタをチェックして、パターン・マッチングが有効であるか否かを判定する。パターン・マッチングが有効でない場合（ＰＭＥＮ＝０）、フローは、グループ・アドレス判定７１５に進む。パターン・マッチングが有効である場合（ＰＭＥＮは非ゼロ）、パターン・マッチング・プロセス７１０が開始される。パターン・マッチング・プロセス７１０の結果、フレームが容認または拒否された場合（図９を参照して、後でさらに詳細に説明する）、フローは、ブロック７１０から、例示した「容認」または「拒否」フロー・チャート・ノードのうちの該当する一方を通って、図８のフレーム容認処理８６０またはフレーム拒否処理８７０のうちの該当する一方に進む。パターン・マッチング・プロセス７１０の結果、フレーム容認も拒否も判定されなかった場合には、フローは、パターン・マッチング・プロセス７１０から、例示した「判定なし／パターン・マッチ検出なし」ノードを通って、前述のグループ・アドレス判定７１５に進む。
【００４４】
グループ・アドレス判定７１５において、受信部１８０によって、受信フレーム内のアドレスがグループ・アドレスか否かが判定される。現在説明している実施形態においては、フレームのユーザ値の第１のビットによって、アドレスが、個々のアドレス（０）またはグループ・アドレス（１）として識別される。アドレスがグループ・アドレスでない場合には、フローはステーション・アドレス判定７２０に進む。アドレスがグループ・アドレスである場合には、フローはブロードキャスト・アドレス判定７２５に進む。
【００４５】
ステーション・アドレス判定７２０において、受信部１８０は、フレーム・データとの正確な４８ビットの比較を行なうことによって、受信フレーム内のアドレスがステーション・アドレスか否かを判定する。アドレスがステーション・アドレスであると判定された場合には、フローは、ブロック７２０から、例示した「容認」フロー・チャート・ノードを通って、図８のフレーム容認処理８６０に進み、フレームは、フレーム容認処理８６０において容認される。アドレスがステーション・アドレスではないと判定された場合には、フローは、ハッシュ・ヒット判定７４０に進む。
【００４６】
ブロードキャスト判定７２５において、受信部１８０は、受信フレーム内のアドレスがブロードキャスト・アドレスであるか否かを判定する。典型的なブロードキャスト・アドレスは、０ｘＦＦＦＦＦＦ−ＦＦＦＦＦＦのアドレスである。アドレスがブロードキャスト・アドレスであると判定された場合には、フローは、ブロードキャスト有効判定７３０に進む。アドレスがブロードキャスト・アドレスではないと判定された場合、フローは、前述のハッシュ・ヒット判定７４０に進む。
【００４７】
ブロードキャスト有効判定７３０において、受信部１８０は、ブロードキャスト機能が有効であるか否かを判定する。ブロードキャスト機能が有効であるのは、ＡＤＦグローバル制御レジスタ・ビットＢＣ＿ＲＥＪがリセットされているときである。ブロードキャスト機能が有効である場合には、フローは、ブロック７３０から、例示した「容認」フロー・チャート・ノードを通って図８のフレーム容認処理８６０に進み、フレームは、フレーム容認処理８６０において容認される。ブロードキャスト機能が有効でない場合には、フローは、無差別モード判定７３５に進む。
【００４８】
無差別モード判定７３５において、受信部１８０は、無差別モードが有効であるか否かを判定する。無差別モードが有効であるのは、ＡＤＦグローバル制御レジスタ無差別ビットが設定されている場合（ＰＲＯＭ＝１）である。受信部が無差別モードの場合には、パターン・マッチングによって拒否されていないすべてのフレームが容認される。一般的に、無差別モードは試験用に用いられ、使用されることはめったにない。無差別モードが有効である場合には、フローは、ブロック７３５から、例示した「容認」フロー・チャート・ノードを通って図８のフレーム容認処理８６０に進み、フレームは、フレーム容認処理８６０において容認される。無差別モードが無効である場合には、フローは、ブロック７３５から、例示した「拒否」フロー・チャート・ノードを通って図８のフレーム拒否処理８７０に進み、フレームは、フレーム拒否処理８７０において拒否される。
【００４９】
パターン・マッチングは、処理７１０において、無差別モード判定７３５の前にあるいはこれと並行して（そうでない場合には、無差別モード判定７３５の結果として容認する前に）行なっても良いため、識別的無差別モードを用いても良い。識別的無差別モードでは、フレーム拒否の原因となるパターンを含む１つまたは複数の特定のフレームを除いて、すべてのアドレスからのフレームが容認される。たとえば、パターン・マッチングを用いて特定のアドレスを拒否する一方で、他のすべてのアドレスを容認しても良い。
【００５０】
ハッシュ・ヒット判定７４０において、受信部１８０は、フレーム送信先アドレス上のハッシュ・ヒットが起きたか否かを判定する。４８ビットの送信先アドレスを、２５６バイナリ（または他の実施形態では２５６バイナリ超）のうちの１つにマッピングする。マッピングは、３２ビットの巡回冗長チェック（ＣＲＣ）のチェックサムの一部を用いることにより行なう。たとえば図１２を参照されたい。同図では、多くの対応するアドレス１２２２に対して生成されている多くのＣＲＣ１２２４が例示されている。各行１２０１〜１２１０の各１６進数のＣＲＣ１２２４は、同じ行の６バイトの１６進数の送信先アドレスに対応している。
【００５１】
システム１００のセット・アップの間、ＣＲＣチェックサムのビットを用いて、ハッシュ・テーブルにインデックスを付ける。一実施形態においては、８ビットを用いて、２５６バイナリ・テーブルにインデックスを付ける。８ビット・フィールドの高位の３ビットを用いて、個々のハッシュ・テーブルおよび／またはグループ・ハッシュ・テーブルにおける８つのハッシュ・バケット・レジスタのうちの１つを選択する。低位の５ビット・フィールドによって、選択された３２ビット・レジスタ内のビットを選択する。コントローラがフレームを受信するときに、同じチェックサムを用いる。到着アドレスのＣＲＣチェックサムによって、グループ／個々のハッシュ・テーブルにおいて設定されるビットが選択された場合に、ハッシュ・ヒットが起きている。そうでない場合には、ハッシュ・ヒットは起きていない。
【００５２】
例示した実施形態においては、ＣＲＣの最初の８ビットによって、ハッシュ・テーブルにおけるビットが選択される。行１２０１〜１２０３および１２０６におけるアドレスは、システムによって受信されるべきものであり、そのためこれらのアドレスは、ハッシュ・テーブルをセット・アップするために使用されている。行１２０１では、１６進数の値０ｘ０４が、ハッシュ・バケット・バイナリ４に対してマッピングする。行１２０２では、１６進数の値０ｘ０Ｆが、ハッシュ・バケット・バイナリ１５に対してマッピングする。行１２０３では、１６進数の値０ｘ１５が、ハッシュ・バケット・バイナリ２１に対してマッピングする。行１２０６では、１６進数の値０ｘＣＢがハッシュ・バケット・バイナリ２０３に対してマッピングする。こうして、バケット・バイナリ４，１５，２１，および２０３のいずれかを選択するＣＲＣを有するアドレスが、このようなアドレスが受信されたときにハッシュ・ヒットである。
【００５３】
ハッシュ・テーブルの有効性は、アドレスの数が増加するにつれて低下する可能性がある。たとえば、２５６バイナリ・ハッシュ・テーブルに記憶されるアドレスの数が増加すると、ハッシュ・テーブル・ビットの圧倒的多数が設定されることになり、その結果、意図しないフレームのうちメモリに記憶されない割合は、極めて小さくなる。ハッシュ・フィルタリングの１つの優位性は、ハッシングの速度が、送信先アドレス・リストにおけるアドレスの数に依存しないことである。また次のことにも注意されたい。すなわち、ハッシングだけのプロトコル（パターン・マッチングがない）では、これを用いて、選択されたアドレスの組にマッチングするフレームを拒否することはできない。なぜならば、意図しないアドレスの場合には、ハッシュ・テーブルにおける同じビットに対してマッピングすることができ、その結果、受信されるべきであったフレームが拒否されるからである。このように、ハッシュ・フィルタリングだけでは、フィルタリングは不完全であり、メモリに記憶されるフレームのポスト・フィルタリングを行なう必要がある。このことは、図１２に示す受信した送信先アドレスを参照して、以下の例によって例示することができる。
【００５４】
ハッシュ・ヒット判定７４０において、受信した各アドレスに対するＣＲＣを用いて、ハッシュ・バケット・バイナリを選択する。選択されたバイナリがヒットを示す場合には、ハッシュ・ヒットが起きている。たとえば、アドレス１２０１〜１２０３および１２０６〜１２１０のいずれかを受信した場合、バイナリ４，１５，２１，および２０３のうちの１つが選択され、ハッシュ・ヒットが起きている。したがって、アドレス１２０４またはアドレス１２０５を受信した場合、バイナリ４，１５，２１，および２０３のいずれも選択されず、ハッシュ・ヒットは起きていない。ハッシュ・ヒットが起きていない場合、フレームは通常拒否される。このようにして、アドレス１２０４および１２０５は拒否され得る。しかし、図１２のアドレス１２０７〜１２１０は、ハッシュ・ヒットを生成してはいたが、システム１００による受け取りおよび容認のためのアドレスではない。したがって、他のフィルタリング手段を用いなければならない。
【００５５】
システム１００では、パターン・マッチングを用いて、到着アドレスをさらにフィルタリングすることで、プロセッサ／ソフトウェア・ベースのポスト・フィルタリングに対する必要性が、最小限になるかあるいは取り除かれさえするようにしている。たとえば、パターンをＰＭレジスタに記憶して、ハッシュ・ヒットの誤りの原因となるアドレスを拒否できるようにしても良い。例示した実施形態においては、アドレスが特定のベンダＩＤを対象としたものではない場合に（送信先アドレスの最初の２４ビット）、そのアドレスを拒否することができる。０ｘ００５０ＦＣ０４のパターンが、ＰＭデータとしてＰＭレジスタに、０ｘＦＦＦＦＦＦ００のＰＭマスクと共に記憶されている。このようにして、０ｘ００５０ＦＣがその最初の２４ビットにはない各アドレスを、パターン・マッチングによって拒否することができる。この場合、アドレス１２０７〜１２０９は拒否されるが、１２１０は拒否されない。なぜならば、そのベンダＩＤが、所望のベンダＩＤにマッチするからである。
【００５６】
プロセスを改善するために、さらなるパターンを記憶しても良い。たとえば、２つのパターン、１つは、ＰＭデータ０ｘ００５０ＦＣ０４と０ｘＦＦＦＦＦＦＦＦのＰＭマスクとを有するもの、第２のパターンは、ＰＭデータ０ｘ００５０ＦＣ０３−Ｃで０ｘＦＦＦＦＦＦＦＦ−ＦのＰＭマスクを有するもの、を用いても良い。このようにして、アドレスとして、ハッシュ・ヒットであるが、０ｘ００５０ＦＣ０４がその最初の３２ビットになく、０ｘ００５０ＦＣ０３−Ｃがその最初の３６ビットにないものをそれぞれ、パターン・マッチングおよびハッシングを通して効果的に無視しても良い。この場合、アドレス１２０７〜１２１０は、パターン・マッチングおよびハッシングにより効果的に拒否され、所望のアドレスのみが、システム１００によって容認される。
【００５７】
こうして、受信アドレス１２０１〜１２１０から、種々の異なる結果が生じる。アドレス１２０４および１２０５は、ハッシュ・ミスが起きるため容認されない。アドレス１２０１〜１２０３および１２０６〜１２１０は、ハッシュ・ヒットが起きる。アドレス１２０１〜１２０３は、第１のパターンがその中に見出されるため、ハッシュ・ヒットおよびパターン・マッチが起きる。したがって、アドレス１２０１〜１２０３は容認される。アドレス１２０６は、第２のパターンがその中に見出されるため、ハッシュ・ヒットおよびパターン・マッチが起きる。したがって、アドレス１２０６は容認される。アドレス１２０７〜１２１０は、ハッシュ・ヒットが起きるが、パターン・マッチには至らない。なぜならば、第１および第２のパターンが見出されないからである。したがって、アドレス１２０７〜１２１０は容認されない。
【００５８】
一般的に、３２個のグループ・アドレスがハッシュ・テーブルに記憶されており、ランダム・グループ・アドレスが受信された場合には、ハッシュ・テーブルによって、大きなパーセンテージ（たとえば、場合によっては８５％程度またはそれを超える値）のグループアドレス・フレームがメモリには記憶されない。現在開示しているパターン・マッチングを用いない場合には、システム１００上で動作するソフトウェアによって、メモリ１３０に記憶されているものをさらにフィルタリング（すなわち、ポスト・フィルタリング）して、それが、正しいアドレスを含んでいるか否かを判定しなければならなくなる。前述の例では、アドレス１２０７〜１２１０は、パターン・マッチングによって生じる拒否条件を引き起こすことなく、プロセッサ１１０を伴うさらなるポスト・フィルタリングを必要としたであろう。
【００５９】
図８を参照すると、パターン・マッチ有効判定８４５において、受信部１８０は、選択されたレジスタ内の選択されたパターンＰＭデータに対してパターン・マッチングが有効であるか否かを判定する。パターン・マッチングが有効でない場合（ＰＭＥＮ＝０）、フローは、ハッシュ／無差別判定８５５に進む。パターン・マッチングが有効である場合（ＰＭＥＮ＝１）、パターン・マッチング・プロセス８５０が開始される。パターン・マッチング・プロセス８５０の結果、フレームが容認または拒否された場合（図９を参照して、後でさらに詳細に説明する）、フローは、ブロック８５０から、例示した「容認」または「拒否」フロー・チャート・ノードの該当する一方を通って、フレーム容認処理８６０またはフレーム拒否処理８７０の該当する一方に進む。フレーム容認または拒否の判定がされることなく、パターン・マッチング・プロセス８５０においてパターン・マッチが起きた場合、またはパターン・マッチが起きなかった場合には、フローは、パターン・マッチング・プロセス８５０から、例示した「判定なし／パターン・マッチ検出なし」ノードを通って、パターン・マッチ未検出判定８５２に進む。
【００６０】
現在説明している例示の実施形態におけるパターン・マッチ未検出判定８５２を参照すると、１６個のパターンのどれもパターン・マッチの検出に至らなかった場合には、フローは、判定８５２から、例示した「拒否」フロー・チャート・ノードを通って、フレーム拒否処理８７０に進む。他の実施形態においては、フレームを、プロセッサ１１０によるさらなるフィルタリングのために保持しても良い。変形の実施形態においては、フレームに与える優先度を、パターンが検出されたフレームより低くしても良い。その結果、プロセッサ１１０では、信頼度の高いフレーム（ハッシュ・ヒットおよびパターン・マッチがある）が、信頼度の低いフレーム（ハッシュ・ヒットはあるがパターン・マッチはない）の前に、重点的に取り扱われる。他の変形の実施形態においては、フレームを、異なる処理要素に対応して、異なるキューに記憶しても良い。１６個のパターンのうちの少なくとも１つによってパターン・マッチが検出された場合には、フローは、判定８５２から、例示した「判定なし」フロー・チャート・ノードを通って、前述のハッシュ／無差別判定８５５に進む。これまで説明した図７および８の要素は、メディア・アクセス制御機能に対応する。
【００６１】
ハッシュ／無差別判定８５５において、パターン・マッチはあるが判定がない（たとえば容認がなく拒否もない）場合、またはパターン・マッチがない場合には、データ・リンク機能が実施される。受信部１８０（たとえば、ＡＤＦ２３０内のステート・マシーン）において、完全なハッシュ・ヒットが起きているか否か、および／または無差別モードが有効であるか否かが判定される。１つのアドレスのみに一意的に対応するハッシュ・ヒットおよびパターン・マッチの両方が起きた場合に、完全なハッシュ・ヒットが起きる。対照的に、低い数のアドレスだが複数のアドレスに対応するハッシュ・ヒットおよびパターン・マッチの両方が起きた場合に、信頼度の高いハッシュ・ヒットが起きる。ハッシュ・ヒットの信頼度が高ければ、パターン・マッチングを用いることによって従来のアドレス・フィルタリングよりも性能が高まる。なぜならば、信頼度の高いアドレスが実際に、探しているアドレスである確率が、パターン・マッチングによって高まるからである。システムおよび／またはネットワーク特性を用いてパターンを注意深く選択することによって、ハッシュ・ヒットが完全である確率を高めることができる。完全なハッシュ・ヒットが起きているかあるいは無差別モードが有効である場合には、受信フレームは、フレーム容認処理８６０において容認される。完全なハッシュ・ヒットが起きておらず無差別モードも有効ではない場合には、フローは、フル・アドレス・マッチング判定８６５に進む。
【００６２】
フル・アドレス・マッチング判定８５５において、プロセッサ１１０は、フル・アドレス・マッチングが起きているか否かを判定する。システム１００は、アドレスを、システム１００に既知であるアドレスと直接比較する。システム１００は、受信アドレスを優先度キューなどに記憶することで、容認されると予測される可能性が高いアドレス（信頼度の高いフレーム）の処理を、容認されると予測される可能性が低いアドレス（信頼度の低いフレーム）の前に行なうようにしても良い。このような完全な直接比較は、システム１００の処理リソースの点でコストがかかる。そのため、本明細書で説明したパターン・マッチングおよびハッシングでは、このようなコストのかかる直接的なアドレス比較を回避しようとしている。このようにして、システム１００は、できるだけ直接的なアドレス比較を行なうことなくパターン・マッチングを用いることで、システムの性能を高めることができ、フル・アドレス・マッチングは最後の手段となる。フル・アドレス・マッチングが起きた場合には、受信フレームは、フレーム容認処理８６０において容認される。フル・アドレス・マッチングが起きない場合には、受信フレームは、フレーム拒否処理８７０において拒否される。
【００６３】
図９は、システム１００が受信したメッセージ・アドレスに対してパターン・マッチングを行なうための方法を例示するフロー・チャートである。フレームは、パターン・マッチが起きているか否かに応じて、容認しても良いし拒否しても良い。メッセージ・フレームの任意の部分を、ＩＰアドレスを含むマッチについてチェックしても良い。図９の処理は、パターン・マッチングが有効である場合（ＰＭＥＮ＝１）に、対応するパターン・マッチ・アクセプタ・インディケータが許可する（たとえばＰＭＡＣ＝１）各パターンに対して行なわれる。ただし、あるパターン・マッチが、別のパターン・マッチが試みられる前に起きることによって、最終的な処置（容認または拒否）が命じられる場合を除く。パターン・データ・セットが有効である場合に、メッセージ・データは、パターン・マッチについてチェックされる。パターン・マッチ・データ・セットが有効でない場合、またはパターン・マッチが見出されない場合には、次のパターンが選択されてプロセスが繰り返される。連続検索が有効である場合には、マッチとは関係なく、続けて次のパターンが検索される。
【００６４】
受信処理９３５を参照すると、到着フレームのバイトを受信して一時的なキュー２３４に入れ、到着フレームを容認するか拒否するかについて判定がされるまで、一時的に記憶する。到着フレームのバイトは、パターン・マッチング・ロジック２３２、ならびにアドレス認識およびハッシュ・ロジック２３８にも与えられる。その結果、このような判定を、バイトが一時的なキュー２３４によって受信されている間に行なうことができる。受信処理９３５においてバイトを受信した後で、フローは、パターン・マッチ判定処理９０５に進む。
【００６５】
パターン・マッチ判定処理９０５を参照すると、パターン・マッチング・ロジック２３２によって、ＰＭレジスタ２３３に記憶されているパターン・マッチ・データが受信フレーム内のデータにマッチするか否かが判定される。たとえばパターン・マッチング・ロジックは、ＰＭレジスタ２３３の最初の１つにおけるＰＭデータを、到着フレーム・データと、到着データが一時的なキュー２３４に記憶されるときに比較する。一時的なキュー２３４を用いて、フレームを、判定がされるまで記憶する。たとえば、ＰＭデータ（最大４バイト）の各ビットが、メッセージ・インデックスＭＩに従って配置されたメッセージ・データの各ビットにマッチした場合、パターン・マッチが起きる。マッチングは、フレーム内に最大２５６バイトの深さまで、最大２５２バイトのオフセットを伴って、起きても良い。ＰＭデータの一部を、対応するＰＭマスクによってマスキングしても良い。たとえば、ＰＭデータの各ビットは、対応するＰＭマスク・ビットがクリアされている場合には、マッチについてチェックしなくても良い。前のパターンの連結パターン（ＣＰ）フィールドが設定されている場合には、マッチが起きるのは、両方のＰＭデータ・フィールド（現在のＰＭデータおよび前のＰＭレジスタのＰＭデータ）がフレーム内に見出される場合のみである。ＰＭＡＣフィールドは、対応するＰＭデータが有効であるか否かを判定し、有効である場合には、マッチ時に取るべき行動計画を判定する。処理９０５は、処理９３５と並行して行なっても良い。
【００６６】
パターン・マッチ判定９０５を参照すると、パターン・マッチングが無効（たとえば、ＰＭＡＣ＝００）である場合には、フローは、フレームの終わり（ＥＯＦ：End Of Frame）またはキュー満杯判定９３０に進む。パターン・マッチ判定処理９０５においてパターン・マッチが見出されない場合にも、フローは、ＥＯＦまたはキュー満杯判定９３０に進む。判定９１０において、パターン・マッチが起きてパターン・マッチングが無効ではない（たとえばＰＭＡＣ≠００）場合には、フローは、フレーム容認判定９１５に進む。
【００６７】
ＥＯＦ／キュー満杯判定９３０を参照すると、一時的なキュー２３４が満杯ではなくフレームの終わりがまだ受信されていない（かつ、フレームが拒否されていない）場合には、受信処理９３５においてさらなるバイトを続けて受信して一時的なキュー２３４に入れ、フローは、パターン・マッチ判定処理９０５に進んで、さらなる受信フレーム情報に対してパターン・マッチングを開始する。フレームの終わりが受信されているか、あるいは一時的なキュー２３４が満杯である場合には、フローは、全モード拒否判定９４０に進む。
【００６８】
全モード拒否判定９４０を参照すると、ＡＤＦ２３０が全モード拒否にあると判定された場合には、フレームは拒否されて、処理フローは、どの対応フローが図９に例示するパターン・マッチング・フローを開始したかに応じて、図７または８に例示するように続く。ＡＤＦ２３０が全モード拒否にない場合には、フレームに関する判定はなされず、フローは、どのフローが図９に例示するパターン・マッチングを開始したかに応じて、図７または８に例示するように続く。
【００６９】
フレーム容認判定９１５を参照すると、ＡＤＦ２３０が、パターンに対するフレームを容認している場合（たとえば特定のＰＭデータに対してＰＭＡＣ＝１０）には、フレームは、条件付きで容認されて、フローは連続検索判定９４５に進む。ＡＤＦ２３０が、パターンに対するフレームを容認していない場合（たとえば、特定のＰＭデータに対してＰＭＡＣ≠１０）には、フローは、フレーム拒否判定９２０に進む。
【００７０】
フレーム拒否判定９２０を参照すると、ＡＤＦ２３０が、パターンに対するフレームを拒否している場合（たとえば、特定のＰＭデータに対してＰＭＡＣ＝１１）には、到着フレームは拒否される。なぜならば、到着フレームには、拒否ＰＭＡＣ値に付随するＰＭデータが含まれているからである（そうでない場合には、ＰＭマスク、ＣＰなどの他の因子を考慮してマッチが起きる）。そしてフローは、どのフローが図９に例示するパターン・マッチングを開始したかに応じて、図７または８に例示するように続く。ＡＤＦ２３０が、パターンに対するフレームを拒否していない場合（たとえば、特定のＰＭデータに対してＰＭＡＣ≠１１、この場合にはＰＭＡＣ＝０１）には、フローは、連続検索判定９２５に進む。
【００７１】
連続検索判定９２５を参照すると、パターンに対する連続検索が有効である場合（たとえばＣＳＥ＝１）には、フローは、ＥＯＦまたはキュー満杯判定９３０に進む。連続検索判定９２５において、連続検索が有効でない場合（たとえばＣＳＥ＝０）には、前述のパターン・マッチに対する判定はされず、フローは、全モード拒否判定９４０に進む。
【００７２】
連続検索判定９４５を参照すると、パターンに対する連続検索が有効である場合（たとえば、ＣＳＥ＝１）には、フローは、ＥＯＦまたはキュー満杯判定９５０に進む。連続検索判定９４５において、連続検索が有効でない場合（たとえばＣＳＥ＝０）には、到着フレームは容認される。フレームが容認される理由は、フレームにＰＭデータが含まれており（そうでない場合には、ＰＭマスク、ＣＰなどの他の因子を考慮してマッチが起きる）、パターン・マッチングが有効（ＰＭＡＣ＝１０）であり、かつさらなる検索を行なう必要がない（ＣＳＥ＝０）からである。次にフローは、どのフローが図９に例示するパターン・マッチングを開始したかに応じて、図７または８に例示するように続く。
【００７３】
ＥＯＦ／キュー満杯判定９５０を参照すると、フレームの終わりが受信されているかまたは一時的なキュー２３４が満杯である場合には、到着フレームが容認される。フレームが容認される理由は、パターン・マッチが起きており、パターン・マッチングが有効（ＰＭＡＣ＝１０）であり、かつフレームの終わりに達しているかあるいは一時的なキューが満杯であるためにさらなるパターン・マッチングは起こり得ないからである。次にフローは、どのフローが図９に例示するパターン・マッチングを開始したかに応じて、図７または８に例示するように続く。
【００７４】
ＥＯＦ／キュー満杯判定９５０において、一時的なキュー２３４が満杯ではなくフレームの終わりがまだ受信されていない場合には、受信処理９５５においてさらなるバイトを受信して一時的なキュー２３４に入れる。そしてフローは、パターン・マッチ判定処理９６０に進んで、次のパターン（たとえば、連続した次のＰＭレジスタ２３３内のＰＭデータ）に対するさらなる受信フレーム情報に対して、パターン・マッチングを開始する。パターン・マッチ判定処理９６０の機能は、前述した処理９０５と同様である。処理９５５は、処理９６０と並行して行なっても良い。パターン・マッチング処理９６０の後、フローは、パターン・マッチ判定９６５に進む。
【００７５】
パターン・マッチ判定９６５を参照すると、現時点で選択されているパターン（たとえば、現時点で選択されているＰＭレジスタ２３３内のＰＭデータ）に対して、パターン・マッチングが無効である場合（たとえばＰＭＡＣ＝００）には、フローは、ＥＯＦ／キュー満杯判定９５０に進む。パターン・マッチ判定処理９６５においてパターン・マッチが見出されない場合にも、フローは、ＥＯＦ／キュー満杯判定９５０に進む。判定９６５において、パターン・マッチが起きてパターン・マッチングが無効でない場合（たとえば、ＰＭＡＣ≠００）には、フローは、フレーム否拒否判定９７０に進む。
【００７６】
フレーム否拒否判定９７０を参照すると、ＡＤＦ２３０が次のパターン（たとえば、対応するＰＭデータ）に対して、フレームを拒否していない場合（たとえば、ＰＭＡＣ＝０１またはＰＭＡＣ＝１０）には、フローは、ＥＯＦ／キュー満杯判定９５０に進む。そうでない場合には、到着フレームは拒否される。なぜならば、拒否パターン（ＰＭＡＣ＝１１）が検出されているからである。次にフローは、どのフローが図９に例示するパターン・マッチングを開始したかに応じて、図７または８に例示するように続く。
【００７７】
図１０を参照すると、図１のシステム内において容認されたメッセージを処理するための方法である。例示した実施形態の優位性の１つは、パケット内の重大なデータに対するシステム・アクセスの向上が、そのデータを受信したときにデータの検出を高レベルのリソースを用いることなく行なうことによって、データを記述子情報とともにキャッシュ内に配置してその後に速いアクセスができるようにすることによって、可能であることである。
【００７８】
例示したフローは、パターン・ステータス受信処理１００５において、パターン・ステータスがＤＭＡ２１０に送られてステータス・レジスタ２１５内に配置されたときに開始される。一般的に、その後、フレーム・データは、パターン・ステータス情報に応じて、メモリ１３０内にファイルされ、かつ／あるいはキャッシュ１２０内に隠蔽される。ファイリングには、パケット署名に基づいてメモリ内のパケットをグループ分けすることが含まれ、取り出しには、パケットの特定部分を位置決めすることが含まれ（たとえば、取り出しインデックスおよび長さ値を用いることによって）、隠蔽することには、取り出したデータをプロセッサ・キャッシュ・スペースにコピーすることが含まれる。取り出しによって、プロセッサ・キャッシュ・メモリの割り当ておよびロックを行なうことができるが、ソフトウェアは、取り出しの間にＤＭＡによってロックされたキャッシュ内のすべてのデータをアンロックする役割を果たす。取り出したデータがフレーム・データから取り除かれることはない。むしろ、すべてのフレーム・データがメモリに記憶されて、取り出しデータのみがプロセッサ・キャッシュにコピーされる。このようなファイリングおよび隠蔽することについては、以下で詳細に説明する。
【００７９】
バッファ記述子選択処理１０１０を参照すると、ＤＭＡ２１０のＢＤＦＰ２１４が、パターン・ステータスとパターン・マッチ属性レジスタ２１３内のキュー分類（ＱＣ）フィールドとに基づいて、バッファ記述子を選択する。ＱＣフィールドでは、どのバッファ記述子キュー１２２／１３２を用いるべきかを判定する。パターン・ステータスには、適切なＱＣフィールドに対するポインタが含まれる。またパターン・ステータスはまた、どのパターン・マッチが起きたかを（もしあれば）示す。パターン・マッチが起きた場合には、マッチしたパターンによって、データをフレームから取り出して、取り出したデータ１２４としてキャッシュ１２０内に隠蔽しても良い。こうして、バッファ記述子キュー１３２に加えて、バッファ記述子キューが選択される１２２。パターン・マッチが起きない場合には、取り出しは行なわれず、その結果、バッファ記述子キュー１３２のみが用いられる。バッファ記述子選択処理１０１０の後、フローは、取り出し準備処理１０１５に進む。
【００８０】
取り出し準備処理１０１５において、パターン・ステータスがパターン・マッチを示す場合には、取り出しエンジン２１２が、取り出しインデックス（ＥＩ）および取り出し長さ（ＥＬ）をパターン属性レジスタ２１３から得る。取り出し準備処理１０１５の後、フローは、ＢＤＱ利用可能判定１０２０に進む。
【００８１】
ＢＤＱ利用可能判定１０２０を参照すると、ＢＤＦＰ２１４が、選択されたバッファ記述子キュー（ＢＤＱ）が利用可能であるか否かを判定する。すなわち、ＢＤＦＰ２１４は、選択されたＢＤＱ内に空のスペースがあるか否かを判定する。選択されたＢＤＱが利用可能である場合には、フローは、フロー・チャート・ノード「Ａ」を通って、ＢＤＱポインタ更新処理１０３０に進む。選択されたＢＤＱが利用可能でない場合には、フローはフラッシュ処理１０２５に進む。すると直ちに、フレームおよびステータス・フレーム長が、受信ＦＩＦＯ２２０からフラッシュされ、そしてフローは、パターン・ステータス受信処理１００５に進む。
【００８２】
ＢＤＱポインタ更新処理１０３０を参照すると、ＢＤＦＰ２１４は、バッファ記述子キュー現在ポインタ（ＢＤＱ＿ＣＵＲＲＥＮＴ）を更新して、次のバッファ記述子キューを示すようにする（ＢＤＱ＿ＣＵＲＲＥＮＴ＝ＢＤＱ＿ＮＥＸＴ）。現在のＢＤＱポインタが更新された後、フローは、ＢＤＱ空判定１０３５に進む。
【００８３】
ＢＤＱ空判定１０３５を参照すると、ＢＤＦＰ２１４は、ＢＤＱ＿ＣＵＲＲＥＮＴによって示されるエントリが空であるか否かを判定する。現在のＢＤＱエントリが空でない場合には、利用不可能マーク処理１０４０において、選択されたバッファ記述子キューを利用不可能としてマーキングして、フローはラッシュ処理１０２５に進む。現在のＢＤＱエントリが空である場合には、フローは転送処理１０４５に進む。
【００８４】
転送処理１０４５を参照すると、ＢＤＦＰ２１４は、フレーム・データを受信ＦＩＦＯ２２０から受信バッファ２１１に転送する。転送は、フレームの終わり（ＥＯＦ）が受信されるかあるいは受信バッファ２１１が満杯になるまで続く。フレーム・データが転送された後、フローは、ＥＯＦ判定１０５０に進む。
【００８５】
ＥＯＦ判定１０５０を参照すると、処理１０４５においてフレームの終わりが受信されなかった場合には、フローは、選択的な取り出しおよび隠蔽処理１０６０に進む。処理１０４５においてフレームの終わりが受信された場合には、フローは、ステータス・フレーム長取得処理１０５５に進む。この処理において、取り出しエンジン２１２は、ステータス・レジスタ２１５からステータス・フレーム長を得る。処理１０５５の後、フローは、選択的な取り出しおよび隠蔽処理１０６０に進む。
【００８６】
データは、選択的な取り出しおよび隠蔽処理１０６０において、キャッシュ１２０内に隠蔽するために受信フレームから制御可能に取り出される。選択的な取り出しおよび隠蔽処理１０６０については、図１１を参照して、後に十分に説明する。選択的な取り出しおよび隠蔽処理１０６０の後、フローは、ＥＯＦ判定１０６５に進む。
【００８７】
ＥＯＦ判定１０６５を参照すると、選択的な取り出しおよび隠蔽処理１０６０においてフレームの終わりが受信された場合には、フローは、ＥＯＦ更新処理１０８０に進む。選択的な取り出しおよび隠蔽処理１０６０においてフレームの終わりが受信されなかった場合には、フローは、バッファの終わり（ＥＯＢ）判定１０７０に進む。
【００８８】
ＥＯＦ更新処理１０８０を参照すると、ＢＤＦＰ２１４は、現在のバッファ記述子キューのステータスおよび制御情報を更新する。たとえばＢＤＦＰ２１４は、取り出しが行なわれたビットを現在のＢＤＱ１２２内で設定して、取り出したデータ１２４がキャッシュ１２０に記憶されていることを示す。次のＢＤＱポインタ（ＢＤＱ＿ＮＥＸＴ）を、選択されたＢＤＱ内の次の箇所を示すように設定する。現在のＢＤＱの内容を、ＢＤＬＷＴに従ってキャッシュにコピーする。たとえば、パターン・マッチが起きた場合およびＢＤＬＷＴが００である場合には割り当ては行なわれず、ＢＤＬＷＴが１０である場合にはキャッシュ１２０ラインが割り当てられ、ＢＤＬＷＴが１１である場合にはキャッシュ１２０ラインが割り当てられてロックされる。ＥＯＦ更新処理１０８０の後、フローはパターン・ステータス受信１００５に進むことによって、より多くのデータを次のフレームから処理しても良い。
【００８９】
ＥＯＢ判定１０７０を参照すると、選択的な取り出しおよび隠蔽処理１０６０においてメモリ１３０内のデータ・バッファの終わり１３４が出現した場合には、フローはＥＯＢ更新処理１０７５に進む。選択的な取り出しおよび隠蔽処理１０６０においてデータ・バッファの終わりが出現した場合には、フローは、前述した転送処理１０４５に進む。
【００９０】
ＥＯＢ更新処理１０７５を参照すると、ＢＤＦＰ２１４は、現在のバッファ記述子キューのステータスおよび制御情報を更新する。たとえばＢＤＦＰ２１４は、取り出しが行なわれたビットを現在のＢＤＱ１２２内で設定して、取り出したデータ１２４がキャッシュ１２０に記憶されていることを示す。次のＢＤＱポインタ（ＢＤＱ＿ＮＥＸＴ）を、選択されたＢＤＱ内の次の箇所を示すように設定する。現在のＢＤＱの内容を、ＢＤＬＷＴに従ってキャッシュにコピーする。ＥＯＢ更新処理１０７５の後、フローはノードＡに進むことによって、より多くのデータを同じフレームから処理することができる。
【００９１】
図１１は、６４バイト・バッファを用いて図１のシステムによるメッセージの一部を取り出して隠蔽するための方法を例示するフロー・チャートである。図１１に例示する方法は、図１０の選択的な取り出しおよび隠蔽処理１０６０によって呼び出される。
【００９２】
図１１を参照すると、取り出し要求判定１１０５において、取り出しエンジン２１２が、与えられたパターン・マッチに対して取り出しが要求されているか否かを判定する。また取り出しエンジン２１２は、種々の取り出しフィールド、たとえば取り出し追加（ＥＸ＿ＡＤＤ）フィールドおよび取り出し長さ（ＥＬ）フィールドをチェックする。取り出し追加フィールドは、取り出し長さに、対応する取り出しインデックスを加えたものに等しい（たとえば、ＥＸ＿ＡＤＤ＝ＥＬ＋ＥＩ［１１：１５］）。取り出しが要求され（ＰＭＥ＝１）、取り出し追加値がゼロよりも大きく、かつ取り出し長さがゼロよりも大きい場合には、フローはＥＩ≦６４判定１１２５に進む。取り出しが要求されないか、取り出し追加値がゼロであるか、あるいは取り出し長さがゼロである場合には、フローはアライメント判定１１１０に進む。
【００９３】
アライメント判定１１１０を参照すると、ターゲット・アドレスが、６４バイトのアライメントされたアドレスではない場合には、フローはＭＡＸ（３２Ｂ）送信処理１１２０に進む。ここでは、通常のデータの最大３２バイトがメモリ１３０に送られる。ＭＡＸ（３２Ｂ）は、最大で３２バイト（この値を含む）のバイトの数である（たとえば、ｘをバイトの数とすると、ＭＡＸ（ｘＢ）≦ｘバイトである）。ターゲット・アドレスが、６４バイトのアライメントされたアドレスである場合には、フローはＭＡＸ（６４Ｂ）送信処理１１２０に進む。ここでは、通常のデータのＭＡＸ（６４Ｂ）がメモリ１３０に送られる。ＭＡＸ（３２Ｂ）送信処理１１１５またはＭＡＸ（６４Ｂ）送信処理１１２０のどちらの後も、取り出しフローは終了して、フローは図１０のＥＯＦ判定１０６５に進む。
【００９４】
ＥＩ≦６４判定１１２５を参照すると、取り出しインデックスが６４よりも大きい場合には、取り出すべきデータがまだ届いておらず、フローは、ＭＡＸ（６４Ｂ）送信処理１１３０に進む。ここでは、通常のデータのＭＡＸ（６４Ｂ）がメモリ１３０に送られる。ＭＡＸ（６４Ｂ）送信処理１１３０の後、ＥＩ減少処理１１３５において取り出しインデックスが６４だけ減らされ（たとえばＥＩ＝ＥＩ−６４）、取り出しフローは終了して、フローは図１０のＥＯＦ判定１０６５に進む。
【００９５】
再びＥＩ≦６４判定１１２５を参照すると、取り出しインデックスが６４以下である場合には、フローは、相対的ＥＩ記憶処理１１４０に進む。相対的取り出しインデックスは、取り出したデータが始まるメモリ１３０のデータ・バッファ内の箇所に対するインデックスである。相対的取り出しインデックスは、ＢＤＦＰ２１４によってＤＭＡ２１０内部に記憶される。記憶は、インデックスがその後に、処理１０７５または１０８０（図１０）においてメモリ１３０および／またはキャッシュ１２０の適切なＢＤＱに書き込まれるまで行なわれる。相対的ＥＩ記憶処理１１４０の後、フローは、ＥＩ≦３２判定１１４５に進む。
【００９６】
ＥＩ≦３２判定１１４５を参照すると、取り出しエンジン２１２は、取り出しインデックスとの比較を行ない、ＤＭＡ２１０に（たとえば取り出しエンジン２１２内に）内部記憶されている取り出しデータ・フラッグをチェックする。たとえば、取り出しインデックスが３２よりも大きく、取り出しデータ・フラッグが真ではない場合には、フローは、ＭＡＸ（３２Ｂ）送信処理１１５０に進む。ここでは、通常のデータのＭＡＸ（３２Ｂ）がメモリ１３０に送られる。ＭＡＸ（３２Ｂ）送信処理１１５０の後、取り出しデータ・フラッグが真に設定されて、取り出しフローが終了し、フローは図１０のＥＯＦ判定１０６５に進む。
【００９７】
再びＥ≦３２判定１１４５を参照すると、取り出しインデックスが３２以下であるか、あるいは取り出しデータ・フラッグが真である場合には、フローは、３２Ｂ未満判定１１６０に進む。受信フレームから取り出すべきデータが少なくとも３２バイトである場合（たとえば、ＥＸ＿ＡＤＤ≧３２Ｂ）には、フローは３２Ｂ送信処理１１７０に進む。ここでは、取り出しデータの３２バイトがメモリ１３０に送られ、ＥＬＣＷＴに従ってキャッシュ１２０にコピーされる。たとえば、ＥＬＣＷＴが００である場合には割り当てが行なわれず、ＥＬＣＷＴが０１である場合には取り出しが行なわれ、ＥＬＣＷＴが１０である場合にはキャッシュ・ラインが割り当てられ、ＥＬＣＷＴが１１である場合にはキャッシュ・ラインが割り当てられてロックされる。受信フレームから取り出すべきデータが３２バイト未満である場合（たとえば、ＥＸ＿ＡＤＤ＜３２Ｂ）には、フローは切り上げ処理１１６５に進んで、ＥＸ＿ＡＤＤが３２の値に切り上げられ、フローはさらに３２Ｂ送信処理１１７０に進む。
【００９８】
３２Ｂ送信処理１１７０の後、フローは減少処理１１７５に進む。この処理において、取り出し追加フィールドは、取り出した３２バイト・セグメントの数だけ減らされる（たとえば、ＥＸ＿ＡＤＤ＝ＥＸ＿ＡＤＤ−３２）。減少処理１１７５の後、クリア処理１１８０において、フレームの終わり（ＥＯＦ）に到達しているかあるいはＥＸ−ＡＤＤ＝０である場合に、取り出しデータ・フラッグはクリアされる。クリア処理１１８０の後、取り出しフローは終了して、フローは、図１０のＥＯＦ判定１０６５に進む。
【００９９】
一実施形態においては、パケット・コントローラ１６０のＭＡＣ１９０におけるシステム１００によって、メッセージ・フレームの一部が受信される（図１および図６、処理６１０を参照）。メッセージ・フレームの受信部分（「受信フレーム」）は、図２のアドレス／データ・フィルタ２３０の一時的なキュー２３４に送られる。フレームはアドレス／データ・フィルタ２３０によって処理されて、このフレームを容認すべきかまたは拒否すべきかが判定される（図６、処理６２０を参照）。アドレス認識およびハッシュ・ロジック２３８とパターン・マッチング・ロジック２３２とによって、受信フレーム上で、アドレス認識、ハッシング、完全なハッシングに対するパターン・マッチングを伴うハッシング、およびパターン・マッチング（図７〜９）が行なわれる。アドレス認識およびハッシュ・ロジック２３８は、ハッシングおよび何らかの必要なフル直接アドレス比較を行なう。ＰＭレジスタ２３３には、マッチすべき多くのパターンに対応する多くのレジスタが含まれている。パターン・マッチング・ロジック２３２は、ＰＭレジスタ２３３に記憶されている構成値に基づいて、パターン・マッチングを行なう（たとえば、連続検索および／または連結能力によって）。パターン・マッチングおよびハッシングまたは他のフェイル・セーフ条件の後に容認された場合、受信フレームおよびパターン・ステータス情報（パターン・マッチ結果）は、受信ＦＩＦＯ２２０に転送される（図６、処理６３０を参照）。
【０１００】
そして受信フレームは、受信バッファ２１１に転送され、パターン・ステータス情報は、ＤＭＡ２１０のステータス・レジスタ２１５に転送される（図６、処理６４０を参照）。取り出しエンジン２１２は、パターン属性レジスタ２１３およびステータス・レジスタ２１５にアクセスして、受信バッファ２１１内の受信フレームからデータを取り出すべきか否かを判定し、当該データの取り出しを制御する（図１０および１１を参照）。ＢＤＦＰは、ステータス・レジスタ２１５およびバッファ記述子アドレス・レジスタにアクセスし、メモリ１３０および／またはキャッシュ１２０に書き込むべきアドレスおよびデータ情報を生成する。ＢＤＦＰ２１４からのアドレス情報には、フレーム・データに対するデータ・バッファ内のデータ・バッファ・ポインタ（たとえば、データ・バッファ・ポインタ４５６）、またはバッファ記述子キュー内の次のエントリの１つに対するポインタ（たとえば、ＢＤＱ＿ＢＡＳＥ，ＢＤＱ＿ＣＵＲＲＥＮＴ，ＢＤＱ＿ＮＥＸＴ）が含まれる。データ情報には、ステータスおよび制御４５２、データ長４５４、データ・バッファ・ポインタ４５６、パターン・マッチ・ステータス４５８、相対的取り出しインデックス４６０、取り出し長さ４６２、およびバイト・カウント４６４（図４に示す）が含まれる。
【０１０１】
次いで、フレームの全部または一部を、メモリ１３０にファイルし（「通常のデータ」）および／またはキャッシュ１２０に隠蔽する（「取り出したデータ」）ことが、対応するバッファ記述子キュー１３２／１２２内の対応する記述的情報とともに行なわれる（図６、処理６５０、および図１０および１１を参照）。より具体的には、受信バッファ２１１は、通常のまたは取り出したフレーム・データを、バス・インターフェース・ユニット（ＢＩＵ）１７０に送り、取り出しエンジンは、フレーム・データを通常または取り出したものとして識別する属性をＢＩＵ１７０に送り、ＢＤＦＰ２１４は、アドレス情報とバッファ記述子アドレス・レジスタ２１６からのバッファ記述子データとをＢＩＵ１７０に送る。ＢＩＵ１７０は、キャッシュ１２０および／またはメモリ１３０に記憶するために、フレーム・データをバス１４０に送る。通常のフレーム・データは、少なくとも１つのデータ・バッファ１３４に記憶され、通常のフレーム・データに関する記述子データは、バッファ記述子キュー１３２に記憶される。取り出しが行なわれた場合、取り出したフレーム・データは、キャッシュ部分１２４に記憶され（「隠蔽される」）、取り出したフレーム・データに関する記述子データは、バッファ記述子キュー１２２に記憶される。
【０１０２】
前述の説明は、本発明の少なくとも一つの実施形態を説明することが意図されている。前述の説明は、本発明の範囲を規定することは意図されてはいない。むしろ本発明の範囲は、添付の請求項において規定される。したがって本発明の他の実施形態には、前述の説明に対する他の変形、変更、付加、および／または改良が含まれる。
【０１０３】
一実施形態では、ユーザが最大１６個の４バイト・パターンをプログラムすることができる新しい形式のパターン・マッチングを取り入れている。この４バイト・パターンは連結して、より長いパターンを形成することができ、かつこのパターンを用いて、最初の２５６バイト内のフレームの一部とマッチングすることができる。各パターンには、属性の組が付随している。属性の組をプログラムして、フレームを容認／拒否すること、フレームをメモリの４つのキューのうちの１つにファイルすること、取り出したフレーム・データをプロセッサのキャッシュに書き込むことができる。パターン・マッチング能力には、最大１６個の４バイトの固有のパターンに対するサポート、ビットごとベースでのパターン・マッチング、フレーム内への最大２５６バイトの深さのマッチング範囲、最大２５２バイトのオフセット、最大６４バイトまでの４バイト増分でのプログラマブル・パターン・サイズ、マッチが検出されたときの容認または拒否フレーム、および正確なマッチに対する最大８ユニキャストのアドレスが含まれる。
【０１０４】
この実施形態では、パターン・マッチングの能力をハッシュ・フィルタリングを用いることと組み合わせることで、アドレス認識方法として、ポスト・フィルタリングを必要とせずにＭＡＣレベルで行なうことができ、ロジック・リンク・コントローラ・レベルでのさらなるソフトウェア介入を必要としないものが得られる。フレームの処理を加速する方法の１つは、ハッシュ・テーブル上で偶然ヒットを得たいかなる送信先アドレスも、確かにシステムが探しているアドレスの１つであるという信頼度を増加させることである。複数のアドレスのＣＲＣが、８個の同じ最上位ビットを有することになるため、ハッシュ・テーブルをパターン・マッチングとともに用いることによって、ハッシュ・ヒットの際に行なわなければならない余分な処理（アドレスを回収して、有効な送信先アドレスのリストと比較すること）が無駄な努力ではなくなる可能性を著しく高くする方法が得られる。これは、意図しないハッシュ・テーブル・ヒットによって生じる余分なメモリ・バスの利用が減るため貴重である。またハッシュすることができるアドレスの数は、アドレスの数が増加するとハッシュ・テーブルの有効性が低下するという事実によって、制限されている。ユーザはハッシュ・テーブルを最初に構築するため、かつハッシュすべきアドレスの数は通常、比較的少ない（３２〜６４）ため、大部分（たとえユーザのアドレスの全部ではなくても）をカバーすることができる共通のパターンを見つけることは比較的容易である。ユーザは、小数のパターン・マッチ・レジスタを用いることで、所望のキューにファイルされるものは何でもヒットであり、比較テーブルを必要とすることなく処理できるということを保証することができる。
【０１０５】
一実施形態においては、ＣＲＣチェックサムによって、グループ／個々のハッシュ・テーブル内で設定されるビットが選択される場合には、フレームは単に、パターン・マッチ結果が出るまで条件付きで容認される。たとえばベンダのコードを、マッチングすべきパターンとして非常に高い有効性で用いることができる。パターンが選択的であるほど（用いるビットが少ないほど）、信頼度の高いハッシュ・ヒット・キュー方法は効果的になる。非常に選択的なパターンを用いれば、ハッシュ・テーブル内で使用できるアドレスの数を増やすことができるにもかかわらず、有効性は保たれる。この実施形態の他の優位性は、以下の通りである。すなわちハッシング単独では、これを用いて、良好なフレームを拒否する危険を伴わずにフレームを拒否することはできないが、パターン・マッチングとハッシュ・フィルタリングとを組み合わせて用いることで、「ハッシングによるフレーム拒否」を行なうことができる。なぜならばハッシュ衝突の不確実さが取り除かれるからである。さらなる適応性は、「マッチ・キューが存在しない確率が高い」状態でパターン・マッチングおよびハッシュが拒否したフレームを、ユーザがファイルできるということであり、その結果、フレームを検査して本方法の有効性をさらに確認することができる。
【０１０６】
本明細書で説明したように、ＡＤＦ２３０の種々の制御ロジックが、ＡＤＦ２３０の前述した要素間に分散され、別個のロジック・ブロックとして例示されている。あるいは、別個の制御ロジック・ブロックが、たとえばＡＤＦ２３０の全体的な処理（パターン・マッチングおよびハッシング機能を含む）を制御するためのステート・マシーンを表わすものとして含まれていても良い。このようなステート・マシーンには、本明細書で説明した機能を実施するための多くの状態が含まれていても良い。たとえばステート・マシーンは、データが受信され、フレームが容認されたら直ちに、アイドル状態からパターン・ステータス状態に移行しても良い。パターン・ステータス状態では、パターン・ステータス情報を、受信ＦＩＦＯ２２０に対して利用できるようにしても良い。そしてステート・マシーンは、受信フレームが一時的なキュー２３４から転送される一時的なキュー・データ・フェーズに移行することができる。そして、ステート・マシーンは、送信先アドレス・フィルタリングに付随するフレーム長およびステータス（たとえば、ブロードキャスト・アドレス、グループ／単一のアドレス、無差別モード）が受信ＦＩＦＯ２２０に転送されるフレーム・ステータス状態に入る。他の状態およびステート・マシーンを本明細書で説明した機能に従って実施しても良い。
【０１０７】
一実施形態においては、情報処理システム内でメッセージを処理するための方法が提供される。情報処理システムは、メモリ、キャッシュ、およびパケット・コントローラを有する。メモリおよびキャッシュはそれぞれ、パケット・コントローラに結合されている。本方法には、メッセージを受信すること、メッセージ上でパターン・マッチングを行なって、受信メッセージが第１のパターンを含むか否かを示し第１のパターンに対応するパターン・マッチ属性を与えるパターン・マッチ結果を与えることが含まれる。本方法にはさらに、メッセージを容認すること、パターン・マッチ結果に基づいて／バッファ記述子キュー（ＢＤＱ）を選択することが含まれる。選択されたＢＤＱに従ってメッセージはメモリに記憶され、容認されたメッセージの少なくとも一部はキャッシュに選択的に記憶され、容認されたメッセージの一部はパターン・マッチ属性によって示される。
【０１０８】
さらなる実施形態においては、パターン・マッチ属性は、第１のパターンと選択されたＢＤＱとに対応する複数のＢＤＱのうちの１つを示す。他のさらなる実施形態においては、第１のパターンに対応するパターン・マッチ属性は、選択されたＢＤＱとしてデフォルトＢＤＱを示す。他のさらなる実施形態においては、メッセージは、パターン・マッチ結果に基づいて容認される。
【０１０９】
他のさらなる実施形態においては、パターン・マッチ属性はパターン・マッチ取り出しインディケータを与え、パターン・マッチ取り出しインディケータに基づいて、容認されたメッセージの一部をキャッシュに選択的に記憶する。パターン・マッチ取り出しインディケータは、取り出しが第１のパターンに対して有効および／または無効であると示す場合に、容認されたメッセージの一部をキャッシュに記憶しても良い。パターン・マッチ属性は、取り出しインデックスおよび取り出し長さを与えて、キャッシュに記憶される容認されたメッセージの一部を示しても良い。またパターン・マッチ属性は、容認されたメッセージの一部をキャッシュに記憶するために行なう、第１のパターンに対応するキャッシュ書き込み形式を示しても良い。
【０１１０】
他のさらなる実施形態においては、情報処理システムは、メモリおよびキャッシュに結合された複数のプロセッサを含み、各プロセッサは、割り当てられたＢＤＱを有している。パターン・マッチ結果は、メッセージを処理するための複数のプロセッサのうちの１つを示す。他のさらなる実施形態においては、パターン・マッチ結果は、メッセージに対応する優先度を示す。
【０１１１】
他のさらなる実施形態においては、選択されたＢＤＱの少なくとも一部をキャッシュに記憶する。パターン・マッチ属性は、選択されたＢＤＱの少なくとも一部をキャッシュに記憶するために行なう、第１のパターンに対応するキャッシュ書き込み形式を示しても良い。
【０１１２】
他のさらなる実施形態においては、メッセージ上でパターン・マッチングを行なうステップは、第１のパターンがメッセージ内に存在するか否かを判定することであって、第１のパターンはパターン・マッチ・データによって示され、パターン・マッチ・データは、対応するパターン・マッチ制御を有する、判定すること、第１のパターンが存在するか否かの判定に応答して、パターン・マッチ制御に基づいてパターン・マッチ結果を与えることを含む。パターン・マッチ制御は、第１のパターンが複数のパターンの連結か否かを示す連結インディケータを含んでいても良い。パターン・マッチ制御は、連続検索が有効であるか否かを示す連続検索インディケータを含んでいても良い。パターン・マッチ制御が逆パターン・インディケータを含み、かつ逆パターン・インディケータが第１の値を有する場合には、パターン・マッチ結果はメッセージ内に第１のパターンが存在するか否かを示し、逆パターン・インディケータが第２の値を有する場合には、パターン・マッチ結果は第１のパターンがメッセージ内に存在しないか否かを示しても良い。
【０１１３】
他の実施形態においては、情報処理システムは、メモリと、キャッシュと、メモリおよびキャッシュに結合されるパケット・コントローラとを含む。パケット・コントローラは、メッセージを受信するための入力と、複数のパターンを記憶する／パターン・マッチ・レジスタと、複数のパターンのうちのそれぞれに対応するパターン・マッチ属性を記憶するパターン属性レジスタと、メッセージ上でパターン・マッチングを行なうために、かつ受信メッセージが複数のパターンのうちの第１のパターンを含むか否かを示すパターン・マッチ結果を与えるために結合されるパターン・マッチング・ロジックと、容認された場合に受信メッセージを記憶するために結合される受信バッファと、容認されたメッセージを受信バッファからメモリに与えるために、かつ容認されたメッセージの少なくとも一部をキャッシュに与えるために結合されるメモリ・コントローラとを含む。容認されたメッセージの一部は、第１のパターンに対応するパターン・マッチ属性によって示される。
【０１１４】
他のさらなる実施形態においては、容認されたメッセージは、選択されたＢＤＱに従ってメモリに与えられる。選択されたＢＤＱは、複数のＢＤＱのうちの１つであり、第１のパターンに対応するパターン・マッチ属性によって示されても良い。メモリ・コントローラは、選択されたＢＤＱの少なくとも一部をキャッシュに与えるために結合されても良い。パターン・マッチ属性は、選択されたＢＤＱの少なくとも一部をキャッシュに記憶するために行なう、第１のパターンに対応するキャッシュ書き込み形式を示しても良い。
【０１１５】
他のさらなる実施形態においては、第１のパターンに対応するパターン・マッチ属性は、取り出しインデックスおよび取り出し長さを与えて、キャッシュに与えられた容認されたメッセージの一部を示す。他のさらなる実施形態においては、第１のパターンに対応するパターン・マッチ属性は、容認されたメッセージの一部をキャッシュ内に記憶するために行なうキャッシュ書き込み形式を示す。
【０１１６】
他の実施形態においては、本方法は、メッセージを受信すること、第１のパターンに対応する第１のパターン・マッチが受信メッセージ内で検出されるか否かを判定することを含む。第１のパターンは、パターン・マッチ・データによって示されるとともに、対応するパターン・マッチ容認インディケータおよび対応する連続検索有効インディケータを有する。第１のパターン・マッチが検出され、かつ対応するパターン・マッチ容認インディケータが、検出された第１のパターンを有する受信メッセージの容認を示す場合に、対応する連続検索有効インディケータに基づいて受信メッセージを選択的に容認する。
【０１１７】
他のさらなる実施形態においては、メッセージを受信することは、パケットの少なくとも一部を受信することを含む。パケットはさらに、イーサネット・パケットとして特徴付けられても良い。
【０１１８】
他のさらなる実施形態においては、第１のパターン・マッチが検出され、かつ第１のパターンに対応するパターン・マッチ容認インディケータが受信メッセージの容認を示す場合に、受信メッセージを容認することを、第１のパターンに対応する連続検索インディケータが連続検索を示さないときに行なう。
【０１１９】
他のさらなる実施形態においては、第１のパターン・マッチが検出され、かつ第１のパターンに対応するパターン・マッチ容認インディケータが受信メッセージの容認を示す場合に、受信メッセージを容認することを、第１のパターンに対応する連続検索インディケータが連続検索を示し、かつ受信メッセージの拒否を示さない対応するパターン・マッチ容認インディケータを有する第２のパターンに対応する第２のパターン・マッチが検出されるときに行なう。第２のパターンはパターン・マッチ・データによって示されても良く、第２のパターンに対応するパターン・マッチ容認インディケータは、受信メッセージを容認すること、受信メッセージを容認も拒否もしないことのうちの一方を示しても良い。第２のパターンに対応するパターン・マッチ容認インディケータは、受信メッセージを容認すること、受信メッセージを容認も拒否もしないことのうちの一方を示しても良く、パターン・マッチングは第２のパターンに対して無効であっても良い。
【０１２０】
他のさらなる実施形態においては、第１のパターン・マッチが検出され、かつ第１のパターンに対応するパターン・マッチ容認インディケータが受信メッセージの容認を示す場合に、受信メッセージを容認しないことを、第１のパターンに対応する連続検索インディケータが連続検索を示し、かつ受信メッセージの拒否を示す対応するパターン・マッチ容認インディケータを有する第２のパターンに対応する第２のパターン・マッチが検出されるときに行なう。
【０１２１】
他のさらなる実施形態においては、対応するパターン・マッチ容認インディケータは、受信メッセージを容認すること、拒否すること、容認も拒否もしないことのうちの１つを示す。他のさらなる実施形態においては、本方法はさらに、第１のパターン・マッチが検出され、第１のパターンに対応するパターン・マッチ容認インディケータが受信メッセージの拒否を示す場合に、メッセージを拒否することを含む。
【０１２２】
他のさらなる実施形態においては、第１のパターンが対応する逆パターン・インディケータを有し、かつ逆パターン・インディケータが第１の値を有する場合には、受信メッセージが第１のパターンを含むときに第１のパターン・マッチは検出され、逆パターン・インディケータが第２の値を有する場合には、受信メッセージが第１のパターンを含まないときに第１のパターン・マッチは検出される。
【０１２３】
他のさらなる実施形態においては、第１のパターンは、第１のパターン・マッチが検出されるか否かを判定するための受信メッセージ内の箇所を示す対応するマッチ・インデックスを有する。
【０１２４】
他のさらなる実施形態においては、第１のパターンは、対応する連結インディケータを有する。本方法はさらに、第２のパターン・マッチが受信メッセージ内で検出されるか否かを判定することを含む。第１のパターン・マッチおよび第２のパターン・マッチが検出され、第１のパターンに対応するパターン・マッチ容認インディケータが受信メッセージの容認を示し、かつ第１のパターンに対応する連結インディケータが第１および第２のパターンの連結を示す場合には、対応する連続検索有効インディケータに基づいてメッセージを選択的に容認する。第２のパターン・マッチが検出されず、第１のパターンに対応する連結インディケータが第１および第２のパターンの連結を示す場合には、第１のパターン・マッチは検出されないとみなす。
【０１２５】
他のさらなる実施形態においては、本方法は、ハッシュ・ヒットが起きたか否かを判定するためにハッシュ関数を実行することであって、ハッシュ・ヒットが起き、第１のパターン・マッチが検出され、かつ第１のパターンに対応するパターン・マッチ容認インディケータが受信メッセージの容認を示す場合に、対応する連続検索有効インディケータに基づいてメッセージを選択的に容認する、実行することを含む。
【０１２６】
他の実施形態においては、本方法は、メッセージを受信すること、複数のパターンのうちの第１のパターンに対応する第１のパターン・マッチが受信メッセージ内で検出されるか否かを判定することを含む。第１のパターンは、対応するパターン・マッチ容認インディケータを有する。本方法はさらに、第１のパターン・マッチが検出される場合に、複数のパターンのうちの少なくとも１つに対応する連結インディケータが連結を示すか否かを判定することを含む。本方法はさらに、第１のパターン・マッチが検出され、複数のパターンのうちの少なくとも１つのパターンの連結インディケータが連結を示す場合に、複数のパターンのうちの第２のパターンに対応する第２のパターン・マッチが受信メッセージ内で検出されるか否かを判定することを含む。連結インディケータは、第１および第２のパターンのうちの一方に対応し、第２のパターンは、対応するパターン・マッチ容認インディケータを有する。第１のパターン・マッチが検出され、第１および第２のパターンのうちの一方に対応する連結インディケータが連結を示し、かつ第２のパターン・マッチが検出される場合に、第１のパターンに対応するパターン・マッチ容認インディケータと第２のパターンに対応するパターン・マッチ容認インディケータとのうちの少なくとも一方に基づいて、受信メッセージを選択的に容認する。
【０１２７】
他のさらなる実施形態においては、第１のパターンに対応するパターン・マッチ容認インディケータは、第１のパターンを用いて処理されるメッセージを容認すること、拒否すること、容認も拒否もしないことのうちの１つを示し、第２のパターンに対応するパターン・マッチ容認インディケータは、第２のパターンを用いて処理されるメッセージを容認すること、拒否すること、容認も拒否もしないことのうちの１つを示す。
【０１２８】
他のさらなる実施形態においては、連結インディケータ、および受信メッセージを選択的に容認するために用いられるパターン・マッチ容認インディケータのうちの１つの両方が、第１のパターンおよび第２のパターンのうちの同じ一方に対応する。
【０１２９】
他のさらなる実施形態においては、第１のパターン・マッチが検出され、第１および第２のパターンのうちの一方に対応する連結インディケータが連結を示し、かつ第２のパターン・マッチが検出される場合に、第１のパターンに対応するパターン・マッチ容認インディケータと第２のパターンに対応するパターン・マッチ容認インディケータとのうちの少なくとも一方に基づいて、受信メッセージを拒否する。
【０１３０】
他のさらなる実施形態においては、第１のパターンが対応する逆パターン・インディケータを有し、第２のパターンが対応する逆パターン・インディケータを有し、かつ第１のパターンに対応する逆パターン・インディケータが第１の値を有する場合には、受信メッセージが第１のパターンを含まないときに第１のパターン・マッチは検出され、第１のパターンに対応する逆パターン・インディケータが第２の値を有する場合には、受信メッセージが第１のパターンを含むときに第１のパターン・マッチは検出され、第２のパターンに対応する逆パターン・インディケータが第１の値を有する場合には、受信メッセージが第２のパターンを含まないときに第２のパターン・マッチは検出され、第２のパターンに対応する逆パターン・インディケータが第２の値を有する場合には、受信メッセージが第２のパターンを含むときに第２のパターンは検出される。
【０１３１】
他のさらなる実施形態においては、第１のパターン・マッチおよび第２のパターン・マッチが検出される場合、受信メッセージ内で第２のパターンの後に第１のパターンが生じる。他のさらなる実施形態においては、メッセージを受信することが、パケットの少なくとも一部を受信することを含む。他のさらなる実施形態においては、パケットはさらに、イーサネット・パケットとして特徴付けられる。
【０１３２】
他のさらなる実施形態においては、第１のパターンは、受信メッセージ内で第１のパターン・マッチが検出されるか否かを判定するための受信メッセージ内の第１の箇所を示す対応するマッチング・インデックスを有し、第２のパターンは、受信メッセージ内で第２のパターン・マッチが検出されるか否かを判定するための受信メッセージ内の第２の箇所を示す対応するマッチング・インデックスを有する。
【０１３３】
他のさらなる実施形態においては、第１のパターン・マッチが検出され、複数のパターンのうちの少なくとも１つのパターンの連結インディケータが連結を示し、かつ第２のパターン・マッチが検出される場合に、受信メッセージは容認される。
【０１３４】
他のさらなる実施形態においては、第１のパターン・マッチが検出され、複数のパターンのうちの少なくとも１つのパターンの連結インディケータが連結を示し、かつ第２のパターン・マッチが検出される場合に、受信メッセージは、連続検索を行なうか否かを示す連続検索インディケータに基づいて選択的に容認される。
【０１３５】
他の実施形態においては、パケット・コントローラは、メッセージを受信する入力と、パターン・マッチング・ロジックと、制御ロジックとを備える。パターン・マッチング・ロジックは、メッセージの受信に対応して、第１のパターンに対応する第１のパターン・マッチが受信メッセージ内で検出されるか否かを判定する。パターン・マッチ・ロジックは、少なくとも１つのパターン・マッチ・レジスタを含み、パターン・マッチ・レジスタは、第１のパターンを示すパターン・マッチ・データを記憶するように構成されるとともに、第１のパターンに対応するパターン・マッチ容認インディケータと第１のパターンに対応する連続検索有効インディケータとを含むパターン・マッチング制御を記憶する。制御ロジックは、パターン・マッチング・ロジックに結合されている。動作中、制御ロジックは、第１のパターン・マッチが検出され、かつ第１のパターンに対応するパターン・マッチ容認インディケータが受信メッセージの容認を示す場合に、第１のパターンに対応する連続検索有効インディケータに基づいて受信メッセージを選択的に容認する。
【０１３６】
他のさらなる実施形態においては、第１のパターンに対応する連続検索インディケータが連続検索を示さず、第１のパターン・マッチが検出され、かつ第１のパターンに対応するパターン・マッチ容認インディケータが受信メッセージの容認を示す場合に、制御ロジックは受信メッセージを容認する。
【０１３７】
他のさらなる実施形態においては、第１のパターン・マッチが検出され、かつ第１のパターンに対応するパターン・マッチ容認インディケータが受信メッセージの容認を示す場合に、制御ロジックが受信メッセージを容認することを、第１のパターンに対応する連続検索インディケータが連続検索を示し、かつパターン・マッチ・データによって示されるとともに、受信メッセージの拒否を示さないパターン・マッチ制御によって示される対応するパターン・マッチ容認インディケータを有する第２のパターンに対応する第２のパターン・マッチが検出されるときに行なう。
【０１３８】
他のさらなる実施形態においては、第１のパターン・マッチが検出され、かつ第１のパターンに対応するパターン・マッチ容認インディケータが受信メッセージの容認を示す場合に、制御ロジックが受信メッセージを容認しないことを、第１のパターンに対応する連続検索インディケータが連続検索を示し、かつパターン・マッチ・データによって示されるとともに、受信メッセージの拒否を示すパターン・マッチ制御によって示される対応するパターン・マッチ容認インディケータを有する第２のパターンに対応する第２のパターン・マッチが検出されるときに行なう。
【０１３９】
他のさらなる実施形態においては、対応するパターン・マッチ容認インディケータは、受信メッセージを容認すること、拒否すること、容認も拒否もしないことのうちの１つを示す。
【０１４０】
他のさらなる実施形態においては、パターン・マッチング制御は、第１のパターンに対応する逆パターン・インディケータを含み、逆パターン・インディケータが第１の値を有する場合には、受信メッセージが第１のパターンを含むときに第１のパターン・マッチは検出され、逆パターン・インディケータが第２の値を有する場合には、受信メッセージが第１のパターンを含まないときに第１のパターン・マッチは検出される。
【０１４１】
他のさらなる実施形態においては、パターン・マッチ制御は、第１のパターン・マッチが検出されるか否かを判定するための受信メッセージ内の箇所を示す第１のパターンに対応するマッチ・インデックスを含む。
【０１４２】
他のさらなる実施形態においては、パターン・マッチ制御は、第１のパターンに対応する連結インディケータを含み、パターン・マッチング・ロジックは、受信メッセージ内で第２のパターン・マッチが検出されるか否かを判定し、制御ロジックは、第１のパターン・マッチおよび第２のパターン・マッチが検出され、第１のパターンに対応するパターン・マッチ容認インディケータが受信メッセージの容認を示し、かつ第１のパターンに対応する連結インディケータが第１および第２のパターンの連結を示す場合には、対応する連続検索有効インディケータに基づいてメッセージを選択的に容認し、第２のパターン・マッチが検出されず、かつ第１のパターンに対応する連結インディケータが第１および第２のパターンの連結を示す場合には、第１のパターン・マッチは検出されていないとみなす。
【０１４３】
一実施形態においては、パケット・コントローラは、メッセージを受信する入力と、パターン・マッチング・ロジックと、制御ロジックとを含む。パターン・マッチング・ロジックは、第１のパターンに対応する第１のパターン・マッチが受信メッセージ内で検出されるか否か、および第２のパターンに対応する第２のパターン・マッチが検出されるか否かを判定する。パターン・マッチ・ロジックは、少なくとも１つのパターン・マッチ・レジスタを含む。パターン・マッチ・レジスタは、第１のパターンおよび第２のパターンを示すパターン・マッチ・データを記憶する。またパターン・マッチ・レジスタは、第１のパターンに対応するパターン・マッチ容認インディケータと、第２のパターンに対応するパターン・マッチ容認インディケータと、第１のパターンに対応する連結インディケータと、第２のパターンに対応する連結インディケータとを含むパターン・マッチ制御情報を記憶する。制御ロジックは、パターン・マッチング・ロジックに結合されて、第１のパターン・マッチが検出され、第２のパターン・マッチが検出され、かつ第１および第２のパターンのうちの一方に対応する連結インディケータが連結を示す場合に、第１のパターンに対応するパターン・マッチ容認インディケータと第２のパターンに対応するパターン・マッチ容認インディケータとのうちの少なくとも一方に基づいて、受信メッセージを選択的に容認する。
【０１４４】
他のさらなる実施形態においては、第１のパターンに対応するパターン・マッチ容認インディケータと第２のパターンに対応するパターン・マッチ容認インディケータとのうちの一方と、第１および第２のパターンのうちの一方に対応する連結インディケータとの両方が、第１のパターンおよび第２のパターンのうちの同じ一方に対応する。他のさらなる実施形態においては、第１のパターン・マッチが検出され、第２のパターン・マッチが検出されず、かつ第１および第２のパターンの一方に対応する連結インディケータが連結を示す場合に、制御ロジックは受信メッセージを容認しない。
【０１４５】
他のさらなる実施形態においては、パターン・マッチ制御は、第１のパターンに対応する逆パターン・インディケータと、第２のパターンに対応する逆パターン・インディケータとを含み、第１のパターンに対応する逆パターン・インディケータが第１の値を有する場合には、受信メッセージが第１のパターンを含まないときに第１のパターン・マッチは検出され、第１のパターンに対応する逆パターン・インディケータが第２の値を有する場合には、受信メッセージが第１のパターンを含むときに第１のパターン・マッチは検出され、第２のパターンに対応する逆パターン・インディケータが第１の値を有する場合には、受信メッセージが第２のパターンを含まないときに第２のパターン・マッチは検出され、第２のパターンに対応する逆パターン・インディケータ第２の値を有する場合には、受信メッセージが第２のパターンを含むときに第２のパターンは検出される。
【０１４６】
他のさらなる実施形態においては、パターン・マッチ制御は、受信メッセージ内で第１のパターン・マッチが検出されるか否かを判定するための受信メッセージ内の第１の箇所を示す第１のパターンに対応するマッチ・インデックスと、受信メッセージ内で第２のパターン・マッチが検出されるか否かを判定するための受信メッセージ内の第２の箇所を示す第２のパターンに対応するマッチ・インデックスとを含む。他のさらなる実施形態においては、第１のパターン・マッチが検出され、第１および第２のパターンのうちの一方に対応する連結インディケータが連結を示し、かつ第２のパターン・マッチが検出される場合に、制御ロジックは受信メッセージを容認する。他のさらなる実施形態においては、パターン・マッチ制御は、第１のパターンおよび第２のパターンのうちの一方に対応する連続検索有効インディケータを含んでおり、第１のパターン・マッチが検出され、複数のパターンのうちの少なくとも１つのパターンの連結インディケータが連結を示し、かつ第２のパターン・マッチが検出される場合に、制御ロジックが受信メッセージを選択的に容認することを、連続検索有効インディケータに基づいて、かつ第１のパターンに対応するパターン・マッチ容認インディケータと第２のパターンに対応するパターン・マッチ容認インディケータとのうちの少なくとも一方に基づいて行なう。
【０１４７】
本明細書で示したアーキテクチャは単に典型であり、実際には同じ機能を実現する他の多くのアーキテクチャを実施できることを理解されたい。抽象的ではあるがそれでも明確な意味において、同じ機能を実現するためのコンポーネントのどのような配置も、所望の機能が実現されるように効果的に「関連」している。したがって、特定の機能を実現するように組み合わせた本明細書におけるどのような２つのコンポーネントも、アーキテクチャまたは中間コンポーネントとは関係なく、所望の機能を実現するように互いに「関連している」と考えることができる。同様に、そのように関連するどんな２つのコンポーネントも、所望の機能を実現するために、互いに「動作可能に接続されている」か、あるいは「動作可能に結合されている」と考えることができる。
【０１４８】
当業者であれば、ロジック・ブロック間の境界は単に例示的なものであり、代替的な実施形態においては、ロジック・ブロックまたは回路要素を結合しても良いし、種々のロジック・ブロックまたは回路要素に対して機能を交互に分割することを課しても良いことを、認めるであろう。さらに、代替的な実施形態においては、特定のコンポーネントの複数の例を組み合わせても良い。
【０１４９】
さらに、当業者であれば、前述した動作の機能間の境界は単に例示的なものであることを認めるであろう。複数の動作の機能を組み合わせて単一の動作にしても良く、および／または単一の動作の機能を分散してさらなる動作にしても良い。さらに代替的な実施形態には、特定の動作の複数の例が含まれていても良く、動作順序は、変更しても良いし、種々の他の実施形態と並行して行なってさえも良い。
【０１５０】
前述の説明は典型であるため、「一実施形態」について説明がなされている場合、それは典型的な実施形態である。したがって、このような文脈において用語「１つ」を用いることは、１つおよび１つだけの実施形態が、説明した特徴を有し得るということを示すことを意図してはいない。むしろ、多くの他の実施形態が、典型的な「一実施形態」の説明した特徴を有していても良く、多くの場合有している。したがって、前述で用いたように、本発明を一実施形態との関連で説明するときには、一実施形態は本発明の多くの可能な実施形態のうちの１つである。
【０１５１】
詳細な説明において用語「一実施形態」を用いることについての前述の注意にもかかわらず、特定の数の請求項要素を導入することが添付の特許請求の範囲において意図される場合には、このような意図は請求項において明白に説明されていること、このような説明がない場合にはこのような限定は存在もせず意図もされないことが、当業者によって理解される。たとえば、添付の特許請求の範囲において、請求項要素が「１つの」特徴を有すると説明される場合には、要素は、説明した特徴の１つおよび１つだけに限定されることが意図される。
【０１５２】
本発明の特定の実施形態について図示し説明してきたが、本明細書で請求される本発明から逸脱することなく、本明細書で教示されたものに基づいて種々の変更、代替的な構成、および均等物を用いても良いことが、当業者には明らかである。その結果、添付の特許請求の範囲は、その範囲にこのようなすべての変化、変更などを包含するとともに、本発明の真の技術思想および範囲の中にある。さらに、本発明は添付の請求項のみによって規定されることを理解されたい。前述の説明は、本発明の実施形態の網羅的なリストを示すことが意図されているものではない。特に断らない限り、本明細書において示される各例は、非限定または非排他的な例であり、用語が非限定であるか否かにかかわらず、非排他的または類似の用語が、各例によって同時に示されている。いくつかの典型的な実施形態およびそれらに対する典型的な変形について概要を述べるように試みてきたが、他の実施形態および／または変形も、添付の特許請求の範囲において規定される本発明の範囲内である。
【図面の簡単な説明】
【０１５３】
【図１】本発明の実施形態による情報処理および通信システムを例示するブロック図。
【図２】図１のシステムのパケット・コントローラの受信部を例示するブロック図。
【図３】図１のシステムによって受信可能および構文解析可能である典型的なメッセージ・アドレス・フォーマットを例示するブロック図。
【図４】図１の典型的なバッファ記述子キューを例示するブロック図。
【図５】図１の典型的なパターン・マッチおよびパターン・マッチ属性レジスタを例示するブロック図。
【図６】図１のシステムによる受信メッセージを処理するための方法を例示するフロー・チャート。
【図７】図１のシステムによって受信されたメッセージ・アドレスをハッシングおよびパターン・マッチングするための方法の一部を例示するフロー・チャート。
【図８】図１のシステムによって受信されたメッセージ・アドレスをハッシングおよびパターン・マッチングするための方法の他の部分を例示するフロー・チャート。
【図９】図７の例示的なフロー内で図１のシステムによって受信されたメッセージ・アドレスをパターン・マッチングするための方法を例示するフロー・チャート。
【図１０】図１のシステム内で容認されたメッセージを処理するための方法を例示するフロー・チャート。
【図１１】図１のシステムによるメッセージの部分を取り出しおよび隠蔽するための方法を例示するフロー・チャート。
【図１２】ハッシングおよび／またはパターン・マッチングを用いて処理される多くのアドレスを例示するテーブル。
【図１】
2007525037.tif 000003
【図２】
2007525037.tif 000004
【図３】
2007525037.tif 000005
【図４】
2007525037.tif 000006
【図５】
2007525037.tif 000007
【図６】
2007525037.tif 000008
【図７】
2007525037.tif 000009
【図８】
2007525037.tif 000010
【図９】
2007525037.tif 000011
【図１０】
2007525037.tif 000012
【図１１】
2007525037.tif 000013
【図１２】
2007525037.tif 000014
【手続補正書】
【提出日】平成18年11月22日(2006.11.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリ、キャッシュ、およびパケット・コントローラを有し、前記メモリおよび前記キャッシュはそれぞれ前記パケット・コントローラに結合される情報処理システム内でメッセージを処理するための方法であって、
メッセージを受信すること、
前記メッセージ上でパターン・マッチングを行なって、前記受信メッセージが第１のパターンを含むか否かを示すとともに該第１のパターンに対応するパターン・マッチ属性を与えるパターン・マッチ結果を与えること、
前記メッセージを容認すること、
前記パターン・マッチ結果に基づいてバッファ記述子キュー（ＢＤＱ）を選択すること、
前記選択されたＢＤＱに従って前記メッセージをメモリに記憶すること、
前記容認されたメッセージの少なくとも一部をキャッシュに選択的に記憶すること、
を備え、前記容認されたメッセージの一部を、前記パターン・マッチ属性によって示す、方法。
【請求項２】
請求項１に記載の方法において、前記パターン・マッチ属性はパターン・マッチ取り出しインディケータを与え、前記容認されたメッセージの前記一部をキャッシュに選択的に記憶することは、前記パターン・マッチ取り出しインディケータに基づいて行なわれ、前記パターン・マッチ取り出しインディケータが、取り出しが前記第１のパターンに対して有効であると示す場合には、前記容認されたメッセージの前記一部をキャッシュに記憶し、前記パターン・マッチ取り出しインディケータが、取り出しが前記第１のパターンに対して無効であると示す場合には、前記容認されたメッセージの前記一部をキャッシュに記憶しない、方法。
【請求項３】
請求項２に記載の方法において、前記パターン・マッチ属性は、取り出しインデックスおよび取り出し長さを与えて、キャッシュに記憶される前記容認されたメッセージの前記一部を示す、方法。
【請求項４】
方法であって、
メッセージを受信すること、
第１のパターンに対応する第１のパターン・マッチが前記受信メッセージ内で検出されるか否かを判定することであって、前記第１のパターンは、パターン・マッチ・データによって示されるとともに、対応するパターン・マッチ容認インディケータおよび対応する連続検索有効インディケータを有する、判定すること、
前記第１のパターン・マッチが検出され、かつ前記対応するパターン・マッチ容認インディケータが、検出された第１のパターンを有する前記受信メッセージの容認を示す場合には、前記対応する連続検索有効インディケータに基づいて前記受信メッセージを選択的に容認すること、
を備える方法。
【請求項５】
方法であって、
メッセージを受信すること、
複数のパターンのうちの第１のパターンに対応する第１のパターン・マッチが前記受信メッセージ内で検出されるか否かを判定することであって、前記第１のパターンは、対応するパターン・マッチ容認インディケータを有する、判定すること、
前記第１のパターン・マッチが検出される場合には、前記複数のパターンのうちの少なくとも１つに対応する連結インディケータが連結を示すか否かを判定すること、
前記第１のパターン・マッチが検出され、かつ前記複数のパターンのうちの前記少なくとも１つの連結インディケータが連結を示す場合に、前記複数のパターンのうちの第２のパターンに対応する第２のパターン・マッチが前記受信メッセージ内で検出されるか否かを判定することであって、前記連結インディケータは、前記第１および第２のパターンのうちの一方に対応し、前記第２のパターンは、対応するパターン・マッチ容認インディケータを有する、判定すること、
前記第１のパターン・マッチが検出され、前記第１および第２のパターンのうちの一方に対応する連結インディケータが連結を示し、かつ前記第２のパターン・マッチが検出される場合には、前記第１のパターンに対応するパターン・マッチ容認インディケータと前記第２のパターンに対応するパターン・マッチ容認インディケータとのうちの少なくとも一方に基づいて、前記受信メッセージを選択的に容認すること、
を備える方法。
【国際調査報告】
2007525037.tif 000015
2007525037.tif 000016