專(zhuān)利名稱(chēng):查找數(shù)據(jù)庫(kù)中顯性定義記錄表項(xiàng)優(yōu)先級(jí)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫(kù)查找和網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,特別是涉及一種在查找數(shù)據(jù)庫(kù)中顯性定義記錄表項(xiàng)優(yōu)先級(jí)的方法。
背景技術(shù):
隨著網(wǎng)絡(luò)應(yīng)用對(duì)網(wǎng)絡(luò)帶寬需求的不斷增加,特別是在線音頻、視頻節(jié)目的普及,IPV6的步步推廣,3G、4G手機(jī)網(wǎng)絡(luò)的發(fā)展,以及人們對(duì)網(wǎng)絡(luò)安全的需求,導(dǎo)致各種數(shù)據(jù)查找不斷增加,高速查找搜索芯片TCAM被廣泛地使用在數(shù)據(jù)查找,數(shù)據(jù)通信系統(tǒng)中。TCAM (Ternary Content Addressable Memory)即“三態(tài)內(nèi)容尋址存儲(chǔ)器”是目前廣泛使用的查找芯片。TCAM中每個(gè)bit位有三種狀態(tài),除掉“O”和“I”外,還有一個(gè)“don’tcare”狀態(tài),所以稱(chēng)為“三態(tài)”,它是通過(guò)掩碼來(lái)實(shí)現(xiàn)的。 由于固有的電路架構(gòu)原因,TCAM查找芯片只能提供最長(zhǎng)匹配查找(LPM,LongestPrefix Matching,精確匹配部分必須放置在don’t care部分之前)。TCAM需要保證前綴較長(zhǎng)的記錄表項(xiàng)保存在前綴較短的記錄表項(xiàng)之前,即TCAM的低地址存貯前綴較長(zhǎng)的記錄表項(xiàng),高地址存儲(chǔ)前綴較短的記錄表項(xiàng)。TCAM這種電路架構(gòu)隱性定義了各個(gè)記錄表項(xiàng)的優(yōu)先級(jí)關(guān)系,即地址越高,優(yōu)先級(jí)越低,記錄表項(xiàng)的存忙地址和記錄表項(xiàng)的優(yōu)先級(jí)綁定;使得TCAM數(shù)據(jù)庫(kù)維護(hù)算法復(fù)雜,特別是記錄表項(xiàng)的添加和刪除部分。針對(duì)TCAM的數(shù)據(jù)庫(kù)維護(hù)更新算法,目前主要有下面幾種I、順序移動(dòng)法所有前綴記錄按照長(zhǎng)度組成前綴塊,按照前綴由長(zhǎng)到短從TCAM的低地址空間開(kāi)始順序排列,空閑記錄集中放在TCAM的高地址。當(dāng)需要增加一個(gè)新記錄時(shí),將已有記錄中長(zhǎng)度小于該記錄的條目依次向后移動(dòng)一個(gè)位置,然后將要新記錄添加到騰出的位置處。顯然,這種方式記錄移動(dòng)關(guān)聯(lián)性太大,效率極低,最差的情況復(fù)雜度為O(N),其中N是TCAM中保存的記錄個(gè)數(shù)。2、帶預(yù)留記錄的順序移動(dòng)法相對(duì)于順序移動(dòng)法,該算法的改進(jìn)在于把空閑記錄分散到每個(gè)前綴記錄塊里。若添加的記錄對(duì)應(yīng)的集合存在空閑記錄時(shí),直接寫(xiě)入,其它記錄不須移動(dòng);當(dāng)不存在空閑記錄時(shí),只須從相鄰的記錄集合中借用一個(gè)空閑地址即可寫(xiě)入。但是在刪除記錄時(shí),要把該集合中刪除記錄以下的記錄都向上移動(dòng)一個(gè)位置,以保持空閑記錄的連續(xù)性。該算法只是減少了平均表項(xiàng)移動(dòng)次數(shù),但在最壞情況下,如預(yù)置的空閑記錄出現(xiàn)連續(xù)滿狀態(tài)時(shí),算法復(fù)雜度顯然仍是O (N)。3、選擇移動(dòng)法結(jié)合TCAM工作原理分析,路由前綴查找只需要保證不同長(zhǎng)度記錄的順序關(guān)系,而對(duì)于相同長(zhǎng)度的記錄則可以不用嚴(yán)格要求,由此提出了選擇移動(dòng)法,TCAM中記錄結(jié)構(gòu)與順序移動(dòng)法一致,在添加新記錄時(shí),只需要將每個(gè)前綴塊的第一個(gè)記錄移到最后一個(gè)位置即可,表項(xiàng)的移動(dòng)次數(shù)大大減少。該算法復(fù)雜度為O(W),其中W為前綴塊的個(gè)數(shù)。
4、帶預(yù)留記錄的選擇移動(dòng)法該算法將預(yù)留記錄的思想運(yùn)用到選擇移動(dòng)法。當(dāng)需要添加新記錄時(shí),如果預(yù)置空閑記錄非滿,直接寫(xiě)入;若空閑記錄已滿,但相鄰前綴塊存在空閑地址,也直接寫(xiě)人;否則,才按照選擇移動(dòng)法的添加方式進(jìn)行,直到騰出空閑地址寫(xiě)入新記錄。刪除記錄操作跟預(yù)留記錄法的相同。因?yàn)橹挥性诳臻e記錄非空的情況下,才會(huì)有記錄選擇移動(dòng),使得該算法的平均移動(dòng)次數(shù)進(jìn)一步降低。不管上面哪種算法,復(fù)雜度都很高,可能需要移動(dòng)記錄,占用TCAM的查找時(shí)間,降低查找?guī)挘瑥亩档拖到y(tǒng)性能,影響數(shù)據(jù)通信速度。
發(fā)明內(nèi)容
為了解決上述方法中TCAM查找芯片中記錄表項(xiàng)地址和優(yōu)先級(jí)綁定,數(shù)據(jù)庫(kù)更新維護(hù)復(fù)雜,占用大量TCAM查找時(shí)間,降低TCAM的查找速度,從而降低整個(gè)系統(tǒng)查找速度,影響系統(tǒng)性能的問(wèn)題,本發(fā)明提出了一種在查找數(shù)據(jù)庫(kù)中顯性定義記錄表項(xiàng)優(yōu)先級(jí)的方法, 其特征在于,包括以下步驟SI :系統(tǒng)劃分查找數(shù)據(jù)庫(kù)優(yōu)先級(jí),給每條記錄表項(xiàng)分配優(yōu)先級(jí)標(biāo)簽,每條記錄表項(xiàng)都分配一個(gè)優(yōu)先級(jí)標(biāo)簽,不同優(yōu)先級(jí)用不同數(shù)字表示;S2 :系統(tǒng)把記錄表項(xiàng)和其優(yōu)先級(jí)標(biāo)簽一同提交給查找芯片;S3 :查找芯片把記錄表項(xiàng)和其優(yōu)先級(jí)標(biāo)簽貯存到內(nèi)部存貯單元中。作為上述技術(shù)方案的優(yōu)選,所述方法還包括以下步驟S4:系統(tǒng)執(zhí)行鍵值查找時(shí),系統(tǒng)提交鍵值及查找指令給查找芯片,查找芯片得到鍵值及查找指令;S5 :查找芯片啟動(dòng)內(nèi)部查找電路,對(duì)內(nèi)部存貯單元的記錄表項(xiàng)并發(fā)查找;S6 :查找芯片把所有匹配記錄表項(xiàng)的優(yōu)先級(jí)標(biāo)簽發(fā)送給優(yōu)先級(jí)比較電路;S7 :優(yōu)先級(jí)標(biāo)簽符合要求的記錄表項(xiàng)作為最終查找結(jié)果,返回給系統(tǒng)。本發(fā)明的在查找數(shù)據(jù)庫(kù)中顯性定義記錄表項(xiàng)優(yōu)先級(jí)的方法,由于每條記錄表項(xiàng)都有獨(dú)立的優(yōu)先級(jí)標(biāo)簽,優(yōu)先級(jí)和存貯地址分開(kāi),從而記錄表項(xiàng)可以隨意地存貯在查找芯片存忙單元中;記錄表項(xiàng)的“don’ t care”位可以處于記錄表項(xiàng)中任意位置,避免記錄表項(xiàng)的前綴排序問(wèn)題。這些都極大地釋放了記錄表項(xiàng)維護(hù)算法需要的時(shí)間,提升了系統(tǒng)性能。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明一個(gè)實(shí)施例的在查找數(shù)據(jù)庫(kù)中顯性定義記錄表項(xiàng)優(yōu)先級(jí)的方法的流程示意圖;圖2為本發(fā)明另一個(gè)實(shí)施例的在查找數(shù)據(jù)庫(kù)中顯性定義記錄表項(xiàng)優(yōu)先級(jí)的方法的流程示意圖;圖3為本發(fā)明實(shí)施例的顯性定義優(yōu)先級(jí)標(biāo)簽查找芯片邏輯示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明的附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明的一個(gè)實(shí)施例的一種在查找數(shù)據(jù)庫(kù)中顯性定義記錄表項(xiàng)優(yōu)先級(jí)的方法,如圖I所示,包括以下步驟SI :系統(tǒng)劃分查找數(shù)據(jù)庫(kù)優(yōu)先級(jí),給每條記錄表項(xiàng)分配優(yōu)先級(jí)標(biāo)簽,每條記錄表項(xiàng)都分配一個(gè)優(yōu)先級(jí)標(biāo)簽,不同優(yōu)先級(jí)用不同數(shù)字表示;S2 :系統(tǒng)把記錄表項(xiàng)和其優(yōu)先級(jí)標(biāo)簽一同提交給查找芯片; S3 :查找芯片把記錄表項(xiàng)和其優(yōu)先級(jí)標(biāo)簽貯存到內(nèi)部存貯單元中。在本發(fā)明的一個(gè)實(shí)施例中,如圖2所示,所述方法包括以下步驟SI :系統(tǒng)劃分查找數(shù)據(jù)庫(kù)優(yōu)先級(jí),給每條記錄表項(xiàng)分配優(yōu)先級(jí)標(biāo)簽,每條記錄表項(xiàng)都分配一個(gè)優(yōu)先級(jí)標(biāo)簽,不同優(yōu)先級(jí)用不同數(shù)字表示;S2 :系統(tǒng)把記錄表項(xiàng)和其優(yōu)先級(jí)標(biāo)簽一同提交給查找芯片;S3 :查找芯片把記錄表項(xiàng)和其優(yōu)先級(jí)標(biāo)簽貯存到內(nèi)部存貯單元中;S4:系統(tǒng)執(zhí)行鍵值查找時(shí),系統(tǒng)提交鍵值及查找指令給查找芯片,查找芯片得到鍵值及查找指令;S5 :查找芯片啟動(dòng)內(nèi)部查找電路,對(duì)內(nèi)部存貯單元的記錄表項(xiàng)并發(fā)查找;S6 :查找芯片把所有匹配記錄表項(xiàng)的優(yōu)先級(jí)標(biāo)簽發(fā)送給優(yōu)先級(jí)比較電路;S7 :優(yōu)先級(jí)標(biāo)簽符合要求的記錄表項(xiàng)作為最終查找結(jié)果,返回給系統(tǒng)。本發(fā)明上述實(shí)施例所述的方法的有益效果可以通過(guò)附圖3所示的顯性定義記錄表項(xiàng)優(yōu)先級(jí)標(biāo)簽的查找芯片結(jié)構(gòu)示意圖來(lái)說(shuō)明,(以16bit記錄表項(xiàng)數(shù)據(jù),4bit優(yōu)先級(jí)標(biāo)簽為例,優(yōu)先級(jí)數(shù)字不同代表不同優(yōu)先級(jí),本例中數(shù)字越小,優(yōu)先級(jí)越高,優(yōu)先級(jí)最高作為結(jié)果)Entry:記錄表項(xiàng)Key:查找鍵值Pri :優(yōu)先級(jí)標(biāo)簽Match Index :最終查找結(jié)果EntryO, Entryl都是16bit精確匹配數(shù)據(jù);分別定義4bit優(yōu)先級(jí)為“0000”,“0011”,存放在查找芯片任意地址;Entry M, Entry M+1 是 12bit 精確匹配,4bit don’t cares 數(shù)據(jù);分別定義 4bit優(yōu)先級(jí)為“0100”,“0101”,存放在查找芯片任意地址。記錄N,記錄N+1為8bit精確匹配,8bit don’ t care數(shù)據(jù);分別定義4bit優(yōu)先級(jí)為“ 1001”,“1100”,存放在任意地址。當(dāng)芯片啟動(dòng)查找時(shí),Key A會(huì)同時(shí)和所有Entry比較;其中Entryl,Entry M+1,Entry N都匹配,它們的優(yōu)先級(jí)標(biāo)簽Pri進(jìn)入優(yōu)先級(jí)比較電路;
最終,因?yàn)镋ntryl的優(yōu)先級(jí)數(shù)字最小,優(yōu)先級(jí)最高,Entryl成為匹配記錄.當(dāng)有新的Entry L需要加入時(shí),只需要給Entry L分配一個(gè)優(yōu)先級(jí),就可以把Entry L存放在任意空閑地址,不需要排序移動(dòng)現(xiàn)在已經(jīng)存儲(chǔ)的Entry,極大地減少了Entry更新時(shí)間。本發(fā)明上述實(shí)施例的在查找數(shù)據(jù)庫(kù)中顯性定義記錄表項(xiàng)優(yōu)先級(jí)的方法,由于每條記錄表項(xiàng)都有獨(dú)立的優(yōu)先級(jí)標(biāo)簽,優(yōu)先級(jí)和存貯地址分開(kāi),從而記錄表項(xiàng)可以隨意地存貯在查找芯片存忙單元中;記錄表項(xiàng)的“don’ t care”位可以處于記錄表項(xiàng)中任意位置,避免記錄表項(xiàng)的前綴排序問(wèn)題。這些都極大地釋放了記錄表項(xiàng)維護(hù)算法需要的時(shí)間,提升系統(tǒng)性能。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵 蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種在查找數(shù)據(jù)庫(kù)中顯性定義記錄表項(xiàng)優(yōu)先級(jí)的方法,其特征在于,包括以下步驟 Si:系統(tǒng)劃分查找數(shù)據(jù)庫(kù)優(yōu)先級(jí),給每條記錄表項(xiàng)分配優(yōu)先級(jí)標(biāo)簽,每條記錄表項(xiàng)都分配一個(gè)優(yōu)先級(jí)標(biāo)簽,不同優(yōu)先級(jí)用不同數(shù)字表示; 52:系統(tǒng)把記錄表項(xiàng)和其優(yōu)先級(jí)標(biāo)簽一同提交給查找芯片; 53:查找芯片把記錄表項(xiàng)和其優(yōu)先級(jí)標(biāo)簽貯存到內(nèi)部存貯單元中。
2.如權(quán)利要求I所述的在查找數(shù)據(jù)庫(kù)中顯性定義記錄表項(xiàng)優(yōu)先級(jí)的方法,其特征在于,所述方法還包括以下步驟 S4:系統(tǒng)執(zhí)行鍵值查找時(shí),系統(tǒng)提交鍵值及查找指令給查找芯片,查找芯片得到鍵值及查找指令; 55:查找芯片啟動(dòng)內(nèi)部查找電路,對(duì)內(nèi)部存貯單元的記錄表項(xiàng)并發(fā)查找; 56:查找芯片把所有匹配記錄表項(xiàng)的優(yōu)先級(jí)標(biāo)簽發(fā)送給優(yōu)先級(jí)比較電路; 57:優(yōu)先級(jí)標(biāo)簽符合要求的記錄表項(xiàng)作為最終查找結(jié)果,返回給系統(tǒng)。
全文摘要
本發(fā)明提供了一種在查找數(shù)據(jù)庫(kù)中顯性定義記錄表項(xiàng)優(yōu)先級(jí)的方法,包括以下步驟S1系統(tǒng)劃分查找數(shù)據(jù)庫(kù)優(yōu)先級(jí),給每條記錄表項(xiàng)分配優(yōu)先級(jí)標(biāo)簽,每條記錄表項(xiàng)都分配一個(gè)優(yōu)先級(jí)標(biāo)簽,不同優(yōu)先級(jí)用不同數(shù)字表示;S2系統(tǒng)把記錄表項(xiàng)和其優(yōu)先級(jí)標(biāo)簽一同提交給查找芯片;S3查找芯片把記錄表項(xiàng)和其優(yōu)先級(jí)標(biāo)簽貯存到內(nèi)部存貯單元中,由于每條記錄表項(xiàng)都有獨(dú)立的優(yōu)先級(jí)標(biāo)簽,從而記錄表項(xiàng)可以隨意地存貯在查找芯片存貯單元中,極大地釋放了記錄表項(xiàng)維護(hù)算法需要的時(shí)間,提升系統(tǒng)性能。
文檔編號(hào)G06F17/30GK102819617SQ20121033263
公開(kāi)日2012年12月12日 申請(qǐng)日期2012年9月11日 優(yōu)先權(quán)日2012年9月11日
發(fā)明者謝國(guó)敏 申請(qǐng)人:蘇州雄立科技有限公司