欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于在處理器中調(diào)度規(guī)則匹配的調(diào)度方法和裝置制造方法

文檔序號(hào):6540733閱讀:298來源:國知局
用于在處理器中調(diào)度規(guī)則匹配的調(diào)度方法和裝置制造方法
【專利摘要】在被配置為處理路由器中的搜索請求的網(wǎng)絡(luò)搜索處理器中,用于調(diào)度通過多個(gè)啟動(dòng)引擎所啟動(dòng)的規(guī)則匹配線程的調(diào)度器被設(shè)計(jì)以有效地利用網(wǎng)絡(luò)搜索處理器中的資源,同時(shí)提供高速性能。根據(jù)至少一個(gè)示例實(shí)施例,調(diào)度器及其相應(yīng)的調(diào)度方法包括:確定規(guī)則匹配線程組束,每個(gè)束通過獨(dú)立的處理引擎被啟動(dòng);將在束組的每個(gè)束中的規(guī)則匹配線程分布成多個(gè)規(guī)則匹配線程子組;將與束組的每個(gè)束相關(guān)聯(lián)的規(guī)則匹配線程的子組分配給多個(gè)調(diào)度隊(duì)列;以及根據(jù)基于與相應(yīng)的規(guī)則匹配線程束相關(guān)聯(lián)的優(yōu)先級的順序?qū)⒈环峙浣o每個(gè)調(diào)度隊(duì)列的規(guī)則匹配線程發(fā)送給規(guī)則匹配引擎。
【專利說明】用于在處理器中調(diào)度規(guī)則匹配的調(diào)度方法和裝置

【背景技術(shù)】
[0001]開放式互聯(lián)(OSI)參考模型定義了被用于在傳輸媒介上進(jìn)行通信的七個(gè)網(wǎng)絡(luò)協(xié)議層(L1-L7)。上層(L4-L7)表示點(diǎn)到點(diǎn)通信,并且底層(L1-L3)表示本地通信。
[0002]網(wǎng)絡(luò)應(yīng)用感知系統(tǒng)需要處理、過濾和切換一系列L3到L7網(wǎng)路協(xié)議層。例如,諸如超文本傳輸協(xié)議(HTTP)和簡單郵件傳輸協(xié)議(SMTP)的L7網(wǎng)絡(luò)協(xié)議層,以及諸如傳輸控制協(xié)議(TCP)的L4網(wǎng)絡(luò)協(xié)議層。除了處理網(wǎng)絡(luò)協(xié)議層之外,網(wǎng)絡(luò)應(yīng)用感知系統(tǒng)需要通過L4-L7網(wǎng)絡(luò)協(xié)議層用基于接入和內(nèi)容的安全同時(shí)保護(hù)這些協(xié)議,包括防火墻、虛擬專用網(wǎng)絡(luò)(VPN)、安全套接層(SSL)、入侵檢測系統(tǒng)(IDS)、互聯(lián)網(wǎng)協(xié)議安全(IPsec)、在線速上的反病毒(AV)和反垃圾郵件功能。
[0003]在當(dāng)今互聯(lián)網(wǎng)世界,改善網(wǎng)絡(luò)操作的效率和安全依舊是針對互聯(lián)網(wǎng)用戶的最終目標(biāo)。接入控制、流量工程、入侵檢測和許多其它網(wǎng)絡(luò)服務(wù)要求基于數(shù)據(jù)包報(bào)頭的多個(gè)字段區(qū)別包,其被稱為包分類。
[0004]互聯(lián)網(wǎng)路由器對包進(jìn)行分類以實(shí)施多個(gè)高級的互聯(lián)網(wǎng)服務(wù),諸如路由、速率限制、在防火墻中的接入控制、虛擬帶寬分配、基于策略的路由、服務(wù)區(qū)分、負(fù)載均衡、流量整形以及流量計(jì)費(fèi)。這些服務(wù)要求路由器將進(jìn)來的包分類成不同的流,并且然后依據(jù)這個(gè)分類執(zhí)行適當(dāng)?shù)膭?dòng)作。
[0005]分類器使用一組濾波器或規(guī)則指定流或類別。例如,在防火墻中的每個(gè)規(guī)則可能指定一組源和目的地址,并且將相應(yīng)的拒絕或許可動(dòng)作和它相關(guān)聯(lián)。備選地,規(guī)則可能基于包頭的多個(gè)字段,包括OSI模型的層2、3、4和5,字段中包含尋址和協(xié)議信息。
[0006]在一些類型的專有硬件上,訪問控制列表(ACL)指的是應(yīng)用于端口號(hào)的規(guī)則或在主機(jī)或?qū)?設(shè)備上存在的網(wǎng)絡(luò)后臺(tái)程序名稱,每項(xiàng)具有被許可使用服務(wù)的主機(jī)和/或網(wǎng)絡(luò)的列表。獨(dú)立的服務(wù)器以及路由器都能夠具有網(wǎng)絡(luò)ACL。ACL能夠被配置為控制入站和出站的流量。


【發(fā)明內(nèi)容】

[0007]根據(jù)至少一個(gè)示例實(shí)施例,用于調(diào)度通過網(wǎng)絡(luò)搜索處理器中的多個(gè)啟動(dòng)引擎所啟動(dòng)的規(guī)則匹配線程的方法和相應(yīng)的裝置包括:確定規(guī)則匹配線程組束,每個(gè)束通過獨(dú)立的處理引擎被啟動(dòng);將在束組的每個(gè)束中的規(guī)則匹配線程分布成多個(gè)規(guī)則匹配線程子組;將與束組的每個(gè)束相關(guān)聯(lián)的規(guī)則匹配線程的子組分配給多個(gè)調(diào)度隊(duì)列;以及根據(jù)基于與相應(yīng)的規(guī)則匹配線程束相關(guān)聯(lián)的優(yōu)先級的順序?qū)⒈环峙浣o每個(gè)調(diào)度隊(duì)列的規(guī)則匹配線程發(fā)送給規(guī)則匹配引擎。

【專利附圖】

【附圖說明】
[0008]上述內(nèi)容將從下列本發(fā)明的示例實(shí)施例的更具體的描述中變得清楚,如在附圖中所圖示的,其中相同的參考符號(hào)指的是遍及不同視角的相同部分。附圖不一定是按比例繪制,而是將重點(diǎn)放在圖示本發(fā)明的實(shí)施例。
[0009]圖1是包括搜索處理器可以被采用的網(wǎng)絡(luò)單元的典型的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的方框圖;
[0010]圖2A-2C示出圖示了采用搜索處理器的路由器的示例實(shí)施例的方框圖;
[0011]圖3示出搜索處理器的示例架構(gòu);
[0012]圖4是圖示了由軟件編譯器將規(guī)則加載至片上存儲(chǔ)器(OCM)內(nèi)的示例實(shí)施例的方框圖;
[0013]圖5示出圖示了根據(jù)至少一個(gè)示例實(shí)施例的存儲(chǔ)器,或搜索,簇的架構(gòu)的方框圖;
[0014]圖6A-6C是圖示與對處理關(guān)鍵搜索線程相關(guān)聯(lián)的不同階段的流程圖;
[0015]圖7A和7B是圖示根據(jù)至少一個(gè)示例實(shí)施例在調(diào)度器或仲裁器模塊內(nèi)對規(guī)則匹配線程束的調(diào)度的方框圖;
[0016]圖8是圖示根據(jù)至少一個(gè)示例實(shí)施例在調(diào)度器或仲裁器模塊內(nèi)對一組束的確定和處理的不意圖;
[0017]圖9A-9C是圖示在調(diào)度隊(duì)列內(nèi)對規(guī)則匹配線程的處理的示意圖;以及
[0018]圖10是圖示根據(jù)至少一個(gè)示例實(shí)施例的調(diào)度器或仲裁器模塊的架構(gòu)的方框圖。

