[背景]
[分野]
本発明は、ネットワーク通信に関し、より詳細には、イーサネット(登録商標)・ネットワークのようなネットワークを介して受信されたメッセージを処理することに関する。
[関連技術]
ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、及び他の種類のネットワークは、典型的には、様々なパケット・ベースの通信プロトコルに従って動作するコネクションを介して結合された多数の情報処理システムを含む。例えば、イーサネット(登録商標)IEEE802.3プロトコルは、キャリア・センス多重アクセス/衝突検出(CSMA/CD)アプローチに基づいた広範に使用のLANプロトコルである。イーサネット(登録商標)とIEEE802.3プロトコルとは、似ていて、そして同じLAN上で共存することができるので、これら両方は、時々イーサネット(登録商標)と呼ばれる。10/100イーサネット(登録商標)は、10から100メガビット/秒(Mbps)の増大したイーサネット(登録商標)速度を与え、そしてバックボーン及び厳しい接続性に関して単純で且つ費用対効果が大きいオプション(選択)を提供する。ギガビット・イーサネット(登録商標)は、基本イーサネット(登録商標)・プロトコルの上に形成される別のイーサネット(登録商標)・プロトコルであるが、しかし速度を10/100イーサネット(登録商標)より10倍の1000Mbps又は1ギガビット/秒(Gbps)に増大する。
ネットワークの中の装置(デバイス)は、多くの場合、それらに向けられたメッセージとそれらに向けられていないメッセージとを受信する。従って、そのような装置は、各到来メッセージを局所的に分析して、当該装置がメッセージを受け入れるかどうかを決定しなければならない。典型的には、各装置は、各受信されたメッセージのアドレスと或る形式で比較しなければならないアドレスを有する。正確なアドレス・マッチは、比較されるべきアドレスの長さ及び非常に多数のアドレスの故に、計算上集約的である。装置が多数の他の装置に対するメッセージを受け入れることができ、非常に多数のメッセージが、受信され、且つネットワークの速度が益々増大しているので、到来メッセージを処理(例えば、受け入れ、又は拒絶)する問題は、ネットワークの中の様々な装置でボトルネックを引き起こし、そして全体の性能を落とすことになる。従来のデスティネーション・アドレス(宛先アドレス)認識方法は、メディア・アクセス制御(MAC)レベルより高いオープン・システム相互接続(OSI)レベルで行われるポスト・フィルタリングを必要とし、そして著しいソフトウエア及び一般的処理ハードウエア介入を必要とする。幾つかの技術は、コンテント・アドレサブル・メモリ(CAM)を採用するが、しかしそのような技術は、典型的には、高価であり、過剰に電力を消費し、柔軟性が無い。従って、到来メッセージを処理する性能を増強する必要性が存在する。
到来メッセージを単に受け入れ又は拒絶することに加えて、各装置は、典型的には、メッセージを受信することに応答して実行すべき様々なタスクを有する。従って、メッセージにより受信された一部のデータは、格納され、且つ或る短い時間内にアクセスされる必要がある。従って、受信されたメッセージを事前処理することによりそのようなメッセージの処理を増強して(例えば、受信されたメッセージがプロセッサ又はソフトウエア駆動のシステム資源により検査される前にインバウンド・メッセージをソートすることにより)、他のタスクのためそのような資源の使用を解放し、且つ重要な又は高い優先度フレームにアクセスするレイテンシー(待ち時間)を低減することが有利であろう。
本発明は、添付図面を参照することにより、より良く理解され、そしてその多くの目的、特徴及び利点が、当業者に明らかにされるであろう。異なる図面においての同じ参照番号の使用は、類似又は同一の構成要素を示す。
[詳細な説明]
以下の説明は、本発明の少なくとも一つの例の詳細な説明を提供することを意図しており、本発明自体を制限するものと取るべきでない。むしろ、いずれの多くの変形は、この説明に続く特許請求の範囲において適切に定義される本発明の範囲内に入り得る。
図1は、本発明の一実施形態に従った情報処理及び通信システム100を示すブロック図である。情報処理及び通信システム100は、プロセッサ110、キャッシュ120、メモリ130、システム・バス140、周辺装置150、及びパケット制御器160を含む。プロセッサ110、キャッシュ120、メモリ130、周辺装置150、及びパケット制御器160は、全て、システム・バス140を介して結合されている。情報処理及び通信システム100は、イーサネット(登録商標)、ギグイーサネット(登録商標)(Gig−Ethernet(登録商標))及び/又はエックスギグイーサネット(登録商標)(XGig−Ethernet(登録商標))制御器であり得て、又はさもなければそれらと互換性のあるものであり、ネットワーク・スイッチ、又はルータ、又はネットワーク内で通信するための他の種類の装置(デバイス)であり得る。
パケット制御器160は、バス・インターフェース・ユニット(BIU)170、受信部180、送信部185、及びメディア・アクセス制御器(MAC)190を含む。バス・インターフェース・ユニット170は、システム・バス140に結合されている。バス・インターフェース・ユニット170は、接続172を介して受信部180に、そして接続174を介して送信部185に結合されている。MAC190は、接続192を介して受信部180に、そして接続194を介して送信部185に結合されている。MAC190は、物理層ハードウエアに結合されて、パケットのようなメッセージを物理的(PHY)接続198を介して他の装置から受信する。
メッセージは、MAC190で受信され、そして受信部180に通される。メッセージは、アドレス認識、ハッシング、パターン・マッチング、又はハッシング且つパターン・マッチング(例えば、少なくとも図2から図9を参照して以下で説明されるようなもの)に応じて受け入れられたり又は受け入れられなかったりする。受け入れられたメッセージからの情報は、メモリ130に通される。特にプロセッサ110又は他のシステム資源による迅速なアクセスが適格であるという或る一定の情報が、パターン・マッチングにより識別され、その場合、そのような情報は、メモリ130に送られた正常なメッセージ・データから抽出され、そしてその抽出されたデータは、(例えば、少なくとも図2から図6及び図10から図11を参照して以下で説明されるように)キャッシュ120にスタッシュ(stash)される。
開示されるデスティネーション・アドレス認識プロトコルは、ポスト・フィルタリングの必要性を最小にし、そして更なるソフトウエア及びハードウエア介入をより高いOSIレベルで要求する代わりにメディア・アクセス制御レベルで行われることができる。一部の組のアドレスに対して、ユーザは、MACレベルで完全なフィルタリングをもたらす1組のパターンを見つけることができるであろう。決定性アルゴリズムを用いて、必要とされるパターンを発生して、完全なハッシュ時間フィルタリング(hash−time filtering)を保証し得る。開示されるプロトコルはまた、単にデスティネーション・アドレス内ばかりでなく受け入れられたフレーム全体にわたりパターン・マッチ検索を可能にして、ハッシュ時間フィルタリングの結果を精緻にする。
メモリ130は、以下で更に詳細に説明されるように、到来メッセージを格納するフレーム・データ・バッファ134と、その格納されたメッセージを追跡するバッファ記述子キュー132とを含む。キャッシュ120は、1又はそれより多くのバッファ記述子キュー122を格納し得る格納場所と、プロセッサ110の続いての使用のため、抽出されたデータ124をスタッシュ(即ち、格納)する格納場所とを含む。抽出されたデータは、本明細書で説明される或る一定のパターン・マッチング・プロトコルに従って、キャッシュ120に格納のため到来メッセージの正常なフレーム・データから抽出されるデータである。抽出されたデータは、例えば、臨界的データ(重要なデータ)(critical data)、サービスの質(QOS)レベル・データ、又は他の高優先度データであり得て、それらに対して早められたアクセス時間が望ましい。メモリ130及びキャッシュ120は、プロセッサ110によりアクセス可能であり、そして情報処理及び通信システム100内の他の装置又はプロセッサ(図示せず)によりアクセス可能ですらあり得る。
図2は、情報処理及び通信システム100のパケット制御器160の受信部180を示すブロック図である。受信部180は、直接メモリ・アクセス(DMA)制御器210、受信FIFO220、及びアドレス/データ・フィルタ(ADF)230を含む。ADF230は、メッセージをMAC190から受信し、そしてそのようなメッセージをFIFO220に選択的に与えるよう結合されている。アドレス/データ・フィルタ230により受信可能である、フレームを有する典型的なメッセージ・パケットが、図3を参照して以下でより詳細に説明される。DMA210は、FIFO制御器222の制御下で、メッセージ情報(例えば、アドレス及びデータ情報、及び以下で説明されるパターン状態(ステータス)情報のようなメッセージフィルタ結果)を受信FIFO220から受信するよう結合されている。
ADF230は、一時キュー234、パターン・マッチング論理232、及びアドレス認識及びハッシュ論理238を含む。一時キュー234、パターン・マッチング論理232及びアドレス認識及びハッシュ論理238のそれぞれは、メッセージ(例えば、フレーム)をMAC190から受信するよう結合されている。一時キュー234は、メッセージ・フィルタ結果情報をパターン・マッチング論理232及びアドレス認識及びハッシュ論理238から受信して、それに応答してそのフレーム(又は、当該フレームの一部分)及びメッセージ・フィルタ結果情報を受信FIFO220に与えるよう結合されている。
パターン・マッチング及びハッシング論理無しで、直接且つフルのアドレス比較が、全ての受信されたメッセージのデスティネーション・アドレスと、情報処理及び通信システム100又は他のシステム(その他のシステムのため、情報処理及び通信システム100がメッセージを受け入れるよう構成される。)のアドレスとの間で実行されなければならないであろう。そのようなフル・アドレス比較は、典型的には、その比較が典型的にはソフトウエアの制御下で起きるのでプロセッサ110を或る形式で中断することを含む。
しかしながら、図示の実施形態においては、パターン・マッチング論理232及びハッシュ論理238は、フル・アドレス比較の発生の頻度を少なくするため設けられ、それによりプロセッサ110が他のタスクを実行するため自由になるのを可能にする。パターン・マッチング論理232は、受信されたフレームについてパターン・マッチング解析を実行して、パターン・マッチング結果に従ってフレームの選択的受け入れを可能にする。パターン・マッチングは、パターン・マッチング(PM)レジスタ233に格納された値(例えば、制御ビット又はフィールド)の制御の下で実行される。ハッシュ論理238は、受信されたフレームのアドレスについてハッシング解析を実行して、ハッシュ・ヒット又はミス結果に従ってフレームの選択的受け入れを可能にして、更に、高い受け入れ確率でアドレスについてのフル・アドレス比較を実行する可能性を増大させる。
パターン・マッチング論理232のPMレジスタ233は、16個のエントリを含む。各エントリは、5個の32ビットレジスタを含む。図5を参照すると、各エントリは、パターン(PMDATA)、パターン・マスク(PM MASK)、及びパターン・マッチング制御(PM CONTROL)フィールドを含む。パターン・マッチング制御フィールドは、マッチング・インデックス(MI)フィールド、連続検索イネーブル(CSE)フィールド、反転(IV)フィールド、連結パターン(CP)フィールド、及びパターン・マッチ受け入れ制御(PMAC)フィールドを含む。
PM DATAフィールドは、受信されたフレームと比較するためのビット・パターンを含む。PMDATAビット・パターン(例えば、4バイト・パターン)がフレームの中に見つけられる場合、パターン・マッチは、検出されない。PMDATAフィールドは、図示の実施形態においては32ビット長である。PM MASKフィールドは、上記比較が行われているときパターンの中の或る一定のビットをマスクさせるビットを含む。例えば、フレームの一部分内のベンダ(vendor)識別ビットは、PMMASKが適切に設定されているとき無視され得る。
マッチング・インデックス(MI)フィールドは、マッチングが受信されたフレーム・パターンにおいてどの位の深さで対応のPM DATAのため開始すべきかを含む。例えば、MIフィールドは、0から256ビットの検索開始範囲を指示する6ビットを含む。一実施形態においては、MIは、4バイトの倍数で、パターン・マッチングの実行を始める受信フレーム(DAフィールドからFCSまででDAフィールド及びFSCを含む)の開始点からのインデックス(指数)を指定する。MIがクリアされた場合、デスティネーション・アドレスの最初の4バイトは、パターン・マッチングのための開始点を与える。MIのためのプログラムされた最大の値は、現在説明している実施形態において63(252バイト・オフセット)である。各4バイト・パターンのためのMI値は、連続又は非連続のパターンを可能にするときでさえ遵守(honor)される。
連続検索イネーブル(CSE)フィールドは、マッチ(一致)が見つけられるとき取るべき動作の種類に影響を及ぼす。特に、CSEビットは、活動がパターン・マッチ直後に取られるべきか、又は更なるパターン・マッチ検索がパターン・マッチの際に行われるべきかを指示する。セットCSEビット(set CSE bit)は、マッチがエントリについて行われる場合パターン・マッチングが継続されるべきであることを指示する。例えば、パターン・マッチが見つけられ且つ連続検索がイネーブルされる場合、パターン・マッチング論理232は、PMDATAの他のマッチをPMレジスタ233の他のレジスタから最大256バイトまで検索を継続する。他のマッチに遭遇しない場合、最後にマッチされたエントリに対応する属性が、用いられる。全ての連続したパターンは、最終の受け入れのためパターン・マッチングに基づいて拒絶する必要がない。例えば、最初のパターン・マッチは、少なくとも条件付けして受け入れなければならず、そして、全ての後続のパターンは、受け入れなければならないか、又はフレームを受け入れるため受け入れもしないし拒絶もしない。後続のパターン・マッチの拒絶が生じる場合、CSEの値が無視され、フレームが拒絶され、そして検索が打ち切られる。パターン・マッチが見つけられ且つ連続の検索がディスエーブルされる(CSE=0)場合、他の全てのパターンの検索は、パターン・マッチング論理232により打ち切られ、そしてフレームが、受け入れるか又は拒絶され、又は別の決定が、特定のパターン・マッチが起こることに基づいて行われる。
連結されたパターン(CP)フィールドは、PMレジスタ233の各エントリで利用可能な32ビットより大きいビットのPM DATAの比較を可能にする。CPビットが設定される場合、現在のPMレジスタに続く直ぐ隣りのPMレジスタ233は、このパターンの連続と見なされ、そして次のPMDATAエントリは、現在のPM DATAエントリに連結される。この場合、各PM DATAエントリは、パターン・マッチが起こるべきフレームの中に見つけられなければならないが、しかし2組のマッチング・ビットは、それらのそれぞれのMIに従ってフレーム内のどこにでもあることができる。CPビットが設定されない場合、パターン連結は、起こらない。最後のPMレジスタ233のCPフィールドは、そこに格納されている値に拘わらずクリアされたと見なされる。CPが設定されている数値の最も低いPMレジスタ233は、連結されたパターンに用いられるパターン・マッチング制御及び属性情報(MIを除く)を含む。各連結されたパターンに対して、MIフィールドは、(MIがクリアされたままである場合)全てのパターンがフレームの最初の4バイトに対してマッチしようと試みないように、適切な4バイトの倍数に設定されねばならない。
反転(IV)フィールドは、真又は相補形式でフレームに対するパターンの比較を可能にする。例えば、反転が設定されない(IV=0)とき、パターン・マッチは、データ・マッチが生じる(例えば、PMDATAが受信されたフレームに見つけられる)ときのみ生じる。反転が設定された(IV=1)とき、パターン・マッチは、データ・マッチが生じない(例えば、PMDATAが受信されたフレームに見つけられない)ときのみ生じる。
PMACフィールドは、フレームのフィルタリングをパターン・マッチングに基づいて制御する。PMACは、2ビットを格納し、その2ビットは、(i)対応のパターンに関するパターン・マッチングがイネーブルされるかどうかと、(ii)パターン・マッチングが対応のパターンに関してイネーブルされる場合、パターン・マッチングの効果が1回完了したこととを指示する。例えば、PMACフィールドが00である場合、特定のエントリに関するパターン・マッチングがディスエーブルされ、パターン・マッチングが対応のパターンに関して生じなく、そしてパターン・マッチング論理232が、次のPMレジスタ233の中の次のパターンに自由に移動する。PMACフィールドが00でない場合、パターン・マッチングが、イネーブルされる。PMACフィールドが11である場合、フレームは、パターン・マッチの際に拒絶される。PMACフィールドが10である場合、フレームは、連続の検索がディスエーブルされる(CSE=0)ならば絶対的に受け入れられか、又は連続の検索がイネーブルされる(CSE=1)ならば条件付きで受け入れられるかのいずれかである。PMACフィールドが01である場合、フレームは、受け入れも拒絶もされない。この場合、パターンは、マッチが生じた場合フレームを受け入れ又は拒絶するため用いられる判定基準ではなく、そして情報は、パターン・マッチ結果について事後処理のため収集されるが、しかし収集された情報に基づいてフレームを受け入れ又は拒絶するための判定はされない。事後処理は、前のパターンに基づいて又はデスティネーション・アドレス認識に基づいて受け入れられるフレーム上のデータをファイリング又は抽出することを含み、又は他の分類機能を含むことができる。フレームは、ハッシュ・プロセス、別のパターン・マッチング・プロセス、又は類似のものにより後で受け入れられることができる。
図2を再度参照すると、DMA210は、受信バッファ211、抽出エンジン212、パターン属性レジスタ213、バッファ記述子及びファイリング・プロセッサ(BDFP)214、ステータス・レジスタ215、及びバッファ記述子アドレス・レジスタ216を含む。本明細書で説明される論理ブロックは、例示であり、そしてことなる実施形態は、機能の異なる論理仕切りを有し得る。例えば、一実施形態において、DMA210は、抽出、バッファ記述子処理及びファイリング処理を実行するメモリ制御器を含むように想定し得る。
受信バッファ211は、メッセージ・フレームを受信FIFO220から受信するよう結合されている。ステータス・レジスタ215は、パターン・ステータス(PS)情報を受信FIFO220から受信するよう結合されている。パターン・ステータスは、パターン番号(例えば、PMレジスタ番号)及び対応のパターン・ヒット指示を含む。FIFO制御器222は、そのような情報の転送を制御するためDMA210に結合されている。受信バッファ211は、フレーム・データをバス・インターフェース・ユニット170に接続172を介して与えるよう結合されている。
抽出エンジン212は、抽出制御情報を受信バッファ211に与えて、どのフレーム情報がキャッシュ120へ送るため抽出されるべきであるかを指示するよう結合されている。抽出エンジン212は、その抽出された情報についての属性をバス・インターフェース・ユニット170に接続172を介して与えるよう結合されている。例えば、抽出エンジン212は、受信FIFOによりメモリ及び/又はキャッシュに送られたデータが抽出されたか又は正常であるかどうかと、それがメモリ130に格納されるか、又はそれら両方がメモリ130に格納され、且つキャッシュ120にスタッシュされるかどうかとを指示し、そしていずれの優先度情報は、データと関連付けられる。ステータス・レジスタ215は、パターン・ステータス情報を抽出エンジン212に与えて、どのフレーム・データが抽出されるべきであるかを指示する。抽出エンジン212はまた、抽出制御情報をパターン属性レジスタ213から受信するよう結合される。例えば、パターン属性レジスタ213は、抽出インデックス及び抽出長さを抽出エンジン212に与える(以下で説明する。)。
パターン属性レジスタ213は、どのバッファ・キューにフレーム・データ(PMF)をファイリングするかを指示するファイリング情報をバッファ記述子アドレス・レジスタ216に与えるよう結合されている。ステータス・レジスタ215は、マッチングされた実際のパターンの指示のようなパターン・マッチ情報をBDFP214に与えるよう結合されている。バッファ記述子アドレス・レジスタ216は、各バッファ記述子キュー(BDQ410,420,430及び440)のための基底アドレスと、各キュー・ポインタ(BDQ_BASE、BDQ_CURRENT、及びBDQ_NEXT)と、デフォルト・キューをBDFP214に与えるよう結合されている。BDFP214は、アドレス及びデータ情報をバス・インターフェース・ユニット170に接続172を介して与えるよう結合されている。
パターン属性レジスタは、マッチが発生した際の活動、フレーム情報をファイルする場所、フレーム情報を抽出する時、及び受信フレーム及びそれらの関連のバッファ記述子を格納する仕方を指定するためユーザにより書き込まれる。合計16個のレジスタ又はエントリは、現在説明している実施形態においてサポートされる。1つのそのようなレジスタ(又は代替レジスタ)は、デフォルト・レジスタとして指定され、そしてパターン・マッチが生じないときの活動を指定するための情報を含み得る。図5を参照すると、各エントリは、抽出されたキャッシュ(例えば、L2キャッシュ)書き込みタイプ(ELCWT)、バッファ記述子キャッシュ書き込みタイプ(BDLWT)、キュー分類(QC)、パターン・マッチ・ファイル(PMF)、パターン・マッチ抽出(PME)、抽出されたインデックス(EI)、及び抽出された長さ(EL)を含む。他のビット・フィールドは、任意の数の他の機能をイネーブルする又はサポートするため含められ得る。例えば、データ・スヌープ・ビット(data snoop bit)は、受信されたフレームをメモリに対してスヌーピングすること、又は受信されたバッファ・データ・メモリ・アクセスをスヌーピングすることをサポートするため含められ得る。この場合、メモリに対するアクセスが存在するとき、キャッシュは、メモリに対する読み出し又は書き込みアクセスをスヌーピングすることができ、それによりキャッシュは、アドレスを検出し、次いで、例えば、キャッシュに格納されたデータのコピーを無効化すること、メモリからのキャッシュ・データを更新すること、又はデータをメモリに格納することと実質的に並列にデータをキャッシュに格納することのような適切な活動を取ることができる。パターン属性レジスタは、説明した情報のコンテンツのための例示的メモリ場所である。他の実施形態は、他のビット構成、分散されたレジスタ場所、等々を含む、そのような情報コンテンツを格納するための他の構成を含み得る。
抽出された記述子キャッシュ書き込みタイプ(ELCWT)フィールドは、抽出されたデータに関して実行するための書き込みトランザクション・タイプを指定する。抽出書き込みトランザクションは、パターン・マッチング抽出(PME)フィールドが設定される場合に生じ、対応のパターン・マッチが生じ、そして抽出長さ(EL)フィールドが非ゼロである。一実施形態において、ELCWTが00である場合、割り当てが実行されない。ELCWTが01である場合、抽出が生じない。ELCWTが10である場合、キャッシュ行が割り当てられる。そして、ELCWTが11である場合、キャッシュ行が、割り当てられ、そしてロックされる。連結されたパターン構成の場合、用いられるELCWTは、最低の数値パターン属性レジスタからである。キャッシュへの書き込みは、スヌープを用いて実行される。
バッファ記述子キャッシュ書き込みタイプ(BDLWT)フィールドは、受信フレームのためのバッファ記述子に関して実行するための書き込みタイプを指定する。これは、パターン・マッチが生じた場合、PMF又はPMEの値に拘わらず生じる。キャッシュへの書き込みは、スヌープを用いて実行される。一実施形態において、BDLWTが00である場合、割り当てが、実行されない。BDLWTが10である場合、キャッシュ行が、割り当てられる。そして、BDLWTが11である場合、キャッシュ行が、割り当てられ、そしてロックされる。
パターン・マッチ抽出(PME)フィールドは、パターン・マッチ・ベースの抽出がイネーブルされるかどうかを指示する。パターン・マッチ抽出ビットが設定される(PME=1)場合、抽出がイネーブルされる。パターン・マッチ抽出ビットが設定されない(PME=0)場合、抽出がディスエーブルされる。
キュー分類(QC)は、PMFフィールドが設定され且つ対応のパターン・マッチが生じる場合到来フレームをファイルする受信キュー分類を指定する。連結されたパターン構成の場合、用いられるQCは、最初の4バイト・パターンからである。QCが00である場合、キュー#0が、用いられ、そしてBDQ0_BASEにより指定されたアドレスで開始するバッファ記述子が、用いられる。QCが01である場合、キュー#1が、用いられ、そしてBDQ1_BASEにより指定されたアドレスで開始するバッファ記述子が、用いられる。QCが10である場合、キュー#2が、用いられ、そしてBDQ2_BASEにより指定されたアドレスで開始するバッファ記述子が、用いられる。QCが11である場合、キュー#3が、用いられ、そしてBDQ3_BASEにより指定されたアドレスで開始するバッファ記述子が、用いられる。
パターン・マッチ・ファイル(PMF)フィールドは、フレームがメモリ130の中のどこにファイルされるかを決定するためQCフィールドが用いられるかどうかを指示する。例えば、PMF=0であり且つマッチが生じる場合、デフォルト属性レジスタの中のQCフィールドが、フレームがファイルされる場所を決定するため用いられる。PMF=1であり且つマッチが生じる場合、マッチされたパターンに対応するレジスタの中のQCフィールドが、フレームがファイルされる場所を決定するため用いられる。
パターン属性レジスタ213はまた、パターン・マッチが生じ且つパターン属性レジスタ213の中のパターン・マッチ抽出(PME)ビットが設定される場合、用いられるべき抽出インデックス及び抽出長さを指定するためユーザにより書き込まれる。抽出されたインデックス(EI)は、それからデータを抽出することを始める受信フレーム内の最初のバイトを指す。DMA制御器210は、パターン・マッチ抽出フィールドが設定され(PME=1)且つ対応のパターン・マッチが生じる場合抽出を実行するためこのフィールドを用いる。連結されたパターン構成の場合(CP=1)、用いられるEIは、最低の数値レジスタ(例えば、連結されたチェーンの中の最初のレジスタ)からである。抽出された長さ(EL)フィールドは、受信されたフレームから抽出するためバイトの数を指定する。DMA制御器210は、パターン・マッチ抽出フィールドが対応のパターン・マッチのため設定される(PME=1)場合抽出を実行するためこのフィールド抽出を実行するためこのフィールドを用いる。連結されたパターン構成の場合、最低の数値パターン属性レジスタからのELが、用いられる。ELがゼロである場合、抽出は、行われない。
図4は、複数の例示的バッファ記述子キューBDQ0、BDQ1、BDQ2、…BDQMを示すブロック図である。各バッファ記述子キューは、例えば、BDQ0:BD0412、BD1 414、BD2 416、…BDN418に関して示された格納場所のような幾つかのバッファ記述子を含む。各バッファ記述子キューは、リング(環状)構造を有し、そして3つのポインタ、BDQ_BASE、BDQ_CURRENT、及びBDQ_NEXTを介してアクセスされる。各バッファ記述子格納場所は、メモリ130及び/又はキャッシュ120に格納された受信されたフレーム情報についての情報を格納する。例えば、そのような情報は、ステータス及び制御452、データ長さ454、データ・バッファ・ポインタ456、パターン・マッチ・ステータス458、関連の抽出インデックス460、抽出長さ462、及びバイト・カウント464を含む。各バッファ記述子キューは、対応のフレームに関して異なる優先度を表す。図1に示されるように、バッファ記述子キューは、メモリ130に格納され、そしてまた時々、BDLWTが適切に設定される場合キャッシュ120に格納される。バッファ記述子キューは、フレーム・データの対応の抽出が生じる場合も又は生じない場合も格納され得る。
図6は、情報処理及び通信システム100の例示的動作フローを示すフロー・チャートである。ひとたびフレームが動作610中に受信されると、ADF230は、フレームが動作620中に受け入れられるべきかどうかを決定する。フレームを受け入れるプロセスは更に、本明細書では図7から図9を参照して説明される。フレームが判断620中に受け入れられない場合、ADF230は更に、動作610でフレームを待つ。フレームが判断620中に受け入れられる場合、フレーム及びパターン・ステータスは、動作630中に一時キュー234から受信FIFO220へ与えられる。フレーム及びパターン・ステータスが受信FIFO220に渡された後で、パターン・ステータス及びフレーム・データは、動作640中にDMA210へ与えられる。ひとたびパターンがDMA210へ送られてしまうと、DMA210は、動作650中にフレーム・データをメモリに格納することができる。また、動作650中に、パターン・マッチ・レジスタ233のイネーブルされたパターンと整合するいずれかのデータが、抽出され、そしてキャッシュ120にスタッシュされる。フレーム・データを格納し且つ抽出されたフレーム・データをスタッシュするプロセスは更に、本明細書では少なくとも図10及び図11を参照して説明される。
図3は、フレームの受信動作610中にアドレス/データ・フィルタ230により受信可能なフレームを有する例示的メッセージ・パケットを示す。図示のフォーマットは、イーサネット(登録商標)/IEEE802.3標準メッセージと互換性がある。メッセージ300は、プリアンブル、フレーム開始デリミタ(SFD)、及びフレームを含む。プリアンブル及びフレーム開始デリミタは、フレームを受信し処理する際にシステムを支援するためセットアップ情報を与える。プリアンブルは、受信器タイミング同期化のため用いられる交互になっている1と0の7バイト・フィールドを与える。例えば、各バイトは、値0x55を含む。フレーム開始デリミタは、フレームの始めを指示する。フレーム開始デリミタのための代表的値は、0xD5のシーケンスである(ビットの順序は最下位ビットが最初であるので10101011の2値である)。図示のフレームは、64バイトから1518バイトまでの長さを有し、そして6バイト・デスティネーション・アドレス(DA)、6バイト・ソース・アドレス(送信元アドレス)、2バイト・タイプ/長さフィールド、46バイトから1500バイトの論理リンク制御(LLC)フレーム、及び4バイト・フレーム検査シーケンスを含む。
フレームのデスティネーション・アドレスは、3バイト・ベンダ・フィールド、及び3バイト・ユーザ値を含む。ユーザ値の最初のビットは、アドレスを個々のアドレス(0)又はグループ・アドレス(1)として識別する。2番目のビットは、アドレスがローカルに定義される(1)か、又はグローバルに定義される(0)かを指示する。図示のように、ソース・アドレス及びデスティネーション・アドレスは、48ビットを含む。他の実施形態は、IEEE802.3仕様書のより前のバージョンにおける16ビット・アドレスのような異なるアドレス長を用い得る。
タイプ/長さフィールドは、イーサネット(登録商標)・タイプ・フィールド及び/又はIEEE802.3長さフィールドに対応する。タイプ・フィールドは、フレームの残りの部分で用いられるプロトコル(例えば、TCP/IP)を示す。長さフィールドは、フレームのデータ部分の長さを指定する。一般的に、長さフィールドは、イーサネット(登録商標)とIEEE802.3の両方のフレームを同じネットワーク上で使用することを容易にするためいずれのタイプ・フィールドから一意である。タイプ・フィールドは、1536(0x0600)以上でしかし65535(0xFFFF)未満の10進数により識別される。その数が0と1500との間(0x0000から0x05DC)である場合、このフィールドは、MACクライアント・データの長さを指示する。図示の実施形態において、1501から1536(0x5DDから0x5FF)までの範囲は、定義されていない。
論理リンク制御(LLC)は、例えば、FDDI、イーサネット(登録商標)、トークン・リング及び他のものようなメディアのタイプに拘わらずサービスをネットワーク層に与えることを担当している。LLC層は、メディア・アクセス制御(MAC)層とプロトコル・スタックの上位層との間で通信するためLLCプロトコル・データ・ユニット(PDU)を利用する。3つの変数が、LLC−PDUを介した上位層へのアクセスを決定する。当該変数は、デスティネーション・サービス・アクセス・ポイント(DSAP)、ソース・サービス・アクセス・ポイント(SSAP)、及び制御変数を含む。DSAPアドレスは、上位層のためのプロトコル情報を与えるステーション(局)内の一意の識別子を指定する。SSAPは、ソース・アドレスに関する同じ情報を与える。
LLCフレームは、プリアンブル、及び情報フィールドを含む。プリアンブルは、DSAPフィールド、SSAPフィールド、及び制御フィールドを含む。情報フィールドは、データ、及びオプションのパディング(埋め込み)を含む。パディングは、一般的に、IEEE802.3標準で指定されるように64オクテットの最小フレーム・サイズを保証するためデータが46オクテット/バイトより小さい場合のみ必要とされる。802.3xにおいては、データ・フィールドの最初の2オクテットは、演算コード(OP)(ポーズ(休止)=0x0001)として用いられ、そして2番目の2オクテットは、ポーズ時間(PT)パラメータ(オンのためポーズ時間=0x0000及びオフのためポーズ時間=0xFFFF)を送信するため用いられる。その上、3番目の2オクテット・フィールドは、延長されたポーズ制御パラメータ(PTE)のため用いられることができる。LLCに代わりに、イーサネット(登録商標)・フレームは、類似のフィールドを有する異なるプロトコルを用いることができる。これらのフィールドの使用は用いられるプロトコルと共に変わるので、それらを検査してそれらのコンテンツを報告する能力は、イーサネット(登録商標)・フレーム処理を著しく促進することができ、そしてそのような能力は、パターン・マッチングを用いることにより増強され得る。
フレーム検査シーケンス(FSC)は、プリアンブル、SFD及びCRCを除く全てのフィールド上の標準CCITT−CRC多項式を用いて得られる標準の32ビット巡回冗長検査(CRC)を指定する。
図7及び図8は、パターン・マッチングを用いてメッセージをハッシュ・フィルタリングする方法を示すフロー・チャートである。図7を参照すると、到来フレームが動作610中に一時キュー234で受信された後で、パターン・マッチング論理232は、PMレジスタ233にアクセスし、そして様々なエントリを連続して選択して、PMレジスタ233に格納されているパターンが一時キュー234の中のフレーム情報に含まれているかどうかを決定する。
例えば、ADF230は、パターン・マッチ・イネーブル・ビット(PMEN)を含むADFグローバル制御レジスタを検査して、パターン・マッチングがイネーブルされているかどうかを決定する。パターン・マッチングがイネーブルされていない(PMEN=0)の場合、フローは、グループ・アドレス判断715に進む。パターン・マッチングがイネーブルされている(PMENが非ゼロである)場合、パターン・マッチング・プロセス710は、開始される。パターン・マッチング・プロセス710がフレームが受け入れられる又は拒絶されるという結果になる(これは、以下で図9を参照してより詳細に説明する。)場合、フローは、ブロック710から図示の「受け入れ」又は「拒絶」のフロー・チャート・ノードのうちのそれぞれのノードを介して図8のフレーム受け入れ動作860及フレーム拒絶動作860のうちのそれぞれの動作に進む。パターン・マッチング・プロセス710がフレーム受け入れ又は拒絶判断を行うという結果にならない場合、フローは、パターン・マッチング・プロセス710から図示の「判断/パターン・マッチが未検出」ノードを介して前述のグループ・アドレス判断715に進む。
グループ・アドレス判断715中に、受信部180は、受信されたフレームの中のアドレスがグループ・アドレスであるかどうかを決定する。現在説明されている実施形態においては、フレームのユーザ値の最初のビットは、アドレスを個々のアドレス(0)又はグループ・アドレス(1)として識別する。アドレスがグループ・アドレスでない場合、フローは、ステーション(局)・アドレス判断720に進む。アドレスがグループ・アドレスである場合、フローは、ブロードキャスト(放送)・アドレス判断725に進む。
ステーション・アドレス判断720中に、受信部180は、受信されたフレームの中のアドレスがフレーム・データとの正確な48ビット比較を実行することによりステーション・アドレスであるかどうかを決定する。アドレスがステーション・アドレスであると決定される場合、フローは、ブロック720から図示の「受け入れ」フロー・ノードを介して図8のフレーム受け入れ動作860にすすみ、そしてフレームは、フレーム受け入れ動作860で受け入れられる。アドレスがステーション・アドレスでないと決定される場合、フローは、ハッシュ・ヒット判断740に進む。
ブロードキャスト判断725中に、受信部180は、受信されたフレームの中のアドレスがブロードキャスト・アドレスであるかどうかを決定する。代表的ブロードキャスト・アドレスは、0xFFFFFF−FFFFFFのアドレスである。アドレスがブロードキャスト・アドレスであると決定された場合、フローは、ブロードキャストがイネーブル化されているかの判断730に進む。アドレスがブロードキャスト・アドレスでないと決定された場合、フローは、前述のハッシュ・ヒット判断740に進む。
ブロードキャストがイネーブルされているかの判断730中に、受信部180は、ブロードキャスト機能がイネーブルされているかどうかを決定する。ブロードキャスト機能は、ADFグローバル制御レジスタ・ビットBC_REJがリセットされるときイネーブルされる。ブロードキャスト機能がイネーブルされる場合、フローは、ブロック730から図示の「受け入れ」フロー・チャート・ノードを介して図8のフレーム受け入れ動作860に進み、そしてフレームは、フレーム受け入れ動作860で受け入れられる。ブロードキャスト機能がイネーブルされない場合、フローは、プロミスキャス(無差別)・モード判断735に進む。
プロミスキャス・モード判断735中に、受信部180は、プロミスキャス・モードが、イネーブルされるかをどうかを決定する。プロミスキャス・モードは、ADFグローバル制御レジスタ・プロミスキャス・ビットがセットされる(PROM=1)ときイネーブルされる。受信部180がプロミスキャス・モードであるとき、パターン・マッチングにより拒絶されなかった全てのフレームは、受け入れられる。一般的に、プロミスキャス・モードは、テストのため用いられ、そしてめったに用いられない。プロミスキャス・モードがイネーブルされる場合、フローは、ブロック735から図示の「受け入れ」フロー・チャート・ノードを介して図8のフレーム受け入れ動作860に進み、そしてフレームは、フレーム受け入れ動作860で受け入れられる。プロミスキャス・モードがディスエーブルされる場合、フローは、ブロック735から図示の「拒絶」フロー・チャート・ノードを介して図8のフレーム拒絶動作870に進み、そしてフレームは、フレーム拒絶動作870で拒絶される。
パターン・マッチングがプロミスキャス・モード判断735の前に又はそれと平行して(又は、さもなければ、プロミスキャス・モード判断735の結果としての受け入れの前に)動作710で実行されるので、全てのアドレスからのフレームがフレームの拒絶を起こすパターンを含む1又はそれより多い特定のフレームを除いて受け入れられる識別力のあるプロミスキャス・モード(discriminating promiscuous mode)が用いられ得る。例えば、特定のアドレスは、他の全てのアドレスが受け入れられる一方パターン・マッチングの支援を得て拒絶され得る。
ハッシュ・ヒット判断740中に、受信部180は、フレーム・デスティネーション・アドレスについてハッシュ・ヒットが起こったかどうかを決定する。48ビット・デスティネーション・アドレスが32ビット巡回冗長検査(CRC)チェックサムの一部分を用いることにより256ビン(又は、他の実施形態においてはそれより多くのビン)のうちの1つのビンにマップされる。例えば、多数のアドレス1222に対して発生された多数の対応のCRC1224を示す図12を参照されたい。行1201−1210の各行の各16進CRC1224は、同じ行の6バイト16進デスティネーション・アドレスに対応する。
情報処理及び通信システム100のセットアップ中に、CRCチェックサムのビットを用いて、ハッシュ・テーブルの中へインデックスする。一実施形態において、8個のビットを用いて、256ビン・テーブルをインデックスする。8ビット・フィールドのより高次の3ビットを用いて、個人ハッシュ・テーブル及び/又はグループ・ハッシュ・テーブルの中の8ハッシュ・バケット・レジスタ(bucket registers)のうちの1つを選択する。より低次の5ビット・フィールドは、選択された32ビット・レジスタ内の1ビットを選択する。同じチェックサムは、制御器がフレームを受信するとき用いられる。到来アドレスのCRCチェックサムがグループ/個人ハッシュ・テーブルの中に設定されるビットを選択する場合、ハッシュ・ヒットが、起きたことになる。さもなければ、ハッシュ・ヒットは、起きていないことになる。
図示の実施形態において、CRCの最初の8ビットは、ハッシュ・テーブルの中の1つのビットを選択する。行1201−1203及び1206のアドレスは、システムにより受信されることになり、従って、ハッシュ・テーブルをセットアップするため用いられた。行1201において、16進値0x04は、ハッシュ・バケット・ビン4に対してマップする。行1202において、16進値0x0Fは、ハッシュ・バケット・ビン15に対してマップする。行1203において、16進値0x15は、ハッシュ・バケット・ビン21に対してマップする。行1206において、16進値0xCBは、ハッシュ・バケット・ビン203に対してマップする。こうして、バケット・ビン4、15、21及び203のいずれかを選択するCRCを有するアドレスは、そのようなアドレスが受信されるときハッシュ・ヒットである。
ハッシュ・テーブルの有効性は、アドレスの数が増大するにつれ低下する。例えば、256ビン・ハッシュ・テーブルに格納されたアドレスの数が増大するにつれ、膨大な数のハッシュ・テーブル・ビンがセットされ、意図しないフレームの著しく小さい小部分がメモリに到達するのを妨げられる。ハッシュ・フィルタリングの1つの利点は、ハッシングの速度が、デスティネーション・アドレス・リストの中のアドレスの数に依存しないことである。また、パターン・マッチング無しのハッシング単独プロトコルは、1組の選択されたアドレスとマッチするフレームを拒絶するため用いられることができないことに注目すべきである。それは、意図しないアドレスが、受信されてしまった筈であるフレームの拒絶をもたらす、ハッシュ・テーブル内の同じビットに対して、マッチすることができるからである。従って、ハッシュ・フィルタリングのみが、メモリに到達するフレームのポスト・フィルタリングを必要とする不完全なフィルタリングをもたらす。これは、図12に示される受信されたデスティネーション・アドレスを参照して以下に一例として説明される。
ハッシュ・ヒット判断740中に、各受信されたアドレスに関するCRCを用いて、ハッシュ・バケット・ビンを選択する。選択されたビンがヒットを指示する場合、ハッシュ・ヒットが生じたことになる。例えば、アドレス1201−1203及び1206−1210のいずれかが受信されたとき、ビン4、15、21及び203のうちの1つが、選択され、そしてハッシュ・ヒットが、生じたことになる。従って、アドレス1204又はアドレス1205が受信されたとき、ビン4、15、21及び203のうちのどれも選択されなく、そしてハッシュ・ヒットは、生じていないことになる。フレームは、典型的には、ハッシュ・ヒットが生じなかったとき拒絶される。このように、アドレス1204及びアドレス1205は、拒絶される。しかしながら、図12のアドレス1207−1210は、ハッシュ・ヒットを発生したが、しかし情報処理及び通信システム100による受け取り及び受け入れのための意図されたアドレスではない。従って、フィルタリングの別の手段を採用しなければならない。
情報処理及び通信システム100は、パターン・マッチングを用いて、到来アドレスを更にフィルタリングし、それによりプロセッサ/ソフトウエア・ベースのポスト・フィルタリングの必要性が、最小にされ、又は排除すらされる。例えば、パターンは、PMレジスタに格納され得て、それによりハッシュ・ヒットをミスリードすることを起こすアドレスは、拒絶され得る。図示の実施形態において、アドレスは、それらのアドレスが特定のベンダID(デスティネーション・アドレスの最初の24ビット)用に意図されてない場合拒絶されることができる。0x0050FC04のパターンは、PMDATAとして0xFFFFFF00のPM MASKと共に格納されてしまう。このように、0x0050FCを最初の24ビットの中に有していない各アドレスは、パターン・マッチングにより拒絶される。この場合、アドレス1207−1209は、拒絶されるが、しかし1210は、そのベンダIDが所望のベンダIDとマッチするので拒絶されない。
更なるパターンが、プロセスを改善するため格納され得る。例えば、2つのパターンを用いる。即ち、第1のパターンは、PM DATA0x0050FC04及び0xFFFFFFFFのPM MASKを、そして第2のパターンは、0xFFFFFFFF−FのPMMASKを有するPM DATA0x0050FC03−Cを用い得る。こうして、ハッシュ・ヒットであるがしかしその最初の32ビット内に0x0050FC04を且つその最初の36ビット内に0x0050FC03−Cを持たない各アドレスは、パターン・マッチング及びハッシングを通じて効果的に無視され得る。この場合、アドレス1207−1210は、パターン・マッチング及びハッシングに起因して効果的に拒絶され、そして所望のアドレスのみが、情報処理及び通信システム100により受け入れられる。
こうして、受信されたアドレス1201−1210は、様々な異なる結果を引き起こす。アドレス1204及び1205は、ハッシュ・ミスを引き起こし、従って受け入れられない。アドレス1201−1203及び1206−1210は、ハッシュ・ヒットを引き起こす。アドレス1201−1203は、ハッシュ・ヒット及びパターン・マッチを、第1のパターンがその中に見つけられることに起因して引き起こす。従って、アドレス1201−1203が、受け入れられる。アドレス1206は、ハッシュ・ヒット及びパターン・マッチを、第2のパターンがその中に見つけられることに起因して引き起こす。従って、アドレス1206が、受け入れられる。アドレス1207−1210は、第1及び第2のパターンがその中に見つけられないので、ハッシュ・ヒットを引き起こしながら、パターン・マッチをもたらさない。従って、アドレス1207−1210は、受け入れられない。
一般に、32個のグループ・アドレスがハッシュ・テーブルに格納され、且つランダムなグループ・アドレスが受信された場合、ハッシュ・テーブルは、高いパーセンテージ(例えば、或る事例では、85%程度又はそれより高いパーセンテージ)のグループ・アドレス・フレームがメモリに到達するのを阻止する。現在の開示のパターン・マッチング無しでは、情報処理及び通信システム100上で動作するソフトウエアは、それらのアドレスが正しいアドレスを含むかどうかを決定するため、メモリ130に到達するそれらのアドレスを更にフィルタリング(即ち、ポスト・フィルタリング)しなければならないであろう。前述の例では、アドレス1207−1210は、パターン・マッチングを誘発される拒絶条件がトリガされること無しに、更なるポスト・フィルタリングを含むプロセッサ110を要求したであろう。
図8を参照すると、受信部180は、パターン・マッチングが、パターン・マッチがイネーブルされたかの判断845中に、選択されたレジスタの中の選択されたパターンPMDATAに関してイネーブルされるかどうかを決定する。パターン・マッチングがイネーブルされない場合(PMEN=0)、フローは、ハッシュ/プロミスキャス判断855に進む。パターン・マッチングがイネーブルされる場合(PMEN=1)、パターン・マッチング・プロセス850が、開始される。パターン・マッチング・プロセス850が(図9を参照して以下で更に詳細に説明されるように)フレームが受け入れられ又は拒絶されることをもたらす場合、フローは、ブロック850から図示の「受け入れ」及び「拒絶」のフロー・チャート・ノードのそれぞれのノードを介してフレーム受け入れ動作860及びフレーム拒絶動作870のそれぞれの動作に進む。フレームの受け入れ又は拒絶の判断を行わないで、パターン・マッチがパターン・マッチング・プロセス850中に行われる場合、又はパターン・マッチが行われない場合、フローは、パターン・マッチング・プロセス850から図示の「判断/パターン・マッチが未検出」ノードを介して、パターン・マッチが検出されなかったかどうかの判断852に進む。
現在説明している図示の実施形態におけるパターン・マッチが検出されなかったかどうかの判断852に言及すると、16個のパターンのいずれもがパターン・マッチが検出されたことをもたらさなかった場合、フローは、判断852から図示の「拒絶」フロー・チャート・ノードを介してフレーム拒絶動作870に進む。他の実施形態において、フレームは、プロセッサ110により更にフィルタリングするため保持され得る。変形の実施形態において、フレームは、パターンが検出されたフレームより低い優先度を与えられ、それによりプロセッサ110は、低い信頼度フレーム(ハッシュ・ヒットを有するがしかしパターン・マッチが無い。)の前に高い信頼度フレーム(ハッシュ・ヒット及びパターン・マッチを有する。)に焦点を合わせる。別の変形の実施形態においては、フレームは、異なる処理要素に対応する異なるキューに格納され得る。16個のパターンのうちの少なくとも1つがパターン・マッチが検出されたことをもたらした場合、フローは、判断852から図示の「判断無し」のフロー・チャート・ノードを介して前述のハッシュ/プロミスキャス判断855に進む。これまで説明した図7及び図8の要素は、メディア・アクセス制御機能に対応する。
ハッシュ/プロミスキャス判断855中に、データ・リンク機能は、判断無しのパターン・マッチ(例えば、受け入れ無し且つ拒絶無し)があったか、又はパターン・マッチが無かったとき実行される。受信部180(例えば、ADF230の状態マシン)は、完全なハッシュ・ヒットが生じたかどうか及び/又はプロミスキャス・モードがイネーブルされるかどうかを決定する。完全なハッシュ・ヒットは、1つのアドレスのみに一義的に対応するハッシュ・ヒット及びパターン・マッチの両方が起きたとき起きる。対照的に、高い信頼度のハッシュ・ヒットは、少ない数のアドレスであるがしかし2個以上のアドレスに対応するハッシュ・ヒット及びパターン・マッチが起きるとき起きる。高い信頼度のハッシュ・ヒットは、その高い信頼度のアドレスが実際に求められたアドレスである確率を増強するパターン・マッチングの使用に起因して従来のアドレス・フィルタリングを越えて増強された性能を与える。システム及び/又はネットワーク特性を用いたパターンの注意深い選択は、ハッシュ・ヒットが完全である一層高い確率をもたらすことができる。完全なハッシュ・ヒットが起きたか又はプロミスキャス・モードがイネーブルされる場合、受信されたフレームは、フレーム受け入れ動作860で受け入れられる。完全なハッシュ・ヒットが起こらず、またプロミスキャス・モードがイネーブルされない場合、フローは、完全アドレス・マッチ判断865に進む。
完全アドレス・マッチ判断865中に、プロセッサ110は、完全アドレス・マッチが起きたかどうかを決定する。情報処理及び通信システム100は、当該アドレスと情報処理及び通信システム100に既知のアドレスとの直接比較を実行する。情報処理及び通信システム100は、受信されたアドレスを優先キュー又は類似のものに格納し、それにより受け入れの高い予測可能性を有するアドレス(高い信頼度フレーム)が、受け入れの低い予測可能性を有するアドレス(低い信頼度フレーム)より前に処理される。そのような完全且つ直接の比較は、情報処理及び通信システム100の処理資源の観点からコストが高い。従って、本明細書で説明されるパターン・マッチング及びハッシングが、そのようなコストの高い直接アドレス比較を回避するため求められる。こうして、情報処理及び通信システム100は、そのシステムの性能を増強するためできるだけ多く直接アドレス比較なしにしたパターン・マッチングを用いることができる。完全アドレス・マッチがある場合、受信されたフレームは、フレーム受け入れ動作860で受け入れられる。完全アドレス・マッチが無い場合、受信されたフレームは、フレーム拒絶動作870で拒絶される。
図9は、情報処理及び通信システム100により受信されたメッセージ・アドレスをパターン・マッチングする方法を示すフロー・チャートである。フレームは、パターン・マッチが生じたかどうかに依存して受け入れられ又は拒絶され得る。メッセージ・フレームのいずれかの部分が、IPアドレスを含むマッチのため検査され得る。図9の動作は、最終処分(受け入れ又は拒絶)が別のパターン・マッチを試みる前に1つのパターン・マッチの発生により命令されない場合、パターン・マッチングは、対応のパターン・マッチがアクセプタ・インディケータが許す(例えば、PMAC=1)各パターンに対してイネーブルされるとき(PMEN=1)イネーブルされる。パターン・データがイネーブルされた場合、メッセージ・データは、パターン・マッチに関して検査される。パターン・マッチ・データ・セットがイネーブルされない場合、又はパターン・マッチが見つけられない場合、次のパターンが選択され、そして処理が繰り返される。連続検索がイネーブルされる場合、検索が、マッチに関係なく次のパターンに関して続けられる。
受信動作935を参照すると、到来フレームの複数のバイトは、その到来フレームを受け入れるか又は拒絶するかの判断を行うまで一時的格納のため一時キュー234の中に受信される。到来フレームの複数のバイトはまた、パターン・マッチング論理232及びアドレス認識及びハッシュ論理238に与えられて、それによりそのような判断は、上記複数のバイトが一時キュー234により受信されている間に行われ得る。複数のバイトが受信動作935中に受信されてしまった後で、フローは、パターン・マッチ決定動作905に進む。
パターン・マッチ決定動作905を参照すると、パターン・マッチング論理232は、PMレジスタ233に格納されたパターン・マッチ・データが受信されたフレームの中のデータとマッチするかどうかを決定する。例えば、パターン・マッチング論理は、PMレジスタ233のうちの最初のPMレジスタの中のPMDATAを到来フレームと、それが一時キュー234に格納されるにつれ比較する。一時キュー234は、判断が行われるまでフレームを格納するため用いられる。パターン・マッチは、例えば、PMDATAの各ビット(最大4バイトまで)がメッセージ・インデックスMIに従って配置されたメッセージ・データの各ビットとマッチする場合に起きる。マッチングは、最大252バイトのオフセットを有するフレームの中に最大256バイトまでの深さで生じ得る。或る一定のPMDATAは、対応のPM MASKによりマスクされ得る。例えば、PM DATAの各ビットは、対応のPM MASKビットがクリアされる場合マッチに関して検査されない。前のパターンの連結パターン(CP)フィールドが設定される場合、両方のPMDATAフィールド(現在のPM DATAと前のPMレジスタのPM DATA)は、フレームの中に見つけられる場合のみ生じる。PMACフィールドは、対応のPM DATAがイネーブルされるかどうかを決定し、そしてそれがイネーブルされる場合、マッチの際に取るべき活動方針が取られる。パターン・マッチ決定動作905は、受信動作935と平行に行い得る。
パターン・マッチ決定動作905を参照すると、パターン・マッチングがディスエーブルされる場合(例えば、PMAC=00)、フローは、フレームの終わり(EOF)又はキュー・フル判断(キューがフルかどうかの判断)930まで進む。パターン・マッチがパターン・マッチ決定動作905中に見つけられない場合、フローはまた、EOF又はキュー・フル判断930まで進む。パターン・マッチが有り、且つパターン・マッチングが判断910中にディスエーブルされない(例えば、PMAC≠00)場合、フローは、フレーム受け入れ判断915に進む。
EOF/キュー・フル判断930を参照すると、一時キュー234がフル(一杯)でなく、且つフレームの終わりがまだ受信されていない(で更にフレームが拒絶されてなかった)場合、受信動作935中に一時キュー234の中に追加のバイトを受信することを継続し、そしてフローは、パターン・マッチ決定動作905に進んで、受信された追加のフレーム情報についてパターン・マッチングを開始する。フレームの終わりが受信されたか、又は一時キュー234がフルである場合、フローは、全拒絶モード判断940に進む。
全拒絶モード判断940を参照すると、ADF230が全拒絶モードにあると決定された場合、フレームは、拒絶され、そして動作フローは、どの対応のフローが図9に示されるパターン・マッチング・フローを開始したかに応じて図7か又は図8のいずれかに示されるように継続する。ADF230が全拒絶モードでない場合、フレームについての判断は行われず、そしてフローは、どのフローが図9に示されるパターン・マッチングを開始したかに応じて図7か又は図8のいずれかに示されるように継続する。
フレーム受け入れ判断915を参照すると、ADF230が1つのパターンに関してフレームを受け入れている場合(例えば、特定のPMDATAに関してPMAC=10)、フレームは、条件付きで受け入れられ、そしてフローは、連続的検出判断945に進む。ADF230が1つのパターンに関してフレームを受け入れていない場合(例えば、特定のPMDATAに関してPMAC≠10)、フローは、フレーム拒絶判断920に進む。
フレーム拒絶判断920を参照すると、ADF230が1つのパターンに関してフレームを拒絶している場合(例えば、特定のPM DATAに関してPMAC=11)、到来フレームは、それが拒絶のPMAC値と関連付けられたPM DATAを含む(、又はさもなければそのようなPM MASK、CP等のような他のファクタを考慮してマッチを引き起こす)ので拒絶される。次いで、フローは、どのフローが図9に示されるパターン・マッチングを開始したかに応じて図7か又は図8のいずれかに示されるように継続する。ADF230がパターンに関してフレームを拒絶していない場合(例えば、特定のPMDATAに関してPMAC≠11であり、この場合PMAC=01である。)、フローは、連続的検索判断925に進む。
連続的検索判断925を参照すると、パターンの連続的検索がイネーブルされる場合(例えば、CSE=1)、フローは、EOF又はキュー・フル判断930に進む。連続的検索が連続的検索判断925中にイネーブルされない場合(例えば、CSE=0)、前述のパターン・マッチについて判断を行わず、そしてフローは、全拒絶モード判断940に進む。
連続的検索判断945を参照すると、パターンの連続的検索がイネーブルされる場合(例えば、CSE=1)、フローは、EOF又はキュー・フル判断950に進む。連続的検索が連続的検索判断945中にイネーブルされない場合(例えば、CSE=0)、到来フレームは、受け入れられる。フレームは、それがPMDATAを含む(、又はさもなければそのようなPM MASK、CP等のような他のファクタを考慮してマッチを引き起こす)ので受け入れられ、そしてパターン・マッチングが、イネーブルされ(PMAC=10)、そして更なる検索を行うことが必要である(CSE=0)。次いで、フローは、どのフローが図9に示されるパターン・マッチングを開始したかに応じて図7か又は図8のいずれかに示されるように継続する。
EOF/キュー・フル判断950を参照すると、フレームの終わりが受信されたか、又は一時キュー234がフルである場合、到来フレームが、受け入れられる。フレームは、パターン・マッチが起きたので受け入れられ、パターン・マッチングが、イネーブルされ(PMAC=10)、そしてフレームの終わりが到達されてしまい、又は一時キューがフルとなり、そのため更なるパターン・マッチングが可能でない。次いで、フローは、どのフローが図9に示されるパターン・マッチングを開始したかに応じて図7か又は図8のいずれかに示されるように継続する。
一時キュー234がフルでなく、且つフレームの終わりがまだEOF/キュー・フル判断950中に受信されていなかった場合、追加のバイトが、受信動作955中に一時キュー234の中に受信され、そしてフローは、パターン・マッチ決定動作960に進んで、次のパターンに関して追加の受信されたフレーム情報についてパターン・マッチングを開始する。パターン・マッチ決定動作960は、上記で説明したパターン・マッチ決定動作905に機能的に類似している。受信動作955は、パターン・マッチ決定動作960と平行して行い得る。パターン・マッチ決定動作960後に、フローは、パターン・マッチ判断965に進む。
パターン・マッチ判断965を参照すると、パターン・マッチングが現在選択されたパターン(例えば、現在選択されたパターンPMレジスタ233の中のPMDATA)に関してディスエーブルされる場合(例えば、PMAC=00)、フローは、EOF/キュー・フル判断950に進む。パターン・マッチがパターン・マッチ決定動作965中に見つけられない場合、フローはまた、EOF/キュー・フル判断950に進む。パターン・マッチがあり、且つパターン・マッチングがパターン・マッチ決定動作965中にディスエーブルされない場合(例えば、PMAC≠00)、フローは、フレーム否拒絶判断(フレームを拒絶しないかどうかの判断)970に進む。
フレーム否拒絶判断970を参照すると、ADF230が次のパターン(例えば、対応のPM DATA)に関してフレームを拒絶していない(例えば、PMAC=01又はPMAC=10)、フローは、EOF/キュー・フル判断950に進む。さもなければ、到来フレームは、拒絶パターン(PMAC=11)が検出されたので拒絶される。次いで、フローは、どのフローが図9に示されるパターン・マッチングを開始したかに応じて図7か又は図8のいずれかに示されるように継続する。
図10を参照すると、受け入れられたメッセージを図1のシステム内で処理する方法が示されている。図示の実施形態の1つの利点は、パケット内の臨界的データへのシステム・アクセスがそれがより高いレベルの資源を用いること無しに受信されたときそれを検出し、且つ後続のより早いアクセスのためそれを記述子情報と一緒にキャッシュに置くことにより増強されることができることである。
図示のフローは、パターン・ステータスがパターン・ステータス受信動作1005中にDMA210に与えられ且つステータス・レジスタ215の中に置かれたとき開始される。一般的に、その後、フレーム・データは、メモリ130にファイルされ、及び/又はパターン・ステータス情報に応じてキャッシュ120にスタッシュされる。ファイルすることには、パケット署名に基づいてメモリ内のパケットをグループ化することが含まれ、そして抽出には、パケットの特定の部分を(例えば、抽出インデックス及び長さ値を用いることにより)その位置を突きとめることが含まれ、そしてスタッシング(スタッシュすること)には、抽出されたデータをプロセッサ・キャッシュ空間の中にコピーすることが含まれる。抽出は、プロセッサ・キャッシュ・メモリに割り当て、そしてそれをロックすることができるが、しかしソフトウエアは、抽出中にDMAによりロックされたそのキャッシュの中の全てのデータのロックを解くことを担っている。抽出されたデータは、フレーム・データから除去されず、むしろ、全てのフレーム・データは、メモリに格納され、そして抽出データのみが、プロセッサ・キャッシュにコピーされる。そのようなファイリング及びスタッシングは、以下でより詳細に説明される。
バッファ記述子選択動作1010を参照すると、DMA210のBDFP214は、バッファ記述子を、パターン・ステータス、及びパターン・マッチ属性レジスタ213の中のキュー分類(QC)フィールドに基づいて選択する。QCフィールドは、バッファ記述子キュー122/132のどちらを用いるべきかを決定する。パターン・ステータスは、適切なQCフィールドに対するポインタを含む。パターン・ステータスはまた、あるならば、どのパターン・マッチが起きたかを指示する。パターン・マッチが起きた場合、マッチされたパターンは、データをフレームから抽出させ、そして抽出されたデータ124としてキャッシュ120にスタッシュさせる。従って、バッファ記述子キュー122が、バッファ記述子キュー132に加えて選定される。パターン・マッチが起きなかった場合、抽出は生じないであろうし、その結果バッファ記述子キュー132のみを用いることをもたらす。バッファ記述子選択動作1010後に、フローは、抽出準備動作1015に進む。
抽出準備動作1015中に、抽出エンジン212は、パターン・ステータスがパターン・マッチを指示する場合、抽出インデックス(EI)及び抽出長さ(EL)をパターン属性レジスタ213から獲得する。抽出準備動作1015後に、フローは、BDQ使用可能判断1020に進む。
BDQ使用可能判断1020を参照すると、BDFP214は、選択されたバッファ記述子キュー(BDQ)が使用可能かどうかを決定する。即ち、BDFP214は、選択されたBDQの中に空の空間があるかどうかを決定する。選択されたBDQが使用可能である場合、フローは、フロー・チャート・ノード「A」を介してBDQポインタ更新動作1030に進む。選択されたBDQが使用可能でない場合、フローは、フラッシュ動作1025に進み、そこで、フレーム及びステータス・フレーム長さが、受信FIFO220からフラッシュされ、そしてフローは、パターン・ステータス受信動作1005に進む。
BDQポインタ更新動作1030を参照すると、BDFP214は、バッファ記述子キューの現在ポインタ(BDQ_CURRENT)が次のバッファ記述子キュー(BDQ_CURRENT=BDQ_NEXT)を指すよう更新する。現在のBDQポインタが更新された後で、フローは、BDQエンプティ判断(BDQが空であるかの判断)1035に進む。
BDQエンプティ判断1035を参照すると、BDFP214は、BDQ_CURRENTにより指し示されたエントリが空(エンプティ)であるかどうかを決定する。現在のBDQエントリが空でない場合、選択されたバッファ記述子キューは、使用不能のマーク付け動作1040中に使用不能とマーク付けされ、そしてフローは、フラッシュ動作1025に進む。現在のBDQエントリが空である場合、フローは、転送動作1045に進む。
転送動作1045を参照すると、BDFP214は、フレーム・データを受信FIFO220から受信バッファ211へ転送する。当該転送は、フレームの終わり(EOF)が受信される、又は受信バッファ211がフルになるまで続行する。フレーム・データが転送された後で、フローは、EOF判断1050に進む。
EOF判断1050を参照すると、フレームの終わりが転送動作1045中に受信されなかった場合、フローは、選択的抽出及びスタッシング動作1060に進む。フレームの終わりが転送動作1045中に受信された場合、フローは、ステータス・フレーム長さ獲得動作1055に進み、そのステータス・フレーム長さ獲得動作1055中に、抽出エンジン212は、ステータス・フレーム長さをステータス・レジスタ215から獲得する。ステータス・フレーム長さ獲得動作1055後に、フローは、選択的抽出及びスタッシング動作1060に進む。
データは、選択的抽出及びスタッシング動作1060中にキャッシュ120の中にスタッシュするため受信されたフレームから制御可能に抽出される。選択的抽出及びスタッシング動作1060は、以下で図11を参照してより十分に説明されるであろう。選択的抽出及びスタッシング動作1060後に、フローは、EOF判断1065に進む。
EOF判断1065を参照すると、フレームの終わりが選択的抽出及びスタッシング動作1060中に受信された場合、フローは、EOF更新判断1080に進む。フレームの終わりが選択的抽出及びスタッシング動作1060中に受信されなかった場合、フローは、バッファの終わり(EOB)判断1070に進む。
EOF更新判断1080を参照すると、BDFP214は、現在のバッファ記述子キューのステータス及び制御情報を更新する。例えば、BDFP214は、抽出生起ビットを現在のBDQ122に設定して、抽出されたデータ124がキャッシュ120に格納されたことを指示する。次のBDQポインタ(BDQ_NEXT)は、選択されたBDQの中の次の位置を指すよう設定される。現在のBDQのコンテンツは、キャッシュにBDLWTに従ってコピーされる。例えば、パターン・マッチが起きた場合、そしてBDLWTが00である場合、割り当ては、実行されない。BDLWTが10である場合、キャッシュ120の行が割り当てられ、そしてBDLWTが11である場合、キャッシュ120の行が、割り当てられ、そしてロックされる。EOF更新判断1080後に、フローは、パターン・ステータス受信動作1005に進み、それにより、より多くのデータが、次のフレームから処理され得る。
EOB判断1070を参照すると、メモリ130の中のフレーム・データ・バッファ134の終わりが選択的抽出及びスタッシング動作1060中に遭遇される場合、フローは、EOB更新動作1075に進む。データ・バッファの終わりが選択的抽出及びスタッシング動作1060中に遭遇されない場合、フローは、上記で説明した転送動作1045に進む。
EOB更新動作1075を参照すると、BDFP214は、現在のバッファ記述子キューのステータス及び制御情報を更新する。例えば、BDFP214は、現在のBDQ122の中の抽出生起ビットを設定して、抽出されたデータ124がキャッシュ120に格納されたことを指示する。次のBDQポインタ(BDQ_NEXT)は、選択されたBDQの中の次の位置を指すよう設定される。現在のBDQのコンテンツが、キャッシュにBDLWTに従ってコピーされる。EOB更新動作1075後に、フローは、ノードAに進み、それにより、より多くのデータが、同じフレームから処理されることができる。
図11は、64バイト・バッファを用いて図1のシステムによりメッセージの複数の一部分を抽出してスタッシングする方法を示すフロー・チャートである。図11に示される方法は、図10の選択的抽出及びスタッシング動作1060により呼び出される。
図11を参照すると、抽出エンジン212は、抽出が抽出要求判断1105中に、所与のパターン・マッチのため要求されたかどうかを決定する。抽出エンジン212はまた、抽出追加(EX_ADD)フィールド及び抽出長さ(EL)フィールドのような様々な抽出フィールドを検査する。抽出追加フィールドは、抽出長さに対応の抽出インデックスを加えてもの(例えば、EXADD=EL+EI[11:15])に等しい。抽出が要求された場合(PME=1)、抽出追加値はゼロより大きく、抽出長さはゼロより大きく、そしてフローは、EL≦64判断1125に進む。抽出が要求されない場合、抽出追加値がゼロであり、又は抽出長さがゼロであり、フローは、整列判断1110に進む。
整列判断1110を参照すると、目標アドレスが64バイトの整列されたアドレスで無い場合、フローは、MAX(32B)送信動作1120に進み、そこで最大の32バイトの正常データがメモリ130に送られる。MAX(32B)は、32バイトを含む最高のバイト数であり、(例えば、ここで、xはバイト数とすると、MAX(xB)≦xバイトである。)。目標アドレスが64バイトの整列されたアドレスである場合、フローは、MAX(64)送信動作1120に進み、そこでMAX(64B)の正常データが、メモリ130に送られる。MAX(32B)送信動作1115か又はMAX(64B)送信動作1120かのいずれかの後で、抽出フローを出て、そしてフローは、図10のEOF判断1065に進む。
EI≦64判断1125を参照すると、抽出インデックスが64より大きい場合、抽出されるべきデータは、まだ到着されてなく、そしてフローは、MAX(64B)送信動作1130に進み、そこでMAX(64B)の正常データが、メモリ130に送られる。MAX(64B)送信動作1130後に、抽出インデックスは、EI減分動作1135中に64だけ減分され(例えば、EI=EI−64)、そして抽出フローを出て、フローは、図10のEOF判断1065に進む。
EI≦64判断1125を再び参照すると、抽出インデックスが64以下である場合、フローは、相対的EI格納動作1140に進む。相対抽出インデックスは、メモリ130の中のデータ・バッファ内の1つの位置に対するインデックスであり、そこから、抽出されたデータが、始まる。相対抽出インデックスは、それが後にEOB更新動作1075又はEOF更新判断1080(図10)中にメモリ130の中の適切なBDQに及び/又はキャッシュ120に書き込まれるまでBDFP214によりDMA210に内部的に格納される。相対的EI格納動作1140後に、フローは、EI≦32判断1145に進む。
EI≦32判断1145を参照すると、抽出エンジン212は、抽出インデックスとの比較を実行し、そして例えば、抽出エンジン212内のDMA210に内部的に格納されている抽出データ・フラグを検査する。例えば、抽出インデックスが32より大きく、そして抽出データ・フラグが真でない場合、フローは、MAX(32B)送信動作1150に進み、そこでMAX(32B)の正常データが、メモリ130に送られる。MAX(32B)送信動作1150後に、抽出データ・フローを出て、そしてフローは、図10のEOF判断1065に進む。
EI≦32判断1145を再び参照すると、抽出インデックスが32以下であるか、又は抽出データ・フラグが真である場合、フローは、32B未満判断1160に進む。受信されたフレームから抽出すべき少なくとも32バイトのデータがある場合(例えば、EX_ADD≧32B)、フローは、32B送信動作1170に進み、そこで32バイトの抽出データが、ELCWTに従って、メモリ130に送られ、キャッシュ120にコピーされる。例えば、ELCWTが00である場合、割り当てが実行されず、ELCWTが01である場合、抽出が生じず、ELCWTが10である場合、キャッシュ行が割り当てられ、そしてELCWTが11である場合、キャッシュ行が割り当てられ且つロックされる。受信されたフレームから抽出すべき32バイト未満のデータがある場合(例えば、EX_ADD<32B)、フローは、切り上げ動作1165に進み、そこでEX_ADDは、32の値に切り上げられ、そしてフローは更に、32B送信動作1170に進む。
32B送信動作1170後に、フローは、減分動作1175に進み、その減分動作1175中に、抽出追加フィールドは、抽出された32バイト・セグメントの数だけ減分される(例えば、EX_ADD=EX_ADD−32)。減分動作1175後に、抽出データ・フラグは、フレームの終わり(EOF)が到達されたか又はEX_ADD=0である場合クリア動作1180中にクリアされる。クリア動作1180後に、抽出フローを出て、そしてフローは、図10のEOF判断1065に進む。
一実施形態において、メッセージ・フレームの一部分が、情報処理及び通信システム100によりパケット制御器160のMAC190で受信される(図1及び図6、動作610を参照)。メッセージ・フレームのその受信された部分(「受信されたフレーム」)は、図2のアドレス/データ・フィルタ230の一時キュー234に与えられる。フレームは、アドレス/データ・フィルタ230により処理されて、それが受け入れられるべきか又は拒絶されるべきかを決定する(図6、動作620を参照)。アドレス認識、ハッシング、完全なハッシングのためパターン・マッチングを有するハッシング、及びパターン・マッチング(図7〜図9)が、アドレス認識及びハッシュ論理238及びパターン・マッチング論理232により上記「受信されたフレーム」について実行される。アドレス認識及びハッシュ論理238は、ハッシング、及びいずれの必要なフルのアドレス比較を実行する。PMレジスタ233は、マッチングされるべきパターンの数に対応するレジスタの数を含む。パターン・マッチング論理232は、パターン・マッチングを、PMレジスタ233に格納されているコンフィギュレーション値に基づいて(例えば、連続検索及び/又は連結能力を用いて)実行する。パターン・マッチング及びハッシング又は他のフェール・セーフ条件後に受け入れられた場合、受信されたフレーム及びパターン・ステータス情報(パターン・マッチ結果)は、受信FIFO220に転送される(図6、動作630参照)。
次いで、受信されたフレームは、受信バッファ211に転送され、そしてパターン・ステータス情報は、DMA210のステータス・レジスタ215に転送される(図6、動作640参照)。抽出エンジン212は、パターン属性レジスタ213及びステータス・レジスタ215にアクセスして、データが受信バッファ211の中の受信されたフレームから抽出されるべきかを決定し、そして適用できるようなデータの抽出を制御する(図10及び図11参照)。BDFPは、ステータス・レジスタ215及びバッファ記述子アドレス・レジスタにアクセスし、そしてメモリ130及び/又はキャッシュ120に書き込まれるべきアドレス及びデータ情報を発生する。BDFP214からのアドレス情報は、フレーム・データのためのデータ・バッファ内にデータ・バッファ・ポインタ(例えば、データ・バッファ・ポインタ456)、又はバッファ記述子キューの中の複数の次のエントリのうちの1つのエントリに対する1又は複数のポインタ(例えば、BDQ_BASE、BDQ_CURRENT、BDQ_NEXT)を含む。データ情報は、図4に示される、ステータス及び情報452、データ長さ454、データ・バッファ・ポインタ456、パターン・マッチ・ステータス458、相対抽出インデックス460、抽出長さ462、及びバイト・カウント464を含む。
次いで、フレームの全て又は一部分は、対応のバッファ記述子キュー132/122の中の対応の記述情報と一緒に、メモリ130にファイルされ(「正常データ」)、及び/又はキャッシュ120にスタッシュされる(「抽出されたデータ」)(図6、動作650、及び図10及び図11参照)。より詳細には、受信バッファ211は、正常な又は抽出されたフレーム・データをバス・インターフェース・ユニット(BIU)170に与え、抽出エンジン212は、属性をBIU170に与え、当該BIU170は、フレーム・データを正常データ又は抽出されたデータとして識別し、そしてBDFP214は、アドレス情報及びバッファ記述子データをバッファ記述子アドレス・レジスタ216からBIU170へ与える。BIU170は、フレーム・データをキャッシュ120及び/又はメモリ130に格納するためシステム・バス140に通す。正常フレーム・データは、少なくとも1つのデータ・バッファ134に格納され、そして正常フレーム・データについての記述子データは、バッファ記述子キュー132に格納される。抽出が生じた場合、抽出されたフレーム・データは、キャッシュ部分124に格納(「スタッシュ」)される。
上記の記載は、本発明の少なくとも1つの実施形態を説明することを意図している。上記の記載は、本発明の範囲を定義することを意図するものではない。むしろ、本発明の範囲は、添付の特許請求の範囲で定義される。従って、本発明の他の実施形態は、上記の記載の態様に対する他の変形、変更、追加及び/又は改良を含む。
一実施形態は、ユーザがより長いパターンを形成するため連結され且つ最初の256バイト内のフレームの一部分とマッチするため用いられることができる最大16個の4バイト・パターンをプログラムすることを可能にする新規な形式のパターン・マッチングを組み込む。フレームを受け入れ/拒絶し、フレームをメモリの中の4つのキューのうちの1つのキューにファイルし、抽出されたフレーム・データをプロセッサのキャッシュに書き込むようプログラムされることができる1組の属性は、各パターンと関連付けられる。パターン・マッチング能力は、最大16個の一義的4バイト・パターンのサポート、ビット毎ベースのパターン・マッチング、フレームの中への最大256バイト深さのマッチング範囲、最大256バイトのオフセット、最大64バイトの4バイト増分のプログラム可能パターン・サイズ、マッチが検出されたときの受け入れ又は拒絶フレーム、及び正確なマッチのための最大8ユニキャスト・アドレスを含む。
この実施形態は、パターン・マッチングのパワーをハッシュ・フィルタリングの使用と組み合わせて、ポスト・フィルタリングを必要としないアドレス認識方法を提供し、そして更なるソフトウエア介入を論理リンク制御器レベルで必要とする代わりにMACレベルで行うことができる。フレームの処理を促進するための1つの方法は、ハッシュ・テーブル上でヒットをたまたま獲得するいずれのデスティネーション・アドレスが本当に本システムが捜している複数のアドレスのうちの1つである信頼度を増大する方法である。2以上のアドレスが同じ8個の最上位ビットを有するCRCを有するであろうから、パターン・マッチングを有するハッシュ・テーブルの使用は、ハッシュ・ヒットについて行われなければならない(アドレスを検索し、そしてそれを有効なデスティネーション・アドレスのリストと比較すること)余分の処理が無駄な努力でない機会を著しく増大させる方法を与える。これは、それが意図しないハッシュ・テーブル・ヒットにより引き起こされる余分のメモリバス利用を低減するので価値がある。ハッシュされることができるアドレスの数はまた、アドレスの数が増大するにつれハッシュ・テーブル有効度が低下することにより制限される。ユーザは最初にハッシュ・テーブルを作るので、そしてハッシュされるべきアドレスの数が通常比較的低い(32から64)ので、ユーザのアドレスの全てではないとしても大部分をカバーすることができるであろう共通のパターンを見つけることが比較的容易である。少数のパターン・マッチ・レジスタを用いて、ユーザは、所望のキューにファイルされる何かがヒットであり、そして比較テーブルを必要としないで処理されることができることを保証することができるであろう。
一実施形態において、CRCチェックサムはグループ/個人ハッシュ・テーブルに設定されるビットを選択する場合、フレームは、パターン・マッチ結果が出るまで単純に条件付けされて受け入れられる。ベンダのコードが、例えば、マッチすべきパターンとして非常に高い有効性を有して用いられることができる。パターンがより選択的であれば(用いられるビットがより少ない)、高い信頼度のハッシュ・ヒット・キュー方法がより実効的になる。極めて選択的パターンの場合、ハッシュ・テーブルで用いられることができるアドレスの数は、増大され、そして依然実効的のままであることができる。この実施形態の別の利点は、フレームを拒絶するために良好なフレームを拒絶する危険性無しにそれ自体でハッシングすることを用いることができないのに対し、ハッシュ衝突の不確実さが排除されるので、組み合わされたパターン・マッチング及びハッシュ・フィルタリングを用いて、「ハッシングすることによるフレーム拒絶」を実行することができることにある。更なる柔軟性は、ユーザがパターン・マッチング及びハッシュが「マッチ・キュー無しの高い確率」で拒絶したフレームをファイルすることができ、それによりフレームは、上記方法の実効性を更に確認するため検査されることができることである。
本明細書で説明されるように、ADF230の様々な制御論理は、ADF230の前述の構成要素の間に分散され、そして別々の論理ブロックとして図示されていない。代替として、例えば、ADF230の全体動作を制御し且つパターン・マッチング及びハッシングの機能を含む状態マシンを表す別々の制御論理ブロックを含み得る。そのような状態マシンは、本明細書で説明される機能を実現するための或る一定数の状態を含むかもしれないであろう。例えば、状態マシンは、データが受信され且つフレームが受け入れられる際に、アイドル状態からパターン・ステータス状態へ遷移し得るであろう。パターン・ステータス状態において、パターン・ステータス情報は、受信FIFO220に対して使用可能にされ得る。次いで、状態マシンは、受信されたフレームが一時キュー234から送られる一時キュー・データ・フェーズへ遷移することができる。次いで、状態マシンは、デスティネーション・アドレス・フィルタリングと関連付けられたフレーム長さ及びステータス(例えば、ブロードキャスト・アドレス、グループ/シングル・アドレス、プロミスキャス・モード)が受信FIFO220に転送されるフレーム・ステータス状態に入る。他の状態及び状態マシンが、本明細書で説明される機能に従って実現され得る。
一実施形態において、1つの方法は、メッセージを受信するステップと、第1のパターンに対応する第1のパターン・マッチが受信されたメッセージ内に検出されたかどうかを決定するステップであって、当該第1のパターンがパターン・マッチ・データにより指示され且つ対応の逆パターン・インディケータを有する、上記決定するステップとを含む。第1のパターン・マッチが検出されたとき、メッセージは、対応のパターン・マッチ受け入れインディケータに基づいて選択的に受け入れられる。対応の逆パターン・インディケータが第1の値を有する場合、第1のパターン・マッチは、第1のパターンが受信されたメッセージ内で検出されたとき検出され、そして対応の逆パターン・インディケータが第2の値を有する場合、第1のパターン・マッチは、第1のパターンが受信されたメッセージ内に検出されなかったとき検出される。
更なる実施形態において、メッセージを受信するステップは、パケットの少なくとも1つの部分を受信するステップを含む。一実施形態において、パケットは更に、イーサネット(登録商標)・パケットとして特徴付けられる。更なる実施形態において、対応のパターン・マッチ受け入れインディケータは、受信されたメッセージの受け入れ、拒絶、及び受け入れも拒絶も無しのうちの1つを指示する。
更なる実施形態において、第1のパターンは、対応の連続検索イネーブル・インディケータを有し、そこにおいて、メッセージは、対応のパターン受け入れインディケータ及び対応の検索イネーブル・インディケータに基づいて選択的に受け入れられる。別の実施形態において、第1のパターン・マッチが検出され、そして第1のパターンに対応するパターン・マッチ受け入れインディケータが受信されたメッセージの受け入れを指示する場合、受信されたメッセージは、第1のパターンに対応する連続検索イネーブル・インディケータが連続検索無しを指示するとき受け入れられる。また別の実施形態において、第1のパターン・マッチが検出され、そして第1のパターンに対応するパターン・マッチ受け入れインディケータが受信されたメッセージの受け入れを指示する場合、受信されたメッセージは、第1のパターンに対応する連続検索インディケータが連続検索を指示するとき受け入れられ、そして第2のパターンに対応する第2のパターン・マッチが、検出され、当該第2のパターンは、受信されたメッセージの拒絶を指示しない対応のパターン受け入れインディケータを有する。一実施形態において、第2のパターンは、パターン・マッチ・データにより指示され、そして第2のパターンに対応するパターン・マッチ受け入れインディケータが、受信されたメッセージを受け入れることと、受信されたメッセージを受け入れも拒絶もしないこととのうちの1つを指示する。一実施形態において、第2のパターンに対応するパターン・マッチ受け入れインディケータは、受信されたメッセージを受け入れることと、受信されたメッセージを受け入れも拒絶もしないこととのうちの1つを指示し、そしてパターン・マッチングが、第2のパターンに関してディセーブルされる。更に別の実施形態において、第2のパターンは、対応の逆パターン・インディケータを有し、そこにおいて、第2のパターンに対応する逆パターン・インディケータが第1の値を有する場合、第2のパターン・マッチは、第2のパターンが受信されたメッセージ内に検出されたとき検出され、そして第2のパターンに対応する逆パターン・インディケータが第2の値を有する場合、第2のパターン・マッチは、第2のパターンが受信されたメッセージ内に検出されなかったとき検出される。
別の実施形態において、第1のパターン・マッチが検出され、そして第1のパターンに対応するパターン・マッチ受け入れインディケータが受信されたメッセージの受け入れを指示する場合、メッセージは、第1のパターンに対応する連続検索インディケータが連続検索を指示し、そして受信されたメッセージの拒絶を指示する対応のパターン・マッチ受け入れインディケータを有する第2のパターンに対応する第2のパターン・マッチが、検出されたとき受け入れられない。更なる実施形態において、第2のパターンは、対応の逆パターン・インディケータを有し、そこにおいて、第2のパターンに対応する逆パターン・インディケータが第1の値を有する場合、第2のパターン・マッチは、第2のパターンが受信されたメッセージ内に検出されたとき検出され、そして第2のパターンに対応する逆パターン・インディケータが第2の値を有する場合、第2のパターン・マッチは、第2のパターンが受信されたメッセージ内に検出されなかったとき検出される。
別の実施形態において、本方法は更に、第1のパターンが検出されないときメッセージを拒絶するステップを含む。更に別の実施形態において、第1のパターンは、受信されたメッセージ内の位置で第1のパターン・マッチが検出されたかどうかを決定する当該位置を指示する対応のマッチ・インデックスを有する。別の実施形態において、第1のパターン・マッチが検出されたとき、本方法は更に、第2のパターン・マッチが受信されたメッセージ内に検出されたかどうか決定するステップであって、第1のパターン及び第2のパターンのそれぞれが対応の連結インディケータを有する、上記決定するステップを含み、そこにおいて、メッセージを選択的に受け入れることが、第1のパターンに対応するパターン・マッチ受け入れインディケータと、第1のパターンに対応する連結インディケータ及び第2のパターンに対応する連結インディケータのうちの少なくとも1つとに基づいている。この実施形態において、第2のパターン・マッチが検出され、そして第1のパターンに対応する連結インディケータと第2のパターンに対応する連結インディケータとのうちの少なくとも1つが第1のパターンと第2のパターンとの連結を指示する場合、メッセージは、第1のパターンに対応するパターン・マッチ受け入れインディケータが受信されたメッセージの受け入れを指示するとき選択的に受け入れられる。この実施形態において、第2のパターン・マッチが検出されず、そして第1のパターンに対応する連結インディケータと第2のパターンに対応する連結インディケータとのうちの少なくとも1つが第1のパターンと第2のパターンとの連結を指示するとき、第1のパターン・マッチが、検出されなかったと見なす。
更に別の実施形態において、第2のパターンは、対応の逆パターン・インディケータを有し、そこにおいて、第2のパターンに対応する逆パターン・インディケータが第1の値を有する場合、第2のパターン・マッチは、第2のパターンが受信されたメッセージ内に検出されたとき検出され、そして第2のパターンに対応する逆パターン・インディケータが第2の値を有する場合、第2のパターン・マッチは、第2のパターンが受信されたメッセージ内に検出されなかったとき検出される。
別の実施形態において、本方法は更に、ハッシュ・ヒットが生じたかどうかを決定するハッシュ機能を実行するステップを含む。この実施形態において、ハッシュ・ヒットが生じたとき、第1のパターン・マッチが、検出され、そして第1のパターンに対応するパターン・マッチ受け入れインディケータが、受信されたメッセージの受け入れを指示し、メッセージは、選択的に受け入れられる。
別の実施形態において、メッセージが受け入れられたとき、本方法は更に、バッファ記述子キュー(BDQ)をパターン・マッチ属性に基づいて選択するステップと、メッセージを選択されたBDQに従ってメモリに格納するステップと、受け入れられたメッセージの少なくとも一部分をキャッシュに選択的に格納するステップとを含む。この実施形態において、受け入れられたメッセージの上記一部分は、パターン・マッチ属性により指示される。更に別の実施形態において、パターン・マッチ属性は、第1のパターンに対応する複数のBDQのうちの1つのBDQであって選択されたBDQに対応する当該1つのBDQを指示する。更に別の実施形態において、パターン・マッチ属性は、第1のパターンに対応する。更に別の実施形態において、メッセージが受け入れられたとき、メッセージは更に、第2のパターンに対応する第2のパターン・マッチが存在するかどうか決定することを含み、パターン・マッチ属性は、第2のパターンに対応する。
別の実施形態において、パターン・マッチ属性は、パターン・マッチ抽出インディケータを与える。この実施形態において、受け入れられたメッセージの一部分は、パターン・マッチ抽出インディケータが抽出がイネーブルされることを指示するときキャッシュに格納され、そして受け入れられたメッセージの上記一部分は、パターン・マッチ抽出インディケータが抽出がディセーブルされることを指示するときキャッシュに格納されない。別の実施形態において、パターン・マッチ属性は、抽出インデックス及び抽出長さを与えて、キャッシュに格納された受け入れられたメッセージの一部分を指示する。
別の実施形態において、メッセージが受け入れられたとき、本方法は更に、選択されたBDQの少なくとも一部分をキャッシュに格納するステップを含む。
代替実施形態は、入力、パターン・マッチング論理、及びパターン・マッチ論理に結合された制御論理を含むパケット制御器に関連する。この実施形態において、入力は、メッセージを受信する。パターン・マッチング論理は、第1のパターンに対応する第1のパターン・マッチが受信されたメッセージ内に検出されたかどうかを決定する。パターン・マッチング論理は、少なくとも1つのパターン・マッチ・レジスタを含み、当該少なくとも1つのパターン・マッチ・レジスタは、第1のパターンを指示するパターン・マッチ・データを格納し、そして当該少なくとも1つのパターン・マッチ・レジスタは更に、第1のパターンに対応するパターン・マッチ受け入れインディケータと第1のパターンに対応する逆パターン・インディケータとを含むパターン・マッチ制御を格納する。制御論理は、第1のパターン・マッチが検出され、そして第1のパターンに対応するパターン・マッチ受け入れインディケータが受信されたメッセージの受け入れを指示するとき受信されたメッセージを選択的に受け入れる。対応の逆パターン・インディケータが第1の値を有する場合、第1のパターン・マッチは、第1のパターンが受信されたメッセージ内に検出されたとき検出される。対応の逆パターン・インディケータが第2の値を有する場合、第1のパターン・マッチは、第1のパターンが受信されたメッセージ内に検出されなかったとき検出される。
更なる実施形態において、パターン・マッチ制御は更に、連結インディケータを含む。この実施形態において、パターンマッチング論理は、連結インディケータを用いて、第1のパターン・マッチが検出されたかどうかを決定する。別の実施形態において、連結インディケータが第1の値を有するとき、第1のパターン・マッチは、第1のパターン及び第2のパターンに対応する。この実施形態において、第2のパターンは、少なくとも1つのパターン・マッチ・レジスタ内に格納されている第2のパターン・マッチ・データにより指示される。別の実施形態において、連結インディケータが第2の値を有する場合、第1のパターン・マッチは、第1のパターンに対応し、第2のパターンに対応しない。別の実施形態において、パターン・マッチ制御は、第2のパターンに対応する逆パターン・インディケータを含む。
別の実施形態において、パターン・マッチ制御は更に、連続検索インディケータを含む。この実施形態において、制御論理は、第1のパターン・マッチが検出され、そして第1のパターンに対応するパターン・マッチ受け入れインディケータが受信されたメッセージの受け入れを指示するとき、受信されたメッセージを連続検索インディケータに基づいて選択的に受け入れる。
本明細書に記述したアーキテクチャは、単に例示であり、実際には、同じ機能を達成する多くの他のアーキテクチャを実行することができることが理解される筈である。抽象的に、しかし依然一定の意味において、同じ機能を達成するための構成要素のいずれの構成は、所望の機能を達成するように実効的に「関連付けられ」ている。従って、特定の機能を達成するため本明細書において組み合わされた任意の2つの構成要素は、アーキテクチャ又は中間構成要素に拘わらず所望の機能が達成されるように互いに「関連付けられ」ているとして見ることができる。同様に、そのように関連付けられた任意の2つの構成要素はまた、所望の機能を達成するため、互いに「動作的に接続されている」、又は「動作的に結合されている」と見ることができる。
当業者は、論理ブロック間の境界が単に例示であり、代替実施形態は論理ブロック又は回路構成要素を合併させ、又は機能の代替分解を様々な論理ブロック又は回路構成要素に課し得ることを認めるであろう。更に、代替実施形態は、特定の構成要素の複数の実例を組み合わせ得る。
更に、当業者は、上記で説明した動作の機能間の境界が単に例示であることを認めるであろう。複数の動作の機能は、単一の動作の中に組み合わされ得て、及び/又は単一の動作の機能は、追加の動作に分散され得る。更に、代替実施形態は、特定の動作の複数の事例を含み得て、そして動作の順序は、様々な他の実施形態において変えられ、又は更に並列に実行され得る。
上記の詳細な説明が例示であるので、「一実施形態」が説明されるとき、それは、例示的実施形態である。従って、この文脈における単語「一」の使用は、1つで且つ唯1つの実施形態が説明した特徴を有することを示す意図ではない。むしろ、多くの他の実施形態は、例示の「一実施形態」の説明した特徴を有し得て、そして多くの場合有する。従って、上記で用いられるように、本発明が一実施形態の文脈で説明されるとき、その1つの実施形態は、本発明の多くの有り得る実施形態のうちの1つである。
詳細な説明における用語「一実施形態」の使用についての上記の注意にも拘わらず、請求項に記載の構成要素の特定の数が添付の特許請求の範囲において意図される場合、そのような意図は、特許請求の範囲に明示的に記載され、そしてそのような記載がない場合、そのような限定が存在しない又は意図していないことが当業者に理解されるであろう。例えば、添付の特許請求の範囲において、請求項に記載された構成要素が「1つ」の特徴を有するよう記載されているとき、その構成要素は、記載された複数の特徴のうちの1つ且つ唯1つの特徴に限定されることを意図している。更に、請求項に記載された構成要素が、添付の特許請求の範囲において、「1つ(one)」の特徴を含む又は備えると記載されるときは、その構成要素が、記載された複数の特徴のうちの1つ且つ唯1つの特徴に限定されることを意図していない。むしろ、例えば、「特徴(“a”feature)」を含む請求項は、問題の特徴のうちの1又はそれより多くの特徴を含む装置又は方法と読むべきである。即ち、問題の装置又は方法が1つの特徴を含むので、当該請求項は、当該装置又は方法がそのような別の類似の特徴を含むかどうかに拘わらずにその装置又は方法を読むべきである。単語「a」を無限定の前置き冠詞として特許請求の範囲の特徴に対して使用することが、見つけ得る反対に対するいずれの相反する又は前例の判例法にも拘わらず、過去の多くの公判により採用された解釈と同一であるとして本出願人により採用されている。同様に、請求項に記載の構成要素が添付の特許請求の範囲において上記の特徴(例えば、「前記」特徴(“the”feature)を含む又は備えるとして記載されているので、その構成要素は、定冠詞の同一の使用により単に記載された複数の特徴のうちの1つ且つ唯1つの特徴に限定されないことを意図している。
更に、特許請求の範囲における「少なくとも1つ」及び「1又はそれより多く」のような前置き句の使用は、たとえ同じ請求項が「1又はそれより多く」又は「少なくとも1つ」の前置き句及び英語の「a」又は「an」のような不定冠詞を含むときでも、請求項に記載の別の構成要素に対する不定冠詞「a」又は「an」の導入がそのようなに導入された請求項に記載の構成要素を含むいずれの特定の請求項を唯1つのそのような構成要素を含む発明に限定することを意味すると解釈すべきでない。同じことが、定冠詞の使用に対しても当てはまる。
本発明の特定の実施形態が示されそして説明されたが、本明細書の教示に基づいて、様々な変更、代替構成、及び均等物が添付の特許請求の範囲から逸脱すること無しに用いられ得ることが当業者に明らかであろう。従って、添付の特許請求の範囲は、本発明の真の趣旨及び範囲内にある全てのそのような変化、変更等を特許請求の範囲の範囲内に包含する。更に、本発明は添付の特許請求の範囲によってのみ定義されると理解されるべきである。上記の説明は、本発明の実施形態の網羅的リストを提示することを意図していない。さもなければ明記していない場合、本明細書に提示された各例は、非限定の用語、非排他的の用語、又は類似の用語が各例で同時に表されていようといまいと、非限定の又は非排他的な例である。幾つかの例示的実施形態及びそれらに対する例示的変形の概要を説明する試みがなされたが、他の実施形態及び/又は変形が、添付の特許請求の範囲に定義される本発明の範囲内にある。