本申請(qǐng)涉及多分支跳轉(zhuǎn)協(xié)處理技術(shù),尤其涉及一種多分支跳轉(zhuǎn)協(xié)處理方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,交換機(jī)或者路由器的應(yīng)用也越來越頻繁,通常交換機(jī)或者路由器中包括有網(wǎng)絡(luò)處理器,在網(wǎng)絡(luò)處理器上運(yùn)行的軟件中,會(huì)遇到多分支跳轉(zhuǎn)結(jié)構(gòu)。
目前網(wǎng)絡(luò)處理器基于三態(tài)內(nèi)容尋址存儲(chǔ)器(ternarycontentaddressmemory,簡(jiǎn)稱tcam)來實(shí)現(xiàn)這種分支跳轉(zhuǎn)。其中tcam中存儲(chǔ)有多條tcam條目。網(wǎng)絡(luò)處理器對(duì)編譯后的分支跳轉(zhuǎn)條件與tcam中的tcam條目進(jìn)行匹配,當(dāng)匹配成功后,則該網(wǎng)絡(luò)處理器將匹配成功的tcam條目對(duì)應(yīng)的靜態(tài)隨機(jī)存儲(chǔ)器(staticrandomaccessmemory,簡(jiǎn)稱sram)地址發(fā)送給下一個(gè)網(wǎng)絡(luò)處理器,該下一個(gè)網(wǎng)絡(luò)處理器通過確定sram地址中所存儲(chǔ)的待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址,來執(zhí)行該存儲(chǔ)地址對(duì)應(yīng)的待執(zhí)行動(dòng)作。
然而,目前網(wǎng)絡(luò)處理器基于tcam進(jìn)行分支跳轉(zhuǎn)條件匹配時(shí),存在匹配數(shù)量龐大的問題。尤其當(dāng)分支跳轉(zhuǎn)條件較為復(fù)雜時(shí),則tcam條目也會(huì)存在爆炸式增長(zhǎng)的趨勢(shì),從而造成多分支跳轉(zhuǎn)條件匹配效率低的問題,同時(shí)這將對(duì)tcam的存儲(chǔ)空間帶來進(jìn)一步的挑戰(zhàn)。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)?zhí)峁┮环N多分支跳轉(zhuǎn)協(xié)處理方法及裝置,從而提高多分支跳轉(zhuǎn)條件匹配效率,并且可以節(jié)省tcam的存儲(chǔ)空間,進(jìn)而降低tcam的功耗。
第一方面,本申請(qǐng)實(shí)施例提供一種多分支跳轉(zhuǎn)協(xié)處理方法,該方法應(yīng)用于交換機(jī)或者路由器,該交換機(jī)或者路由器包括:第一網(wǎng)絡(luò)處理器、第二網(wǎng)絡(luò)處理器、協(xié)處理器和三態(tài)內(nèi)容尋址存儲(chǔ)器tcam,協(xié)處理器的兩端分別與第一網(wǎng)絡(luò)處理器和第二網(wǎng)絡(luò)處理器連接,tcam與協(xié)處理器連接,其中tcam按照待處理業(yè)務(wù)被邏輯劃分為n個(gè)子tcam,n為大于或者等于2的正整數(shù),前n-1個(gè)子tcam中的每個(gè)子tcam中包括至少一條tcam條目,每個(gè)子tcam中的至少一條tcam條目存在一個(gè)收斂節(jié)點(diǎn),且收斂節(jié)點(diǎn)為每個(gè)子tcam的下一個(gè)子tcam中的至少一條tcam條目的起始節(jié)點(diǎn);該方法包括:
第一網(wǎng)絡(luò)處理器獲取分支跳轉(zhuǎn)條件,并將分支跳轉(zhuǎn)條件發(fā)送給協(xié)處理器,其中分支跳轉(zhuǎn)條件包括n條分支跳轉(zhuǎn)子條件,分支跳轉(zhuǎn)子條件與子tcam一一對(duì)應(yīng)。
協(xié)處理器對(duì)每個(gè)子tcam對(duì)應(yīng)的分支跳轉(zhuǎn)子條件和每個(gè)子tcam中的tcam條目進(jìn)行匹配,確定匹配成功的至少一條tcam條目。
協(xié)處理器根據(jù)匹配成功的至少一條tcam條目確定靜態(tài)隨機(jī)存儲(chǔ)器sram地址,sram地址對(duì)應(yīng)的sram單元用于存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址。
協(xié)處理器將sram地址發(fā)送給第二網(wǎng)絡(luò)處理器。
第二網(wǎng)絡(luò)處理器根據(jù)sram地址確定待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址,并執(zhí)行存儲(chǔ)地址對(duì)應(yīng)的待執(zhí)行動(dòng)作。
本申請(qǐng)實(shí)施例的有益效果是:由于tcam被邏輯劃分為n個(gè)子tcam,使得tcam條目數(shù)量降低,從而提高了分支跳轉(zhuǎn)條件的匹配效率,并且可以節(jié)省tcam的存儲(chǔ)空間,進(jìn)而降低tcam的功耗。
可選地,若分支跳轉(zhuǎn)條件最多包括m個(gè)條件節(jié)點(diǎn),每個(gè)條件節(jié)點(diǎn)可以取值為第一數(shù)值或者第二數(shù)值,m為大于或者等于2的正整數(shù),則每條tcam條目也包括m項(xiàng)數(shù)值,每項(xiàng)數(shù)值可以為第一數(shù)值、第二數(shù)值和第三數(shù)值中的任一項(xiàng)。
當(dāng)任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)取所述第一數(shù)值,且任一分支跳轉(zhuǎn)子條件對(duì)應(yīng)的子tcam中存在至少一條tcam條目對(duì)應(yīng)位置的數(shù)值為第一數(shù)值或者第三數(shù)值時(shí),則表示任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)匹配成功。
當(dāng)任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)取第二數(shù)值,且任一分支跳轉(zhuǎn)子條件對(duì)應(yīng)的子tcam中存在至少一條tcam條目對(duì)應(yīng)位置的數(shù)值為第二數(shù)值或者第三數(shù)值時(shí),則表示任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)匹配成功。
當(dāng)任一分支跳轉(zhuǎn)子條件中的每個(gè)條件節(jié)點(diǎn)和任一條tcam條目對(duì)應(yīng)位置的數(shù)值匹配成功,則表示任一分支跳轉(zhuǎn)子條件和任一條tcam條目匹配成功。
通過該方法可以有效確定分支跳轉(zhuǎn)子條件和任一條tcam條目是否匹配成功。
可選地,協(xié)處理器根據(jù)匹配成功的至少一條tcam條目確定靜態(tài)隨機(jī)存儲(chǔ)器sram地址,包括:
協(xié)處理器在至少一條tcam條目中,確定與每個(gè)子tcam對(duì)應(yīng)的分支跳轉(zhuǎn)子條件中的每個(gè)條件節(jié)點(diǎn)取值相同的tcam條目。
協(xié)處理器確定取值相同的tcam條目對(duì)應(yīng)的sram地址為sram地址。
通過該方法可以有效sram地址,從而可以根據(jù)sram地址確定待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址,并執(zhí)行存儲(chǔ)地址對(duì)應(yīng)的待執(zhí)行動(dòng)作。
可選地,還包括:協(xié)處理器獲取子tcam的劃分信息,劃分信息包括:收斂節(jié)點(diǎn)的個(gè)數(shù)和收斂節(jié)點(diǎn)的位置信息。
協(xié)處理器根據(jù)子tcam的劃分信息確定分支跳轉(zhuǎn)條件的分割節(jié)點(diǎn),并根據(jù)分割節(jié)點(diǎn)對(duì)分支跳轉(zhuǎn)條件進(jìn)行劃分,獲得n條分支跳轉(zhuǎn)子條件。
通過該方法協(xié)處理器可以準(zhǔn)確的對(duì)分支跳轉(zhuǎn)條件進(jìn)行劃分,使得tcam條目數(shù)量降低,從而提高了分支跳轉(zhuǎn)條件的匹配效率,并且可以節(jié)省tcam的存儲(chǔ)空間,進(jìn)而降低tcam的功耗。
下面將提供一種多分支跳轉(zhuǎn)協(xié)處理裝置,該裝置可以用于執(zhí)行上述的多分支跳轉(zhuǎn)協(xié)處理方法,其實(shí)現(xiàn)原理和技術(shù)效果類似,在此不再贅述。
第二方面,本申請(qǐng)實(shí)施例提供一種多分支跳轉(zhuǎn)協(xié)處理裝置,該裝置包括:第一網(wǎng)絡(luò)處理器、第二網(wǎng)絡(luò)處理器、協(xié)處理器和三態(tài)內(nèi)容尋址存儲(chǔ)器tcam,協(xié)處理器的兩端分別與第一網(wǎng)絡(luò)處理器和第二網(wǎng)絡(luò)處理器連接,tcam與協(xié)處理器連接,其中tcam按照待處理業(yè)務(wù)被邏輯劃分為n個(gè)子tcam,所述n為大于或者等于2的正整數(shù),前n-1個(gè)子tcam中的每個(gè)子tcam中包括至少一條tcam條目,所述每個(gè)子tcam中的至少一條tcam條目存在一個(gè)收斂節(jié)點(diǎn),且收斂節(jié)點(diǎn)為每個(gè)子tcam的下一個(gè)子tcam中的至少一條tcam條目的起始節(jié)點(diǎn)。
第一網(wǎng)絡(luò)處理器用于獲取分支跳轉(zhuǎn)條件,并將分支跳轉(zhuǎn)條件發(fā)送給協(xié)處理器,其中分支跳轉(zhuǎn)條件包括n條分支跳轉(zhuǎn)子條件,分支跳轉(zhuǎn)子條件與子tcam一一對(duì)應(yīng)。
協(xié)處理器用于對(duì)每個(gè)子tcam對(duì)應(yīng)的分支跳轉(zhuǎn)子條件和每個(gè)子tcam中的tcam條目進(jìn)行匹配,確定匹配成功的至少一條tcam條目;根據(jù)匹配成功的至少一條tcam條目確定靜態(tài)隨機(jī)存儲(chǔ)器sram地址,sram地址對(duì)應(yīng)的sram單元用于存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址;并將sram地址發(fā)送給第二網(wǎng)絡(luò)處理器。
第二網(wǎng)絡(luò)處理器用于根據(jù)sram地址確定待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址,并執(zhí)行存儲(chǔ)地址對(duì)應(yīng)的待執(zhí)行動(dòng)作。
可選地,若分支跳轉(zhuǎn)條件最多包括m個(gè)條件節(jié)點(diǎn),每個(gè)條件節(jié)點(diǎn)可以取值為第一數(shù)值或者第二數(shù)值,m為大于或者等于2的正整數(shù),則每條tcam條目也包括m項(xiàng)數(shù)值,每項(xiàng)數(shù)值可以為第一數(shù)值、第二數(shù)值和第三數(shù)值中的任一項(xiàng)。
當(dāng)任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)取第一數(shù)值,且任一分支跳轉(zhuǎn)子條件對(duì)應(yīng)的子tcam中存在至少一條tcam條目對(duì)應(yīng)位置的數(shù)值為第一數(shù)值或者第三數(shù)值時(shí),則表示任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)匹配成功。
當(dāng)任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)取第二數(shù)值,且任一分支跳轉(zhuǎn)子條件對(duì)應(yīng)的子tcam中存在至少一條tcam條目對(duì)應(yīng)位置的數(shù)值為第二數(shù)值或者第三數(shù)值時(shí),則表示任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)匹配成功。
當(dāng)任一分支跳轉(zhuǎn)子條件中的每個(gè)條件節(jié)點(diǎn)和任一條tcam條目對(duì)應(yīng)位置的數(shù)值匹配成功,則表示任一分支跳轉(zhuǎn)子條件和任一條tcam條目匹配成功。
可選地,協(xié)處理器具體用于:在至少一條tcam條目中,確定與每個(gè)子tcam對(duì)應(yīng)的分支跳轉(zhuǎn)子條件中的每個(gè)條件節(jié)點(diǎn)取值相同的tcam條目。確定取值相同的tcam條目對(duì)應(yīng)的sram地址為所述sram地址。
可選地,協(xié)處理器還用于:獲取子tcam的劃分信息,劃分信息包括:收斂節(jié)點(diǎn)的個(gè)數(shù)和收斂節(jié)點(diǎn)的位置信息。根據(jù)子tcam的劃分信息確定分支跳轉(zhuǎn)條件的分割節(jié)點(diǎn),并根據(jù)分割節(jié)點(diǎn)對(duì)分支跳轉(zhuǎn)條件進(jìn)行劃分,獲得n條分支跳轉(zhuǎn)子條件。
本申請(qǐng)?zhí)峁┮环N多分支跳轉(zhuǎn)協(xié)處理方法及裝置,該方法包括:第一網(wǎng)絡(luò)處理器獲取分支跳轉(zhuǎn)條件,并將分支跳轉(zhuǎn)條件發(fā)送給協(xié)處理器,其中分支跳轉(zhuǎn)條件包括n條分支跳轉(zhuǎn)子條件,分支跳轉(zhuǎn)子條件與子tcam一一對(duì)應(yīng);協(xié)處理器對(duì)每個(gè)子tcam對(duì)應(yīng)的分支跳轉(zhuǎn)子條件和每個(gè)子tcam中的tcam條目進(jìn)行匹配,確定匹配成功的至少一條tcam條目;協(xié)處理器根據(jù)匹配成功的至少一條tcam條目確定靜態(tài)隨機(jī)存儲(chǔ)器sram地址,sram地址對(duì)應(yīng)的sram單元用于存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址;協(xié)處理器將sram地址發(fā)送給所述第二網(wǎng)絡(luò)處理器;第二網(wǎng)絡(luò)處理器根據(jù)sram地址確定待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址,并執(zhí)行存儲(chǔ)地址對(duì)應(yīng)的待執(zhí)行動(dòng)作。由于tcam被邏輯劃分為n個(gè)子tcam,使得tcam條目數(shù)量降低,從而提高了分支跳轉(zhuǎn)條件的匹配效率,并且可以節(jié)省tcam的存儲(chǔ)空間,進(jìn)而降低tcam的功耗。
附圖說明
圖1為本發(fā)明一實(shí)施例提供的一種多分支跳轉(zhuǎn)協(xié)處理方法的流程圖;
圖2為本發(fā)明一實(shí)施例提供的基于交換機(jī)或者路由器所提供的多分支跳轉(zhuǎn)協(xié)處理的示意圖;
圖3a為本發(fā)明一實(shí)施例提供的子tcam與sram單元對(duì)應(yīng)關(guān)系的示意圖;
圖3b為本發(fā)明另一實(shí)施例提供的子tcam與sram單元對(duì)應(yīng)關(guān)系的示意圖;
圖4a為現(xiàn)有技術(shù)提供的分支跳轉(zhuǎn)結(jié)構(gòu)的示意圖;
圖4b為本發(fā)明一實(shí)施例提供的分支跳轉(zhuǎn)結(jié)構(gòu)和基于該分支跳轉(zhuǎn)結(jié)構(gòu)的tcam劃分的示意圖;
圖4c為本發(fā)明一實(shí)施例提供的分支跳轉(zhuǎn)結(jié)構(gòu)和基于該分支跳轉(zhuǎn)結(jié)構(gòu)的tcam劃分的示意圖;
圖5為本申請(qǐng)一實(shí)施例提供的一種多分支跳轉(zhuǎn)協(xié)處理裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
目前,在網(wǎng)絡(luò)處理器上運(yùn)行的軟件中,經(jīng)常會(huì)遇到多分支跳轉(zhuǎn)結(jié)構(gòu),例如網(wǎng)絡(luò)處理器運(yùn)行的多分支跳轉(zhuǎn)結(jié)構(gòu)如下:
其中左側(cè)的conditon_1,conditon_2、conditon_3以及conditon_x等為多分支跳轉(zhuǎn)條件,key為任一多分支跳轉(zhuǎn)條件,右側(cè)的tcamentry1、tcamentry2和tcamentry3等為tcam中存儲(chǔ)的tcam條目。
現(xiàn)有技術(shù)中網(wǎng)絡(luò)處理器對(duì)編譯后的分支跳轉(zhuǎn)條件與tcam中的tcam條目進(jìn)行匹配,當(dāng)匹配成功后,則該網(wǎng)絡(luò)處理器將匹配成功的tcam條目對(duì)應(yīng)的sram地址發(fā)送給下一個(gè)網(wǎng)絡(luò)處理器,該下一個(gè)網(wǎng)絡(luò)處理器通過確定sram地址中所存儲(chǔ)的待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址,來執(zhí)行該存儲(chǔ)地址對(duì)應(yīng)的待執(zhí)行動(dòng)作。
然而目前網(wǎng)絡(luò)處理器基于tcam進(jìn)行分支跳轉(zhuǎn)條件匹配時(shí),存在匹配數(shù)量龐大的問題。尤其當(dāng)分支跳轉(zhuǎn)條件較為復(fù)雜時(shí),則tcam條目也會(huì)存在爆炸式增長(zhǎng)的趨勢(shì),從而造成多分支跳轉(zhuǎn)條件匹配效率低的問題,同時(shí)這將對(duì)tcam的存儲(chǔ)空間帶來進(jìn)一步的挑戰(zhàn)。
為了解決上述問題,本申請(qǐng)?zhí)峁┮环N多分支跳轉(zhuǎn)協(xié)處理方法及裝置。具體地,圖1為本發(fā)明一實(shí)施例提供的一種多分支跳轉(zhuǎn)協(xié)處理方法的流程圖,該方法應(yīng)用于交換機(jī)或者路由器,圖2為本發(fā)明一實(shí)施例提供的基于交換機(jī)或者路由器所提供的多分支跳轉(zhuǎn)協(xié)處理的示意圖,如圖2所示,該交換機(jī)或者路由器包括:第一網(wǎng)絡(luò)處理器21、第二網(wǎng)絡(luò)處理器22、協(xié)處理器23和tcam24,該第一網(wǎng)絡(luò)處理器21和第二網(wǎng)絡(luò)處理器22可以是交換機(jī)或者路由器中不同的核。協(xié)處理器23的兩端分別與第一網(wǎng)絡(luò)處理器21和第二網(wǎng)絡(luò)處理器22連接,tcam24與協(xié)處理器23連接,如圖2所示,其中tcam(物理tcam)按照待處理業(yè)務(wù)被邏輯劃分為n個(gè)子tcam,所述n為大于或者等于2的正整數(shù),每個(gè)子tcam包括至少一條tcam條目,前n-1個(gè)子tcam中的每個(gè)子tcam中的至少一條tcam條目存在一個(gè)收斂節(jié)點(diǎn),且收斂節(jié)點(diǎn)為每個(gè)子tcam的下一個(gè)子tcam中的至少一條tcam條目的起始節(jié)點(diǎn)。
所謂收斂節(jié)點(diǎn)必須滿足兩個(gè)條件:第一,它是子tcam所包括的至少一條tcam條目中的每條tcam條目的最后一個(gè)條件節(jié)點(diǎn)的下一個(gè)條件節(jié)點(diǎn)(公共條件節(jié)點(diǎn))。第二,它是該子tcam的下一個(gè)子tcam所包括的至少一條tcam條目中的每條tcam條目的起始節(jié)點(diǎn)。其中子tcam所包括的至少一條tcam條目可以是子tcam中的全部tcam條目,也可以是子tcam中的部分tcam條目。同樣的,子tcam的下一個(gè)子tcam所包括的至少一條tcam條目可以是子tcam的下一個(gè)子tcam中的全部tcam條目,也可以是子tcam的下一個(gè)子tcam中的部分tcam條目。
或者,
所謂收斂節(jié)點(diǎn)必須滿足兩個(gè)條件:第一,它是子tcam所包括的至少一條tcam條目中的每條tcam條目的最后一個(gè)條件節(jié)點(diǎn)(公共條件節(jié)點(diǎn))。第二,它是該子tcam的下一個(gè)子tcam所包括的至少一條tcam條目中的每條tcam條目的起始節(jié)點(diǎn)的前一個(gè)條件節(jié)點(diǎn)(公共條件節(jié)點(diǎn))。
值得一提的是本申請(qǐng)中tcam被邏輯劃分為多個(gè)子tcam,相應(yīng)的,子tcam中的tcam條目相對(duì)于現(xiàn)有技術(shù)的tcam條目也發(fā)生了變化。假設(shè)tcam被邏輯劃分為兩個(gè)子tcam,分別為tcam1和tcam2,現(xiàn)有技術(shù)中的一條tcam條目為tcamentry={10,01,10,01,10},而本申請(qǐng)中tcam1對(duì)應(yīng)的一條tcam條目為tcamentry1={10,01,00,00,00},tcam2對(duì)應(yīng)的一條tcam條目為tcamentry2={00,00,10,01,10},符號(hào)“00”可以表示任何數(shù)值,本申請(qǐng)中的“00”等同于下面將要提到的第三數(shù)值。
具體地,如圖1所示,該方法包括如下步驟:
步驟s101:第一網(wǎng)絡(luò)處理器獲取分支跳轉(zhuǎn)條件,并將分支跳轉(zhuǎn)條件發(fā)送給協(xié)處理器,其中分支跳轉(zhuǎn)條件包括n條分支跳轉(zhuǎn)子條件,分支跳轉(zhuǎn)子條件與子tcam一一對(duì)應(yīng);
具體地,第一網(wǎng)絡(luò)處理器可以獲取一個(gè)分支跳轉(zhuǎn)條件或者多個(gè)分支跳轉(zhuǎn)條件,這里第一網(wǎng)絡(luò)處理器獲取的分支跳轉(zhuǎn)條件即為上述分支跳轉(zhuǎn)結(jié)構(gòu)中的key。由于tcam被邏輯劃分為n個(gè)子tcam,因此分支跳轉(zhuǎn)條件也自然被劃分為n條分支跳轉(zhuǎn)子條件,需要說明的是,一種可選方式:該分支跳轉(zhuǎn)子條件可以是根據(jù)待處理業(yè)務(wù)已經(jīng)被劃分好的,并且該分支跳轉(zhuǎn)子條件與子tcam的對(duì)應(yīng)關(guān)系也已經(jīng)是配置好的。另一種可選方式,該多分支跳轉(zhuǎn)協(xié)處理方法還包括:協(xié)處理器獲取子tcam的劃分信息,該劃分信息包括:收斂節(jié)點(diǎn)的個(gè)數(shù)和收斂節(jié)點(diǎn)的位置信息;協(xié)處理器根據(jù)子tcam的劃分信息確定分支跳轉(zhuǎn)條件的分割節(jié)點(diǎn),并根據(jù)分割節(jié)點(diǎn)對(duì)分支跳轉(zhuǎn)條件進(jìn)行劃分,獲得n條分支跳轉(zhuǎn)子條件。
步驟s102:協(xié)處理器對(duì)每個(gè)子tcam對(duì)應(yīng)的分支跳轉(zhuǎn)子條件和每個(gè)子tcam中的tcam條目進(jìn)行匹配,確定匹配成功的至少一條tcam條目;
可選地,若分支跳轉(zhuǎn)條件最多包括m個(gè)條件節(jié)點(diǎn),每個(gè)條件節(jié)點(diǎn)可以取值為第一數(shù)值或者第二數(shù)值,該m為大于或者等于2的正整數(shù),則每條tcam條目也包括m項(xiàng)數(shù)值,每項(xiàng)數(shù)值可以為第一數(shù)值、第二數(shù)值和第三數(shù)值中的任一項(xiàng);當(dāng)任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)取第一數(shù)值,且任一分支跳轉(zhuǎn)子條件對(duì)應(yīng)的子tcam中存在至少一條tcam條目對(duì)應(yīng)位置的數(shù)值為第一數(shù)值或者第三數(shù)值時(shí),則表示任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)匹配成功;當(dāng)任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)取第二數(shù)值,且任一分支跳轉(zhuǎn)子條件對(duì)應(yīng)的子tcam中存在至少一條tcam條目對(duì)應(yīng)位置的數(shù)值為第二數(shù)值或者第三數(shù)值時(shí),則表示任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)匹配成功;當(dāng)任一分支跳轉(zhuǎn)子條件中的每個(gè)條件節(jié)點(diǎn)和任一條tcam條目對(duì)應(yīng)位置的數(shù)值匹配成功,則表示所述任一分支跳轉(zhuǎn)子條件和所述任一條tcam條目匹配成功。
例如:第一數(shù)值為01,第二數(shù)值為10,第三數(shù)值為00,獲取到的分支跳轉(zhuǎn)子條件為key={01,10},則key={01,10}在tcam1中匹配成功的tcam條目包括:tcamentry1={01,10,00,00,00},tcamentry2={01,00,00,00,00},tcamentry3={00,00,00,00,00},其中tcam條目與sram地址一一對(duì)應(yīng)。
步驟s103:協(xié)處理器根據(jù)匹配成功的至少一條tcam條目確定sram地址,該sram地址對(duì)應(yīng)的sram單元用于存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址;
一種可選方式:協(xié)處理器在子tcam所包括的至少一條tcam條目中,確定與該子tcam對(duì)應(yīng)的分支跳轉(zhuǎn)子條件中的每個(gè)條件節(jié)點(diǎn)取值相同的tcam條目;協(xié)處理器確定取值相同的tcam條目對(duì)應(yīng)的sram地址為所述sram地址,該sram地址對(duì)應(yīng)的sram單元用于存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址。
接著上述的例子,上述分支跳轉(zhuǎn)子條件key={01,10},對(duì)于子tcam1來講,匹配成功的tcam條目為:tcamentry1={01,10,00,00,00},tcamentry2={01,00,00,00,00},tcamentry3={00,00,00,00,00},則協(xié)處理器在子tcam1所包括的至少一條tcam條目中,確定與該子tcam1對(duì)應(yīng)的分支跳轉(zhuǎn)子條件中的每個(gè)條件節(jié)點(diǎn)取值相同的tcam條目為tcamentry1={01,10,00,00,00},并確定該tcamentry1={01,10,00,00,00}對(duì)應(yīng)的sram地址為最終的sram地址。圖3a為本發(fā)明一實(shí)施例提供的子tcam與sram單元對(duì)應(yīng)關(guān)系的示意圖,如圖3a所示,對(duì)于子tcam1包括3條匹配成功的tcam條目,其中匹配成功用1表示,匹配失敗用0表示,對(duì)于tcam1來講,與key取值相同的tcam條目為第二條tcam條目,確定該tcam條目對(duì)應(yīng)的sram地址所對(duì)應(yīng)的sram存儲(chǔ)單元存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址為0,同樣的,對(duì)于tcam2來講,sram地址所對(duì)應(yīng)的sram存儲(chǔ)單元存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址為2,對(duì)于tcam3來講,sram地址所對(duì)應(yīng)的sram存儲(chǔ)單元存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址為1,對(duì)于tcamn來講,sram地址所對(duì)應(yīng)的sram存儲(chǔ)單元存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址為3。
另一種可選方式:假設(shè)每個(gè)分支跳轉(zhuǎn)條件都包括了5個(gè)條件節(jié)點(diǎn),前兩個(gè)條件節(jié)點(diǎn)被劃分為一個(gè)分支跳轉(zhuǎn)子條件,后三個(gè)被劃分為另一個(gè)分支跳轉(zhuǎn)子條件,并且tcamentryx={00,00,00,00,00}為每個(gè)子tcam中的最后一個(gè)tcam條目,則協(xié)處理器在匹配成功的至少一條tcam條目中確定第一條tcam條目對(duì)應(yīng)的sram地址為最終的sram地址。
基于此,上述分支跳轉(zhuǎn)子條件key={01,10},對(duì)于子tcam1來講,匹配成功的tcam條目為:tcamentry1={01,10,00,00,00},tcamentry3={00,00,00,00,00}。圖3b為本發(fā)明另一實(shí)施例提供的子tcam與sram單元對(duì)應(yīng)關(guān)系的示意圖,如圖3b所示,對(duì)于子tcam1包括2條匹配成功的tcam條目,其中匹配成功用1表示,匹配失敗用0表示,對(duì)于tcam1來講,第一個(gè)匹配成功的tcam條目為tcamentry1,確定該tcamentry1對(duì)應(yīng)的sram地址所對(duì)應(yīng)的sram存儲(chǔ)單元存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址為0,同樣的,對(duì)于tcam2來講,sram地址所對(duì)應(yīng)的sram存儲(chǔ)單元存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址為2,對(duì)于tcam3來講,sram地址所對(duì)應(yīng)的sram存儲(chǔ)單元存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址為1,對(duì)于tcamn來講,sram地址所對(duì)應(yīng)的sram存儲(chǔ)單元存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址為3。
步驟s104:協(xié)處理器將sram地址發(fā)送給第二網(wǎng)絡(luò)處理器;
步驟s105:第二網(wǎng)絡(luò)處理器根據(jù)sram地址確定待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址,并執(zhí)行存儲(chǔ)地址對(duì)應(yīng)的待執(zhí)行動(dòng)作。
結(jié)合步驟s104和步驟s105進(jìn)行說明:第二網(wǎng)絡(luò)處理器獲取到每個(gè)子tcam對(duì)應(yīng)的sram地址之后,第二網(wǎng)絡(luò)處理器可以根據(jù)每個(gè)sram地址確定待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址,并執(zhí)行該存儲(chǔ)地址對(duì)應(yīng)的待執(zhí)行動(dòng)作。也就是說,針對(duì)不同的sram地址,第二網(wǎng)絡(luò)處理器獨(dú)立執(zhí)行存儲(chǔ)地址對(duì)應(yīng)的待執(zhí)行動(dòng)作。當(dāng)然,也可以是,按照sram地址對(duì)應(yīng)的存儲(chǔ)地址有低至高的順序依次執(zhí)行該存儲(chǔ)地址對(duì)應(yīng)的待執(zhí)行動(dòng)作。本申請(qǐng)對(duì)此不做限制。
下面對(duì)上述過程進(jìn)行舉例說明:
方案一:圖4a為現(xiàn)有技術(shù)提供的分支跳轉(zhuǎn)結(jié)構(gòu)的示意圖,如圖4a所示,菱形表示分支跳轉(zhuǎn)條件的條件節(jié)點(diǎn)。矩形表示待執(zhí)行動(dòng)作。從上至下每條路徑中的菱形構(gòu)成一條分支跳轉(zhuǎn)條件。基于該分支跳轉(zhuǎn)結(jié)構(gòu),tcam中至少需要存儲(chǔ)8*4*2*2=128條tcam條目。
方案二:圖4b為本發(fā)明一實(shí)施例提供的分支跳轉(zhuǎn)結(jié)構(gòu)和基于該分支跳轉(zhuǎn)結(jié)構(gòu)的tcam劃分的示意圖,如圖4b所示,菱形表示分支跳轉(zhuǎn)條件的條件節(jié)點(diǎn)。矩形表示待執(zhí)行動(dòng)作。從上至下每條路徑中的菱形構(gòu)成一條分支跳轉(zhuǎn)條件?;谠摲种D(zhuǎn)結(jié)構(gòu),tcam1包括至少8條tcam條目。tcam2包括至少4*2*2=16條tcam條目。因此整個(gè)tcam中至少需要存儲(chǔ)8+4*2*2=24條tcam條目。
方案三:圖4c為本發(fā)明一實(shí)施例提供的分支跳轉(zhuǎn)結(jié)構(gòu)和基于該分支跳轉(zhuǎn)結(jié)構(gòu)的tcam劃分的示意圖,如圖4c所示,菱形表示分支跳轉(zhuǎn)條件的條件節(jié)點(diǎn)。矩形表示待執(zhí)行動(dòng)作。從上至下每條路徑中的菱形構(gòu)成一條分支跳轉(zhuǎn)條件?;谠摲种D(zhuǎn)結(jié)構(gòu),tcam1包括至少8條tcam條目。tcam2包括至少4條tcam條目。tcam3包括至少2*2=4條tcam條目。因此整個(gè)tcam中至少需要存儲(chǔ)8+4+2*2=16條tcam條目。
綜上所述,圖4a至圖4c所示的三個(gè)方案對(duì)應(yīng)的tcam條目如表1:
表1
綜上,本申請(qǐng)?zhí)峁┮环N多分支跳轉(zhuǎn)協(xié)處理方法,包括:第一網(wǎng)絡(luò)處理器獲取分支跳轉(zhuǎn)條件,并將分支跳轉(zhuǎn)條件發(fā)送給協(xié)處理器,其中分支跳轉(zhuǎn)條件包括n條分支跳轉(zhuǎn)子條件,分支跳轉(zhuǎn)子條件與子tcam一一對(duì)應(yīng);協(xié)處理器對(duì)每個(gè)子tcam對(duì)應(yīng)的分支跳轉(zhuǎn)子條件和每個(gè)子tcam中的tcam條目進(jìn)行匹配,確定匹配成功的至少一條tcam條目;協(xié)處理器根據(jù)匹配成功的至少一條tcam條目確定靜態(tài)隨機(jī)存儲(chǔ)器sram地址,sram地址對(duì)應(yīng)的sram單元用于存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址;協(xié)處理器將sram地址發(fā)送給所述第二網(wǎng)絡(luò)處理器;第二網(wǎng)絡(luò)處理器根據(jù)sram地址確定待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址,并執(zhí)行存儲(chǔ)地址對(duì)應(yīng)的待執(zhí)行動(dòng)作。由于tcam被邏輯劃分為n個(gè)子tcam,使得tcam條目數(shù)量降低,從而提高了分支跳轉(zhuǎn)條件的匹配效率,并且可以節(jié)省tcam的存儲(chǔ)空間,進(jìn)而降低tcam的功耗。
圖5為本申請(qǐng)一實(shí)施例提供的一種多分支跳轉(zhuǎn)協(xié)處理裝置的結(jié)構(gòu)示意圖,如圖5所示,該裝置50包括:第一網(wǎng)絡(luò)處理器51、第二網(wǎng)絡(luò)處理器52、協(xié)處理器53和三態(tài)內(nèi)容尋址存儲(chǔ)器tcam54,所述協(xié)處理器53的兩端分別與所述第一網(wǎng)絡(luò)處理器51和所述第二網(wǎng)絡(luò)處理器52連接,所述tcam54與所述協(xié)處理器53連接,其中所述tcam54按照待處理業(yè)務(wù)被邏輯劃分為n個(gè)子tcam,所述n為大于或者等于2的正整數(shù),前n-1個(gè)子tcam中的每個(gè)子tcam中包括至少一條tcam條目,所述每個(gè)子tcam中的至少一條tcam條目存在一個(gè)收斂節(jié)點(diǎn),且所述收斂節(jié)點(diǎn)為所述每個(gè)子tcam的下一個(gè)子tcam中的至少一條tcam條目的起始節(jié)點(diǎn)。
所述第一網(wǎng)絡(luò)處理器51用于獲取分支跳轉(zhuǎn)條件,并將所述分支跳轉(zhuǎn)條件發(fā)送給所述協(xié)處理器,其中所述分支跳轉(zhuǎn)條件包括n條分支跳轉(zhuǎn)子條件,所述分支跳轉(zhuǎn)子條件與所述子tcam一一對(duì)應(yīng)。
所述協(xié)處理器53用于對(duì)每個(gè)子tcam對(duì)應(yīng)的分支跳轉(zhuǎn)子條件和每個(gè)子tcam中的tcam條目進(jìn)行匹配,確定匹配成功的至少一條tcam條目;根據(jù)所述匹配成功的至少一條tcam條目確定靜態(tài)隨機(jī)存儲(chǔ)器sram地址,所述sram地址對(duì)應(yīng)的sram單元用于存儲(chǔ)待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址;并將所述sram地址發(fā)送給所述第二網(wǎng)絡(luò)處理器。
所述第二網(wǎng)絡(luò)處理器52用于根據(jù)所述sram地址確定所述待執(zhí)行動(dòng)作對(duì)應(yīng)的存儲(chǔ)地址,并執(zhí)行所述存儲(chǔ)地址對(duì)應(yīng)的所述待執(zhí)行動(dòng)作。
本申請(qǐng)實(shí)施例提供的多分支跳轉(zhuǎn)協(xié)處理裝置可以用于執(zhí)行上述的多分支跳轉(zhuǎn)協(xié)處理方法,其實(shí)現(xiàn)原理和技術(shù)效果類似,在此不再贅述。
可選地,若所述分支跳轉(zhuǎn)條件最多包括m個(gè)條件節(jié)點(diǎn),每個(gè)條件節(jié)點(diǎn)可以取值為第一數(shù)值或者第二數(shù)值,所述m為大于或者等于2的正整數(shù),則每條tcam條目也包括m項(xiàng)數(shù)值,每項(xiàng)數(shù)值可以為所述第一數(shù)值、所述第二數(shù)值和第三數(shù)值中的任一項(xiàng)。
當(dāng)任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)取所述第一數(shù)值,且所述任一分支跳轉(zhuǎn)子條件對(duì)應(yīng)的子tcam中存在至少一條tcam條目對(duì)應(yīng)位置的數(shù)值為所述第一數(shù)值或者所述第三數(shù)值時(shí),則表示所述任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)匹配成功。
當(dāng)所述任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)取所述第二數(shù)值,且所述任一分支跳轉(zhuǎn)子條件對(duì)應(yīng)的子tcam中存在至少一條tcam條目對(duì)應(yīng)位置的數(shù)值為所述第二數(shù)值或者所述第三數(shù)值時(shí),則表示所述任一分支跳轉(zhuǎn)子條件中的條件節(jié)點(diǎn)匹配成功。
當(dāng)所述任一分支跳轉(zhuǎn)子條件中的每個(gè)條件節(jié)點(diǎn)和任一條tcam條目對(duì)應(yīng)位置的數(shù)值匹配成功,則表示所述任一分支跳轉(zhuǎn)子條件和所述任一條tcam條目匹配成功。
可選地,所述協(xié)處理器53具體用于:在所述至少一條tcam條目中,確定與每個(gè)子tcam對(duì)應(yīng)的分支跳轉(zhuǎn)子條件中的每個(gè)條件節(jié)點(diǎn)取值相同的tcam條目;確定所述取值相同的tcam條目對(duì)應(yīng)的sram地址為所述sram地址。
可選地,所述協(xié)處理器53還用于:獲取所述子tcam的劃分信息,所述劃分信息包括:所述收斂節(jié)點(diǎn)的個(gè)數(shù)和所述收斂節(jié)點(diǎn)的位置信息;根據(jù)所述子tcam的劃分信息確定所述分支跳轉(zhuǎn)條件的分割節(jié)點(diǎn),并根據(jù)所述分割節(jié)點(diǎn)對(duì)所述分支跳轉(zhuǎn)條件進(jìn)行劃分,獲得所述n條分支跳轉(zhuǎn)子條件。
本申請(qǐng)實(shí)施例提供的多分支跳轉(zhuǎn)協(xié)處理裝置可以用于執(zhí)行上述的多分支跳轉(zhuǎn)協(xié)處理方法,其實(shí)現(xiàn)原理和技術(shù)效果類似,在此不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。