【具體實(shí)施方式】
[0019]本發(fā)明的示例實(shí)施例的描述如下。
[0020]雖然包分類已被廣泛研究了很長時(shí)間,研究人員仍主動(dòng)得尋求新穎的和有效的包分類方案,由于:1)網(wǎng)絡(luò)帶寬的持續(xù)增長,?)網(wǎng)絡(luò)應(yīng)用的持續(xù)增加的復(fù)雜度,以及iii)網(wǎng)絡(luò)系統(tǒng)的技術(shù)創(chuàng)新。
[0021]針對網(wǎng)絡(luò)帶寬的持續(xù)增加的需求通常是由于數(shù)據(jù)流量的增長。領(lǐng)先的服務(wù)提供商有時(shí)在六到九個(gè)月內(nèi)報(bào)告在他們的骨干網(wǎng)絡(luò)上帶寬加倍。因此,新穎的包分類方案被要求來處理在邊緣和核心設(shè)備上以指數(shù)級增加的流量。
[0022]由于在網(wǎng)絡(luò)設(shè)備中被實(shí)施的網(wǎng)絡(luò)應(yīng)用的數(shù)量的增加,網(wǎng)絡(luò)應(yīng)用的復(fù)雜度在增加。包分類被廣泛的用于各種種類的應(yīng)用,諸如服務(wù)感知路由、入侵防護(hù)和流量整形。因此,在沒有性能的重大損失的前提下處理不同類型的規(guī)則組要求新穎的包分類的智能方案。
[0023]此外,諸如多核處理器的新技術(shù)提供前所未有的計(jì)算能力以及高度集成的資源??紤]到這種高級的硬件和軟件技術(shù),用戶還期待和他們的設(shè)備的速度相匹配的高的網(wǎng)絡(luò)速度和性能。高網(wǎng)絡(luò)性能和速度可以通過采用新穎的智能包分類方案來獲得。
[0024]現(xiàn)有的包分類算法用存儲(chǔ)器交換時(shí)間。雖然折中已在不斷地被改善,針對合理數(shù)量的存儲(chǔ)器所采用的時(shí)間通常仍是貧乏的。
[0025]由于現(xiàn)有的算法方案存在的問題,設(shè)計(jì)人員使用三態(tài)內(nèi)容可尋址存儲(chǔ)器(TCAM),其使用強(qiáng)力并行硬件以針對可用的分類規(guī)則同時(shí)檢查包。TCAM在算法方案上的主要優(yōu)勢是速度和確定性。TCAM為所有數(shù)據(jù)庫工作。
[0026]TCAM是功能為完全關(guān)聯(lián)存儲(chǔ)器的硬件設(shè)備。TCAM單元存儲(chǔ)三個(gè)值:0、I或“X”,其表示無關(guān)位,并且作為每小區(qū)掩碼來操作使得TCAM能夠與包含諸如kleen號(hào)的通配符的規(guī)則匹配。在操作中,整個(gè)包頭可以被提供給TCAM以確定它與哪個(gè)條目或規(guī)則相匹配。但是,TCAM的復(fù)雜度僅已允許小的、不靈活的和相對緩慢的實(shí)施,這種實(shí)施消耗大量功率。因此,在專門的數(shù)據(jù)結(jié)構(gòu)上進(jìn)行操作的有效的算法方案成為有價(jià)值的備選方案。
[0027]在本領(lǐng)域中提出的數(shù)學(xué)方案被示出具有很好的時(shí)間/空間復(fù)雜度。但是,由于數(shù)學(xué)方案經(jīng)常加入特定的條件以簡化問題和/或省略可能隱藏明確的最壞情況界的大量常數(shù)因子,這些方法在現(xiàn)實(shí)網(wǎng)絡(luò)設(shè)備中通常是不可實(shí)施的。
[0028]提出的基于觀察的方案采用在規(guī)則中所觀察的統(tǒng)計(jì)特征以獲得用于現(xiàn)實(shí)應(yīng)用的有效方案。但是,這些算法方法通常僅對特定類型的包分類規(guī)則組有效。由于針對不同應(yīng)用的包分類規(guī)則具有不同的特征,很少基于觀察的方法能夠全面地挖掘在不同類型的規(guī)則組中的冗余以得到在各種條件下的穩(wěn)定性能。
[0029]包分類通過使用包分類器來執(zhí)行,還被稱為策略數(shù)據(jù)庫、流分類器,或簡單地被稱為分類器。分類器包括規(guī)則或策略的采集。接收到的包與規(guī)則相匹配,其確定與匹配的包所采取的動(dòng)作。在通用包分類中,路由器基于在包頭中的多個(gè)字段將包進(jìn)行分類。分類器的每個(gè)規(guī)則根據(jù)在包頭的“F”字段上的準(zhǔn)則指定包可能屬于的類別。標(biāo)識(shí)符(例如,類別ID)與每個(gè)類別相關(guān)聯(lián)。例如,在流分類器中的每個(gè)規(guī)則是每個(gè)流在獨(dú)立的類別中的流說明。標(biāo)識(shí)符唯一地指定與每個(gè)規(guī)則相關(guān)聯(lián)的動(dòng)作。每個(gè)規(guī)則具有“F”字段。規(guī)則R的第i字段(被稱為R[i])表示以與包頭的第i字段一起被評估的表達(dá)或條件。如果對于每一個(gè)i,P的頭的第i字段滿足表達(dá)或條件R[i],那么包P與具體的規(guī)則R相匹配。表達(dá)或條件R[i]可以用于測試包頭的第i字段的值是否精確地等于特定的值,測試對應(yīng)于包頭的第i字段的比特的子組的值是否等于給定值等。
[0030]由規(guī)則制定的類別可以重疊。例如,一個(gè)包可以匹配多個(gè)規(guī)則。在這個(gè)情況中,當(dāng)多個(gè)規(guī)則重疊時(shí),規(guī)則在分類器中出現(xiàn)的順序確定規(guī)則相對的優(yōu)先級。換句話說,與多個(gè)規(guī)則匹配的包屬于由其中首先在分類器中出現(xiàn)的規(guī)則的標(biāo)識(shí)符(例如,類別ID)所識(shí)別的類別。
[0031]包分類器可以將分類器表中的規(guī)則進(jìn)行分析和歸類,并且創(chuàng)建用于將接收的包與來自分類器表的規(guī)則相匹配的判決樹。判決樹是判決支持工具,其使用判決的樹狀圖或模型和它們的可能后果,包括隨機(jī)事件結(jié)果、資源成本和效用。判決樹通常用于操作研究,特別是判決分析,以幫助識(shí)別最可能達(dá)到目標(biāo)的策略。判決樹的另一個(gè)用途是作為用于計(jì)算條件概率的描述性工具。判決樹可以被用于將接收的包與在分類器表中的規(guī)則相匹配以確定如何處理接收的包。
[0032]簡而言之,問題可以被定義為找到與包匹配的一個(gè)或多個(gè)規(guī)則,例如,匹配規(guī)則。在描述對于這個(gè)問題的方案之前,應(yīng)注意,包可以被分解成諸如頭、負(fù)載和尾部的部分。例如,包的頭或包頭可以進(jìn)一步被分成字段。因此,問題可以進(jìn)一步被定義為找到與包頭的一個(gè)或多個(gè)字段相匹配的一個(gè)或多個(gè)規(guī)則。
[0033]對于上述問題的可能方案可以這樣來描述,在概念上,通過描述找到與包或包的部分相匹配的一個(gè)或多個(gè)規(guī)則的請求,“查找請求”,如何導(dǎo)致找到一個(gè)或多個(gè)匹配規(guī)則。
[0034]圖1是包括搜索處理器可以被采用的網(wǎng)絡(luò)單元的典型的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的方框圖100。網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)包括互聯(lián)網(wǎng)核心102,其包括多個(gè)核心路由器104a-h。多個(gè)核心路由器104a-h中的每個(gè)與多個(gè)核心路由器104a-h中的至少另一個(gè)相連接。在互聯(lián)網(wǎng)核心102的邊緣上的核心路由器104a-h,例如核心路由器104b-e和104h,與至少一個(gè)邊緣路由器106a_f相耦合。每個(gè)邊緣路由器106a_f被耦合至至少一個(gè)接入路由器108a-e。
[0035]核心路由器104a_104h被配置為在互聯(lián)網(wǎng)核心102或互聯(lián)網(wǎng)骨干網(wǎng)中操作。核心路由器104a-104h被配置為支持互聯(lián)網(wǎng)核心102的多個(gè)電信接口,并且被進(jìn)一步配置為按照多個(gè)電信協(xié)議中每個(gè)協(xié)議的全速來轉(zhuǎn)發(fā)包。
[0036]邊緣路由器106a_f被放置在互聯(lián)網(wǎng)核心102的邊緣。邊緣路由器106a_f將在互聯(lián)網(wǎng)核心102外的接入路由器108a-e和在互聯(lián)網(wǎng)核心102中的核心路由器104a_h相橋連。邊緣路由器106a_f可以被配置為采用橋連協(xié)議以從接入路由器108a-e向核心路由器104a_h轉(zhuǎn)發(fā)包,反之亦然。
[0037]接入路由器108a-e可以是由諸如家庭用戶或辦公用戶的端用戶所使用的路由器,以連接至邊緣路由器106a_f中的一個(gè)路由器,邊緣路由器反過來通過連接至核心路由器104a-h來連接至互聯(lián)網(wǎng)核心102。如此,邊緣路由器106a-f可以經(jīng)由一個(gè)或多個(gè)邊緣路由器106a-f和一個(gè)或多個(gè)相互連接的核心路由器104a-104h連接至任何其它的邊緣路由器 106a_f。
[0038]本文中所描述的搜索處理器可以存在于任何核心路由器104a_h、邊緣路由器106a_f或接入路由器108a_e中。本文中所描述的在每個(gè)這些路由器內(nèi)的搜索處理器被配置為基于一組規(guī)則分析互聯(lián)網(wǎng)協(xié)議(IP)包并且沿著適當(dāng)?shù)木W(wǎng)絡(luò)路徑轉(zhuǎn)發(fā)IP包。
[0039]圖2A是圖示采用搜索處理器202的邊緣路由器106的示例實(shí)施例的方框圖。諸如服務(wù)供應(yīng)商邊緣路由器的邊緣路由器106包括搜索處理器202、第一主處理器204和第二主處理器214。第一主處理器的示例包括處理器,諸如網(wǎng)絡(luò)處理器單元(NPU)、定制的專用集成電路(ASIC)、Cavium Inc.的OCTEON*處理器等。第一主處理器204被配置作為進(jìn)入主處理器。第一主處理器204接收來自網(wǎng)絡(luò)的進(jìn)入包206。一旦接收到包,第一主處理器204使用Interlaken接口 208向搜索處理器202轉(zhuǎn)發(fā)包括進(jìn)入包206的包頭或字段的查找請求。然后搜索處理器202使用采用多個(gè)規(guī)則的多個(gè)規(guī)則處理引擎來處理包頭,以確定在網(wǎng)絡(luò)上轉(zhuǎn)發(fā)進(jìn)入包206的路徑。搜索處理器202在處理查找請求與包頭之后,向第一主處理器204轉(zhuǎn)發(fā)路徑信息,第一主處理器204向在網(wǎng)絡(luò)中的另一個(gè)網(wǎng)絡(luò)單元轉(zhuǎn)發(fā)所處理的進(jìn)入包210。
[0040]同樣地,第二處理器214是外出主處理器。第二主處理器的示例包括處理器,諸如NPU、定制的ASIC、OCTEON處理器等。第二主處理器214接收向網(wǎng)絡(luò)發(fā)送的外出包216。第二主處理器214在第二 Interlaken接口 218上向搜索處理器202轉(zhuǎn)發(fā)具有來自外出包216的包頭或字段的查找請求。然后搜索處理器202使用采用多個(gè)規(guī)則的多個(gè)規(guī)則處理引擎來處理包頭,以確定在網(wǎng)絡(luò)上轉(zhuǎn)發(fā)包的路徑。搜索處理器202向在網(wǎng)絡(luò)中的另一個(gè)網(wǎng)絡(luò)單元轉(zhuǎn)發(fā)來自主處理器214的所處理的進(jìn)入包220。
[0041]圖2B是圖示了被配置為采用搜索處理器202的邊緣路由器106的另一個(gè)示例實(shí)施例的方框圖220。在這個(gè)實(shí)施例中,邊緣路由器106包括多個(gè)搜索處理器202,例如第一搜索處理器202a和第二搜索處理器202b。搜索處理器202a_b相應(yīng)地使用多個(gè)Interlaken接口 226a-b被耦合至包處理器228。包處理器228的示例包括處理器,諸如NPU、ASIC等。多個(gè)搜索處理器202a-b可以在單個(gè)Interlaken接口上被耦合至包處理器228。邊緣路由器106在包處理器228處接收具有預(yù)處理的包222的包頭或字段的查找請求。包處理器228向搜索處理器202a-b中的一個(gè)發(fā)送查找請求。搜索處理器202a或202b基于一組規(guī)則和在包頭內(nèi)的數(shù)據(jù)對于預(yù)處理包222搜索針對適當(dāng)?shù)霓D(zhuǎn)發(fā)目標(biāo)的包頭,并且對包處理器228所產(chǎn)生的查找請求做出響應(yīng)。然后包處理器228基于對來自搜索處理器202a或202b的對于查找請求的響應(yīng)向網(wǎng)絡(luò)發(fā)送后已處理包224。
[0042]圖2C是圖示了采用搜索處理器202的接入路由器246的示例實(shí)施例的方框圖240。接入路由器246在進(jìn)入包處理器242處接收輸入包250。進(jìn)入包處理器242的示例包括OCTEON處理器等。然后進(jìn)入包處理器242向搜索處理器202轉(zhuǎn)發(fā)具有輸入包250的包頭的查找請求。搜索處理器202基于在查找請求中的包頭確定用于輸入包250的轉(zhuǎn)發(fā)路徑,并且在Interlaken接口 252上向外出包處理器244對查找請求做出響應(yīng)。然后外出包處理器244向網(wǎng)絡(luò)輸出轉(zhuǎn)發(fā)的包248。
[0043]圖3示出搜索處理器202的示例架構(gòu)。除了別的之外,處理器包括接口(例如,Interlaken LA接口)302以接收來自主處理器(例如,204、214、228、242或244)的請求,并且向主處理器發(fā)送響應(yīng)。接口 302被耦合至查找前端(LUF)處理器304,其被配置為對從或向接口 302傳送的請求和響應(yīng)進(jìn)行處理、調(diào)度和排序。根據(jù)示例實(shí)施例,每個(gè)LUF處理器被耦合至超級簇310中的一個(gè)。每個(gè)超級簇310包括一個(gè)或多個(gè)存儲(chǔ)器簇或搜索簇320。每個(gè)存儲(chǔ)器簇或搜索簇320包括查找引擎(LUE)部件322和相應(yīng)的片上存儲(chǔ)器(OCM)部件324。存儲(chǔ)器簇或搜索簇可以被看作是包括LUE部件322和相應(yīng)的OCM部件324的搜索塊。LUE部件322包括處理引擎,其被配置為給定請求,在相應(yīng)的OCM部件324中搜索與用于包分類的鑰匙相匹配的規(guī)則。LUE部件322還可以包括接口邏輯或引擎,被配置為管理在存儲(chǔ)器簇320內(nèi)的不同部件之間數(shù)據(jù)的傳輸以及與其它簇的傳送。在給定的超級簇310中,存儲(chǔ)器簇320通過接口設(shè)備312 (例如,交叉開關(guān)(XBAR))被耦合。XBAR312可以被看作是智能組織,實(shí)現(xiàn)LUF處理器304至不同的存儲(chǔ)器簇320的耦合以及在相同的超級簇310中不同的存儲(chǔ)器簇320之間的耦合。搜索處理器202可以包括一個(gè)或多個(gè)超級簇310。查找簇復(fù)合體(LCC) 330定義在搜索處理器202中的超級簇310的組。
[0044]搜索處理器202還可以包括存儲(chǔ)器遍歷器聚合器(MWA) 303和至少一個(gè)存儲(chǔ)塊控制器(MBC)305以協(xié)調(diào)來自/到位于處理器之外的存儲(chǔ)器的讀和寫的操作。搜索處理器202可以進(jìn)一步包括一個(gè)或多個(gè)桶后處理器(BPP) 307以搜索與用于包分類的鑰匙相匹配的規(guī)貝U,其被存儲(chǔ)在為于搜索處理器202之外的存儲(chǔ)器中。
[0045]圖4是圖示了由軟件編譯器將規(guī)則加載至OCM部件中的示例實(shí)施例的方框圖400。根據(jù)示例實(shí)施例,軟件編譯器404是由主處理器或控制面處理器執(zhí)行以將規(guī)則存儲(chǔ)到搜索處理器202中的軟件。特別地,規(guī)則被加載至在搜索處理器202中的至少一個(gè)存儲(chǔ)器簇或搜索塊320的至少一個(gè)OCM部件324。根據(jù)至少一個(gè)示例實(shí)施例,軟件編譯器404以便于后面所存儲(chǔ)的規(guī)則的搜索的方式,在存儲(chǔ)規(guī)則中使用多數(shù)量據(jù)結(jié)構(gòu)。軟件編譯器404接收規(guī)則組402,指示最大樹深度406的(多個(gè))參數(shù)和指示子樹的數(shù)量408的(多個(gè))參數(shù)。根據(jù)至少一個(gè)示例實(shí)施例,軟件編譯器404生成一組格式化的編譯的規(guī)則作為鏈接的數(shù)據(jù)結(jié)構(gòu),在下文中被稱為規(guī)則編譯的數(shù)據(jù)結(jié)構(gòu)(RCDS)410。RCDS被存儲(chǔ)于在搜索處理器202中的至少一個(gè)存儲(chǔ)器簇或搜索塊320的至少一個(gè)OCM部件324。RCDS410包括至少一個(gè)樹412。每個(gè)樹412包括節(jié)點(diǎn)411a-411c、葉節(jié)點(diǎn)413a_413b和根節(jié)點(diǎn)432。樹412的葉節(jié)點(diǎn)413a_413b包括或指向一組桶414的一個(gè)。桶414可以被看作是桶條目的序列或陣列,每個(gè)桶條目存儲(chǔ)規(guī)則塊420的指針或地址,在下文中被稱為塊指針418。桶可以例如使用表、鏈接的列表或足夠用于存儲(chǔ)一系列條目的本領(lǐng)域中已知的任何其他數(shù)據(jù)結(jié)構(gòu)來實(shí)施。規(guī)則塊420基本上是描述或表示一個(gè)或多個(gè)規(guī)則的數(shù)據(jù)塊。換句話說,存儲(chǔ)在搜索處理器202中的一個(gè)或多個(gè)OCM部件324中的一組規(guī)則416包括一個(gè)或多個(gè)規(guī)則塊420。規(guī)則塊420可以是連續(xù)的一組規(guī)則或遍及存儲(chǔ)器的分散的一組規(guī)則,由多個(gè)指針來組織或通過重新采集分散的規(guī)則塊420 (例如,使用散列函數(shù))來組織。
[0046]在圖4中描述的RCDS410圖示在搜索引擎202中存儲(chǔ)規(guī)則的示例方法。本領(lǐng)域中的技術(shù)人員應(yīng)理解,使用嵌套數(shù)據(jù)結(jié)構(gòu)的其它方法可以被采用。例如,具有條目包括塊指針418的表可以被用于替代樹412。在設(shè)計(jì)用于存儲(chǔ)和接入被用于將數(shù)據(jù)包進(jìn)行分類的規(guī)則的規(guī)則編譯的數(shù)據(jù)結(jié)構(gòu)時(shí),要考慮的一個(gè)因素是實(shí)現(xiàn)這些規(guī)則的有效和迅速的搜索或接入。
[0047]一旦規(guī)則被存儲(chǔ)在搜索處理器202中,然后規(guī)則可以被接入以對數(shù)據(jù)包進(jìn)行分類。當(dāng)主處理器接收到數(shù)據(jù)包時(shí),主處理器向搜索處理器202轉(zhuǎn)發(fā)具有來自數(shù)據(jù)包的包頭或一個(gè)或多個(gè)字段的查找請求。在搜索處理器一側(cè),處理接收的查找請求的過程包括:
[0048]I)搜索處理器接收來自主處理器的查找請求。根據(jù)至少一個(gè)示例實(shí)施例,從主處理器接收的查找請求包括包頭和組標(biāo)識(shí)符(GID)。
[0049]2) GID在全局定義/描述表(⑶T )中指示條目。每個(gè)⑶T條目包括η個(gè)表標(biāo)識(shí)符(TID)、包頭索引(PHIDX)和鑰匙格式表索引(KFTIDX)。
[0050]3)每個(gè)TID在樹位置表(TLT)中指示條目。每個(gè)TLT條目識(shí)別哪個(gè)查找引擎或處理器將尋找一個(gè)或多個(gè)匹配規(guī)則。以這種方式,每個(gè)TID指定誰將尋找一個(gè)或多個(gè)匹配規(guī)則以及在哪里尋找一個(gè)或多個(gè)匹配規(guī)則。
[0051]4)每個(gè)TID還在樹接入表(TAT)中指示條目。TAT是在在超級簇中被組合在一起的多個(gè)查找引擎尋找一個(gè)或多個(gè)匹配規(guī)則的背景中使用。每個(gè)TAT條目在規(guī)則組的存儲(chǔ)器中提供起始地址,或指向規(guī)則的指針,被稱為規(guī)則表或樹。術(shù)語規(guī)則表或規(guī)則樹,或簡單地表或樹,在下文中被可交換地使用。TID識(shí)別在哪個(gè)規(guī)則組或集中尋找一個(gè)或多個(gè)匹配規(guī)則。
[0052]5) PHIDX在包頭表(PHT)中指示條目。在PHT中的每個(gè)條目描述如何從包頭中抽取η個(gè)鑰匙。
[0053]6) KFTIDX在鑰匙格式表(FKT)中指示條目。在KFT中的每個(gè)條目提供指令用于從包頭中抽取的η個(gè)鑰匙中的每個(gè)鑰匙中抽取一個(gè)或多個(gè)字段,例如,包頭的部分。
[0054]7)抽取的字段中的每個(gè)字段和TID中的每個(gè)一起被用于查找規(guī)則的子組。每個(gè)子組包含可以可能與抽取的字段中的每個(gè)字段相匹配的規(guī)則。
[0055]8)然后每個(gè)子組的每個(gè)規(guī)則和抽取的字段進(jìn)行比較。作為響應(yīng)或查找響應(yīng),匹配的規(guī)則被提供。
[0056]如上文所述,查找請求和它的列舉階段的處理被提供用于圖示的目的。本領(lǐng)域的技術(shù)人員應(yīng)理解,針對被包括在查找請求中的不同名稱以及數(shù)據(jù)的不同格式化可以被采用。本領(lǐng)域的技術(shù)人員還應(yīng)理解,被包括在查找請求中的數(shù)據(jù)的至少部分取決于被用于在存儲(chǔ)器簇或搜索簇320中存儲(chǔ)規(guī)則的RCDS的設(shè)計(jì)。
[0057]圖5示出圖示根據(jù)至少一個(gè)示例實(shí)施例的存儲(chǔ)器簇或搜索簇320的架構(gòu)的方框圖。存儲(chǔ)器簇或搜索簇320包括被配置為存儲(chǔ)和提供接入到與RCDS410相關(guān)聯(lián)的數(shù)據(jù)的片上存儲(chǔ)器(OCM)部件324。OCM部件324包括一個(gè)或多個(gè)存儲(chǔ)體。在不同的存儲(chǔ)體之間與RCDS410相關(guān)聯(lián)的數(shù)據(jù)的分布可以以不同的方式完成。例如,不同的數(shù)據(jù)結(jié)構(gòu),例如(多個(gè))樹數(shù)據(jù)結(jié)構(gòu)、(多個(gè))桶數(shù)據(jù)結(jié)構(gòu)和(多個(gè))規(guī)則塊數(shù)據(jù)結(jié)構(gòu),可以被存儲(chǔ)在不同的存儲(chǔ)體中。備選地,單個(gè)存儲(chǔ)體可以存儲(chǔ)與多于一個(gè)的數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)的數(shù)據(jù)。例如,給定的存儲(chǔ)體可以存儲(chǔ)一部分的樹數(shù)據(jù)結(jié)構(gòu)、一部分的桶數(shù)據(jù)結(jié)構(gòu)和一部分的規(guī)則塊數(shù)據(jù)結(jié)構(gòu)。
[0058]存儲(chǔ)器簇或搜索簇320包括多個(gè)處理引擎510,處理引擎510包括例如,一個(gè)或多個(gè)樹遍歷引擎(TWE) 512、一個(gè)或多個(gè)桶遍歷引擎(BWE) 514、多個(gè)規(guī)則遍歷引擎(RWE) 516和多個(gè)規(guī)則匹配引擎(RME) 518。根據(jù)示例實(shí)施,存儲(chǔ)器簇或搜索簇320包括8個(gè)BWE514、8個(gè)相應(yīng)的RWE516和3個(gè)RME518。本領(lǐng)域的技術(shù)人員應(yīng)理解,存儲(chǔ)器簇或搜索簇320可以被設(shè)計(jì)成包括不同數(shù)量的BWE514、RWE516或RME518。根據(jù)至少一個(gè)示例實(shí)施例,BWE514和RWE516可以被組合成執(zhí)行桶和規(guī)則塊數(shù)據(jù)搜索的單個(gè)處理引擎。根據(jù)示例實(shí)施例,RWE516和RME518可以是獨(dú)立的處理引擎。根據(jù)另一個(gè)示例實(shí)施例,規(guī)則塊420的接入和取回可以由還執(zhí)行規(guī)則匹配的RME518執(zhí)行。換句話說,RME和RWE可以是相同的處理器。
[0059]當(dāng)搜索處理器202從主處理器接收到被稱為查找請求的請求時(shí),LUF處理器304將查找請求處理成一個(gè)或多個(gè)鑰匙搜索請求,每個(gè)鑰匙搜索請求具有鑰匙502。然后LUF處理器304向存儲(chǔ)器簇或搜索簇320調(diào)度鑰匙請求。搜索簇320在TWE512處接收來自LUF處理器304的鑰匙502。鑰匙502表示例如從包頭抽取的字段。特別地,如果RCDS410包括多個(gè)樹,TWE512可以進(jìn)一步接收將被穿過的特定樹412的指示。TWE512被配置為遍歷或穿過存儲(chǔ)在OCM部件324中的樹412。在對樹遍歷的響應(yīng)中,指向桶的指針直接地或通過TWE512從OCM部件324被傳到BWE514。BWE514被配置為在OCM部件324中遍歷或搜索桶414。在對桶搜索的響應(yīng)中,桶條目被從OCM部件324發(fā)送給BWE514,BWE514向相應(yīng)的RWE516傳遞桶條目。備選地,桶條目可以從OCM部件324直接被發(fā)送給RWE516。在另一個(gè)示例中,RWE516可以是相應(yīng)的BWE514的部分或部件。RME518被配置為確定包括在鑰匙中的包頭字段是否匹配與由在被提供給RWE516的一個(gè)桶條目中的指針418所指向的規(guī)則塊數(shù)據(jù)420相關(guān)聯(lián)的任何規(guī)則。
[0060]本領(lǐng)域中的技術(shù)人員應(yīng)理解,RCDS410可以基于包括至少第一類型數(shù)據(jù)結(jié)構(gòu)和第二類型數(shù)據(jù)結(jié)構(gòu)的不同嵌套數(shù)據(jù)結(jié)構(gòu)來實(shí)施。第一類型數(shù)據(jù)結(jié)構(gòu)可以是樹、表、鏈接的列表等。類似地,第二類型數(shù)據(jù)結(jié)構(gòu)也可以是樹、表、鏈接的列表等。例如,一個(gè)或多個(gè)表可以被采用以替代在圖4中所示出的樹412。此外,替代在RCDS410中的桶414,諸如鏈接的列表、樹、表等不同的數(shù)據(jù)結(jié)構(gòu)可以被使用。像這樣,TWE512是被配置為在嵌套的數(shù)據(jù)結(jié)構(gòu)中搜索第一類型數(shù)據(jù)結(jié)構(gòu)的引擎,例如,基于鑰匙搜索相應(yīng)的第一條目。第一條目,例如指示在嵌套的數(shù)據(jù)結(jié)構(gòu)中第二類型數(shù)據(jù)結(jié)構(gòu)(例如,桶)的存儲(chǔ)器位置。通常,BWE514表示被配置為搜索嵌套的數(shù)據(jù)結(jié)構(gòu)的第二類型數(shù)據(jù)結(jié)構(gòu)的引擎。
[0061]根據(jù)至少一個(gè)示例實(shí)施例,存儲(chǔ)器簇或搜索簇320還包括調(diào)度器或仲裁器模塊520、OCM存儲(chǔ)體槽(OBS)模塊530以及累加器計(jì)分板(ACCS)模塊540。存儲(chǔ)器簇或搜索簇320可以進(jìn)一步包括本文中未描述的其它部件或模塊。調(diào)度器或仲裁器模塊520,還被稱為規(guī)則遍歷簇仲裁器RWCARB,被配置為調(diào)度由多個(gè)RME514或BWE516啟動(dòng)的規(guī)則匹配線程的執(zhí)行。規(guī)則匹配線程由多個(gè)RME518處理以確定包括在鑰匙中的字段是否匹配與規(guī)則塊數(shù)據(jù)420 (由在被提供給RWE516或BWE514的桶條目中的指針418所指向)相關(guān)聯(lián)的任何規(guī)貝U。根據(jù)至少一個(gè)示例實(shí)施例,在規(guī)則匹配線程的調(diào)度執(zhí)行中,調(diào)度器或仲裁器模塊520被配置為最小化與規(guī)則匹配線程的執(zhí)行相關(guān)聯(lián)的處理時(shí)間。
[0062]來自TWE512、BWE514或RWE516的RCDS數(shù)據(jù)接入請求被發(fā)送給OBS模塊530。根據(jù)至少一個(gè)示例實(shí)施例,OBS模塊530通過多個(gè)邏輯或接入端口被耦合至在OCM部件324中的存儲(chǔ)體。接入端口號(hào)在給定的時(shí)鐘周期內(nèi)約束可能被執(zhí)行的數(shù)據(jù)接入請求的數(shù)量或可能被接入的存儲(chǔ)體的數(shù)量。OBS模塊530被配置為確定數(shù)據(jù)接入請求在每個(gè)時(shí)鐘周期內(nèi)被轉(zhuǎn)發(fā)給OCM部件324的存儲(chǔ)體。OBS模塊530嘗試最大化OCM的使用,同時(shí)避免存儲(chǔ)體沖突以及提供針對數(shù)據(jù)接入請求的低延時(shí)。例如,當(dāng)在給定的時(shí)鐘周期內(nèi)嘗試通過多于一個(gè)的數(shù)據(jù)接入請求接入存儲(chǔ)體時(shí),存儲(chǔ)體沖突發(fā)生。低延時(shí)一般通過防止接入請求在OBS模塊530中在被轉(zhuǎn)發(fā)給相應(yīng)的存儲(chǔ)體之前等待很長時(shí)間來實(shí)現(xiàn)。
[0063]根據(jù)至少一個(gè)示例實(shí)施例,ACCS540被配置為管理由RME518生成的規(guī)則匹配線程的結(jié)果以及確定最終結(jié)果用于向主處理器(例如,204、214、228、242或244)報(bào)告。ACCS540還被配置為報(bào)告最終結(jié)果被確定給相應(yīng)的BWE514或RWE516。
[0064]圖6A-6C是圖示了在搜索簇或存儲(chǔ)器簇320中處理與處理鑰匙搜索線程的不同階段相關(guān)聯(lián)的流的方框圖。LUF處理器304向存儲(chǔ)器簇或搜索簇320發(fā)送鑰匙搜索請求502。鑰匙搜索請求502包括鑰匙。鑰匙表示例如從包頭抽取的字段。特別地,如果RCDS410包括多個(gè)樹,鑰匙搜索請求可以進(jìn)一步包括將要搜索的特定樹412的指示。
[0065]如圖6A所示,根據(jù)至少一個(gè)示例實(shí)施例,鑰匙搜索線程在TWE512處開始。從LUF處理器304接收鑰匙搜索請求的TWE通過OBS模塊530向OCM部件324發(fā)送樹遍歷請求610。樹遍歷請求是讀取與存儲(chǔ)在OCM部件324中的特定樹相關(guān)聯(lián)的數(shù)據(jù)的請求。根據(jù)示例實(shí)施例,樹遍歷請求包括在特定樹412中穿過的路徑的指示。這個(gè)指示例如在鑰匙內(nèi)被定義。在OCM部件324中,與指示的路徑相關(guān)聯(lián)的數(shù)據(jù)被讀取。路徑可能在葉節(jié)點(diǎn)(例如,413a或413b)結(jié)束,或在到達(dá)葉節(jié)點(diǎn)之前結(jié)束(例如,在諸如411a、411b或411c的內(nèi)部節(jié)點(diǎn))。樹412的葉節(jié)點(diǎn)(413a-413b)通常包括到桶414的指針或地址和指示在相應(yīng)的桶中桶條目(BE)的數(shù)量的值。但是,葉節(jié)點(diǎn)(413a-413b)可以不包括關(guān)于桶的信息,例如,不包括地址和數(shù)量的值。在穿過的路徑在包括涉及桶的信息的葉節(jié)點(diǎn)(例如,413a或413b)結(jié)束的情況下,葉節(jié)點(diǎn)響應(yīng)614被發(fā)送回TWE512。葉節(jié)點(diǎn)響應(yīng)614包括到桶的指針(或其地址)和數(shù)量的值。然后桶指針和數(shù)量的值從TWE512被傳618給BWE514。備選地,葉節(jié)點(diǎn)響應(yīng)614可以被直接地發(fā)送給來自O(shè)CM部件324的相應(yīng)的BWE514。
[0066]圖6B是圖示了處理與桶遍歷線程相關(guān)聯(lián)的流的方框圖。BWE514發(fā)出桶數(shù)據(jù)請求620以接入在OCM部件324中的桶414并且接收相應(yīng)的響應(yīng)。桶數(shù)據(jù)請求620包括,例如,桶指針或地址和在葉節(jié)點(diǎn)響應(yīng)614中提供的數(shù)量的值。桶數(shù)據(jù)請求620通過0BS530從BWE514被發(fā)送給OCM部件324。由桶地址或指針和條目的相應(yīng)的數(shù)量所指示的桶條目被取回,并且在桶響應(yīng)624中從OCM部件324發(fā)送給BWE514。然后桶條目通過BWE514被提交628給與BWE514相關(guān)聯(lián)的RWE516。備選地,桶響應(yīng)624被直接地從OCM部件324發(fā)送給相應(yīng)的RWE516。RWE516還可以作為BWE514的部件被實(shí)施。桶響應(yīng)624包括一個(gè)或多個(gè)桶條目。
[0067]桶響應(yīng)624可以包含,例如8個(gè)桶條目。8個(gè)桶條目包括,例如,具有3個(gè)桶條目的一個(gè)束和具有5個(gè)條目的另一個(gè)束。備選地,桶響應(yīng)624可以包含具有8個(gè)桶條目的單個(gè)束。根據(jù)一個(gè)示例場景,束已經(jīng)在葉節(jié)點(diǎn)處被定義。作為另一個(gè)示例場景,束可以由BWE514定義。搜索引擎軟件,例如,可以向BWE或樹發(fā)送定義束的配置信息。當(dāng)桶條目的束被提交給RWE516時(shí),BWE514通知629ACCS540束中的桶條目的數(shù)量。根據(jù)示例實(shí)施例,桶條目的束包括一個(gè)到八個(gè)條目。根據(jù)另一個(gè)示例實(shí)施例,桶條目的束包括一個(gè)到十六個(gè)桶條目。
[0068]圖6C是圖示了啟動(dòng)和處理規(guī)則匹配線程的流的流程圖。RWE516被配置為將從相應(yīng)的BWE514接收的桶條目的束轉(zhuǎn)發(fā)630給調(diào)度器或仲裁器模塊520。每個(gè)桶條目包括指向描述規(guī)則的規(guī)則塊420的規(guī)則塊指針418。與桶條目的束相關(guān)聯(lián)的規(guī)則將基于來自鑰匙的一個(gè)或多個(gè)字段通過RME518進(jìn)行評估,以檢查鑰匙字段是否滿足與桶條目的束相關(guān)聯(lián)的任何規(guī)則。像這樣,從RWE516或BWE514向調(diào)度器或仲裁器模塊520發(fā)送桶條目的束表示了規(guī)則匹配線程束的指示。
[0069]當(dāng)BWE514接收桶條目時(shí),鑰匙或鑰匙的信息被發(fā)送給可接入RME518的存儲(chǔ)器或緩存。鑰匙或鑰匙的信息,例如,通過BWE514的數(shù)目或索引來指示。當(dāng)規(guī)則塊420到達(dá)RME518用于處理時(shí),和規(guī)則塊一起發(fā)送的背景信息告訴RME518規(guī)則塊420是針對哪個(gè)BWE514的。RME518使用這個(gè)BWE數(shù)量或索引以通知ACCS540 “匹配”或“不匹配”,并且還從緩存其取得鑰匙用于與規(guī)則塊420進(jìn)行比較。
[0070]調(diào)度器或仲裁器模塊520被配置為從不同的RWE516或BWE514接收桶條目的束,并且調(diào)度相應(yīng)的規(guī)則匹配線程用于通過RME518進(jìn)行處理。調(diào)度器或仲裁器模塊520向RME518分配并且傳遞或發(fā)送規(guī)則匹配線程。根據(jù)至少一個(gè)示例實(shí)施,調(diào)度器或仲裁器模塊520能夠在每個(gè)時(shí)鐘周期發(fā)送多于一個(gè)的規(guī)則匹配線程。在向所分配的RME518傳遞規(guī)則匹配線程時(shí),調(diào)度器或仲裁器模塊520被配置為通過0BS530向OCM部件324發(fā)送相應(yīng)的規(guī)則塊請求634。根據(jù)至少一個(gè)示例實(shí)施例,在發(fā)送規(guī)則塊請求634之后,調(diào)度器或仲裁器模塊520向相應(yīng)的RWE514發(fā)送通知631。當(dāng)在束內(nèi)的所有規(guī)則匹配線程已通過調(diào)度器或仲裁器 520 發(fā)送時(shí),RWE516 通知(633)BWE514。從 RWE516 到 BWE514 的通知 633 允許 BWE514向RWE516提交與另一個(gè)桶線程或請求相關(guān)聯(lián)的更多的桶條目。當(dāng)RWE516向調(diào)度器或仲裁器模塊520提交給定的桶條目的束時(shí),同一個(gè)RWE516可以不向調(diào)度器或仲裁器模塊520提交另一個(gè)束,直到對應(yīng)于給定的束的所有相應(yīng)的規(guī)則塊請求632被調(diào)度器或仲裁器520處理并且發(fā)送給模塊0BS530。從調(diào)度器520向0BS530發(fā)送的規(guī)則塊請求632包括,例如,要被讀取的數(shù)據(jù)的起始地址和要被讀取的數(shù)據(jù)的數(shù)量的指示,例如,多個(gè)連續(xù)的地址。起始地址和數(shù)據(jù)的數(shù)量的指示從相應(yīng)的桶條目獲得,并且由RWE516傳遞給調(diào)度器520。
[0071]規(guī)則塊請求632包括來自相應(yīng)的桶條目的規(guī)則塊指針418,引用相應(yīng)的規(guī)則塊420。規(guī)則塊請求632通過0BS530轉(zhuǎn)發(fā)給OCM部件324。0BS530可以作為多個(gè)子請求轉(zhuǎn)發(fā)規(guī)則塊請求632,每個(gè)用于讀取單個(gè)存儲(chǔ)器線,例如,在OCM部件324處,由與規(guī)則匹配線程相關(guān)聯(lián)的規(guī)則塊指針418所指示的規(guī)則塊420被取回,并且然后轉(zhuǎn)發(fā)634給通過調(diào)度器或仲裁器模塊520所分配給的相應(yīng)的RME518。分配的RME518檢查通過接收到的規(guī)則塊420所表示的規(guī)則是否通過在鑰匙中的(多個(gè))字段來滿足。分配的RME518處理規(guī)則塊420并且向ACCS540報(bào)告“匹配”或“不匹配”結(jié)果。萬一在規(guī)則匹配線程的處理期間發(fā)生了錯(cuò)誤,分配的RME518還可以向ACCS540報(bào)告“錯(cuò)誤”。在處理規(guī)則塊420并且將結(jié)果報(bào)告(636)給ACCS540之后,分配的RME還可以向調(diào)度器或仲裁器模塊520發(fā)送通知635,指示規(guī)則匹配線程被處理了。
[0072]與相應(yīng)的規(guī)則塊請求632相關(guān)聯(lián)的規(guī)則塊420被完全地提交給RME518,并且不能被分布在多于一個(gè)的RME518之間。根據(jù)至少一個(gè)場景,提交給具體的RME518的數(shù)據(jù)塊的交織是不被允許的。與數(shù)據(jù)塊420相關(guān)聯(lián)的數(shù)據(jù)的數(shù)量可以從一個(gè)數(shù)據(jù)塊向另一個(gè)改變。由RME518處理規(guī)則匹配線程的時(shí)間也基于相應(yīng)的規(guī)則塊420的尺寸改變。例如,具有更多數(shù)據(jù)線的數(shù)據(jù)塊420由RME518處理時(shí)耗費(fèi)更長的時(shí)間。根據(jù)至少一個(gè)場景,在存儲(chǔ)器簇或搜索簇320中的RME518具有等價(jià)的功能和處理規(guī)則匹配線程的相同的能力。換句話說,RME518具有相同處理能力。
[0073]ACCS被配置為收集針對在相應(yīng)的束內(nèi)所有規(guī)則匹配線程的響應(yīng)636并且確定針對束的最終結(jié)果。在確定最終結(jié)果之后,ACCS540被配置為向相應(yīng)的BWE514發(fā)送通知637,指示束已被充分地處理,并且包括最終結(jié)果,例如,“錯(cuò)誤”、“匹配”或“不匹配”。在接收到響應(yīng)637之后,BWE514決定如何繼續(xù)。如果響應(yīng)指示“不匹配”,那么BWE514啟動(dòng)另一個(gè)桶請求620以從OCM部件324取得桶條目。如果響應(yīng)指示“錯(cuò)誤”,BWE514將停止讀取額外的桶條目并且向LUF返回“不匹配”。這個(gè)處理繼續(xù),直到“匹配”被由RME518找到,“錯(cuò)誤”通過RME518被指示,或BWE514已耗盡在葉節(jié)點(diǎn)(例如,413a和413b)中指示的桶條目的數(shù)量。也就是說,如果在一些點(diǎn)BWE514接收指示“匹配”的響應(yīng),它停止啟動(dòng)新的規(guī)則塊搜索并且等待任何未解決的規(guī)則匹配線程以完成處理。如果響應(yīng)指示“不匹配”,BWE514繼續(xù)讀取桶條目并且啟動(dòng)更多規(guī)則搜索。
[0074]如果在一些點(diǎn)BWE514接收指示“匹配”的響應(yīng),它停止啟動(dòng)新的規(guī)則搜索并等待任何未解決的規(guī)則搜索以完成處理。然后,BWE514提供,或使得ACCS540通過LUF處理器304向主處理器提供響應(yīng),指示在(多個(gè))鑰匙字段和取回的(多個(gè))規(guī)則塊中的一個(gè)或多個(gè)規(guī)則之間是“匹配”的。如果BWE514在沒有接收任何“匹配”響應(yīng)時(shí)耗盡在桶中的所有桶條目,BWE514通過LUF處理器304向主處理器報(bào)告或?qū)е聢?bào)告,指示不匹配。
[0075]通知635允許調(diào)度器或仲裁器模塊520保持跟蹤RME518的有效性狀態(tài)。根據(jù)至少一個(gè)示例實(shí)施例,調(diào)度器520維持與RME518相關(guān)聯(lián)的緩存器的狀態(tài)的指示。這些指示可以以在下文中被稱為信用的存儲(chǔ)器單元的術(shù)語來描述。當(dāng)相應(yīng)的規(guī)則匹配線程被發(fā)向給定的RME518時(shí),給定指示給定的RME518的存儲(chǔ)器容量的多個(gè)信用C,調(diào)度器520被配置為通過多個(gè)信用η衰減C,表示規(guī)則塊420的尺寸。在這個(gè)階段,給定的RME的存儲(chǔ)器容量是C_n。當(dāng)給定的RME518已處理完規(guī)則匹配線程,它在通知635中將信用η的數(shù)量發(fā)信號(hào)返回給調(diào)度器520,并且調(diào)度器520增加信用η。
[0076]圖7Α和7Β是圖示根據(jù)至少一個(gè)示例實(shí)施例在調(diào)度器或仲裁器520中規(guī)則匹配線程725的束的調(diào)度的方框圖。如圖7Α所示,在規(guī)則匹配線程的每個(gè)束720中的規(guī)則匹配線程725被分配優(yōu)先級的值723。給定的規(guī)則匹配線程725的優(yōu)先級的值723指示相比于同一束中的其它線程,給定的規(guī)則匹配線程725的相對的優(yōu)先級。在確定針對束720的最終結(jié)果時(shí),在ACCS540處,相應(yīng)的規(guī)則匹配線程725的優(yōu)先級的值723被考慮在內(nèi)。例如,最終結(jié)果可以被確定為在束中的規(guī)則匹配線程之間具有最高優(yōu)先級的給定的規(guī)則匹配線程的匹配結(jié)果,匹配結(jié)果等于“匹配”或“錯(cuò)誤”。在圖7Α中所示出的實(shí)施中,優(yōu)先級值723越低,相應(yīng)的規(guī)則匹配線程725的優(yōu)先級越高。例如,具有優(yōu)先級的值為O的規(guī)則匹配線程在束720中具有最高的優(yōu)先級。本領(lǐng)域中的技術(shù)人員應(yīng)理解,其他的實(shí)施可以被采用,例如更高的優(yōu)先級的值指示更高的優(yōu)先級。
[0077]如圖7Α所示,在每個(gè)相應(yīng)的束720中的規(guī)則匹配線程725被分布成規(guī)則匹配線程的多個(gè)子組728。例如,如圖7Α所示,每個(gè)子組728包括兩個(gè)規(guī)則匹配線程。備選地,每個(gè)子組728可以包括四個(gè)規(guī)則匹配線程725。根據(jù)至少一個(gè)示例場景,在每個(gè)束720中的規(guī)則匹配線程725可以以如下的形式在相應(yīng)的子組728之間被分布,即每個(gè)子組728包括來自相同的束720的具有高的和相對低的優(yōu)先級的規(guī)則匹配線程725。例如,“對O”包括具有優(yōu)先級的值為O和4的規(guī)則匹配線程,然而“對I”包括具有優(yōu)先級的值為I和5的規(guī)則匹配線程,諸如此類。本領(lǐng)域中的技術(shù)人員應(yīng)理解,不同的分布方案可以被使用。根據(jù)至少一個(gè)示例實(shí)施例,調(diào)度器或仲裁器模塊520在任何時(shí)間點(diǎn)不能具有來自給定的請求器或規(guī)則匹配線程啟動(dòng)器的被處理或在要被處理的隊(duì)列中的多于一個(gè)的束720。給定規(guī)則匹配線程的請求器710是啟動(dòng)規(guī)則匹配線程725或?qū)⑵浒l(fā)送給調(diào)度器的處理引擎。例如,用于給定的規(guī)則匹配線程的請求器710可以是相應(yīng)的BWE514或相應(yīng)的RWE516。束優(yōu)先級的值被分配給每個(gè)束720。例如,基于相應(yīng)的請求器710,針對給定的束720的束優(yōu)先級的值可以被分配。本領(lǐng)域中的技術(shù)人員應(yīng)理解,優(yōu)先級的值723可以基于其它準(zhǔn)則被分配,諸如在每個(gè)束中的請求725的數(shù)量,在束中的(多個(gè))特定優(yōu)先級的值723的存在或不存在,諸如此類。圖7B是圖示根據(jù)至少一個(gè)示例實(shí)施例在調(diào)度器或仲裁器模塊520中規(guī)則匹配線程的子組728的調(diào)度的方框圖。針對每個(gè)束720,對應(yīng)于相應(yīng)的請求器710,相應(yīng)的子組728被分配給調(diào)度器或仲裁器模塊520的多個(gè)調(diào)度隊(duì)列750a-d。根據(jù)至少一個(gè)實(shí)施場景,針對每個(gè)束720的子組728的數(shù)量等于在調(diào)度器或仲裁器模塊520中的調(diào)度隊(duì)列的數(shù)量。在這種情況下,在給定的束720中的每個(gè)子組728被分配給獨(dú)立的調(diào)度隊(duì)列,例如,750a、750b、750c或750d。備選地,調(diào)度隊(duì)列750的數(shù)量可以小于或大于在每個(gè)束720中的子組728的數(shù)量。在這種情況下,給定的束720的多于一個(gè)的子組728或沒有子組728可以被分配給具體的調(diào)度隊(duì)列750。
[0078]根據(jù)至少一個(gè)示例實(shí)施例,子組728的分配通過這種方式被執(zhí)行,即具有更高的束優(yōu)先級的束的子組728先于具有相對更低的束優(yōu)先級的束的子組728被分配給調(diào)度隊(duì)列(例如,750a-d)。例如,八個(gè)請求器R0,…,R7,束的優(yōu)先級可以被定義,諸如對應(yīng)于RO的束具有最高的束優(yōu)先級,對應(yīng)于Rl的束具有第二高的束優(yōu)先級,…以及對應(yīng)于R7的束具有最低的束優(yōu)先級。在這種情況下,對應(yīng)于請求器RO的束總是被首先分配,接下來是對應(yīng)于請求器Rl的束,依次類推。此外,針對給定的調(diào)度隊(duì)列,從不同的束720所分配的子組可以具有不同的索引。例如,針對對應(yīng)于請求器RO的束,子組“對O”、“對I ”、“對2”和“對3”被分別分配給調(diào)度隊(duì)列750a、750b、750c和750d。但是針對對應(yīng)于請求器Rl的束,子組“對3”、“對2”、“對I”和“對O”被分別分配給調(diào)度隊(duì)列750a、750b、750c和750d。
[0079]通過從一個(gè)束到另一個(gè)束改變子組如何被分配給調(diào)度隊(duì)列,在不同束中的具有相對高優(yōu)先級的規(guī)則匹配線程被分布于不同的調(diào)度隊(duì)列(例如,750a-d)之間。一旦子組728被分配給調(diào)度隊(duì)列,例如750a-d,然后子組基于相應(yīng)的束優(yōu)先級被調(diào)度以向RME518轉(zhuǎn)發(fā)。調(diào)度指針,例如752a-d,指示在當(dāng)前或下一個(gè)時(shí)鐘周期內(nèi)在每個(gè)調(diào)度隊(duì)列中(例如,750a-d)中被轉(zhuǎn)發(fā)的子組。此外,在每個(gè)子組內(nèi),具有更高優(yōu)先級的規(guī)則匹配線程被調(diào)度以先于其它具有相對更低的優(yōu)先級的規(guī)則匹配線程之前被轉(zhuǎn)發(fā)。
[0080]根據(jù)至少一個(gè)示例場景,規(guī)則匹配線程725的子組728被構(gòu)造成優(yōu)先級的值723幾乎在子組728中均勻分布。此外,子組728到多個(gè)調(diào)度隊(duì)列(例如,750a-d)的分配在每個(gè)束720中被輪換。像這樣,調(diào)度器520被設(shè)計(jì)成盡可能實(shí)施具有高優(yōu)先級的規(guī)則匹配線程725的并行處理。例如,在圖7B中,指針752a-d和所指向的相應(yīng)的子組指示具有優(yōu)先級值為O的規(guī)則匹配線程正在調(diào)度隊(duì)列750a中被轉(zhuǎn)發(fā),具有優(yōu)先級值為I的規(guī)則匹配線程正在調(diào)度隊(duì)列750b中被轉(zhuǎn)發(fā),具有優(yōu)先級值為2的規(guī)則匹配線程正在調(diào)度隊(duì)列750c中被轉(zhuǎn)發(fā),以及具有優(yōu)先級值為3的規(guī)則匹配線程正在調(diào)度隊(duì)列750d中被轉(zhuǎn)發(fā)。
[0081]圖8是圖示根據(jù)至少一個(gè)示例實(shí)施例在調(diào)度器或仲裁器模塊520中束組的確定和處理的圖。在調(diào)度器或仲裁器模塊520中規(guī)則匹配線程725的調(diào)度被在束720組中執(zhí)行。規(guī)則匹配線程的束組被確定和處理。一旦束組的處理完成,新的組被確定和處理。在時(shí)鐘周期N中,例如,調(diào)度器或仲裁器模塊520準(zhǔn)備好處理從RWE516或BWE514接收的規(guī)則匹配線程的束720。調(diào)度器520在相同的時(shí)鐘周期N中確定被調(diào)度和向RME518轉(zhuǎn)發(fā)的規(guī)則匹配線程的一組束720。一組束可以被定義成包括在時(shí)鐘周期N中在調(diào)度器520中存在的所有束720。備選地,確定的組可以是在時(shí)鐘周期N中在調(diào)度器520中存在的所有束720的子組。在圖8中,確定的組包括對應(yīng)于請求器R3、R5、R6和R7的束。
[0082]在時(shí)鐘周期N+1,調(diào)度器520分配并向RME518轉(zhuǎn)發(fā)在束中具有最高束優(yōu)先級的(例如,對應(yīng)于R3的束)規(guī)則匹配線程725。在相同的時(shí)鐘周期N+1,對應(yīng)于請求器R4的規(guī)則匹配線程的另一個(gè)束在調(diào)度器中被接收。在時(shí)鐘周期N+2,對應(yīng)于R3的束被完全地處理并且相應(yīng)的規(guī)則匹配線程725向RME518轉(zhuǎn)發(fā),因此調(diào)度指針752指向在確定的組中的下一個(gè)束,例如,對應(yīng)于請求器R5的束。對應(yīng)于請求器R4的束(用虛線所示)被跳過,即使它具有比對應(yīng)于R5的束更高的束優(yōu)先級,由于它不是在確定的組中。在時(shí)鐘周期N+K,調(diào)度器520完成轉(zhuǎn)發(fā)在確定的集中所有的束。調(diào)度器520確定僅包括對應(yīng)于R4的束的新的組。調(diào)度器752指向?qū)?yīng)于R4的束。
[0083]圖9A-9C是圖示根據(jù)至少一個(gè)示例實(shí)施例在調(diào)度隊(duì)列750a_d內(nèi)的規(guī)則匹配線程725的處理的圖。在調(diào)度器520內(nèi)的調(diào)度隊(duì)列(例如,750a-d)在每個(gè)時(shí)鐘周期內(nèi)獨(dú)立地操作。根據(jù)至少一個(gè)實(shí)施場景,每個(gè)調(diào)度隊(duì)列(例如,750a、750b、750c或750d)是先進(jìn)先出(FIFO)緩存器。每個(gè)調(diào)度隊(duì)列(例如,750a、750b、750c或750d)具有調(diào)度指針(例如,752a、752b、752c或752d),指向例如對應(yīng)于在相同調(diào)度隊(duì)列中的子組之間具有最高束優(yōu)先級的束的子組。在對應(yīng)于具有最高束優(yōu)先級的束的子組內(nèi),調(diào)度器指針(例如,752a、752b、752c或752d)指向在相同的子組中的規(guī)則匹配線程之間具有最高優(yōu)先級的規(guī)則匹配線程。根據(jù)至少一個(gè)示例場景,每個(gè)RME518被配置為在一個(gè)時(shí)刻接收一個(gè)規(guī)則匹配線程725。此外,每個(gè)規(guī)則匹配線程725被轉(zhuǎn)發(fā)給單個(gè)RME518。因此,調(diào)度器520在一個(gè)時(shí)刻向具體的RME514轉(zhuǎn)發(fā)一個(gè)規(guī)則匹配線程725。
[0084]在圖9A中,搜索或存儲(chǔ)器簇320具有四個(gè)RME,例如,RMEO、RMEl、RME2和RME3,并且調(diào)度器520具有四個(gè)調(diào)度隊(duì)列750a-d。在時(shí)鐘周期N,調(diào)度隊(duì)列750a、750b、750c和750d分別向RMEO、RMEU RME2和RME3轉(zhuǎn)發(fā)規(guī)則匹配線程725。例如,在調(diào)度隊(duì)列750a中,來自與請求器Rl相關(guān)聯(lián)的子組“對3”的規(guī)則匹配線程725向RMEO被轉(zhuǎn)發(fā)。在調(diào)度隊(duì)列750b中,來自與請求器RO相關(guān)聯(lián)的子組“對I”的規(guī)則匹配線程725向RMEl被轉(zhuǎn)發(fā)。在調(diào)度隊(duì)列750c中,來自與請求器Rl相關(guān)聯(lián)的子組“對I”的規(guī)則匹配線程725向RME2被轉(zhuǎn)發(fā),以及在調(diào)度隊(duì)列750d中,來自與請求器R2相關(guān)聯(lián)的子組“對I”的規(guī)則匹配線程725向RME3被轉(zhuǎn)發(fā)。假定在時(shí)鐘周期N中,分別對應(yīng)于請求器Rl、R0、Rl和R2的子組“對3”、“對I”、“對I”和“對I”中的每個(gè)具有尚未處理的單個(gè)規(guī)則匹配線程725。在時(shí)鐘周期N+1,分配給調(diào)度隊(duì)列750a-d的RME被輪換。也就是說,調(diào)度隊(duì)列750a、750b、750c和750d現(xiàn)在分別向RME3、RMEO, RMEl和RME2轉(zhuǎn)發(fā)規(guī)則匹配線程725。在相同的時(shí)鐘周期,來自與請求器R2相關(guān)聯(lián)的子組“對2”的規(guī)則匹配線程725從調(diào)度隊(duì)列750a向RME3轉(zhuǎn)發(fā)。此外,來自與請求器Rl相關(guān)聯(lián)的子組“對O”的規(guī)則匹配線程725從調(diào)度隊(duì)列750b向RMEO轉(zhuǎn)發(fā)。
[0085]根據(jù)圖9B和9C,僅有三個(gè)RME,例如,RME0.RME1和RME2,而調(diào)度器520具有四個(gè)調(diào)度隊(duì)列,例如,750a-d。在每個(gè)時(shí)鐘周期,假定最多單個(gè)規(guī)則匹配線程725可以向給定的RME518發(fā)送,調(diào)度隊(duì)列750a-d的一個(gè)是失速的,并且不調(diào)度或轉(zhuǎn)發(fā)任何規(guī)則匹配線程725。假定在時(shí)鐘周期N,分別對應(yīng)于請求器R1、R0、R1和R2的子組“對3”、“對1”、“對I”和“對I”中的每個(gè)具有單個(gè)尚未處理的規(guī)則匹配線程725。在相同的時(shí)鐘周期N,分別對應(yīng)于請求器RUROJP Rl的子組“對3”、“對I”和“對I”中的單個(gè)規(guī)則匹配線程725被處理,并且分別向RMEO、RMEl和RME2轉(zhuǎn)發(fā)。由于在時(shí)鐘周期N相應(yīng)的調(diào)度隊(duì)列750d處于失速狀態(tài),在對應(yīng)于請求器R2的子組“對I”中的單個(gè)規(guī)則匹配線程725不被處理。
[0086]在時(shí)鐘周期N+1,RME0、RME1、RME2的分配和對調(diào)度隊(duì)列750a_d的失速狀態(tài)910被更新。特別地,在時(shí)鐘周期N+1,調(diào)度隊(duì)列750a、750b、750c和750d被分別分配給失速狀態(tài)910、RMEO, RMEl和RME2。在這個(gè)階段,分別對應(yīng)于請求器R2、Rl和R2的子組“對2”、“對O”和“對O”中的每個(gè)包括兩個(gè)規(guī)則匹配線程725,而對應(yīng)于請求器R2的子組“對I”包括單個(gè)規(guī)則匹配線程725時(shí)。在相同的時(shí)鐘周期N+1,來自分別對應(yīng)于請求器R1、R2和R2的子組“對O”、“對O”和“對I ”的規(guī)則匹配線程725被調(diào)度,并且分別向RMEO、RMEl和RME2發(fā)送。調(diào)度隊(duì)列750a在時(shí)鐘周期N+1是失速的。像這樣,沒有規(guī)則匹配線程725從對應(yīng)于請求器R2的子組“對2”被發(fā)送。在如圖9C所示的時(shí)鐘周期N+2和N+3,將RME0、RME1、RME2和失速狀態(tài)910映射到調(diào)度隊(duì)列750a-d的分配模式被轉(zhuǎn)移或輪換。
[0087]通過改變調(diào)度隊(duì)列(例如750a、750b、750c或750d)被分配給的RME518,例如,在每個(gè)時(shí)鐘周期中,調(diào)度器520保證穿過搜索簇320的不同RME518的平衡地處理的負(fù)載。對調(diào)度隊(duì)列(例如,750a-d)的可用RME518的動(dòng)態(tài)分配允許每個(gè)RME518從不同的子組接收規(guī)則匹配線程725,并且因此具有不同的優(yōu)先級。此外,如果RME被禁用,或RME518的數(shù)量小于調(diào)度隊(duì)列(例如,750a-d)的數(shù)量,失速時(shí)間被分布于不同的調(diào)度隊(duì)列之間。網(wǎng)絡(luò)搜索處理器202的軟件可以在任何時(shí)間點(diǎn)禁用具體的RME518。在這種情況下,RME518向調(diào)度隊(duì)列(例如,750a-d)的靜態(tài)分配導(dǎo)致調(diào)度隊(duì)列被分配給失速可能很長一段時(shí)間的被禁用的RME。像這樣,調(diào)度器520可以不接收來自具有處于失速調(diào)度隊(duì)列中的線程的請求器的任何更多的規(guī)則匹配線程725。
[0088]本領(lǐng)域中的技術(shù)人員應(yīng)理解,在相應(yīng)的調(diào)度隊(duì)列(例如,750a_d)中RME518向規(guī)則匹配線程725的動(dòng)態(tài)分配可以以不同的方式來實(shí)施。例如,在RME518和調(diào)度隊(duì)列(例如,750a-d)之間的動(dòng)態(tài)映射可以根據(jù)隨機(jī)模式而不是輪換或轉(zhuǎn)移模式來完成。此外,映射模式的更新可以每個(gè)時(shí)鐘周期或每多個(gè)時(shí)鐘周期被執(zhí)行一次。
[0089]圖10是圖示根據(jù)至少一個(gè)示例實(shí)施例的調(diào)度器或仲裁器模塊520的架構(gòu)1000的方框圖。調(diào)度器520包括多個(gè)調(diào)度隊(duì)列,例如,750a-d。調(diào)度隊(duì)列(例如,750a_d)可以包括諸如FIFO緩存器的存儲(chǔ)器緩存器。調(diào)度隊(duì)列(例如,750a-d)被耦合至開關(guān)邏輯,開關(guān)邏輯被配置為將規(guī)則匹配線程725從調(diào)度隊(duì)列(例如,750a-d)指向RME518。開關(guān)邏輯可以包括,例如,多個(gè)復(fù)用器或選擇器。每個(gè)選擇器或復(fù)用器被配置為選擇被指向特定的RME518的規(guī)則匹配線程725。
[0090]調(diào)度器520還包括調(diào)度管理器1003,被配置為控制調(diào)度隊(duì)列(例如,750a_d)向RME518的分配。調(diào)度管理器1003被配置為保持跟蹤在每個(gè)RME518處可用的存儲(chǔ)器容量。特別地,調(diào)度管理器1003被配置為在每個(gè)RME518處存儲(chǔ)當(dāng)前數(shù)量的可用信用,接收在來自RME518的響應(yīng)635中的信用增加更新(例如,lOOla-c),接收涉及被發(fā)送給RME518的規(guī)則匹配線程的信用衰減更新(例如,1002a_c),以及基于接收到的更新(例如,lOOla-c和1002a-c)調(diào)整當(dāng)前數(shù)量的可用信用?;谂cRME518相關(guān)聯(lián)的所調(diào)整的當(dāng)前可用的信用,調(diào)度管理器向調(diào)度隊(duì)列(例如,750a-d)發(fā)送可用信用計(jì)數(shù)的指示(例如,1004a-d)。由于存在四個(gè)調(diào)度隊(duì)列(例如,750a-d)和三個(gè)RME518,信號(hào)104a_d中的一個(gè)信號(hào)指示O信用或失速狀態(tài)910。復(fù)用器或選擇器1005a-d被配置為將信用計(jì)數(shù)(例如,1004a-d)指向調(diào)度隊(duì)列(例如,750a-d)。每個(gè)信用計(jì)數(shù)(例如,1004a、1004b、1004c、1004d)被提交給單個(gè)調(diào)度隊(duì)列。
[0091]開關(guān)邏輯1006將從四個(gè)調(diào)度隊(duì)列(750a_d)中選擇的請求指向三個(gè)RME518。只有一個(gè)調(diào)度隊(duì)列能夠在任何給定的時(shí)間向具體的RME518發(fā)送規(guī)則匹配線程725。每個(gè)RME的信用計(jì)數(shù)指示每個(gè)RME接收和處理規(guī)則匹配線程的能力以及所預(yù)期的處理延時(shí)。越少的信用指示越高的被期待的處理延時(shí)。從調(diào)度隊(duì)列(例如,750a-d)發(fā)送的規(guī)則匹配線程725衰減每個(gè)RME的信用計(jì)數(shù)。衰減是由要發(fā)送給相關(guān)聯(lián)的RME518的規(guī)則塊的尺寸來確定。
[0092]當(dāng)相應(yīng)的規(guī)則匹配線程的處理被完成時(shí),信用被從RME518返回,并且信用計(jì)數(shù)被增加。信用可以同時(shí)被增加或減少,導(dǎo)致凈值被應(yīng)用于當(dāng)前的信用計(jì)數(shù)。如果被讀取的規(guī)則塊420的尺寸超過針對RME518的可用信用,調(diào)度隊(duì)列將不嘗試發(fā)送請求。調(diào)度隊(duì)列將失速直到它能發(fā)送待定的規(guī)則匹配線程725。在這個(gè)時(shí)間周期期間,其他的調(diào)度隊(duì)列可以發(fā)送一個(gè)或多個(gè)規(guī)則匹配線程725。失速阻止具有大的規(guī)則塊420的規(guī)則匹配線程725被不斷地延遲,有利于發(fā)送具有更小尺寸的規(guī)則塊420的規(guī)則匹配線程。調(diào)度隊(duì)列通知RWE516什么時(shí)候相應(yīng)的規(guī)則匹配線程725向RME518發(fā)送。
[0093]開關(guān)邏輯1006由控制單元來控制。在開關(guān)邏輯1006中的選擇線,確定RME518向調(diào)度隊(duì)列(例如,750a-d)的分配,根據(jù)判決函數(shù)被改變。例如,對RME配對的調(diào)度隊(duì)列每個(gè)時(shí)鐘周期被輪換,如果下面的條件被滿足:(1)至少一個(gè)調(diào)度隊(duì)列具有將被轉(zhuǎn)發(fā)的規(guī)則匹配線程,以及(2)每個(gè)調(diào)度隊(duì)列滿足至少一個(gè)以下條件:Ca)調(diào)度隊(duì)列沒有待定的規(guī)則匹配線程750,或(b)調(diào)度隊(duì)列自從上一次輪換已向它分配的RME518發(fā)送至少一個(gè)請求,或(c)調(diào)度隊(duì)列被分配給的RME518已通過軟件配置被禁用,或(d)調(diào)度隊(duì)列沒有分配給它的RME518。
[0094]控制單元控制,例如,開關(guān)邏輯和選擇器或復(fù)用器1005a_d??刂茊卧€可以執(zhí)行其它功能,諸如基于在相應(yīng)的RME518處所期待的處理時(shí)間以及行進(jìn)和排隊(duì)時(shí)間,確定針對規(guī)則匹配線程的所期待的處理延時(shí)。在RME518處的處理時(shí)間可以基于通過RME518沒有返回給調(diào)度器520的信用來確定。行進(jìn)和排隊(duì)時(shí)間可以基于例如已由調(diào)度器520發(fā)送給RME518并且還沒有接收到針對其的響應(yīng)635的所有規(guī)則匹配線程來確定。
[0095]本領(lǐng)域的技術(shù)人員應(yīng)理解,規(guī)則匹配線程725可以被考慮成當(dāng)BWE514接收相應(yīng)的桶條目時(shí)開始,當(dāng)BWE514向RWE516發(fā)送相應(yīng)的桶條目的束時(shí)開始,當(dāng)RWE516從BWE514接收的相應(yīng)的束時(shí)開始,或當(dāng)RWE516向調(diào)度器發(fā)送相應(yīng)的束時(shí)開始。由調(diào)度器發(fā)送規(guī)則塊請求是規(guī)則匹配線程725的部分,并且可以被理解為向調(diào)度器520轉(zhuǎn)發(fā)規(guī)則匹配線程。
[0096]雖然本發(fā)明參照其示例實(shí)施例已被具體地示出和描述,本領(lǐng)域的技術(shù)人員將理解,不背離由所附權(quán)利要求涵蓋的本發(fā)明的范圍,可以在其中進(jìn)行形式和細(xì)節(jié)上的各種改變。
【權(quán)利要求】
1.一種調(diào)度通過網(wǎng)絡(luò)搜索處理器中的多個(gè)啟動(dòng)引擎所啟動(dòng)的規(guī)則匹配線程的方法,用于通過所述網(wǎng)絡(luò)搜索處理器的多個(gè)匹配引擎進(jìn)行處理,所述方法包括: 通過調(diào)度器確定規(guī)則匹配線程束組,每個(gè)束由獨(dú)立的啟動(dòng)引擎啟動(dòng); 將在所述束組的每個(gè)束中的規(guī)則匹配線程分布成多個(gè)規(guī)則匹配線程的子組; 將與所述束組的每個(gè)束相關(guān)聯(lián)的規(guī)則匹配線程的所述子組分配給多個(gè)調(diào)度隊(duì)列;以及根據(jù)基于與相應(yīng)的規(guī)則匹配線程束相關(guān)聯(lián)的優(yōu)先級的順序?qū)⒈环峙浣o每個(gè)調(diào)度隊(duì)列的規(guī)則匹配線程向規(guī)則匹配引擎發(fā)送。
2.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括在調(diào)度器從所述多個(gè)啟動(dòng)引擎的一個(gè)或多個(gè)啟動(dòng)引擎接收對應(yīng)于一個(gè)或多個(gè)規(guī)則匹配線程束的數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的方法,其中在從給定的啟動(dòng)引擎接收到對應(yīng)于第一束的數(shù)據(jù)之后,沒有對應(yīng)于至少一個(gè)其他束的其他數(shù)據(jù)從所述給定的啟動(dòng)引擎被接收,直到將在所述第一束中的所有規(guī)則匹配線程發(fā)送給規(guī)則匹配引擎。
4.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括在發(fā)送與所述給定的束相關(guān)聯(lián)的至少一個(gè)規(guī)則匹配線程之后,向與所述給定的束相關(guān)聯(lián)的啟動(dòng)引擎發(fā)送通知。
5.根據(jù)權(quán)利要求1所述的方法,其中所確定的所述束組是在所述束組被確定的時(shí)候在所述調(diào)度器處可用的所述規(guī)則匹配線程的所述束。
6.根據(jù)權(quán)利要 求1所述的方法,其中向所述規(guī)則匹配引擎發(fā)送所述規(guī)則匹配線程包括向所述網(wǎng)絡(luò)搜索處理器的存儲(chǔ)器部件發(fā)送針對相應(yīng)的數(shù)據(jù)塊的請求,所述相應(yīng)的數(shù)據(jù)塊被取回并且向所述規(guī)則匹配引擎轉(zhuǎn)發(fā)。
7.根據(jù)權(quán)利要求1所述的方法,其中所述束組是第一束組,并且所述方法進(jìn)一步包括在向所述規(guī)則匹配引擎發(fā)送在所述第一束組中的所有所述規(guī)則匹配線程之后,確定第二束組。
8.根據(jù)權(quán)利要求1所述的方法,其中在子組內(nèi),所述順序是進(jìn)一步基于被分配給相應(yīng)束的規(guī)則匹配線程的優(yōu)先級。
9.根據(jù)權(quán)利要求1所述的方法,其中向規(guī)則匹配引擎發(fā)送規(guī)則匹配線程包括只有在相應(yīng)的預(yù)計(jì)的處理延時(shí)不超過預(yù)先定義的閾值時(shí)發(fā)送所述規(guī)則匹配線程。
10.根據(jù)權(quán)利要求9所述的方法,其中所述預(yù)計(jì)的處理延時(shí)包括在所述規(guī)則匹配引擎處所述規(guī)則匹配線程的處理時(shí)間以及所述規(guī)則匹配線程的預(yù)計(jì)的行進(jìn)和排隊(duì)時(shí)間,所述處理時(shí)間依賴于與所述相應(yīng)的規(guī)則匹配線程相關(guān)聯(lián)的數(shù)據(jù)塊的尺寸,所述行進(jìn)和排隊(duì)時(shí)間依賴于與被發(fā)送給所述規(guī)則匹配引擎的規(guī)則匹配線程相關(guān)聯(lián)的數(shù)據(jù)塊的累積尺寸。
11.一種網(wǎng)絡(luò)搜索處理器,包括: 多個(gè)啟動(dòng)引擎,被配置為啟動(dòng)規(guī)則匹配線程束; 多個(gè)規(guī)則匹配引擎,被配置為處理所述規(guī)則匹配線程束; 調(diào)度引擎,被配置為: 確定規(guī)則匹配線程束組,每個(gè)束由獨(dú)立的處理引擎啟動(dòng); 將在所述束組的每個(gè)束中的規(guī)則匹配線程分布成多個(gè)規(guī)則匹配線程的子組; 將與每個(gè)束相關(guān)聯(lián)的規(guī)則匹配線程的所述子組分配給多個(gè)調(diào)度隊(duì)列;以及根據(jù)基于與相應(yīng)的規(guī)則匹配線程束相關(guān)聯(lián)的優(yōu)先級的順序?qū)⒈环峙浣o每個(gè)調(diào)度隊(duì)列的規(guī)則匹配線程向規(guī)則匹配引擎發(fā)送。
12.根據(jù)權(quán)利要求11所述的網(wǎng)絡(luò)搜索處理器,其中所述調(diào)度引擎被配置為進(jìn)一步從所述多個(gè)啟動(dòng)引擎的一個(gè)或多個(gè)啟動(dòng)引擎接收對應(yīng)于一個(gè)或多個(gè)規(guī)則匹配線程束的數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的網(wǎng)絡(luò)搜索處理器,其中在從給定的啟動(dòng)引擎接收到對應(yīng)于第一束的數(shù)據(jù)之后,沒有對應(yīng)于至少一個(gè)其他束的其他數(shù)據(jù)從所述給定的啟動(dòng)引擎被接收,直到將在所述第一束中的所有規(guī)則匹配線程發(fā)送給規(guī)則匹配引擎。
14.根據(jù)權(quán)利要求11所述的網(wǎng)絡(luò)搜索處理器,其中所述調(diào)度引擎被配置為在發(fā)送與所述給定的束相關(guān)聯(lián)的至少一個(gè)規(guī)則匹配線程之后,向與給定的束相關(guān)聯(lián)的啟動(dòng)引擎發(fā)送通知。
15.根據(jù)權(quán)利要求11所述的網(wǎng)絡(luò)搜索處理器,其中所確定的所述束組是在所述束組被確定的時(shí)候在所述調(diào)度引擎處可用的所述規(guī)則匹配線程的所述束。
16.根據(jù)權(quán)利要求11所述的網(wǎng)絡(luò)搜索處理器,其中在向規(guī)則匹配引擎發(fā)送規(guī)則匹配線程中,所述調(diào)度引擎被配置為向所述網(wǎng)絡(luò)搜索處理器的存儲(chǔ)器部件發(fā)送針對相應(yīng)的數(shù)據(jù)塊的請求,所述相應(yīng)的數(shù)據(jù)塊被取回并且向所述規(guī)則匹配引擎轉(zhuǎn)發(fā)。
17.根據(jù)權(quán)利要求11所述的網(wǎng)絡(luò)搜索處理器,其中所述束組是第一束組,并且所述調(diào)度引擎被配置為進(jìn)一步在向所述規(guī)則匹配引擎發(fā)送在所述第一束組中的所有所述規(guī)則匹配線程之后,確定第二束組。
18.根據(jù)權(quán)利要求11所述的網(wǎng)絡(luò)搜索處理器,其中在子組內(nèi),所述順序是進(jìn)一步基于被分配給相應(yīng)束的規(guī)則匹配線程的優(yōu)先級。
19.根據(jù)權(quán)利要 求11所述的網(wǎng)絡(luò)搜索處理器,其中在向所述規(guī)則匹配引擎發(fā)送規(guī)則匹配線程中,所述調(diào)度引擎被配置為只有在相應(yīng)的預(yù)計(jì)的處理延時(shí)不超過預(yù)先定義的閾值時(shí)發(fā)送所述規(guī)則匹配線程。
20.根據(jù)權(quán)利要求19所述的網(wǎng)絡(luò)搜索處理器,其中所述預(yù)計(jì)的處理延時(shí)是所述規(guī)則匹配線程的處理時(shí)間和所述規(guī)則匹配線程的預(yù)計(jì)的行進(jìn)和排隊(duì)時(shí)間的總和,所述處理時(shí)間依賴于與所述相應(yīng)的規(guī)則匹配線程相關(guān)聯(lián)的數(shù)據(jù)塊的尺寸,所述行進(jìn)和排隊(duì)時(shí)間依賴于與被發(fā)送給所述規(guī)則匹配引擎的規(guī)則匹配線程相關(guān)聯(lián)的數(shù)據(jù)塊的累積尺寸。
【文檔編號(hào)】G06F17/30GK104050041SQ201410097575
【公開日】2014年9月17日 申請日期:2014年3月14日 優(yōu)先權(quán)日:2013年3月15日
【發(fā)明者】J·A·龐伯恩, N·I·安薩里, G·A·鮑查德, R·戈亞爾 申請人:凱為公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
阿鲁科尔沁旗| 永修县| 湾仔区| 义马市| 古浪县| 尉犁县| 林芝县| 江达县| 女性| 乌拉特中旗| 汉寿县| 凤凰县| 简阳市| 株洲县| 青浦区| 龙里县| 阿克苏市| 雅安市| 武汉市| 遵义市| 湖北省| 余江县| 新龙县| 灵丘县| 迁安市| 河间市| 康保县| 玉树县| 西城区| 南华县| 通河县| 鄂伦春自治旗| 庆云县| 谢通门县| 大余县| 萍乡市| 睢宁县| 文昌市| 台东市| 建昌县| 织金县|