專利名稱:使用模式匹配的網(wǎng)絡(luò)消息處理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信,更具體地,涉及處理經(jīng)由例如以太網(wǎng)網(wǎng)絡(luò)的網(wǎng)絡(luò)接收的消息。
背景技術(shù):
局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)和其它類型的網(wǎng)絡(luò)典型地包括經(jīng)由連接耦合、根據(jù)各種基于包的通信協(xié)議來操作的大量信息處理系統(tǒng)。例如,以太網(wǎng)IEEE 802.3協(xié)議是基于載波偵聽多路訪問/沖突檢測(CSMA/CD)方法的被廣泛使用的LAN協(xié)議。因?yàn)橐蕴W(wǎng)和IEEE802.3協(xié)議是類似的,并且可以共存于相同的LAN上,所以兩者有時(shí)都被稱作以太網(wǎng)。10/100以太網(wǎng)提供從10到100兆比特每秒(Mbps)的增加的以太網(wǎng)速度,并為干線和服務(wù)器連接性提供簡單的、成本有效的選擇。吉比特以太網(wǎng)是建立在基礎(chǔ)以太網(wǎng)協(xié)議之上的另一種以太網(wǎng)協(xié)議,但是將速度增加到10/100以太網(wǎng)的十倍以上到達(dá)1000Mbps或者一千兆比特每秒(Gbps)。
網(wǎng)絡(luò)中的設(shè)備通常接收要給它們的消息和并不是要給它們的消息。因此,這種設(shè)備必須在本地分析每一個(gè)進(jìn)入消息來確定它們是否應(yīng)該接受該消息。典型地,每個(gè)設(shè)備具有必須以某種形式被與每一個(gè)所接收消息中的地址相比較的地址。由于地址長度和將要被比較的大量地址,精確的地址匹配在計(jì)算上是很密集的。因?yàn)樵O(shè)備可以為大量其它設(shè)備接受消息,所以非常大量的消息可能被接收,并且網(wǎng)絡(luò)速度增加,處理(例如,接受或拒絕)進(jìn)入消息的問題可以導(dǎo)致在網(wǎng)絡(luò)中各種設(shè)備處的瓶頸,并降低整體性能。傳統(tǒng)的目的地地址識(shí)別方法需要在比介質(zhì)訪問控制(MAC)級(jí)更高的開放式系統(tǒng)互聯(lián)(OSI)級(jí)上被進(jìn)行的后濾波,并且需要大量軟件和通用處理硬件干涉。一些技術(shù)使用內(nèi)容可尋址存儲(chǔ)器(CAM),但是這種技術(shù)典型地都很貴、非常耗電并且不靈活。因此,需要增強(qiáng)處理進(jìn)入消息的性能。
除了只是接受或拒絕進(jìn)入消息之外,每一個(gè)設(shè)備典型地具有響應(yīng)于接收到消息而進(jìn)行的各種任務(wù)。因此,通過消息被接收的一些數(shù)據(jù)需要在很短的時(shí)間內(nèi)被存儲(chǔ)和訪問。這樣,通過預(yù)處理所接收消息(例如,通過在入站消息被處理器或軟件驅(qū)動(dòng)系統(tǒng)資源檢查之前將它們分類)以釋放這種資源的使用用于其它任務(wù)并減少訪問重要或高優(yōu)先級(jí)幀的等待時(shí)間來增強(qiáng)這種消息的處理將是有優(yōu)勢的。
通過參照附圖,本發(fā)明可以被更好地理解,并且其許多目的、特征和優(yōu)點(diǎn)對(duì)本領(lǐng)域技術(shù)人員是顯然的。不同圖中相同標(biāo)號(hào)的使用指代類似或相同的項(xiàng)。
圖1是圖示根據(jù)本發(fā)明實(shí)施例的信息處理和通信系統(tǒng)的框圖。
圖2是圖示圖1的系統(tǒng)的包控制器的接收部分的框圖。
圖3是圖示可由圖1的系統(tǒng)接收和分析的實(shí)例性消息地址的框圖。
圖4是圖示圖1的實(shí)例性緩存描述符隊(duì)列的框圖。
圖5是圖示圖1的實(shí)例性模式匹配和模式匹配屬性寄存器的框圖。
圖6是圖示用于通過圖1的系統(tǒng)處理所接收消息的方法的流程圖。
圖7是圖示用于散列和模式匹配由圖1的系統(tǒng)所接收的消息地址的方法的一部分的流程圖。
圖8是圖示用于散列和模式匹配由圖1的系統(tǒng)所接收的消息地址的方法的另一部分的流程圖。
圖9是圖示模式匹配在圖7的圖示流程內(nèi)由圖1的系統(tǒng)所接收的消息地址的方法的流程圖。
圖10是圖示在圖1的系統(tǒng)內(nèi)處理被接受消息的方法的流程圖。
圖11是圖示通過圖1的系統(tǒng)提取和收藏(stash)消息的部分的方法的流程圖。
圖12是圖示使用散列和/或模式匹配被處理的大量地址的表。
具體實(shí)施例方式
下面的討論旨在提供本發(fā)明至少一個(gè)實(shí)例的詳細(xì)描述,并且不應(yīng)該被認(rèn)為是對(duì)本發(fā)明本身的限制。實(shí)際上,任意數(shù)量的改變都可以落在由本說明書后面的權(quán)利要求適當(dāng)限定的本發(fā)明范圍內(nèi)。
圖1是圖示根據(jù)本發(fā)明實(shí)施例的信息處理和通信系統(tǒng)100的框圖。系統(tǒng)100包括處理器110、高速緩存120、存儲(chǔ)器130、系統(tǒng)總線140、外設(shè)150和包控制器160。處理器110、高速緩存120、存儲(chǔ)器130、外設(shè)150和包控制器160都經(jīng)由系統(tǒng)總線140耦合。系統(tǒng)100可以是以太網(wǎng)、G級(jí)以太網(wǎng)和/或XG級(jí)以太網(wǎng)控制器或者是與其兼容的,可以是網(wǎng)絡(luò)交換機(jī)或路由器,或者用于在網(wǎng)絡(luò)內(nèi)通信的其它類型的設(shè)備。
包控制器160包括總線接口單元(BIU)170、接收部分180、傳送部分185和介質(zhì)訪問控制器(MAC)190??偩€接口單元170被耦合到系統(tǒng)總線140??偩€接口單元170經(jīng)由連接172被耦合到接收部分180,經(jīng)由連接174被耦合到傳送部分185。MAC 190經(jīng)由連接192被耦合到接收部分180,經(jīng)由連接194被耦合到傳送部分185。MAC 190被耦合到物理層硬件以經(jīng)由物理(PHY)連接198從其它設(shè)備接收例如包的消息。
消息在MAC 190被接收并被傳遞到接收部分180。消息可取決于地址識(shí)別、散列、模式匹配或散列和模式匹配(例如,如下面至少參照?qǐng)D2到9描述的)可以被接受或不被接受。來自被接受消息的信息被傳遞到存儲(chǔ)器130。某些信息可以通過模式匹配被識(shí)別為特別適合被處理器110或其它系統(tǒng)資源快速訪問,在這種情況下,這種信息被從發(fā)送到存儲(chǔ)器130的正常消息數(shù)據(jù)中提取出來,并且所提取數(shù)據(jù)被收藏在高速緩存120中(例如,如下面至少參照?qǐng)D2到6和圖10到11描述的)。
所公開的目的地地址識(shí)別協(xié)議將對(duì)后濾波的需要降到最小,并且可以在介質(zhì)訪問控制級(jí)進(jìn)行而無需在更高OSI級(jí)的進(jìn)一步的軟件和硬件干涉。對(duì)于一些地址集,用戶可以找到在MAC級(jí)產(chǎn)生極好濾波的模式集。確定性算法可以被用于產(chǎn)生用于確保極好散列時(shí)間濾波所需的模式。所公開的協(xié)議還允許在被接受幀整體內(nèi)而非僅僅目的地地址內(nèi)的模式匹配搜索,以改善散列時(shí)間濾波的結(jié)果。
存儲(chǔ)器130包括用于存儲(chǔ)進(jìn)入消息的幀數(shù)據(jù)緩存134和用于跟蹤所存儲(chǔ)消息的緩存描述符隊(duì)列132,如在下面進(jìn)一步詳細(xì)描述的。高速緩存120包括可以存儲(chǔ)一個(gè)或多個(gè)緩存描述符隊(duì)列122的存儲(chǔ)位置和用于收藏(即存儲(chǔ))所提取數(shù)據(jù)124以隨后被處理器110使用的存儲(chǔ)位置。所提取數(shù)據(jù)是根據(jù)這里描述的某些模式匹配協(xié)議從進(jìn)入消息的正常幀數(shù)據(jù)中提取的用于存儲(chǔ)在高速緩存120中的數(shù)據(jù)。所提取數(shù)據(jù)可以是例如重要數(shù)據(jù)、服務(wù)質(zhì)量(QoS)等級(jí)數(shù)據(jù)或加速的訪問時(shí)間可能是其期望的其它高優(yōu)先級(jí)數(shù)據(jù)。存儲(chǔ)器130和高速緩存120可以被處理器110訪問,并且甚至可以被系統(tǒng)100內(nèi)的其它設(shè)備或處理器(未示出)訪問。
圖2是圖示系統(tǒng)100的包控制器160的接收部分180的框圖。接收部分180包括直接存儲(chǔ)器訪問(DMA)控制器210、接收FIFO 220和地址/數(shù)據(jù)濾波器(ADF)230。ADF 230被耦合用于從MAC 190接收消息以及用于選擇性地將這種消息提供給FIFO 220。具有可被地址/數(shù)據(jù)濾波器230接收的幀的實(shí)例性消息包在下面參照?qǐng)D3更詳細(xì)地討論。DMA 210被耦合用于在FIFO控制器222的控制下從接收FIFO220接收消息信息(例如,地址和數(shù)據(jù)信息,以及例如下面描述的模式狀態(tài)信息的消息濾波結(jié)果)。
ADF 230包括臨時(shí)隊(duì)列234、模式匹配邏輯232和地址識(shí)別和散列邏輯238。臨時(shí)隊(duì)列234、模式匹配邏輯232和地址識(shí)別和散列邏輯238中每一個(gè)被耦合用于從MAC 190接收消息(例如幀)。臨時(shí)隊(duì)列234被耦合用于從模式匹配邏輯232和地址識(shí)別和散列邏輯238接收消息濾波結(jié)果信息,并且用于作為到接收FIFO 220的響應(yīng)將幀(或其部分)和消息濾波信息提供給接收FIFO 220。
在沒有模式匹配和散列邏輯時(shí),直接且完整的地址比較將必須在每一個(gè)所接收消息的目的地地址與系統(tǒng)100或者系統(tǒng)100被配置用于為其接受消息的其它系統(tǒng)的地址之間被進(jìn)行。這種完整的地址比較典型地包括以某種形式中斷處理器110,因?yàn)楸容^典型地在軟件的控制下發(fā)生。
但是,在圖示的實(shí)施例中,模式匹配邏輯232和散列邏輯238被提供以減小完整地址比較發(fā)生的頻率,從而允許處理器110空閑以執(zhí)行其它任務(wù)。模式匹配邏輯232對(duì)所接收的幀進(jìn)行模式匹配分析,以允許根據(jù)模式匹配結(jié)果對(duì)幀選擇性接受。模式匹配在存儲(chǔ)于模式匹配(PM)寄存器233中的值(例如,控制位或域)的控制下進(jìn)行。散列邏輯238對(duì)所接收幀的地址進(jìn)行散列分析,以允許根據(jù)散列命中或脫靶結(jié)果對(duì)幀選擇性接受,以進(jìn)一步增加對(duì)具有高接受可能的地址進(jìn)行完整地址比較的可能性。
模式匹配邏輯232的PM寄存器233包括16個(gè)條目。每一個(gè)條目包括5個(gè)32比特寄存器。現(xiàn)在參照?qǐng)D5,每一個(gè)條目包括模式(PMDATA)、模式屏蔽(PM MASK)和模式匹配控制(PM CONTROL)域。模式匹配控制域包括匹配索引(MI)域、連續(xù)搜索啟用(CSE)域、倒轉(zhuǎn)(IV)域、連接模式(CP)域和模式匹配接受控制(PMAC)域。
PM DATA域包括用于與所接收幀比較的位模式。如果PMDATA位模式(例如,4字節(jié)模式)在幀中被找到,那么模式匹配被檢測到。如果PM DATA位模式?jīng)]有在幀中被找到,那么模式匹配沒有被檢測到。PM DATA域在圖示實(shí)施例中為32比特長。PM MASK域包括使模式中某些位在比較發(fā)生時(shí)被屏蔽的位。例如,在幀的一部分內(nèi)的出售商標(biāo)識(shí)位在PM MASK被適當(dāng)設(shè)置時(shí)可以被忽略。
匹配索引(MI)域指示在所接收幀中模式匹配應(yīng)該多深地開始用于相應(yīng)的PM DATA。例如,MI域可以包括6個(gè)位,指示從0到256比特的搜索范圍。在一個(gè)實(shí)施例中,MI在4字節(jié)的倍數(shù)中,從接收幀的開始(從DA域到FCS,包括端點(diǎn))指定索引,從其開始進(jìn)行模式匹配。如果MI被清除,目的地地址的前4個(gè)字節(jié)提供用于模式匹配的開始點(diǎn)。MI的最大編程值在當(dāng)前討論實(shí)施例中為63(252字節(jié)偏移)。每一個(gè)4字節(jié)模式的MI值即使在允許鄰近或非鄰近模式時(shí)也被尊重(honor)。
連續(xù)搜索啟用(CSE)域影響當(dāng)匹配被找到時(shí)將采取的行動(dòng)的類型。具體地,CSE位指示在模式匹配時(shí)立即采取行動(dòng),還是在模式匹配時(shí)應(yīng)該進(jìn)一步發(fā)生模式匹配搜索。已設(shè)置的CSE位指示如果在條目上發(fā)生匹配,那么模式匹配應(yīng)該繼續(xù)。例如,如果模式匹配被找到并且連續(xù)搜索被啟用,那么模式匹配邏輯232繼續(xù)從PM寄存器233的其它寄存器中搜索PM DATA的其它匹配直到256字節(jié)的最大值。如果沒有其它匹配被遇到,那么與最后匹配的條目相應(yīng)的屬性被使用。所有連續(xù)的模式一定不能基于模式匹配拒絕最終接受。例如,第一模式匹配必須至少有條件地接受,并且所有隨后的模式必須或者接受,或者既不接受也不拒絕以便接受幀。如果隨后的模式匹配拒絕發(fā)生,那么CSE的值被忽略,幀被拒絕,搜索被停止。如果模式匹配被找到并且連續(xù)搜索被禁止(CSE=0),那么對(duì)所有其它模式的搜索將被模式匹配邏輯232停止,并且?guī)唤邮芑蚓芙^,或者另一個(gè)確定被基于具體模式匹配發(fā)生的事實(shí)而被作出。
連接模式(CP)域允許PM寄存器233每一個(gè)條目中可用的PMDATA的多于32比特的比較。如果CP位被設(shè)置,跟著當(dāng)前PM寄存器后面的中間PM寄存器233被看作是該模式的繼續(xù),并且下一個(gè)PMDATA條目被連接到當(dāng)前PM DATA條目。在這種情況下,每一個(gè)PMDATA條目必須在模式匹配將對(duì)其發(fā)生的幀中被找到,但是兩組匹配位可以根據(jù)它們各自的MI而處于幀內(nèi)的任何地方。如果CP位沒有被設(shè)置,那么沒有模式連接發(fā)生。最后的PM寄存器233的CP域被看作是被清除的,而不管存儲(chǔ)在其中的值如何。其中CP被設(shè)置的最低的數(shù)字PM寄存器233含有被用于被連接模式的模式匹配控制和屬性信息(除了MI)。對(duì)于每一個(gè)被連接的模式,MI域必須被設(shè)置到合適的4字節(jié)倍數(shù),以免所有模式企圖匹配到幀的前4個(gè)字節(jié)(如果MI被留下未清除)。
倒轉(zhuǎn)(IV)域允許模式與幀以真或補(bǔ)形式的比較。例如,當(dāng)?shù)罐D(zhuǎn)沒有被設(shè)置時(shí)(IV=0),那么模式匹配只在數(shù)據(jù)匹配(例如,PM DATA被在所接收幀中找到)發(fā)生時(shí)發(fā)生。當(dāng)?shù)罐D(zhuǎn)被設(shè)置(IV=1)時(shí),模式匹配只在數(shù)據(jù)匹配不發(fā)生(例如,PM DATA沒有在所接收幀中找到)時(shí)發(fā)生。
PMAC域基于模式匹配控制幀的濾波。PMAC存儲(chǔ)兩個(gè)位,它們指示(i)對(duì)相應(yīng)模式的模式匹配是否被啟用,以及(ii)如果模式匹配被啟用用于相應(yīng)的模式,那么模式匹配一旦結(jié)束時(shí)的效果。例如,如果PMAC域?yàn)?0,那么對(duì)具體條目的模式匹配被禁止,沒有模式匹配發(fā)生在相應(yīng)模式,并且模式匹配邏輯232自由移到下一個(gè)PM寄存器233中的下一個(gè)模式。如果PMAC域不是00,那么模式匹配被啟用。如果PMAC域是11,那么幀基于模式匹配被拒絕。如果PMAC域?yàn)?0,那么幀或者在連續(xù)搜索被禁止(CSE=0)時(shí)被絕對(duì)接受,或者在連續(xù)搜索被啟用(CSE=1)時(shí)被有條件地接受。如果PMAC域?yàn)?1,那么幀既不被接受也不被拒絕。在這種情況下,模式不是在匹配發(fā)生時(shí)用于接受或拒絕幀的標(biāo)準(zhǔn),并且信息被收集用于有關(guān)模式匹配結(jié)果的后處理,但是基于所收集的信息沒有作出決定要接受還是拒絕幀。后處理可以包括基于先前模式或基于目的地地址識(shí)別對(duì)被接受的幀進(jìn)行濾波或提取數(shù)據(jù),或者可以包括其它分類功能。幀可以在后來被通過散列處理、其它模式匹配處理等被接受。
現(xiàn)在再次參照?qǐng)D2,DMA 210包括接收緩存211、提取引擎212、模式屬性寄存器213、換成描述符和濾波處理器(BDFP)214、狀態(tài)寄存器215和緩存描述符地址寄存器216。這里討論的邏輯塊是實(shí)例性的,不同的實(shí)施例可以具有不同的邏輯功能劃分。例如,在一個(gè)實(shí)施例中,DMA 210可以被看作包括用于進(jìn)行提取、換成描述符處理和濾波處理的存儲(chǔ)器控制器。
接收緩存211被耦合用于從接收FIFO 220接收消息。狀態(tài)寄存器215被耦合用于從接收FIFO 220接收模式狀態(tài)(PS)。模式狀態(tài)包括模式數(shù)量(例如,PM寄存器數(shù)量)和相應(yīng)的模式命中指示。FIFO控制器222被耦合到DMA 210用于控制這種信息的傳遞。接收緩存211被耦合用于經(jīng)由連接172將幀數(shù)據(jù)提供到總線接口單元170。
提取引擎212被耦合用于將提取控制信息提供到接收緩存211,以指示哪個(gè)幀信息將被提取用于繼續(xù)送到高速緩存120。提取引擎212被耦合用于經(jīng)由連接172將有關(guān)被提取信息的屬性提供給總線接口單元170。例如,提取引擎212指示由接收FIFO發(fā)送到存儲(chǔ)器或高速緩存的數(shù)據(jù)是否被提取或正常,或者其是否將被存儲(chǔ)在存儲(chǔ)器130中或者既被存儲(chǔ)在存儲(chǔ)器130中又被收藏在高速緩存120和與數(shù)據(jù)相關(guān)聯(lián)的任何優(yōu)先級(jí)信息中。狀態(tài)寄存器215將模式狀態(tài)信息提供給提取引擎212以指示幀數(shù)據(jù)是否應(yīng)該被提取。提取引擎212還被耦合用于從模式屬性寄存器213接收提取控制信息。例如,模式屬性寄存器213將提取索引和提取長度提供到提取引擎212(下面討論)。
模式屬性寄存器213被耦合用于將指示在哪個(gè)緩沖隊(duì)列中提交幀數(shù)據(jù)(PMF)的提交信息提供給緩存描述符地址寄存器216。狀態(tài)寄存器215被耦合用于將例如實(shí)際模式匹配的指示的模式匹配信息提供給BDFP 214。緩存描述符地址寄存器216被耦合用于將用于每一個(gè)緩存描述符隊(duì)列(BDQ 410、420、430和440)和每一個(gè)隊(duì)列指針(BDQ_BASE、BDQ_CURRENT和BDQ_NEXT)以及缺省隊(duì)列的基址提供給BDFP 214。BDFP 214被耦合用于經(jīng)由連接172將地址和數(shù)據(jù)信息提供給總線接口單元170。
模式屬性寄存器被用戶來寫用于指定在匹配發(fā)生時(shí)的行動(dòng),向哪里提供幀信息,何時(shí)提取幀信息以及如何存儲(chǔ)接收幀和它們的相關(guān)聯(lián)的緩存描述符。在當(dāng)前討論的實(shí)施例中,一共16個(gè)寄存器或條目被支持。一個(gè)這樣的寄存器(或可替換寄存器)可以被指定為缺省寄存器,并且包括用于指定在沒有模式匹配發(fā)生時(shí)的行動(dòng)的信息?,F(xiàn)在參照?qǐng)D5,每一個(gè)條目包括提取高速緩存(例如,L2高速緩存)寫類型(ELCWT)、緩存描述符高速緩存寫類型(BDLWT)、隊(duì)列分類(QC)、模式匹配文件(PMF)、模式匹配提取(PME)、提取索引(EI)和提取長度(EL)。其它位域可以被包括用于啟用或支持任意數(shù)量的其它功能。例如,數(shù)據(jù)探查位可以被包括用于支持所接收幀對(duì)存儲(chǔ)器的探查或者所接收緩存數(shù)據(jù)存儲(chǔ)器訪問的探查。在這種情況下,當(dāng)有到存儲(chǔ)器的訪問時(shí),高速緩存可以探查到存儲(chǔ)器的讀或?qū)懺L問,使得高速緩存可以檢測地址然后采取適當(dāng)?shù)男袆?dòng),例如無效存儲(chǔ)在高速緩存中的數(shù)據(jù)副本,更新來自存儲(chǔ)器的高速緩存數(shù)據(jù),或者與將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中幾乎并行地將數(shù)據(jù)存儲(chǔ)在高速緩存中。模式屬性寄存器是用于所討論信息內(nèi)容的實(shí)例性存儲(chǔ)位置。其它實(shí)施例可以包括用于存儲(chǔ)這種信息內(nèi)容的其它配置,包括其它位配置、分布式寄存器位置等等。
提取高速緩存寫類型(ELCWT)域指定用于對(duì)提取數(shù)據(jù)進(jìn)行的寫交易類型。提取寫交易在模式匹配提取(PME)域被設(shè)置、相應(yīng)模式匹配發(fā)生并且提取長度(EL)域?yàn)榉橇銜r(shí)發(fā)生。在一個(gè)實(shí)施例中,如果ELCWT為00,那么沒有分配被進(jìn)行;如果ELCWT為01,那么沒有提取發(fā)生;如果ELCWT為10,那么高速緩存線被分配;如果ELCWT為11,那么高速緩存線被分配并被鎖定。在連接模式配置的情況下,所使用的ELCWT來自最下面數(shù)字的模式屬性寄存器。到高速緩存的寫被通過探查(snoop)進(jìn)行。
緩存描述符高速緩存寫類型(BDLWT)域指定用于對(duì)接收幀的緩存描述符進(jìn)行的寫交易類型。這在模式匹配發(fā)生時(shí)發(fā)生,而與PMF或PME的值無關(guān)。到高速緩存的寫通過探查進(jìn)行。在一個(gè)實(shí)施例中,如果BDLWT為00,那么沒有分配被進(jìn)行;如果BDLWT為10,那么高速緩存線被分配;如果BDLWT為11,那么高速緩存線被分配并被鎖定。
模式匹配提取(PME)域指示基于模式匹配的提取是否被啟用。如果模式匹配提取位被設(shè)置(PME=1),提取被啟用。如果模式匹配提取位沒有被設(shè)置(PME=0),那么提取被禁止。
隊(duì)列分類(QC)指定如果PMF域被設(shè)置并且相應(yīng)模式匹配發(fā)生時(shí)在其中提交進(jìn)入幀的接收隊(duì)列分類。在連接模式配置的情況下,所使用的QC來自前4字節(jié)模式。如果QC為00,那么隊(duì)列#0被使用,并且在由BDQ0_BASE所指地址開始的緩存描述符被使用。如果QC為01,那么隊(duì)列#1被使用,并且在由BDQ1_BASE所指地址開始的緩存描述符被使用。如果QC為10,那么隊(duì)列#2被使用,并且在由BDQ2_BASE所指地址開始的緩存描述符被使用。如果QC為11,那么隊(duì)列#3被使用,并且在由BDQ3_BASE所指地址開始的緩存描述符被使用。
模式匹配文件(PMF)指示QC域是否被用于幀在何處被提交到存儲(chǔ)器130中。例如,如果PMF=0并且匹配發(fā)生,那么缺省屬性寄存器中的QC域被用于確定幀在何處被提交。如果PMF=1并且匹配發(fā)生,那么與匹配模式相應(yīng)的寄存器中的QC域被用于確定幀在何處被提交。
模式屬性寄存器213還由用戶來寫以指定如果模式匹配發(fā)生并且寄存器213中的模式匹配提取(PME)位被設(shè)置時(shí)將被使用的提取索引和提取長度。提取索引(EI)指向接收幀內(nèi)的第一字節(jié),從其開始提取數(shù)據(jù)。DMA控制器210在模式匹配提取域(PME=1)被設(shè)置并且相應(yīng)模式匹配發(fā)生時(shí)使用該域來進(jìn)行提取。在連接模式配置(CP=1)的情況下,所使用的EI來自最下面數(shù)字的寄存器(例如,在連接鏈中的第一個(gè)寄存器)。提取長度(EL)域指定要從所接收幀提取的字節(jié)數(shù)量。DMA控制器210在模式匹配提取域(PME=1)被設(shè)置用于相應(yīng)模式匹配時(shí)使用該域來進(jìn)行提取。在連接模式配置的情況下,來自最下面數(shù)字模式屬性寄存器的EL被使用。如果EL為零,那么沒有提取發(fā)生。
圖4是圖示多個(gè)實(shí)例性緩存描述符隊(duì)列BDQ0、BDQ1、BDQ2到BDQM的框圖。每一個(gè)緩存描述符隊(duì)列包括幾個(gè)緩存描述符,例如對(duì)BDQ0示出的存儲(chǔ)位置BD0 412、BD1 414、BD2 416到BDN 418。每一個(gè)緩存描述符隊(duì)列具有環(huán)結(jié)構(gòu),并且經(jīng)由三個(gè)指針被訪問BDQ_BASE、BDQ_CURRENT和BDQ_NEXT。每一個(gè)緩存描述符存儲(chǔ)位置存儲(chǔ)與存儲(chǔ)在存儲(chǔ)器130中和/或高速緩存120中的所接收幀信息有關(guān)的信息。例如,這種信息包括狀態(tài)和控制452、數(shù)據(jù)長度454、數(shù)據(jù)緩存指針456、模式匹配狀態(tài)458、相對(duì)提取索引460、提取長度462和字節(jié)計(jì)數(shù)464。每一個(gè)緩存描述符隊(duì)列可以表示相應(yīng)幀的不同優(yōu)先級(jí)。如圖1所示,緩存描述符隊(duì)列被存儲(chǔ)在存儲(chǔ)器130中,并且有時(shí)如果BDLWT被適當(dāng)設(shè)置也被存儲(chǔ)在高速緩存120中。緩存描述符隊(duì)列可以在幀數(shù)據(jù)的相應(yīng)提取發(fā)生的情況下或者不在此情況下被存儲(chǔ)。
圖6是圖示系統(tǒng)100的實(shí)例性操作流的流程圖。一旦幀在操作610被接收,ADF 230在決定620確定幀是否應(yīng)該被接受。用于接受幀的過程在這里參照至少圖7到9被進(jìn)一步討論。如果在決定620幀沒有被接受,那么ADF 230在操作610等待其它幀。如果在決定620幀被接受,那么在操作630幀和模式狀態(tài)被從臨時(shí)隊(duì)列234提供到接受FIFO 220。在幀和模式狀態(tài)被傳遞到接受FIFO 220之后,在操作640模式狀態(tài)和幀數(shù)據(jù)被提供到DMA 210。一旦模式已經(jīng)被向前傳遞到DMA 210,在操作650,DMA 210可以將幀數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中。此外,在操作650,與模式匹配寄存器233中的啟用模式匹配的任何數(shù)據(jù)都被提取并被收藏在高速緩存120中。用于存儲(chǔ)幀數(shù)據(jù)和收藏提取幀數(shù)據(jù)的過程在這里參照至少圖10和11被進(jìn)一步討論。
圖3圖示了具有在接收幀操作610可被地址/數(shù)據(jù)濾波器230接收的幀的實(shí)例性消息包。圖示的格式與以太網(wǎng)/IEEE 802.3標(biāo)準(zhǔn)消息兼容。消息300包括前置碼、開始幀定界符(SFD)和幀。前置碼和開始幀定界符提供設(shè)置信息以幫助系統(tǒng)接收和處理幀。前置碼是用于接收機(jī)時(shí)序同步的1和0交替的7字節(jié)域。例如,每一個(gè)字節(jié)含有值0x55。開始幀定界符指示幀的開始。開始幀定界符的實(shí)例值是0xD5序列(10101011二進(jìn)制,因?yàn)槲恍蚴亲畈恢匾奈婚_始)。圖示幀具有從64到1518字節(jié)的長度,并包括6字節(jié)目的地地址(DA)、6字節(jié)源地址、2字節(jié)類型/長度域、46到1500字節(jié)邏輯鏈路控制(LLC)幀和4字節(jié)幀檢查序列。
幀的目的地地址包括3字節(jié)出售商域和3字節(jié)用戶值。用戶值的第一位將地址標(biāo)識(shí)為單獨(dú)地址(0)或組地址(1)。第二位指示地址是否被局域界定(1)或全球界定(0)。如圖示的,源和目的地地址包括48比特。其它實(shí)施例可以使用不同的地址長度,例如在IEEE802.3規(guī)格更早版本中的16比特地址。
類型/長度域?qū)?yīng)于以太網(wǎng)類型域和/或IEEE 802.3長度域。類型域表示在幀其余部分中使用的協(xié)議(例如TCP/IP)。長度域指定幀的數(shù)據(jù)部分的長度。一般地,長度域與以太網(wǎng)中使用的任何類型域都不同,以便于在相同網(wǎng)絡(luò)上以太網(wǎng)和IEEE 802.3幀兩者的使用。類型域由等于或大于1536(0x0600)但小于65535(0xFFFF)的十進(jìn)制數(shù)標(biāo)識(shí)。如果數(shù)在0和1,500(0x0000到0x05DC)之間,那么該域指示MAC客戶數(shù)據(jù)的長度。在圖示實(shí)施例中,從1,501到1,536(0x5DD到0x5ff)的范圍是不明確的。
邏輯鏈路控制(LLC)負(fù)責(zé)向例如FDDI、以太網(wǎng)、令牌環(huán)等的網(wǎng)絡(luò)層提供服務(wù)而與介質(zhì)類型無關(guān)。LLC層理由LLC協(xié)議數(shù)據(jù)單元(PDU)以在介質(zhì)訪問控制(MAC)層域協(xié)議堆棧的上面層之間通信。三個(gè)變量確定經(jīng)由LLC-PDU到上面層中的訪問。變量包括目的地服務(wù)訪問點(diǎn)(DSAP)、源服務(wù)訪問點(diǎn)(SSAP)和控制變量。DSAP地址指定為上面層提供協(xié)議信息的站內(nèi)的唯一標(biāo)識(shí)符。SSAP為源地址提供相同的信息。
LLC幀包括前置碼和信息域。前置碼包括DSAP域、SSAP域和控制域。信息域包括數(shù)據(jù)和可選填充。填充一般只在輸入小于46八位字節(jié)/字節(jié)時(shí)需要用于確保如在IEEE 802.3標(biāo)準(zhǔn)中指定的64個(gè)八位字節(jié)的最小幀大小。在802.3x中,數(shù)據(jù)域的第一個(gè)兩個(gè)八位字節(jié)被用作操作碼(OP)(中止=0x0001),并且第二個(gè)兩個(gè)八位字節(jié)被用于傳送中止時(shí)間(PT)參數(shù)(中止時(shí)間=0x0000用于開通以及0xFFFF用于截止)。此外,第三個(gè)八位字節(jié)域可以被用于擴(kuò)展的中止控制參數(shù)(PTE)。取代LLC,以太網(wǎng)幀可以使用具有類似域的不同協(xié)議。因?yàn)檫@些域的使用隨著所用協(xié)議的變化而變化,所以檢查它們并匯報(bào)它們內(nèi)容的能力可以顯著加快以太網(wǎng)幀處理,并且這種能力可以通過使用模式匹配被增強(qiáng)。
幀檢查序列(FCS)指定通過對(duì)除前置碼、SFD和CRC之外的所有域使用標(biāo)準(zhǔn)CCITT-CRC多項(xiàng)式而得到的標(biāo)準(zhǔn)32位循環(huán)冗余檢查。
圖7和8是圖示使用模式匹配的消息散列濾波的方法的流程圖?,F(xiàn)在參照?qǐng)D7,在操作610,在進(jìn)入幀在臨時(shí)隊(duì)列234處被接收之后,模式匹配邏輯232訪問PM寄存器233并順序選擇各種條目以確定存儲(chǔ)在PM寄存器233中的模式是否被包含在臨時(shí)隊(duì)列234中的幀信息中。
例如,ADF 230檢查包括用于確定模式匹配是否被啟用的模式匹配啟用位(PMEN)的ADF全球控制寄存器。如果模式匹配沒有被啟用(PMEN=0),那么過程進(jìn)行到組地址決定715。如果模式匹配被啟用(PMEN為非零),那么模式匹配過程710被啟動(dòng)。如果模式匹配過程710導(dǎo)致幀被接受或拒絕(如下面參照?qǐng)D9進(jìn)一步詳細(xì)描述的),那么過程從塊710經(jīng)過圖示“接受”或“拒絕”流程節(jié)點(diǎn)中單獨(dú)的一個(gè)到達(dá)圖8中接受幀操作860或拒絕幀操作870中單獨(dú)的一個(gè)。如果模式匹配過程710沒有導(dǎo)致作出幀接受或拒絕決定,那么流程從模式匹配過程710經(jīng)過圖示的“沒有檢測到?jīng)Q定/模式匹配”節(jié)點(diǎn)到達(dá)前面提到的組地址決定715。
在組地址決定715,接收部分180確定所接收幀中的地址是否是組地址。在當(dāng)前討論的實(shí)施例中,幀的用戶值的第一位將地址標(biāo)識(shí)為單獨(dú)地址(0)或組地址(1)。如果地址不是組地址,流程進(jìn)行到站地址決定720。如果地址是組地址,流程進(jìn)行到廣播地址決定725。
在站地址決定720,接收部分180通過進(jìn)行與幀數(shù)據(jù)的精確48比特比較來確定所接收幀中的地址是否是站地址。如果地址被確定為是站地址,那么流程從塊720經(jīng)過圖示的“接受”流程點(diǎn)進(jìn)行到圖8中的接受幀操作860,并且?guī)诮邮軒僮?06被接受。如果地址沒有被確定為是站地址,那么流程進(jìn)行到散列命中決定740。
在廣播決定725,接收部分180確定在所接收幀中的地址是否是廣播地址。實(shí)例性廣播地址是地址0XFFFFFF-FFFFFF。如果地址被確定為是廣播地址,那么流程進(jìn)行到廣播啟用的決定730。如果地址沒有被確定為是廣播地址,那么流程進(jìn)行到前面提到的散列命中決定740。
在廣播啟用的決定730,接收部分180確定廣播功能是否被啟用。當(dāng)ADF全球控制寄存器位BC_REJ被設(shè)置時(shí),廣播功能被啟用。如果廣播功能被啟用,那么流程從塊730經(jīng)過圖示的“接受”流程節(jié)點(diǎn)到達(dá)圖8中的接受幀操作860,并且在接受幀操作860幀被接受。如果廣播功能沒有被啟用,那么流程進(jìn)行到混雜(promiscuous)模式?jīng)Q定735。
在混雜模式?jīng)Q定735,接收部分180確定混雜模式是否被啟用。當(dāng)ADF全球控制寄存器混雜位被設(shè)置(PROM=1)時(shí),混雜模式被啟用。當(dāng)接收部分處于混雜模式時(shí),還沒有通過模式匹配被拒絕的所有幀被接受。一般地,混雜模式被用于檢測并且很少使用。如果混雜模式被啟用,那么流程從塊735經(jīng)過圖示的“接受”流程節(jié)點(diǎn)到達(dá)圖8的接受幀操作860,并且在接受幀操作860幀被接受。如果混雜模式被禁止,那么流程從塊735經(jīng)過圖示的“拒絕”流程節(jié)點(diǎn)到達(dá)圖8的拒絕幀操作870,并且在拒絕幀操作870幀被拒絕。
因?yàn)槟J狡ヅ淇梢栽诨祀s模式?jīng)Q定735之前或者與其并行在操作710(或者在混雜模式?jīng)Q定735的接受結(jié)果之前)進(jìn)行,可區(qū)別混雜模式可以被使用,其中除了含有導(dǎo)致幀拒絕的模式的一個(gè)或多個(gè)特定幀之外的來自所有地址的幀都被接受。例如,特定地址可以通過模式匹配被拒絕而同時(shí)所有其它地址被接受。
在散列命中決定740,接收部分180確定在幀確定地址上的散列命中是否已經(jīng)發(fā)生。48比特確定地址通過使用32比特循環(huán)冗余檢查(CRC)校驗(yàn)和的一部分而被映射成256個(gè)箱(在其它實(shí)施例中或者更多)中的一個(gè)。參見例如圖12,其圖示了已經(jīng)產(chǎn)生的用于大量相應(yīng)地址1222的大量CRC 1224。行1201到1210中每一行的每一個(gè)十六進(jìn)制CRC 1224對(duì)應(yīng)于相同行的6字節(jié)十六進(jìn)制目的地地址。
在系統(tǒng)100的設(shè)置過程中,CRC校驗(yàn)和的位被用于索引到散列表。在一個(gè)實(shí)施例中,8個(gè)比特被用于索引256箱(bin)表。8比特域的較高級(jí)的3個(gè)位被用于選擇在單獨(dú)散列表和/或組散列表中8個(gè)散列桶寄存器。較高級(jí)的5比特域選擇被選32比特寄存器內(nèi)的位。當(dāng)控制器接收幀時(shí),相同的校驗(yàn)和被使用。如果進(jìn)入地址的CRC校驗(yàn)和選擇設(shè)置在組/單獨(dú)散列表中的位,那么散列命中已經(jīng)發(fā)生。否則,沒有散列命中發(fā)生。
在圖示實(shí)施例中,CRC的前8比特選擇散列表中的位。行1201到1203和1206中的地址將被系統(tǒng)接收,并且因此已經(jīng)被用于設(shè)置散列表。在行1201,十六進(jìn)制值0x04映射到散列桶(bucket)箱4。在行1202,十六進(jìn)制值0x0F映射到散列桶箱15。在行1203,十六進(jìn)制值0x15映射到散列桶箱21。在行1206,十六進(jìn)制值0xCB映射到散列桶箱203。這樣,具有選擇桶箱4、15、21和203任何一個(gè)的CRC的地址在這種地址被接收時(shí)將是散列命中的。
散列表的有效性可以隨著地址數(shù)量的增加而下降。例如,當(dāng)存儲(chǔ)在256箱散列表中的地址數(shù)量增加時(shí),散列表位中的絕大部分被設(shè)置,從而防止極小一部分不想要的幀到達(dá)存儲(chǔ)器。散列濾波的一個(gè)優(yōu)點(diǎn)是散列的速度不依賴于目的地地址列表中地址的數(shù)量。還應(yīng)該注意,沒有模式匹配而只是散列的協(xié)議不能被用于拒絕匹配一組所選地址的幀,因?yàn)椴幌胍牡刂房梢杂成涞缴⒘斜碇袑?dǎo)致應(yīng)該被接收幀的拒絕的相同位。因此,散列濾波本身導(dǎo)致不完美的濾波,需要對(duì)到達(dá)存儲(chǔ)器的幀的后濾波。這可以通過下面參照?qǐng)D12所示被接收目的地地址的實(shí)例來說明。
在散列命中決定740,用于每一個(gè)所接收地址的CRC被用于選擇散列桶箱。如果所選箱指示命中,那么散列命中已經(jīng)發(fā)生。例如,當(dāng)?shù)刂?201到1203和1206到1210中任何一個(gè)被接收時(shí),箱4、15、21和203中一個(gè)被選擇,并且散列命中已經(jīng)發(fā)生。相應(yīng)地,當(dāng)?shù)刂?204或地址1205被接收時(shí),箱4、15、21和203中沒有一個(gè)被選擇,并且散列命中沒有發(fā)生。當(dāng)散列命中還未發(fā)生時(shí),幀典型地被拒絕。在這種方式下,地址1204和1205可能被拒絕。但是,圖12的地址1207到1210產(chǎn)生散列命中,但是不是想要被系統(tǒng)100接收并接受的地址。因此,濾波的其它方式必須被使用。
系統(tǒng)100使用模式匹配來進(jìn)一步濾波進(jìn)入地址,使得對(duì)處理器/基于軟件的后濾波的需要被最小化或者甚至被消除。例如,模式可以被存儲(chǔ)在PM寄存器中使得導(dǎo)致誤導(dǎo)散列命中的地址可能被拒絕。在圖示實(shí)施例中,地址在它們不是旨在用于具體出售商ID(目的地地址的前24比特)時(shí)可以被拒絕。0x0050FC04的模式已經(jīng)作為PM DATA與0XFFFFFF00的PM MASK一起存儲(chǔ)在PM寄存器中。在這種方式下,在其前24比特中不具有0x0050FC的每一個(gè)地址通過模式匹配被拒絕。在這種情況下,地址1207到1209被拒絕,但是1210沒有被拒絕因?yàn)槠涑鍪凵蘄D匹配期望的出售商ID。
進(jìn)一步的模式可以被存儲(chǔ)用于改進(jìn)過程。例如,使用2個(gè)模式,具有PM DATA 0x0050FC04和0xFFFFFFFF的PM MASK的一個(gè),以及具有0XFFFFFFFF-F的PM DATA 0x0050FC03-C的第二模式可以被使用。在這種方式下,為散列命中的但是在其前32比特不具有0x0050FC04和在其前36比特不具有0x0050FC03-C的每一個(gè)地址可以通過模式匹配和散列而被有效地忽略。在這種情況下,地址1207到1210由于模式匹配和散列而被有效地拒絕,并且只有希望的地址被系統(tǒng)100接受。
這樣,所接收地址1201到1210導(dǎo)致各種不同的結(jié)果。地址1204和1205導(dǎo)致散列失敗,因此不被接受。地址1201到1203和地址1206到1210導(dǎo)致散列命中。地址1201到1203由于第一模式在這里被找到所以導(dǎo)致散列命中和模式匹配。地址1201到1203因此被接受。地址1206由于第二模式在這里被找到所以導(dǎo)致散列命中和模式匹配。地址1206因此被接受。地址1207到1210,雖然導(dǎo)致散列命中,但是不會(huì)導(dǎo)致模式匹配,因?yàn)榈谝缓偷诙J經(jīng)]有在這里被找到。地址1207到1210因此不被接受。
一般而言,如果32個(gè)組地址被存儲(chǔ)在散列表中并且隨機(jī)組地址被接收,那么散列表防止很大百分比(例如,在一些情況下高達(dá)85%甚至更高)的組地址幀到達(dá)存儲(chǔ)器。在沒有當(dāng)前公開的模式匹配時(shí),在系統(tǒng)100上操作的軟件將不得不進(jìn)一步濾波(后濾波)到達(dá)存儲(chǔ)器130的那些以確定它們是否含有正確的地址。在前面的實(shí)例中,地址1207到1210將還需要包含后濾波的處理器110,而模式匹配誘發(fā)的拒絕情況不會(huì)被觸發(fā)。
現(xiàn)在參照?qǐng)D8,在模式匹配啟用決定845,接收部分180確定對(duì)于所選寄存器中所選模式PM DATA的模式匹配是否被啟用。如果模式匹配沒有被啟用(PMEN=0),那么流程進(jìn)行到散列/混雜決定855。如果模式匹配被啟用(PMEN=1),那么模式匹配過程850被啟動(dòng)。如果模式匹配過程850導(dǎo)致幀被接受或拒絕(如下面參照?qǐng)D9進(jìn)一步詳細(xì)描述的),那么流程從塊850經(jīng)過圖示的“接受”或“拒絕”流程節(jié)點(diǎn)中的單獨(dú)一個(gè)到達(dá)接受幀操作860或拒絕幀操作870中的單獨(dú)一個(gè)。如果在模式匹配過程850模式匹配發(fā)生但是沒有幀接受或拒絕決定被作出,或者如果沒有模式匹配發(fā)生,流程從模式匹配過程850經(jīng)過圖示的“沒有決定/沒有模式匹配被檢測到”節(jié)點(diǎn)到達(dá)模式匹配未被檢測到?jīng)Q定852。
現(xiàn)在參照當(dāng)前討論的圖示實(shí)施例中的模式匹配未被檢測到?jīng)Q定852,如果導(dǎo)致模式匹配的16個(gè)模式中任何一個(gè)都未被檢測到,那么流程從決定852經(jīng)過圖示的“拒絕”流程節(jié)點(diǎn)到達(dá)拒絕幀操作870。在其它實(shí)施例中,幀可以被保留以被處理器110進(jìn)一步濾波。在變化的實(shí)施例中,幀可以被給定比其模式被檢測的幀更低的優(yōu)先級(jí),使得處理器110在關(guān)注低確信幀(散列命中但是沒有模式匹配)之前先關(guān)注高確信幀(散列命中且模式匹配)。在另一個(gè)變化的實(shí)施例中,幀可以被存儲(chǔ)在與不同處理單元相對(duì)應(yīng)的不同隊(duì)列中。如果導(dǎo)致模式匹配的16個(gè)模式中至少一個(gè)被檢測到,那么流程從決定852經(jīng)過圖示的“沒有決定”流程節(jié)點(diǎn)到達(dá)前面提到的散列/混雜決定855。到此描述的圖7和8的單元對(duì)應(yīng)于介質(zhì)訪問控制功能。
在散列/混雜決定855,無論在已經(jīng)有模式匹配但是沒有決定(例如,沒有接受和沒有拒絕)時(shí),或者在還沒有模式匹配時(shí),數(shù)據(jù)鏈路功能都被實(shí)現(xiàn)。接收部分180(例如,ADF 230中的狀態(tài)機(jī))確定極好散列命中是否已經(jīng)發(fā)生和/或混雜模式是否已被啟用。極好散列命中在唯一地只對(duì)應(yīng)一個(gè)地址的散列命中和模式匹配都發(fā)生時(shí)發(fā)生。對(duì)比而言,高確信散列命中在對(duì)應(yīng)于少量地址但多于一個(gè)地址的散列命中和模式匹配發(fā)生時(shí)發(fā)生。高確信散列命中由于使用了增強(qiáng)高確信地址實(shí)際上為所尋找地址的可能性的模式匹配,所以提供比傳統(tǒng)地址濾波增強(qiáng)的性能。使用系統(tǒng)和/或網(wǎng)絡(luò)特性對(duì)模式的謹(jǐn)慎選擇可以使散列命中為極好的可能性更高。如果極好散列命中已經(jīng)發(fā)生或者混雜模式已經(jīng)被啟用,那么在幀接受操作860,所接收幀被接受。如果極好散列命中沒有發(fā)生而且混雜模式也沒有被啟用,那么流程進(jìn)行到完全地址匹配決定865。
在完全地址匹配決定855,處理器110確定完全地址匹配是否已經(jīng)發(fā)生。系統(tǒng)100進(jìn)行地址與系統(tǒng)100已知地址的直接比較。系統(tǒng)100可以將所接收地址存儲(chǔ)在優(yōu)先級(jí)隊(duì)列中,使得具有較高預(yù)測接受可能性的地址(高確信幀)在具有較低預(yù)測接受可能性的地址(低確信地址)之前被處理。這種完全且直接的比較就系統(tǒng)100的處理資源來說是很昂貴的。因此,這里描述的模式匹配和散列試圖避免這種昂貴的直接地址比較。在這種方式下,系統(tǒng)100可以使用盡可能沒有直接地址比較的模式匹配來增強(qiáng)系統(tǒng)性能,并且完全地址匹配是最后的方法。如果有完全地址匹配,那么在幀接受操作860,所接收幀被接受。如果沒有完全地址匹配,那么在幀拒絕操作870,接收幀被拒絕。
圖9是圖示用于匹配由系統(tǒng)100所接收的消息地址的方法的流程圖。幀可以取決于模式匹配是否發(fā)生而被接受或拒絕。消息幀的任何部分可以被檢查包括IP地址的匹配。除非最終處置(接受或拒絕)在一個(gè)模式匹配被嘗試之前已經(jīng)由于另一個(gè)模式匹配的發(fā)生而被決定,否則當(dāng)模式匹配被啟用(PMEN=1)時(shí),對(duì)于相應(yīng)模式匹配接受器指示符允許(例如,PMAC=1)的每一個(gè)模式,圖9的操作被執(zhí)行。如果模式數(shù)據(jù)設(shè)置被啟用,那么消息數(shù)據(jù)被檢查模式匹配。如果模式匹配數(shù)據(jù)沒有被啟用,或者如果模式匹配沒有被找到,那么下一個(gè)模式被選擇并且過程被重復(fù)。如果連續(xù)搜索被啟用,那么搜索繼續(xù)對(duì)下一個(gè)模式進(jìn)行而與匹配無關(guān)。
參照接收操作935,進(jìn)入幀的字節(jié)被接收到臨時(shí)隊(duì)列234中用于臨時(shí)存儲(chǔ),直到關(guān)于接受或拒絕進(jìn)入幀的決定被作出。進(jìn)入幀的字節(jié)還被提供給模式匹配邏輯232和地址識(shí)別和散列邏輯238,使得這種決定可以在字節(jié)正被臨時(shí)隊(duì)列234接收的同時(shí)被作出。在字節(jié)已經(jīng)在接收操作935被接收之后,流程前進(jìn)到模式匹配確定操作905。
參照模式匹配確定操作905,模式匹配邏輯232確定存儲(chǔ)在PM寄存器233中的模式匹配數(shù)據(jù)是否匹配所接收幀中的數(shù)據(jù)。例如,模式匹配邏輯將PM寄存器233的第一個(gè)中的PM DATA與進(jìn)入幀數(shù)據(jù)在其被存儲(chǔ)在臨時(shí)隊(duì)列234中時(shí)進(jìn)行比較。臨時(shí)隊(duì)列234被用于存儲(chǔ)幀直到?jīng)Q定被作出。例如,如果PM DATA(多達(dá)4個(gè)字節(jié))中每一位匹配根據(jù)消息索引MI定位的消息數(shù)據(jù)的每一位,那么模式匹配發(fā)生。匹配可能發(fā)生到深入幀高達(dá)256字節(jié)并且具有最大256字節(jié)的偏移。PM DATA中某些可以被相應(yīng)的PM MASK屏蔽。例如,PM DATA的每一位在相應(yīng)的PM MASK位被清除時(shí)不能被檢查匹配。如果先前模式的連接模式(CP)域被設(shè)置,那么只當(dāng)PM DATA域(當(dāng)前PMDATA和先前PM寄存器的PM DATA)在幀中被找到時(shí)匹配才發(fā)生。PMAC域確定相應(yīng)的PM DATA是否被啟用,并且如果其被啟用,那么一旦匹配一系列行動(dòng)即進(jìn)行。操作905可以與操作935并行完成。
參照模式匹配決定905,如果模式匹配被禁止(例如,PMAC=00),那么流程前進(jìn)到幀結(jié)尾(EOF)或者隊(duì)列已滿決定930。如果在模式匹配確定操作,905模式匹配沒有被找到,那么流程也前進(jìn)到EOF或隊(duì)列已滿決定930。如果在決定910,有模式匹配且模式匹配沒有被禁止(例如,PMAC≠00),那么流程前進(jìn)到接受幀決定915。
參照EOF/隊(duì)列已滿決定930,如果臨時(shí)隊(duì)列234沒有滿并且?guī)Y(jié)尾還沒有被接收(并且?guī)€沒有被拒絕),那么在接收操作935額外的字節(jié)繼續(xù)被接收到臨時(shí)隊(duì)列234中,并且流程前進(jìn)到模式匹配確定操作905以啟動(dòng)對(duì)額外接收的幀信息的模式匹配。如果幀結(jié)尾已經(jīng)被接收或者臨時(shí)隊(duì)列234已滿,那么流程前進(jìn)到拒絕所有節(jié)點(diǎn)決定940。
參照拒絕所有節(jié)點(diǎn)決定940,如果ADF 230被確定在拒絕所有節(jié)點(diǎn),那么幀被拒絕并且操作流程取決于哪個(gè)相應(yīng)流程啟動(dòng)了圖9圖示的模式匹配流程而如圖7或8圖示那樣繼續(xù)。如果ADF 230不在拒絕所有節(jié)點(diǎn),那么沒有關(guān)于幀的決定被作出,并且流程取決于哪個(gè)流程啟動(dòng)了圖9圖示的模式匹配而如圖7或8圖示那樣繼續(xù)。
參照接受幀決定915,如果ADF 230正在接受用于模式的幀(例如,對(duì)于具體PM DATA,PMAC=10),那么幀被有條件地接受,并且流程前進(jìn)到連續(xù)搜索決定945。如果ADF 230現(xiàn)在沒有接受用于模式的幀(例如,對(duì)于具體PM DATA,PMAC≠10),那么流程前進(jìn)到拒絕幀據(jù)的920。
參照拒絕幀決定920,如果ADF 230正在拒絕用于模式的幀(例如,對(duì)于具體PM DATA,PMAC=11),那么進(jìn)入幀被拒絕,因?yàn)槠浜信c拒絕PMAC值相關(guān)聯(lián)的PM DATA(或者,導(dǎo)致考慮例如PM MASK、CP等的其它因素而導(dǎo)致匹配)。然后,流程取決于哪個(gè)流程啟動(dòng)了圖9圖示的模式匹配而如圖7或8圖示那樣繼續(xù)。如果ADF230現(xiàn)在沒有拒絕用于模式的幀(例如,對(duì)于具體PM DATA,PMAC≠11),那么流程前進(jìn)到連續(xù)搜索決定925。
參照連續(xù)搜索決定925,如果對(duì)模式的連續(xù)搜索被啟用(例如,CSE=1),那么流程前進(jìn)到EOF或隊(duì)列已滿決定930。如果在連續(xù)搜索決定925,連續(xù)搜索沒有被啟用(例如,CSE=0),那么沒有關(guān)于前述模式匹配的決定被作出,并且流程前進(jìn)到拒絕所有節(jié)點(diǎn)決定940。
參照連續(xù)搜索決定945,如果對(duì)模式的連續(xù)搜索被啟用(例如,CSE=1),那么流程前進(jìn)到EOF或隊(duì)列已滿決定950。如果在連續(xù)搜索決定945,連續(xù)搜索沒有被啟用(例如,CSE=0),那么進(jìn)入幀被接受。幀被接受,因?yàn)槠浜蠵M DATA(或者考慮例如PM MASK、CP等其它因素導(dǎo)致匹配)并且模式匹配被啟用(PMAC=10)而且沒有進(jìn)一步的搜索需要來完成(CSE=0)。然后流程取決于哪個(gè)流程啟動(dòng)了圖9圖示的模式匹配來如圖7或8圖示那樣繼續(xù)。
參照EOF/隊(duì)列已滿決定950,如果幀結(jié)尾已經(jīng)被接收或者臨時(shí)隊(duì)列234已滿,那么進(jìn)入幀被接受。幀被接受因?yàn)槟J狡ヅ湟呀?jīng)發(fā)生,模式匹配被啟用(PMAC=0)并且?guī)Y(jié)尾已經(jīng)到達(dá)或者臨時(shí)隊(duì)列已滿所以進(jìn)一步的模式匹配已不可能。然后流程取決于哪個(gè)流程啟動(dòng)了圖9圖示的模式匹配來如圖7或8圖示那樣繼續(xù)。
如果在EOF/隊(duì)列已滿決定950,臨時(shí)隊(duì)列234未滿并且?guī)Y(jié)尾還沒有被接收,那么在接收操作955額外的字節(jié)被接收到臨時(shí)隊(duì)列234中。并且流程前進(jìn)到模式匹配確定操作960以啟動(dòng)對(duì)額外的所接收幀信息對(duì)下一個(gè)模式(例如,在下一個(gè)順序的PM寄存器233中的PMDATA)的模式匹配。模式匹配確定操作960在功能上與前述的操作905類似。操作955可以與操作960并行完成。在模式匹配操作960后,流程前進(jìn)到模式匹配決定965。
參照模式匹配決定965,如果對(duì)于當(dāng)前所選模式(例如,當(dāng)前所選PM寄存器233中的PM DATA)的模式匹配被禁止(例如,PMAC=00),那么流程前進(jìn)到EOF/隊(duì)列已滿決定950。如果在模式匹配確定操作965模式匹配沒有被找到,那么流程也前進(jìn)到EOF/隊(duì)列已滿決定950。如果決定965有模式匹配并且模式匹配沒有被禁止(例如,PMAC≠00),那么流程前進(jìn)到不拒絕幀決定970。
參照不拒絕幀決定970,如果ADF 230對(duì)于下一個(gè)模式(例如,相應(yīng)的PM DATA)不拒絕幀(例如,PMAC=01或PMAC=10),那么流程前進(jìn)到EOF/隊(duì)列已滿決定950。否則,進(jìn)入幀被拒絕,因?yàn)榫芙^模式(PMAC=11)已經(jīng)被檢測到。然后流程取決于哪個(gè)流程啟動(dòng)了圖9圖示的模式匹配來如圖7或8圖示那樣繼續(xù)。
現(xiàn)在參照?qǐng)D10,是用于在圖1的系統(tǒng)內(nèi)處理被接受消息的方法。圖示實(shí)施例的一個(gè)優(yōu)點(diǎn)是對(duì)包內(nèi)重要數(shù)據(jù)的系統(tǒng)訪問可以通過在其被接收時(shí)對(duì)其進(jìn)行檢測而被增強(qiáng),而無需求助于更高級(jí)的資源并將其與描述符確信一起放到高速緩存中用于隨后更快的訪問。
圖示的流程在接收模式狀態(tài)操作1005中模式狀態(tài)已經(jīng)被提供給DMA 210并且被放到狀態(tài)寄存器215中時(shí)被啟動(dòng)。之后,一般,幀數(shù)據(jù)取決于模式狀態(tài)信息而被提交到存儲(chǔ)器130中和/或收藏在高速緩存120中。提交包括基于包簽名將包在存儲(chǔ)器中分組,提取包括定位包的特定部分(例如,通過使用提取索引和長度值),并且抽藏包括將所提取數(shù)據(jù)復(fù)制到處理器高速緩存空間中。提取可以分配并鎖定處理器高速緩存存儲(chǔ)器,但是軟件負(fù)責(zé)對(duì)在提取期間被DMA索引的高速緩存中的所有數(shù)據(jù)進(jìn)行解鎖。所提取數(shù)據(jù)不被從幀數(shù)據(jù)中移走;而是,所有幀數(shù)據(jù)被存儲(chǔ)在存儲(chǔ)器中,并且只有提取數(shù)據(jù)被復(fù)制到處理器高速緩存中。這種提交和收藏在下面進(jìn)一步詳細(xì)描述。
參照選擇緩存描述符操作1010,DMA 210的BDFP 214基于模式匹配屬性寄存器213中的模式狀態(tài)和隊(duì)列分類(QC)域來選擇緩存描述符。QC域確定將使用哪個(gè)緩存描述符隊(duì)列122/132。模式狀態(tài)包括到合適QC域的指針。在有模式匹配發(fā)生時(shí),模式狀態(tài)還指示哪個(gè)模式匹配已發(fā)生。如果模式匹配發(fā)生,那么所匹配的模式可以使數(shù)據(jù)被從幀中提取并作為提取數(shù)據(jù)124被收藏在高速緩存120中。這樣,除了緩存描述符132,緩存描述符隊(duì)列122也被選擇。如果沒有模式匹配發(fā)生,那么沒有提取將發(fā)生,從而導(dǎo)致只有緩存描述符隊(duì)列132被使用。在選擇緩存描述符操作1010之后,流程前進(jìn)到提取準(zhǔn)備操作1015。
在提取準(zhǔn)備操作1015,如果模式狀態(tài)指示模式匹配,那么提取引擎212從模式屬性寄存器213得到提取索引(EI)和提取長度(EL)。在提取準(zhǔn)備操作1015之后,流程前進(jìn)到BDQ可用決定1020。
參照BDQ可用決定1020,BDFP 214確定所選緩存描述符隊(duì)列(BDQ)是否可用。即,BDFP 214確定在所選BDQ中是否有空閑空間。如果所選BDQ可用,那么流程經(jīng)過流程節(jié)點(diǎn)“A”前進(jìn)到更新BDQ指針操作1030。如果所選BDQ不可用,那么流程前進(jìn)到?jīng)_洗操作1025,于是幀和狀態(tài)幀長度被從接收FIFO 220中沖洗掉,并且流程前進(jìn)到接收模式狀態(tài)操作1005。
參照更加BDQ指針操作1030,BDFP 214更新緩存描述符當(dāng)前指針(BDQ_CURRENT)以指向下一個(gè)緩存描述符隊(duì)列(BDQ_CURRENT=BDQ_NEXT)。在當(dāng)前BDQ指針被更新之后,流程前進(jìn)到BDQ為空決定1035。
參照BDQ為空決定1035,BDFP 214確定由BDQ_CURRENT指向的條目是否為空。如果當(dāng)前BDQ條目非空,那么在標(biāo)記不可用操作1040所選緩存描述符隊(duì)列被標(biāo)記為不可用,并且流程前進(jìn)到?jīng)_洗操作1025。如果當(dāng)前BDQ條目為空,那么流程前進(jìn)到傳送操作1045。
參照傳送操作1045,BDFP 214將幀數(shù)據(jù)從接收FIFO 220傳送到接收緩存211。傳送繼續(xù)直到幀結(jié)尾(EOF)被接收或者接收緩存211已滿。在幀數(shù)據(jù)被傳送之后,流程前進(jìn)到EOF決定1050。
參照EOF決定1050,如果在操作1045幀結(jié)尾沒有被接收,那么流程前進(jìn)到選擇性提取和收藏操作1060。如果在操作1045幀結(jié)尾被接收,那么流程前進(jìn)到獲得狀態(tài)幀長度操作1055,在1055提取引擎212從狀態(tài)寄存器215中得到狀態(tài)幀長度。在操作1055之后,流程前進(jìn)到選擇性提取和收藏操作1060。
在選擇性提取和收藏操作1060,數(shù)據(jù)被可控地從所接收幀中提取用于收藏在高速緩存120中。選擇性提取和收藏操作1060在下面參照?qǐng)D11更完整地描述。在選擇性提取和收藏操作1060之后,流程前進(jìn)到EOF決定1065。
參照EOF決定1065,如果在選擇性提取和收藏操作1060幀結(jié)尾被接收,流程前進(jìn)到EOF更新操作1080。如果在選擇性提取和收藏操作1060幀結(jié)尾沒有被接收,那么流程前進(jìn)到緩存結(jié)尾(EOB)決定1070。
參照EOF更新操作1080,BDFP 214更新當(dāng)前緩存描述符隊(duì)列中的狀態(tài)和控制信息。例如,BDFP 214將當(dāng)前BDQ 122中的提取發(fā)生位設(shè)置為指示所提取數(shù)據(jù)124已經(jīng)被存儲(chǔ)在高速緩存120中。下一個(gè)BDQ指針(BDQ_NEXT)被設(shè)置為指向所選BDQ中的下一個(gè)位置。當(dāng)前BDQ的內(nèi)容被根據(jù)BDLWT復(fù)制到高速緩存中。例如,如果模式匹配發(fā)生,并且如果BDLWT為00,那么沒有分配被進(jìn)行;如果BDLWT為10,那么高速緩存120行被分配;如果BDLWT為11,那么高速緩存120行被分配并被鎖定。在EOF更新操作1080之后,流程前進(jìn)到接收模式狀態(tài)1005,使得更多的數(shù)據(jù)可以根據(jù)下一個(gè)幀被處理。
參照EOB決定1070,如果在選擇性提取和收藏操作1060,存儲(chǔ)器130中數(shù)據(jù)緩存134的結(jié)尾被遇到,那么流程前進(jìn)到EOB更新操作1075。如果在選擇性提取和收藏操作1060,數(shù)據(jù)緩存的結(jié)尾沒有被遇到,那么流程前進(jìn)到如上所述的傳送操作1045。
參照EOB更新操作1075,BDFP 214更新當(dāng)前緩存描述符隊(duì)列的狀態(tài)和控制信息。例如,BDFP 214將當(dāng)前BDQ 122中的提取發(fā)生位設(shè)置為指示所提取數(shù)據(jù)124已經(jīng)被存儲(chǔ)在高速緩存120中。下一個(gè)BDQ指針(BDQ_NEXT)被設(shè)置為指向所選BDQ中的下一個(gè)位置。當(dāng)前BDQ的內(nèi)容被根據(jù)BDLWT復(fù)制到高速緩存中。在EOB更新操作1075之后,流程前進(jìn)到節(jié)點(diǎn)A,使得更多的數(shù)據(jù)可以根據(jù)相同的幀被處理。
圖11是圖示用于通過圖1的系統(tǒng)使用64字節(jié)緩存來提取和收藏消息一部分的方法的流程圖。圖11中圖示的方法由圖10的選擇性提取和抽藏操作1060調(diào)用。
參照?qǐng)D11,在提取已被請(qǐng)求決定1105,提取引擎212確定對(duì)于給定模式匹配提取是否已經(jīng)被請(qǐng)求。提取引擎212還檢查各種提取域,例如提取相加(EX_ADD)域和提取長度(EL)域。提取相加域等于提取長度加上相應(yīng)的提取索引(例如,EXADD=EL+EI[11∶15])。如果提取被請(qǐng)求(PME=1),提取相加值大于0,并且提取長度大于0,那么流程前進(jìn)到EI≤64決定1125。如果提取沒有被請(qǐng)求,提取相加值為0,或者提取長度為0,那么流程前進(jìn)到對(duì)準(zhǔn)決定1110。
參照對(duì)準(zhǔn)決定1110,如果目的地址不是64字節(jié)對(duì)準(zhǔn)的地址,流程前進(jìn)到發(fā)送MAX(32B)操作1120,在1120最大為32字節(jié)的正常數(shù)據(jù)被發(fā)送到存儲(chǔ)器130。MAX(32B)是高達(dá)并且包括32字節(jié)的字節(jié)數(shù)量(例如,其中x是字節(jié)數(shù)量,MAX(xB)≤x字節(jié))。如果目標(biāo)地址是64字節(jié)對(duì)準(zhǔn)地址,那么流程前進(jìn)到發(fā)送MAX(64B)操作1120,在這里正常數(shù)據(jù)的MAX(64B)被發(fā)送到存儲(chǔ)器130。在發(fā)送MAX(32B)操作1115或者發(fā)送MAX(64B)操作1120之后,提取流程退出,并且流程前進(jìn)到圖10的EOF決定1065。
參照EI≤64決定1125,如果提取索引大于64,將被提取的數(shù)據(jù)還沒有到達(dá),流程前進(jìn)到發(fā)送MAX(64B)操作1130,在1130,正常數(shù)據(jù)的MAX(64B)被發(fā)送到存儲(chǔ)器130。在發(fā)送MAX(64B)操作1130之后,在減法EI操作1135提取索引被減去64(例如,EI=EI-64),并且提取流程退出,流程前進(jìn)到圖10的EOF決定1065。
再次參照EI≤64決定1125,如果提取索引小于或等于64,流程前進(jìn)到存儲(chǔ)相對(duì)EI操作1140。相對(duì)提取索引是到存儲(chǔ)器130中數(shù)據(jù)緩存內(nèi)被提取數(shù)據(jù)開始處的位置的索引。相對(duì)提取索引由BDFP 214內(nèi)部存儲(chǔ)到DMA 210,直到其在后來在操作1075或1080(圖10)被寫到存儲(chǔ)器130和/或高速緩存中的合適BDQ。在存儲(chǔ)相對(duì)EI操作1140,流程前進(jìn)到EI≤32決定1145。
參照EI≤32決定1145,提取引擎212進(jìn)行與提取索引的比較,并檢查被內(nèi)部存儲(chǔ)在DMA 210中例如在提取引擎212內(nèi)的提取數(shù)據(jù)標(biāo)記。例如,如果提取索引大于32,并且提取數(shù)據(jù)標(biāo)記非真,流程前進(jìn)到發(fā)送MAX(32B)操作1150,在1150正常數(shù)據(jù)的MAX(32B)被發(fā)送到存儲(chǔ)器130。在發(fā)送MAX(32B)1150之后,提取數(shù)據(jù)標(biāo)記被設(shè)置為真,提取流程退出,并且流程前進(jìn)到圖10的EOF決定1065。
再次參照EI≤32決定1145,如果提取索引小于或等于32,或者提取數(shù)據(jù)標(biāo)記為真,那么流程前進(jìn)到小于32B決定1160。如果存在數(shù)據(jù)的至少32字節(jié)從所接收幀提取(例如,EX_ADD≥32B),那么流程前進(jìn)到發(fā)送32B操作1170,在1170提取數(shù)據(jù)的32字節(jié)根據(jù)ELCWT被發(fā)送到存儲(chǔ)器130并被復(fù)制到高速緩存120。例如,如果ELCWT為00,那么沒有分配被進(jìn)行;如果ELCWT為01,那么沒有提取發(fā)生;如果ELCWT為10,那么高速緩存行被分配;如果ELCWT為11,那么高速緩存行被分配并被鎖定。如果有數(shù)據(jù)的少于32字節(jié)將從所接收幀提取(例如,EX_ADD<32B),那么流程前進(jìn)到舍入操作1165,在1165EX_ADD被舍入為值32,并且流程進(jìn)一步前進(jìn)到發(fā)送32B操作1170。
在發(fā)送32B操作1170之后,流程前進(jìn)到減法操作1175,在1175提取相加域被減去所提取32字節(jié)段的數(shù)量(例如,EX_ADD=EX_ADD-32)。在減法操作1175之后,如果幀結(jié)尾(EOF)已經(jīng)到達(dá)或者如果EX_ADD=0,那么在清除操作1180提取數(shù)據(jù)標(biāo)記被清除。在清除操作1180之后,提取流程退出,流程前進(jìn)到圖10的EOF決定1065。
在一個(gè)實(shí)施例中,消息幀的一部分被系統(tǒng)100在包控制器160的MAC 190處接收。(參見,圖1和圖6,操作610)。消息幀的所接收部分(“所接收幀”)被提供給圖2中地址/數(shù)據(jù)濾波器230的臨時(shí)隊(duì)列234。幀被地址/數(shù)據(jù)濾波器230處理以確定其是否應(yīng)該被接受或拒絕。(參見圖6,操作620)地址識(shí)別、散列、通過模式匹配以極好散列的散列和模式匹配(圖7到9)通過地址識(shí)別和散列邏輯238和模式匹配邏輯232在所接收幀上被進(jìn)行。地址識(shí)別和散列邏輯238進(jìn)行散列和任何必要的完整直接地址比較。PM寄存器233包括與將要匹配的大量模式相對(duì)應(yīng)的大量寄存器。模式匹配邏輯232基于存儲(chǔ)在PM寄存器233中的配置值進(jìn)行模式匹配(例如,通過連續(xù)搜索和/或連接能力)。如果在模式匹配和散列或其它故障安全調(diào)節(jié)后被接受,那么所接收幀和模式狀態(tài)信息(模式匹配結(jié)果)被傳送到接收FIFO 220(見圖6,操作630)。
所接收幀然后被傳送到接收緩存211,模式匹配狀態(tài)信息被傳送到DMA 210的狀態(tài)寄存器215。(參見圖6,操作640。)提取引擎212訪問模式屬性寄存器213和狀態(tài)寄存器215以確定數(shù)據(jù)是否應(yīng)該從接收緩存211中的所接收幀提取,并控制這種數(shù)據(jù)的提取為可應(yīng)用。(參見圖10和11。)BDFP訪問狀態(tài)寄存器215和緩存描述符地址寄存器,并產(chǎn)生將被寫到存儲(chǔ)器130和/或高速緩存120的地址和數(shù)據(jù)信息。來自BDFP 214的地址信息包括數(shù)據(jù)緩存內(nèi)用于幀數(shù)據(jù)的數(shù)據(jù)緩存指針(例如,數(shù)據(jù)緩存指針(456))或者指向緩存描述符隊(duì)列中下面條目中一個(gè)的(一個(gè)或多個(gè))指針(例如,BDQ_BASE,BDQ_CURRENT,BDQ_NEXT)。數(shù)據(jù)信息包括圖4中所示的狀態(tài)和控制452、數(shù)據(jù)長度454、數(shù)據(jù)緩存指針456、模式匹配狀態(tài)458、相對(duì)提取索引460、提取長度462和字節(jié)計(jì)數(shù)464。
幀的全部或一部分然后與相應(yīng)緩存描述符隊(duì)列132/122中的相應(yīng)描述信息一起被提交到存儲(chǔ)器130中(“正常數(shù)據(jù)”)和/或收藏在高速緩存120中(“提取數(shù)據(jù)”)。(參見圖6,操作650,以及圖10和11)。更具體地,接收緩存211將正常或提取幀數(shù)據(jù)提供給總線接口單元(BIU)170,提取引擎將屬性提供給將幀數(shù)據(jù)標(biāo)識(shí)為正常或提取的BIU 170,BDFP 214將地址信息和緩存描述符數(shù)據(jù)從緩存描述符地址寄存器216提供給BIU 170。BIU 170將幀數(shù)據(jù)傳遞到總線140用于存儲(chǔ)在高速緩存120和/或存儲(chǔ)器130中。正常幀數(shù)據(jù)被存儲(chǔ)在至少一個(gè)數(shù)據(jù)緩存134中,并且與正常幀數(shù)據(jù)有關(guān)的描述符數(shù)據(jù)被存儲(chǔ)在緩存描述符隊(duì)列132中。如果提取發(fā)生,那么提取幀數(shù)據(jù)被存儲(chǔ)(“收藏”)在高速緩存部分124中,并且與提取幀數(shù)據(jù)有關(guān)的描述符數(shù)據(jù)被存儲(chǔ)在緩存描述符隊(duì)列122中。
上面的描述旨在描述本發(fā)明的至少一個(gè)實(shí)施例。上面的描述不旨在限定本發(fā)明的范圍。實(shí)際上,本發(fā)明的范圍在下面的權(quán)利要求中限定。這樣,本發(fā)明的其它實(shí)施例包括對(duì)上面描述的各種改變、修改、增加和/或改進(jìn)。
一個(gè)實(shí)施例并入了一種新形式的模式匹配,其允許用戶對(duì)高達(dá)16個(gè)4字節(jié)、可以被連接以形成更長模式并且可以被用于匹配前256字節(jié)內(nèi)幀的一部分的模式進(jìn)行編程。與每一個(gè)模式相關(guān)聯(lián)的是可以被編程以接受/拒絕幀、將幀提交到存儲(chǔ)器中四個(gè)隊(duì)列之一中并將所提取的幀數(shù)據(jù)寫到處理器的高速緩存中的一組屬性。模式匹配能力包括支持對(duì)高達(dá)16個(gè)4字節(jié)唯一模式、基于逐位的模式匹配、深入到幀中高達(dá)256字節(jié)的匹配范圍、高達(dá)256字節(jié)的偏移、4字節(jié)到增加到高達(dá)64字節(jié)的可編程模式大小、在匹配被檢測到時(shí)接受或拒絕以及用于精確匹配的高達(dá)8個(gè)的單播地址。
該實(shí)施例將模式匹配的功率與散列濾波的使用組合在一起以提供不需要后濾波且可以在MAC級(jí)完成而不需要在邏輯鏈路控制級(jí)的進(jìn)一步軟件干涉的地址識(shí)別方法。加速幀處理的一個(gè)方法是增加正好命中散列表的任何目的地地址實(shí)際是系統(tǒng)正在尋找的地址之一的確信。因?yàn)槎嘤谝粋€(gè)的地址將具有相同8個(gè)最重要位的CRC,所以具有模式匹配的散列表的使用提供了顯著增加必須在散列命中上完成的額外處理(檢索地址并將其與有效目的地地址列表比較)不費(fèi)力的幾率的方法。這是很有價(jià)值的,因?yàn)檫@減少了由于不想要的散列表命中引擎的額外的存儲(chǔ)器總線使用??梢员簧⒘械牡刂窋?shù)量還受到散列表有效性隨地址數(shù)量的增加而下降的事實(shí)的限制。因?yàn)橛脩羰紫冉⑸⒘斜聿⑶乙驗(yàn)閷⒈簧⒘械牡刂窋?shù)量通常較低(32到64),所以比較容易找到可以覆蓋其地址如果不是全部也是大部分的共用模式。使用少量模式匹配寄存器,用戶就可以確保期望隊(duì)列中的任何域都是命中的并且可以無需比較表就可以被處理。
在一個(gè)實(shí)施例中,如果CRC校驗(yàn)和選擇在組/個(gè)人散列表中設(shè)置的位,那么幀只是有條件地接受未決模式匹配結(jié)果。出售商的代碼,例如,可以被非常高效地用作要匹配的模式。模式越挑剔(更少的位被使用),高確信散列命中隊(duì)列方法就越有效。具有非常挑剔的模式,可以被用在散列表中的地址數(shù)量可以被增加并且仍舊有效。該實(shí)施例的另一個(gè)優(yōu)點(diǎn)是雖然散列本身不能被用于拒絕幀,沒有拒絕好幀的風(fēng)險(xiǎn),但是組合的模式匹配和散列濾波可以被用于進(jìn)行“通過散列的幀拒絕”,因?yàn)樯⒘袥_突的不確定性被消除了。另一個(gè)靈活性是用戶可以將模式匹配和散列拒絕的幀提交到“高概率不匹配隊(duì)列”中,使得幀可以被檢查以進(jìn)一步證實(shí)方法的有效性。
如這里描述的,ADF 230的各種控制邏輯被分布在前面提到的ADF 230的單元之間,并且沒有被圖示為單獨(dú)的邏輯塊??商鎿Q地,單獨(dú)的控制邏輯塊可以包括代表例如用于控制ADF 230所有操作、包括模式匹配和散列函數(shù)的狀態(tài)機(jī)。這種狀態(tài)機(jī)可以包括用于實(shí)現(xiàn)這里所描述函數(shù)的大量狀態(tài)。例如,狀態(tài)機(jī)可以在數(shù)據(jù)被接收和幀被接受時(shí)即從發(fā)呆狀態(tài)轉(zhuǎn)變到模式狀態(tài)的狀態(tài)。在模式狀態(tài)的狀態(tài)下,模式狀態(tài)確信可以被使得對(duì)接收FIFO 220可用。狀態(tài)機(jī)然后可以轉(zhuǎn)變到臨時(shí)隊(duì)列數(shù)據(jù)階段,其中,所接收幀被從臨時(shí)隊(duì)列234轉(zhuǎn)發(fā)。狀態(tài)機(jī)然后輸入幀狀態(tài)的狀態(tài),其中,與目的地地址濾波相關(guān)聯(lián)的幀長度和狀態(tài)(例如,廣播地址、組/單個(gè)地址、混雜模式)被傳送到接收FIFO 220。其它狀態(tài)和狀態(tài)機(jī)可以根據(jù)這里描述的函數(shù)來實(shí)現(xiàn)。
在一個(gè)實(shí)施例中,用于在信息處理系統(tǒng)內(nèi)處理消息的方法被提供。信息處理系統(tǒng)具有存儲(chǔ)器、高速緩存和包控制器。存儲(chǔ)器和高速緩存每一個(gè)都被耦合到包控制器。該方法包括接收消息并對(duì)消息進(jìn)行模式匹配,以提供指示所接收消息是否包括第一模式的模式匹配結(jié)果,以及提供對(duì)應(yīng)于第一模式的模式匹配屬性。方法還包括基于模式匹配結(jié)果來接受消息并選擇緩存描述符隊(duì)列(BDQ)。消息根據(jù)所選BDQ被存儲(chǔ)到存儲(chǔ)器,被接受消息的至少一部分被選擇性地存儲(chǔ)到高速緩存,其中,被接受消息的所述一部分由模式匹配屬性指示。
在另一個(gè)實(shí)施例中,模式匹配屬性指示多個(gè)BDQ中與第一模式相對(duì)應(yīng)的一個(gè)和所選BDQ。在另一個(gè)實(shí)施例中,與第一模式相對(duì)應(yīng)的模式匹配屬性將缺省BDQ指示為所選BDQ。在另一個(gè)實(shí)施例中,消息基于模式匹配結(jié)果被接受。
在另一個(gè)實(shí)施例中,模式匹配屬性提供了模式匹配提取指示符,并且被接受消息的所述一部分基于模式匹配提取指示符被選擇性地存儲(chǔ)到高速緩存。被接受消息的所述一部分在模式匹配提取指示符指示對(duì)于第一模式提取被啟用和/或被禁止時(shí)可以被存儲(chǔ)到高速緩存。模式匹配屬性可以提供提取索引和提取長度以指示被接受消息的被存儲(chǔ)到高速緩存的那部分。模式匹配屬性還可以指示與第一模式相對(duì)應(yīng)的、用于進(jìn)行將被接受消息的所述一部分存儲(chǔ)到高速緩存的高速緩存寫類型。
在另一個(gè)實(shí)施例中,信息處理系統(tǒng)包括耦合到存儲(chǔ)器和高速緩存的多個(gè)處理器,并且處理器中每一個(gè)具有分配的BDQ。模式匹配結(jié)果指示多個(gè)處理器中的一個(gè)來處理消息。在另一個(gè)實(shí)施例中,模式匹配結(jié)果指示與消息相對(duì)應(yīng)的優(yōu)先級(jí)。
在另一個(gè)實(shí)施例中,所選BDQ的至少一部分被存儲(chǔ)到高速緩存。模式匹配屬性可以指示與第一模式相對(duì)應(yīng)的用于進(jìn)行將所選BDQ的至少一部分存儲(chǔ)到高速緩存的高速緩存寫類型。
在另一個(gè)實(shí)施例中,對(duì)消息進(jìn)行模式匹配的步驟包括確定第一模式是否存在于消息、由模數(shù)匹配數(shù)據(jù)指示的第一模式、具有相應(yīng)模式匹配控制的模式匹配數(shù)據(jù)內(nèi),并響應(yīng)于確定第一模式是否存在,提供基于模式匹配控制的模式匹配結(jié)果。模式匹配控制可以包括連接指示符,其指示第一模式是否是多個(gè)模式的連接。模式匹配控制可以包括連續(xù)搜索指示符,其指示連續(xù)搜索是否被啟用。模式匹配控制可以包括倒轉(zhuǎn)模式指示符,其中,當(dāng)?shù)罐D(zhuǎn)模式指示符具有第一值時(shí),模式匹配結(jié)果指示第一模式是否存在于消息中,并且當(dāng)?shù)罐D(zhuǎn)指示符具有第二值時(shí),模式匹配結(jié)果指示第一模式不存在于消息內(nèi)。
在另一個(gè)實(shí)施例中,信息處理系統(tǒng)包括存儲(chǔ)器、高速緩存以及耦合到存儲(chǔ)器和高速緩存的包控制器。包控制器包括用于接收消息的輸入、存儲(chǔ)多個(gè)模式的模式匹配寄存器、存儲(chǔ)與多個(gè)模式中每一個(gè)相對(duì)應(yīng)的模式匹配屬性的模式屬性寄存器、被耦合用于對(duì)消息進(jìn)行模式匹配以及用于提供指示所接收消息是否包括多個(gè)模式中第一模式的模式匹配結(jié)果的模式匹配邏輯,被耦合用于在所接收消息被接受時(shí)存儲(chǔ)所接收消息的接收緩存,以及被耦合用于將被接受消息從接收緩存提供到存儲(chǔ)器以及用于將被接受消息的至少一部分提供到高速緩存的存儲(chǔ)器控制器。被接受消息的所述一部分由與第一模式相對(duì)應(yīng)的模式匹配屬性指示。
在另一個(gè)實(shí)施例中,被接受消息被根據(jù)所選BDQ提供到存儲(chǔ)器。所選BDQ可以是多個(gè)BDQ中的一個(gè)并且由與第一模式相對(duì)應(yīng)的模式匹配屬性指示。存儲(chǔ)器控制器可以被耦合用于將所選BDQ的至少一部分提供到高速緩存。模式匹配屬性可以指示與第一模式相對(duì)應(yīng)的用于進(jìn)行將所選BDQ的至少一部分存儲(chǔ)到高速緩存的高速緩存寫類型。
在另一個(gè)實(shí)施例中,與第一模式相對(duì)應(yīng)的模式匹配屬性提供用于指示被接受消息被提供給高速緩存的那部分的提取索引和提取長度。在另一個(gè)實(shí)施例中,與第一模式相對(duì)應(yīng)的模式匹配屬性指示用于進(jìn)行將被接受消息的一部分存儲(chǔ)到高速緩存的高速緩存寫類型。
在另一個(gè)實(shí)施例中,方法包括接收消息和確定與第一模式相對(duì)應(yīng)的第一模式匹配在所接收消息內(nèi)是否被檢測到。第一模式由模式匹配數(shù)據(jù)指示,并且具有相應(yīng)的模式匹配指示符和相應(yīng)的連續(xù)搜索啟用指示符。當(dāng)?shù)谝荒J狡ヅ浔粰z測到、并且相應(yīng)的模式匹配接受指示符指示接受具有被檢測到的第一模式的所接收消息時(shí),所接收消息被基于相應(yīng)的連續(xù)搜索啟用指示符而被選擇性接受。
在另一個(gè)實(shí)施例中,接收消息包括接收包的至少一部分。包還可以特征化為以太網(wǎng)包。
在另一個(gè)實(shí)施例中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受時(shí),所接收消息在與第一模式相對(duì)應(yīng)的連續(xù)搜索指示符指示沒有連續(xù)搜索時(shí)被接受。
在另一個(gè)實(shí)施例中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受時(shí),所接收消息在與第一模式相對(duì)應(yīng)的連續(xù)搜索指示符指示連續(xù)搜索、并且與第二模式相對(duì)應(yīng)的第二模式匹配被檢測到時(shí)被接受,所第二模式匹配具有不指示所接收消息的拒絕的相應(yīng)模式匹配接受指示符。第二模式可以由模式匹配數(shù)據(jù)指示,并且與第二模式相對(duì)應(yīng)的模式匹配接受指示符指示接受所接收消息和既不接受也不拒絕所接收消息之一。與第二模式相對(duì)應(yīng)的模式匹配接受指示符可以指示接受所接收消息和既不接受也不拒絕所接收消息之一,并且模式匹配對(duì)于第二模式被禁止。
在另一個(gè)實(shí)施例中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到并且與第一模式相對(duì)應(yīng)的模式匹配接受符指示所接收消息的接受時(shí),所接收消息在與第一模式相對(duì)應(yīng)的連續(xù)搜索指示符指示連續(xù)搜索、并且與第二模式相對(duì)應(yīng)的第二模式匹配被檢測到時(shí)不被接受,所述第二模式具有指示所接收消息的拒絕的相應(yīng)模式匹配接受指示符。
在另一個(gè)實(shí)施例中,相應(yīng)的模式匹配接受指示符指示接受、拒絕和既不接受也不拒絕所接收消息中的一個(gè)。在另一個(gè)實(shí)施例中,方法還包括在第一模式匹配被檢測到并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的拒絕時(shí)拒絕消息。
在另一個(gè)實(shí)施例中,第一模式具有相應(yīng)的倒轉(zhuǎn)模式指示符,并且當(dāng)?shù)罐D(zhuǎn)模式指示符具有第一值時(shí)第一模式匹配在所接收消息包括第一模式時(shí)被檢測,并且當(dāng)?shù)罐D(zhuǎn)模式指示符具有第二值時(shí)第一模式匹配在所接收消息不包括第一模式時(shí)被檢測。
在另一個(gè)實(shí)施例中,第一模式具有指示所接收消息內(nèi)確定第一模式匹配是否被檢測到的位置的相應(yīng)匹配索引。
在另一個(gè)實(shí)施例中,第一模式具有相應(yīng)的連接指示符。方法還包括確定第二模式匹配在所接收消息內(nèi)是否內(nèi)檢測到。消息在第一模式匹配和第二模式匹配被檢測到時(shí)基于相應(yīng)的連續(xù)搜索啟用指示符被選擇性地接受,并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受,并且與第一模式相對(duì)應(yīng)的連接指示符指示第一和第二模式的連接。當(dāng)?shù)诙J狡ヅ錄]有被檢測到并且與第一模式相對(duì)應(yīng)的連接指示符指示第一和第二模式的連接時(shí),第一模式匹配被認(rèn)為沒有被檢測到。
在另一個(gè)實(shí)施例中,方法包括執(zhí)行散列函數(shù)以確定散列命中是否發(fā)生,其中當(dāng)散列命中發(fā)生時(shí),第一模式匹配被檢測到,并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受,基于相應(yīng)的連續(xù)搜索啟用指示符來選擇性地接受消息。
在另一個(gè)實(shí)施例中,方法包括接收消息和確定與多個(gè)模式中第一模式相對(duì)應(yīng)的第一模式匹配在所接收消息內(nèi)是否被檢測到。第一模式具有相應(yīng)的模式匹配接受指示符。方法還包括確定與多個(gè)模式中至少一個(gè)相對(duì)應(yīng)的連接指示符在第一模式匹配被檢測到時(shí)是否指示連接。方法還包括在第一模式被檢測到并且多個(gè)模式中的所述至少一個(gè)的連接指示符指示連接時(shí),確定與多個(gè)模式中第二模式相對(duì)應(yīng)的第二模式匹配在所接收消息內(nèi)是否被檢測到。連接指示符對(duì)應(yīng)于第一和第二模式中的一個(gè),并且第二模式具有相應(yīng)的模式匹配接受指示符。所接收消息在第一模式匹配被檢測到時(shí)基于與第一模式相對(duì)應(yīng)的模式匹配接受指示符和與第二模式相對(duì)應(yīng)的模式匹配接受指示符中的至少一個(gè)被選擇性地接受,與第一和第二模式中一個(gè)相對(duì)應(yīng)的連接指示符指示連接,并且第二模式匹配被檢測到。
在另一個(gè)實(shí)施例中,與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示使用第一模式處理的消息的接受、拒絕和既不接受也不拒絕中的一個(gè),并且與第二模式相對(duì)應(yīng)的模式匹配接受指示符指示使用第二模式處理的消息的接受、拒絕和既不接受也不拒絕中的一個(gè)。
在另一個(gè)實(shí)施例中,連接指示符和模式匹配接受指示符中被用于選擇性地接受所接收消息的所述一個(gè)模式匹配接受指示符兩者都對(duì)應(yīng)于第一模式和第二模式中相同的一個(gè)。
在另一個(gè)實(shí)施例中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到,與第一和第二模式中一個(gè)相對(duì)應(yīng)的連接指示符指示連接,并且第二模式匹配被檢測到時(shí),基于與第一模式相對(duì)應(yīng)的模式匹配接受指示符和與第二模式相對(duì)應(yīng)的模式匹配接受指示符中的至少一個(gè)拒絕所接收消息。
在另一個(gè)實(shí)施例中,其中,第一模式具有相應(yīng)的倒轉(zhuǎn)模式指示符并且第二模式具有相應(yīng)的倒轉(zhuǎn)模式指示符,并且其中當(dāng)與第一模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第一值時(shí),第一模式匹配在所接收消息不包括第一模式時(shí)被檢測到,并且當(dāng)與第一模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第二值時(shí),第一模式匹配在所接收消息包括第一模式時(shí)被檢測到;當(dāng)與第二模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第一值時(shí),第二模式匹配在所接收消息不包括第二模式時(shí)被檢測到,并且當(dāng)與第二模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第二值時(shí),第二模式匹配在所接收消息包括第二模式時(shí)被檢測到。
在另一個(gè)實(shí)施例中,當(dāng)?shù)谝荒J狡ヅ浜偷诙J狡ヅ浔粰z測到時(shí),第一模式在所接收消息中發(fā)生在第二模式之后。在另一個(gè)實(shí)施例中,接收消息包括接收包的至少一部分。在另一個(gè)實(shí)施例中,其中,包被進(jìn)一步表現(xiàn)為以太網(wǎng)包。
在另一個(gè)實(shí)施例中,第一模式具有用于指示所接收消息內(nèi)確定在所接收消息內(nèi)第一模式匹配是否被檢測到的第一位置的相應(yīng)匹配索引,并且第二模式具有用于指示所接收消息內(nèi)確定在所接收消息內(nèi)第二模式匹配是否被檢測到的第二位置的相應(yīng)匹配索引。
在另一個(gè)實(shí)施例中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到時(shí),多個(gè)模式中至少一個(gè)的連接指示符指示連接,并且第二模式匹配被檢測,所接收消息被接受。
在另一個(gè)實(shí)施例中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到,多個(gè)模式中至少一個(gè)的連接指示符指示連接,并且第二模式匹配被檢測到時(shí),所接收消息基于指示是否進(jìn)行連續(xù)搜索的連續(xù)搜索指示符而被選擇性地接受。
在另一個(gè)實(shí)施例中,包控制器包括接收消息的輸入、模式匹配邏輯和控制邏輯。模式匹配邏輯響應(yīng)于接收消息確定與第一模式相對(duì)應(yīng)的第一模式匹配在所接收消息內(nèi)是否被檢測到。模式匹配邏輯包括被配置用于存儲(chǔ)指示第一模式的模式匹配數(shù)據(jù)的至少一個(gè)模式匹配寄存器,并存儲(chǔ)包括與第一模式相對(duì)應(yīng)的模式匹配接受指示符和與第一模式相對(duì)應(yīng)的連續(xù)搜索啟用指示符的模式匹配控制??刂七壿嫳获詈系侥J狡ヅ溥壿嫛T诓僮鬟^程中,控制邏輯在第一模式匹配被檢測到時(shí)基于與第一模式相對(duì)應(yīng)的連續(xù)搜索啟用指示符選擇性地接受所接收消息,并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受。
在另一個(gè)實(shí)施例中,控制邏輯在與第一模式相對(duì)應(yīng)的連續(xù)搜索指示符指示沒有連續(xù)搜索時(shí)接受所接收消息,并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受。
在另一個(gè)實(shí)施例中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受時(shí),控制邏輯在如下情況接受所接收消息與第一模式相對(duì)應(yīng)的連續(xù)搜索指示符指示連續(xù)搜索,以及與第二模式相對(duì)應(yīng)的第二模式匹配被檢測到,所述第二模式由模式匹配數(shù)據(jù)指示并且具有由不指示所接收消息的拒絕的模式匹配控制指示的相應(yīng)模式匹配接受指示符。
在另一個(gè)實(shí)施例中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受時(shí),控制邏輯在如下情況不接受所接收消息與第一模式相對(duì)應(yīng)的連續(xù)搜索指示符指示連續(xù)搜索,并且與第二模式相對(duì)應(yīng)的第二模式匹配被檢測到,所述第二模式由模式匹配數(shù)據(jù)指示并且具有由指示所接收消息的拒絕的模式匹配控制指示的相應(yīng)模式匹配接受指示符。
在另一個(gè)實(shí)施例中,相應(yīng)的模式匹配接受指示符指示所接收消息的接受、拒絕和既不接受也不拒絕中的一個(gè)。
在另一個(gè)實(shí)施例中,模式匹配控制包括與第一模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符,并且其中當(dāng)?shù)罐D(zhuǎn)模式指示符具有第一值時(shí),第一模式在所接收消息包括第一模式時(shí)被檢測到;當(dāng)?shù)罐D(zhuǎn)模式指示符具有第二值時(shí),第一模式匹配在所接收消息不包括第一模式時(shí)被檢測到。
在另一個(gè)實(shí)施例中,模式匹配控制包括與第一模式相對(duì)應(yīng)的、用于指示在所接收消息內(nèi)確定第一模式匹配是否被檢測到的位置的匹配索引。
在另一個(gè)實(shí)施例中,其中模式匹配控制包括與第一模式相對(duì)應(yīng)的連接指示符;模式匹配控制邏輯確定第二模式匹配在所接收消息內(nèi)是否被檢測到;并且控制邏輯在第一模式匹配和第二模式匹配被檢測到、與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受、并且與第一模式相對(duì)應(yīng)的連接指示符指示第一和第二模式的連接時(shí)基于相應(yīng)的連續(xù)搜索啟用指示符選擇性地接受消息,并且在第二模式匹配沒有被檢測到且與第一模式相對(duì)應(yīng)的連接指示符指示第一和第二模式的連接時(shí)認(rèn)為第一模式匹配沒有被檢測到。
在一個(gè)實(shí)施例中,包控制器包括接收消息的輸入、模式匹配邏輯和控制邏輯。模式匹配邏輯確定與第一模式相對(duì)應(yīng)的第一模式匹配在所接收消息內(nèi)是否被檢測到以及與第二模式相對(duì)應(yīng)的第二模式匹配是否被檢測到。模式匹配邏輯包括至少一個(gè)模式匹配寄存器。模式匹配寄存器存儲(chǔ)指示第一模式和第二模式的模式匹配數(shù)據(jù)。模式匹配寄存器還存儲(chǔ)包括與第一模式相對(duì)應(yīng)的模式匹配接受指示符、與第二模式相對(duì)應(yīng)的模式匹配接受指示符、與第一模式相對(duì)應(yīng)的連接指示符和與第二模式相對(duì)應(yīng)的連接指示符的模式匹配控制信息??刂七壿嫳获詈系侥J狡ヅ溥壿嬕栽诘谝荒J狡ヅ浔粰z測到、第二模式被檢測到并且與第一和第二模式中一個(gè)相對(duì)應(yīng)的連接指示符指示連接時(shí),基于與第一模式相對(duì)應(yīng)的模式匹配接受指示符和與第二模式相對(duì)應(yīng)的模式匹配接受指示符選擇性地接受所接收消息。
在另一個(gè)實(shí)施例中,與第一模式相對(duì)應(yīng)的模式匹配接受指示符和與第二模式相對(duì)應(yīng)的模式匹配接受指示符中的一個(gè)以及與第一和第二模式中一個(gè)相對(duì)應(yīng)的連接指示符兩者都對(duì)應(yīng)于第一模式和第二模式中相同的一個(gè)。在另一個(gè)實(shí)施例中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到、第二模式匹配沒有被檢測到并且與第一和第二模式中一個(gè)相對(duì)應(yīng)的連接指示符指示連接時(shí),控制邏輯不接受所接收消息。
在另一個(gè)實(shí)施例中,模式匹配控制包括與第一模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符和與第二模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符,并且其中當(dāng)與第一模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第一值時(shí),第一模式匹配在所接收消息不包括第一模式時(shí)不被檢測到,并且,當(dāng)與第一模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第二值時(shí),第一模式匹配在所接收消息包括第一模式時(shí)被檢測到;并且當(dāng)與第二模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第一值時(shí),第二模式匹配在所接收消息不包括第二模式時(shí)被檢測到,并且,當(dāng)與第二模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第二值時(shí),第二模式在所接收消息包括第二模式時(shí)被檢測到。
在另一個(gè)實(shí)施例中,模式匹配控制包括與第一模式相對(duì)應(yīng)的用于指示所接收消息內(nèi)用于確定第一模式匹配在所接收消息內(nèi)是否被檢測到所處的第一位置的模式索引,以及與第二模式相對(duì)應(yīng)的用于指示所接收消息內(nèi)用于確定第二模式匹配在所接收消息內(nèi)是否被檢測到所處的第二位置的模式索引。在另一個(gè)實(shí)施例中,控制邏輯在第一模式匹配被檢測到、與第一和第二模式中一個(gè)相對(duì)應(yīng)的連接指示符指示連接以及第二模式匹配被檢測到時(shí)接受所接收消息。在另一個(gè)實(shí)施例中,模式匹配控制包括與第一模式和第二模式中一個(gè)相對(duì)應(yīng)的連續(xù)搜索啟用指示符,其中,控制邏輯在第一模式匹配被檢測到、多個(gè)模式中至少一個(gè)的連接指示符指示連接并且第二模式匹配被檢測到時(shí),基于連續(xù)搜索啟用指示符和與第一模式相對(duì)應(yīng)的模式匹配接受指示符和與第二模式相對(duì)應(yīng)的模式匹配接受指示符中的至少一個(gè)選擇性地接受所接收消息。
將理解,這里描述的體系結(jié)構(gòu)只是實(shí)例性的,實(shí)際上實(shí)現(xiàn)相同功能的許多其它的體系結(jié)構(gòu)都可以被實(shí)現(xiàn)。在概要的、但仍舊很確定的意義上用于實(shí)現(xiàn)相同功能的任何部分的安排被有效地“相關(guān)聯(lián)”使得期望的功能被實(shí)現(xiàn)。因此,這里組合的用于實(shí)現(xiàn)具體功能的任何兩個(gè)部分可以被看作是彼此“相關(guān)聯(lián)”使得期望的功能被實(shí)現(xiàn),而與體系結(jié)構(gòu)或中間部分無關(guān)。同樣,這樣相關(guān)聯(lián)的任何兩個(gè)部分還可以被視為是彼此“可操作連接”或“可操作耦合”以實(shí)現(xiàn)期望功能。
本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到邏輯塊之間的邊界只是說明性的,并且可替換的實(shí)施例可以合并邏輯塊或電路元件或?qū)Ω鞣N邏輯塊或電路元件進(jìn)行可替換的功能分解。此外,可替換實(shí)施例可以組合具體部分的多個(gè)實(shí)例。
此外,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到上述操作功能之間的邊界只是說明性的。多個(gè)操作的功能可以被組合成單個(gè)操作,和/或單個(gè)操作的功能可以被分配到額外的操作中。此外,可替換實(shí)施例可以包括具體操作的多種情況,并且操作順序可以在各種其它實(shí)施例中被改變或者甚至并行進(jìn)行。
因?yàn)樯鲜鲈敿?xì)描述是實(shí)例性的,所以當(dāng)“一個(gè)實(shí)施例”被描述時(shí),其是實(shí)例性的實(shí)施例。因此,在該上下文中詞語“一個(gè)”的使用不旨在指示一個(gè)并且只有一個(gè)實(shí)施例可以具有所描述的特征。而是,許多其它實(shí)施例可以并且通常具有示例性的“一個(gè)實(shí)施例”的所描述特征。因此,當(dāng)如上使用時(shí),當(dāng)本發(fā)明在一個(gè)實(shí)施例的上下文中被描述時(shí),該一個(gè)實(shí)施例是本發(fā)明許多可能實(shí)施例中的一個(gè)。
雖然有關(guān)于詞語“一個(gè)實(shí)施例”在詳細(xì)描述中的使用的上述警告,但是本領(lǐng)域內(nèi)的技術(shù)人員將理解如果特定數(shù)量的引入的權(quán)利要求元素在下面的權(quán)利要求中被意指,那么這種意指將在權(quán)利要求中被明確地?cái)⑹觯跊]有這種敘述時(shí)就沒有這種限制存在或被意指。例如,在下面的權(quán)利要求中,當(dāng)權(quán)利要求元素被描述為具有“一個(gè)”特征時(shí),將意指該元素應(yīng)該被限制為一個(gè)并且是所描述特征的唯一一個(gè)。而是,當(dāng)權(quán)利要求元素在下面的權(quán)利要求中被描述為包括或包含“一”特征時(shí),不意指元素應(yīng)該被限制為一個(gè)并且是所描述特征的唯一一個(gè)。而是,例如,包括“一”特征的權(quán)利要求應(yīng)理解為包括所討論的一個(gè)或多個(gè)特征的裝置或方法。即,因?yàn)樗懻摰难b置或方法包括特征,所以權(quán)利要求理解為裝置或方法而不管裝置或方法是否包括另一個(gè)這種類似的特征。詞語“一”作為對(duì)權(quán)利要求特征的非限制性的引入性冠性詞的這種使用在這里被申請(qǐng)人采用為與過去由被許多法院采用的解釋是一致的,雖然可能找到任何反常的或先例性的相反的案例法。類似地,當(dāng)權(quán)利要求元素在下面的權(quán)利要求中被描述為包括或包含前面提到的特征(例如,“所述”特征)時(shí),意指的是元素不應(yīng)該被限制為一個(gè)并且是僅僅通過定冠詞的偶然使用所描述特征的唯一一個(gè)。
此外,權(quán)利要求中例如“至少一個(gè)”和“一個(gè)或多個(gè)”的引入性短語的使用不應(yīng)該被解釋為暗示通過不定冠詞“一”的另一個(gè)權(quán)利要求元素的引入將含有這種引入的權(quán)利要求元素的任何具體的權(quán)利要求限制為只包含一個(gè)這種元素的發(fā)明,即使在相同的權(quán)利要求包括引入性短語“一個(gè)或多個(gè)”或“至少一個(gè)”和例如“一”的不定冠詞時(shí)。定冠詞的使用也一樣。
雖然本發(fā)明的具體實(shí)施例已經(jīng)被示出和描述,但是對(duì)于本領(lǐng)域的技術(shù)人員將很顯然,基于這里的教導(dǎo),各種改進(jìn)、可替換結(jié)構(gòu)和等價(jià)替換都可以被使用而不脫離這里要保護(hù)的發(fā)明。結(jié)果是,所附權(quán)利要求在它們的范圍內(nèi)包含所有這種改變、修改等,只要它們?cè)诒景l(fā)明的真正精神和范圍內(nèi)。而且,將理解本發(fā)明僅由所附權(quán)利要求限定。上面的描述不旨在給出對(duì)本發(fā)明實(shí)施例的窮舉。除非另外明確地陳述,否則這里給出的每一個(gè)實(shí)例都是非限制性的或者非窮舉的實(shí)例,而不管非限制性的、非窮舉的術(shù)語或類似的術(shù)語是否在每一個(gè)實(shí)例中被同時(shí)表達(dá)。雖然已經(jīng)嘗試概述一些實(shí)例性實(shí)施例和對(duì)其的示例性變形,但是其它實(shí)施例和/或變形也在如下面權(quán)利要求所限定的發(fā)明范圍內(nèi)。
權(quán)利要求
1.一種用于在具有存儲(chǔ)器、高速緩存和包控制器的信息處理系統(tǒng)內(nèi)處理消息的方法,所述存儲(chǔ)器和高速緩存的每一個(gè)都被耦合到包控制器,所述方法包括接收消息;對(duì)消息進(jìn)行模式匹配以提供指示所接收消息是否包括第一模式的模式匹配結(jié)果,并提供與第一模式相對(duì)應(yīng)的模式匹配屬性;接受消息;基于模式匹配結(jié)果選擇緩存描述符隊(duì)列(BDQ);根據(jù)所選的緩存描述符隊(duì)列將消息存儲(chǔ)到存儲(chǔ)器;以及選擇性地將所接受消息的至少一部分存儲(chǔ)到高速緩存,其中,所接受消息的所述一部分由模式匹配屬性指示。
2.權(quán)利要求1的方法,其中,模式匹配屬性指示多個(gè)緩存描述符隊(duì)列中與第一模式相對(duì)應(yīng)的一個(gè),其中,多個(gè)緩存描述符隊(duì)列中的所述一個(gè)對(duì)應(yīng)于所選緩存描述符隊(duì)列。
3.權(quán)利要求1的方法,其中,與第一模式相對(duì)應(yīng)的模式匹配屬性將缺省緩存描述符隊(duì)列指示為所選緩存描述符隊(duì)列。
4.權(quán)利要求1的方法,其中,模式匹配屬性提供模式匹配提取指示符,其中,選擇性地將所接受消息的所述一部分存儲(chǔ)到高速緩存中是基于模式匹配提取指示符進(jìn)行的,并且其中,所接受消息的所述一部分在模式匹配提取指示符指示提取對(duì)于第一模式被啟用時(shí)被存儲(chǔ)到高速緩存,并且所接受消息的所述一部分在模式匹配提取指示符指示提取對(duì)于第一模式被禁止時(shí)不被存儲(chǔ)到高速緩存。
5.權(quán)利要求4的方法,其中,模式匹配屬性提供提取索引和提取長度用以指示所接受消息中被存儲(chǔ)到高速緩存的所述一部分。
6.權(quán)利要求4的方法,其中,模式匹配屬性指示與第一模式相對(duì)應(yīng)的用于進(jìn)行將所接受消息的所述一部分存儲(chǔ)到高速緩存的高速緩存寫類型。
7.權(quán)利要求1的方法,其中,信息處理系統(tǒng)包括耦合到存儲(chǔ)器和高速緩存的多個(gè)處理器,所述處理器中的每一個(gè)具有被分配的緩存描述符隊(duì)列,并且其中模式匹配結(jié)果指示多個(gè)處理器中用來處理消息的一個(gè)。
8.權(quán)利要求1的方法,其中,模式匹配結(jié)果指示與消息相對(duì)應(yīng)的優(yōu)先級(jí)。
9.權(quán)利要求1的方法,還包括將所選緩存描述符隊(duì)列的至少一部分存儲(chǔ)到高速緩存。
10.權(quán)利要求9的方法,其中,模式匹配屬性指示與第一模式相對(duì)應(yīng)的用于進(jìn)行將所選緩存描述符隊(duì)列的所述至少一部分存儲(chǔ)到高速緩存的高速緩存寫類型。
11.權(quán)利要求1的方法,其中,對(duì)消息進(jìn)行模式匹配包括確定第一模式是否存在于消息內(nèi),所述第一模式由模式匹配數(shù)據(jù)指示,并且模式匹配數(shù)據(jù)具有相應(yīng)的模式匹配控制;以及響應(yīng)于確定第一模式是否存在,基于模式匹配控制提供模式匹配結(jié)果。
12.權(quán)利要求11的方法,其中,模式匹配控制包括指示第一模式是否是多個(gè)模式的連接的連接指示符。
13.權(quán)利要求11的方法,其中,模式匹配控制包括指示連續(xù)搜索是否被啟用的連續(xù)搜索指示符。
14.權(quán)利要求11的方法,其中,模式匹配控制包括倒轉(zhuǎn)模式指示符,其中,當(dāng)?shù)罐D(zhuǎn)模式指示符具有第一值時(shí),模式匹配結(jié)果指示第一模式是否存在于消息內(nèi),并且當(dāng)?shù)罐D(zhuǎn)模式指示符具有第二值時(shí),模式匹配結(jié)果指示第一模式是否不存在于消息內(nèi)。
15.權(quán)利要求1的方法,其中,消息被基于模式匹配結(jié)果接受。
16.一種信息處理系統(tǒng),包括存儲(chǔ)器;高速緩存;被耦合到存儲(chǔ)器和高速緩存的包控制器,所述包控制器包括用于接收消息的輸入;存儲(chǔ)多個(gè)模式的模式匹配寄存器;存儲(chǔ)與多個(gè)模式中每一個(gè)相對(duì)應(yīng)的模式匹配屬性的模式屬性寄存器;模式匹配邏輯,其被耦合用于對(duì)消息進(jìn)行模式匹配以及用于提供指示所接收消息是否包括多個(gè)模式中第一模式的模式匹配結(jié)果;被耦合用于在所接收消息被接受時(shí)存儲(chǔ)所接收消息的接收緩存;以及存儲(chǔ)器控制器,被耦合用于將來自接收緩存的所接受消息提供給存儲(chǔ)器以及用于將所接受消息的至少一部分提供給高速緩存,其中,所接受消息的所述一部分由與第一模式相對(duì)應(yīng)的模式匹配屬性指示。
17.權(quán)利要求16的信息處理系統(tǒng),其中,所接受消息被根據(jù)所選緩存描述符隊(duì)列提供給存儲(chǔ)器。
18.權(quán)利要求17的信息處理系統(tǒng),其中,所選緩存描述符隊(duì)列是多個(gè)緩存描述符隊(duì)列中的一個(gè),并且由與第一模式相對(duì)應(yīng)的模式匹配屬性指示。
19.權(quán)利要求17的信息處理系統(tǒng),其中,存儲(chǔ)器控制器被耦合用于將所選緩存描述符隊(duì)列的至少一部分提供給高速緩存。
20.權(quán)利要求19的方法,其中,模式匹配屬性指示與第一模式相對(duì)應(yīng)的用于進(jìn)行將所選緩存描述符隊(duì)列的所述至少一部分存儲(chǔ)到高速緩存的高速緩存寫類型。
21.權(quán)利要求16的信息處理系統(tǒng),其中,與第一模式相對(duì)應(yīng)的模式匹配屬性提供用于指示所接受消息中被提供給高速緩存的所述一部分的提取索引和提取長度。
22.權(quán)利要求16的信息處理系統(tǒng),其中,與第一模式相對(duì)應(yīng)的模式匹配屬性指示用于進(jìn)行將所接受消息的所述一部分存儲(chǔ)到高速緩存中的高速緩存寫類型。
23.一種方法,包括接收消息;確定與第一模式相對(duì)應(yīng)的第一模式匹配在所接收消息內(nèi)是否被檢測到,其中,第一模式由模式匹配數(shù)據(jù)指示并且具有相應(yīng)的模式匹配接受指示符和相應(yīng)的連續(xù)搜索啟用指示符;以及當(dāng)?shù)谝荒J狡ヅ浔粰z測到并且相應(yīng)的模式匹配接受指示符指示接受具有所檢測到的第一模式的所接收消息時(shí),基于相應(yīng)的連續(xù)搜索啟用指示符選擇性地接受所接收消息。
24.權(quán)利要求23的方法,其中,接收消息包括接收包的至少一部分。
25.權(quán)利要求24的方法,其中,包還被特征化為以太網(wǎng)包。
26.權(quán)利要求23的方法,其中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受時(shí),在與第一模式相對(duì)應(yīng)的連續(xù)搜索指示符指示沒有連續(xù)搜索時(shí)接受所接收消息。
27.權(quán)利要求23的方法,其中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受時(shí),在如下情況接受所接收消息與第一模式相對(duì)應(yīng)的連續(xù)搜索指示符指示連續(xù)搜索,以及與第二模式相對(duì)應(yīng)的第二模式匹配被檢測到,第二模式具有不指示所接收消息的拒絕的相應(yīng)模式匹配接受指示符。
28.權(quán)利要求27的方法,其中,第二模式由模式匹配數(shù)據(jù)指示并且與第二模式相對(duì)應(yīng)的模式匹配接受指示符指示接受所接收消息和既不接受也不拒絕所接收消息中的一個(gè)。
29.權(quán)利要求27的方法,其中,與第二模式相對(duì)應(yīng)的模式匹配接受指示符指示接受所接收消息、既不接受也不拒絕所接收消息中的一個(gè),并且模式匹配對(duì)于第二模式被禁止。
30.權(quán)利要求23的方法,其中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受時(shí),在如下情況不接受所接收消息與第一模式相對(duì)應(yīng)的連續(xù)搜索指示符指示連續(xù)搜索,以及與第二模式相對(duì)應(yīng)的第二模式匹配被檢測到,第二模式具有指示所接收消息的拒絕的相應(yīng)模式匹配接受指示符。
31.權(quán)利要求23的方法,其中,相應(yīng)的模式匹配接受指示符指示所接收消息的接受、拒絕和既不接受也不拒絕中的一個(gè)。
32.權(quán)利要求23的方法,還包括當(dāng)?shù)谝荒J狡ヅ浔粰z測到并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的拒絕時(shí),拒絕消息。
33.權(quán)利要求23的方法,其中,第一模式具有相應(yīng)的倒轉(zhuǎn)模式指示符,并且其中當(dāng)?shù)罐D(zhuǎn)模式指示符具有第一值時(shí),第一模式匹配在所接收消息包括第一模式時(shí)被檢測到;當(dāng)?shù)罐D(zhuǎn)模式指示符具有第二值時(shí),第一模式匹配在所接收消息不包括第一模式時(shí)被檢測到。
34.權(quán)利要求23的方法,其中,第一模式具有指示所接收消息內(nèi)確定第一模式匹配是否被檢測到的位置的相應(yīng)的匹配索引。
35.權(quán)利要求23的方法,其中,第一模式具有相應(yīng)的連接指示符,所述方法還包括確定第二模式匹配在所接收消息內(nèi)是否被檢測到,其中當(dāng)?shù)谝荒J狡ヅ浜偷诙J狡ヅ浔粰z測到、與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受、并且與第一模式相對(duì)應(yīng)的連接指示符指示第一和第二模式的連接時(shí),基于相應(yīng)的連續(xù)搜索啟用指示符選擇性地接受消息,以及當(dāng)?shù)诙J狡ヅ錄]有被檢測到并且與第一模式相對(duì)應(yīng)的連接指示符指示第一和第二模式的連接時(shí),第一模式匹配被認(rèn)為沒有被檢測到。
36.權(quán)利要求23的方法,還包括執(zhí)行散列函數(shù)以確定散列命中是否發(fā)生,其中,當(dāng)散列命中發(fā)生、第一模式匹配被檢測到、并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受時(shí),基于相應(yīng)的連續(xù)搜索啟用指示符選擇性地接受消息。
37.一種方法,包括接收消息;確定與多個(gè)模式中的第一模式相對(duì)應(yīng)的第一模式匹配在所接收消息內(nèi)是否被檢測到,其中,第一模式具有相應(yīng)的模式匹配接受指示符;當(dāng)?shù)谝荒J狡ヅ浔粰z測到時(shí),確定與多個(gè)模式中的至少一個(gè)相對(duì)應(yīng)的連接指示符是否指示連接;當(dāng)?shù)谝荒J狡ヅ浔粰z測到并且多個(gè)模式中的所述至少一個(gè)的連接指示符指示連接時(shí),確定與多個(gè)模式中的第二模式相對(duì)應(yīng)的第二模式匹配在所接收消息內(nèi)是否被檢測到,其中,連接指示符對(duì)應(yīng)于第一和第二模式中的一個(gè)并且第二模式具有相應(yīng)的模式匹配接受指示符;以及當(dāng)?shù)谝荒J狡ヅ浔粰z測到、與第一和第二模式中的一個(gè)相對(duì)應(yīng)的連接指示符指示連接、并且第二模式匹配被檢測到時(shí),基于與第一模式相對(duì)應(yīng)的模式匹配接受指示符和與第二模式相對(duì)應(yīng)的模式匹配接受指示符中的至少一個(gè)來選擇性地接受所接收消息。
38.權(quán)利要求37的方法,其中,與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示使用第一模式處理的消息的接受、拒絕和既不接受也不拒絕中的一個(gè),并且與第二模式相對(duì)應(yīng)的模式匹配接受指示符指示使用第二模式處理的消息的接受、拒絕和既不接受也不拒絕中的一個(gè)。
39.權(quán)利要求37的方法,其中,連接指示符和模式匹配接受指示符中被用于選擇性地接受所接收消息的所述一個(gè)模式匹配接受指示符都對(duì)應(yīng)于第一模式和第二模式中相同的一個(gè)。
40.權(quán)利要求37的方法,其中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到、與第一和第二模式中的一個(gè)相對(duì)應(yīng)的連接指示符指示連接、并且第二模式匹配被檢測到時(shí),基于與第一模式相對(duì)應(yīng)的模式匹配接受指示符和與第二模式相對(duì)應(yīng)的模式匹配接受指示符中的至少一個(gè)來拒絕所接收消息。
41.權(quán)利要求37的方法,其中,第一模式具有相應(yīng)的倒轉(zhuǎn)模式指示符并且第二模式具有相應(yīng)的倒轉(zhuǎn)模式指示符,并且其中當(dāng)與第一模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第一值時(shí),第一模式匹配在所接收消息不包括第一模式時(shí)被檢測到,并且當(dāng)與第一模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第二值時(shí),第一模式匹配在所接收消息包括第一模式時(shí)被檢測到;并且當(dāng)與第二模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第一值時(shí),第二模式匹配在所接收消息不包括第二模式時(shí)被檢測到,并且當(dāng)與第二模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第二值時(shí),第二模式在所接收消息包括第二模式時(shí)被檢測到。
42.權(quán)利要求37的方法,其中,當(dāng)?shù)谝荒J狡ヅ浜偷诙J狡ヅ浔粰z測到時(shí),第一模式在所接收消息中發(fā)生在第二模式之后。
43.權(quán)利要求37的方法,其中,接收所述消息包括接收包的至少一部分。
44.權(quán)利要求43的方法,其中,包還被進(jìn)一步特征化為以太網(wǎng)包。
45.權(quán)利要求37的方法,其中,第一模式具有指示所接收消息內(nèi)確定在所接收消息內(nèi)第一模式匹配是否被檢測到的第一位置的相應(yīng)的匹配索引,并且第二模式具有指示所接收消息內(nèi)確定在所接收消息內(nèi)第二模式匹配是否被檢測到的第二位置的相應(yīng)的匹配索引。
46.權(quán)利要求37的方法,其中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到、多個(gè)模式中至少一個(gè)的連接指示符指示連接、并且第二模式匹配被檢測到時(shí),所接收消息被接受。
47.權(quán)利要求37的方法,其中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到、多個(gè)模式中至少一個(gè)的連接指示符指示連接、并且第二模式匹配被檢測到時(shí),所接收消息基于指示是否進(jìn)行連續(xù)搜索的連續(xù)搜索指示符被選擇性地接受。
48.一種包控制器,包括用于接收消息的輸入;確定與第一模式相對(duì)應(yīng)的第一模式匹配在所接收消息內(nèi)是否被檢測到的模式匹配邏輯,其中,模式匹配邏輯包括存儲(chǔ)指示第一模式的模式匹配數(shù)據(jù)和存儲(chǔ)包括與第一模式相對(duì)應(yīng)的模式匹配接受指示符和與第一模式相對(duì)應(yīng)的連續(xù)搜索啟用指示符的模式匹配控制的至少一個(gè)模式匹配寄存器;以及控制邏輯,其被耦合到模式匹配邏輯,其在第一模式匹配被檢測到并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受時(shí),基于與第一模式相對(duì)應(yīng)的連續(xù)搜索啟用指示符選擇性地接受所接收消息。
49.權(quán)利要求48的包控制器,其中,控制邏輯在與第一模式相對(duì)應(yīng)的連續(xù)搜索指示符指示沒有連續(xù)搜索、第一模式匹配被檢測到、并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受時(shí)接受所接收消息。
50.權(quán)利要求48的包控制器,其中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受時(shí),控制邏輯在如下情況接受所接收消息與第一模式相對(duì)應(yīng)的連續(xù)搜索指示符指示連續(xù)搜索,以及與第二模式相對(duì)應(yīng)的第二模式匹配被檢測到,所述第二模式由模式匹配數(shù)據(jù)指示并且具有由不指示所接收消息的拒絕的模式匹配控制指示的相應(yīng)模式匹配接受指示符。
51.權(quán)利要求48的包控制器,其中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到并且與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受時(shí),控制邏輯在如下情況不接受所接收消息與第一模式相對(duì)應(yīng)的連續(xù)搜索指示符指示連續(xù)搜索,以及與第二模式相對(duì)應(yīng)的第二模式匹配被檢測到,所述第二模式由模式匹配數(shù)據(jù)指示并且具有由指示所接收消息的拒絕的模式匹配控制指示的相應(yīng)模式匹配接受指示符。
52.權(quán)利要求48的包控制器,其中,相應(yīng)的模式匹配接受指示符指示所接收消息的接受、拒絕和既不接受也不拒絕中的一個(gè)。
53.權(quán)利要求48的包控制器,其中,模式匹配控制包括與第一模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符,且其中當(dāng)?shù)罐D(zhuǎn)模式指示符具有第一值時(shí),第一模式匹配在所接收消息包括第一模式時(shí)被檢測到;當(dāng)?shù)罐D(zhuǎn)模式指示符具有第二值時(shí),第一模式匹配在所接收消息不包括第一模式時(shí)被檢測到。
54.權(quán)利要求48的包控制器,其中,模式匹配控制包括與第一模式相對(duì)應(yīng)的用于指示在所接收消息內(nèi)確定第一模式匹配是否被檢測到的位置的匹配索引。
55.權(quán)利要求48的包控制器,其中模式匹配控制包括與第一模式相對(duì)應(yīng)的連接指示符;模式匹配邏輯確定第二模式匹配在所接收消息內(nèi)是否被檢測到;并且控制邏輯在第一模式匹配和第二模式匹配被檢測到、與第一模式相對(duì)應(yīng)的模式匹配接受指示符指示所接收消息的接受、并且與第一模式相對(duì)應(yīng)的連接指示符指示第一和第二模式的連接時(shí)基于相應(yīng)的連續(xù)搜索啟用指示符選擇性地接受消息,而且在第二模式匹配沒有被檢測到且與第一模式相對(duì)應(yīng)的連接指示符指示第一和第二模式的連接時(shí)認(rèn)為第一模式匹配沒有被檢測到。
56.一種包控制器,包括用于接收消息的輸入;確定與第一模式相對(duì)應(yīng)的第一模式匹配在所接收消息內(nèi)是否被檢測到以及與第二模式相對(duì)應(yīng)的第二模式匹配是否被檢測到的模式匹配邏輯,其中,模式匹配邏輯包括存儲(chǔ)指示第一模式和第二模式的模式匹配數(shù)據(jù)和存儲(chǔ)包括與第一模式相對(duì)應(yīng)的模式匹配接受指示符、與第二模式相對(duì)應(yīng)的模式匹配接受指示符、與第一模式相對(duì)應(yīng)的連續(xù)指示符和與第二模式相對(duì)應(yīng)的連接指示符的模式匹配控制的至少一個(gè)模式匹配寄存器;以及控制邏輯,其被耦合到模式匹配邏輯,其在第一模式匹配被檢測到、第二模式匹配被檢測到并且與第一和第二模式中的一個(gè)相對(duì)應(yīng)的連接指示符指示連接時(shí),基于與第一模式相對(duì)應(yīng)的模式匹配接受指示符和與第二模式相對(duì)應(yīng)的模式匹配接受指示符中的至少一個(gè)來選擇性地接受所接收消息。
57.權(quán)利要求56的包控制器,其中,與第一模式相對(duì)應(yīng)的模式匹配接受指示符和與第二模式相對(duì)應(yīng)的模式匹配接受指示符中的所述一個(gè)以及與第一和第二模式中的一個(gè)相對(duì)應(yīng)的連接指示符都對(duì)應(yīng)于第一和第二模式中相同的一個(gè)。
58.權(quán)利要求56的包控制器,其中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到、第二模式匹配沒有被檢測到、并且與第一和第二模式中的一個(gè)相對(duì)應(yīng)的連接指示符指示連接時(shí),控制邏輯不接受所接收消息。
59.權(quán)利要求56的包控制器,其中,模式匹配控制包括與第一模式相應(yīng)的倒轉(zhuǎn)模式指示符和與第二模式相應(yīng)的倒轉(zhuǎn)模式指示符,并且其中當(dāng)與第一模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第一值時(shí),第一模式匹配在所接收消息不包括第一模式時(shí)被檢測到,并且當(dāng)與第一模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第二值時(shí),第一模式匹配在所接收消息包括第一模式時(shí)被檢測到;并且當(dāng)與第二模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第一值時(shí),第二模式匹配在所接收消息不包括第二模式時(shí)被檢測到,并且當(dāng)與第二模式相對(duì)應(yīng)的倒轉(zhuǎn)模式指示符具有第二值時(shí),第二模式在所接收消息包括第二模式時(shí)被檢測到。
60.權(quán)利要求56的包控制器,其中,模式匹配控制包括與第一模式相對(duì)應(yīng)的用于指示所接收消息內(nèi)確定在所接收消息內(nèi)第一模式匹配是否被檢測到的第一位置的匹配索引,以及與第二模式相對(duì)應(yīng)的用于指示所接收消息內(nèi)確定在所接收消息內(nèi)第二模式匹配是否被檢測到的第二位置的匹配索引。
61.權(quán)利要求56的包控制器,其中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到、與第一和第二模式中的一個(gè)相對(duì)應(yīng)的連接指示符指示連接、并且第二模式匹配被檢測到時(shí),控制邏輯接受所接收消息。
62.權(quán)利要求56的包控制器,其中,模式匹配控制包括與第一和第二模式中的一個(gè)相對(duì)應(yīng)的連續(xù)搜索啟用指示符,其中,當(dāng)?shù)谝荒J狡ヅ浔粰z測到、多個(gè)模式中的至少一個(gè)的連接指示符指示連接、并且第二模式匹配被檢測到時(shí),控制邏輯基于連續(xù)搜索啟用指示符并基于與第一模式相對(duì)應(yīng)的模式匹配接受指示符和與第二模式相對(duì)應(yīng)的模式匹配接受指示符中的至少一個(gè),來選擇性地接受所接收消息。
全文摘要
模式匹配被用在信息處理系統(tǒng)中用于處理來自網(wǎng)絡(luò)例如基于以太網(wǎng)的網(wǎng)絡(luò)的進(jìn)入消息,以幫助將這種消息提交到存儲(chǔ)器中以及將這種消息選擇性收藏在高速緩存中。模式匹配在不增加基于軟件的處理器任務(wù)的情況下增加了消息接受和拒絕的效率。可以在進(jìn)入消息中搜索模式的存在和模式的不存在??梢栽谶M(jìn)入消息中搜索多個(gè)模式的存在。模式匹配的結(jié)果不僅可以被用于消息的接受和拒絕,而且還可以用于其它后接受任務(wù),例如根據(jù)具有具體模式匹配的消息的所標(biāo)識(shí)的相對(duì)優(yōu)先級(jí)或絕對(duì)重要性而進(jìn)行進(jìn)入消息的選擇性存儲(chǔ),以及例如將消息根據(jù)模式匹配選擇性導(dǎo)向到多處理器計(jì)算機(jī)系統(tǒng)內(nèi)不同處理域。
文檔編號(hào)H04L12/56GK1860743SQ200380110548
公開日2006年11月8日 申請(qǐng)日期2003年11月25日 優(yōu)先權(quán)日2003年11月25日
發(fā)明者哈羅德·M.·馬丁, 卡洛斯·A.·格里夫斯, 唐·Q.·尼古耶恩, 戴維·J.·努尼茲 申請(qǐng)人:飛思卡爾半導(dǎo)體公司