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

Patricia樹快速查找方法

文檔序號:6458178閱讀:393來源:國知局

專利名稱::Patricia樹快速查找方法
技術(shù)領(lǐng)域
:本發(fā)明涉及嵌入式系統(tǒng)領(lǐng)域,尤其涉及一種Patricia樹快速查找方法。技術(shù)背景樹查找的方法中,二叉查找樹是一種經(jīng)常使用的數(shù)據(jù)結(jié)構(gòu)和算法。配以適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu),二叉查找樹能對多種符號表的操作如查找、插入、選擇和排序在平均情況下提供快速操作性能。二叉查找樹也適合帶掩碼的條目,變長條目和最長匹配等情況,尤其適合文字條目或包含文字的條目。從二叉查找樹的查找過程可見,二叉查找樹的查找性能取決于它的深度,然而由于二叉查找樹是在查找過程中逐個插入構(gòu)成,因此它的深度取決于關(guān)鍵字先后插入的次序,二叉查找樹算法的運(yùn)行時間決定于樹的形狀,要想保證其平均情況下的查找性能,需要定期對樹進(jìn)行平衡優(yōu)化。另外一種查找樹Trie,Trie是一種數(shù)字查找樹,它來源于單詞"Retrieval",意為Retrievaldatafrommem,讀作"Try"。該算法采用每次比較關(guān)鍵詞的一部分,而不是整個關(guān)鍵詞。該方法提供了合理的最糟糕情況下的性能而且無需對Trie樹進(jìn)行平衡優(yōu)化。但是該方法也有兩個重要的缺點(diǎn),一是該方法對空間的利用率較低;其次是如果希望在空間利用率上有所優(yōu)化的話就需要增加平均情況下每次查找對內(nèi)存訪問的次數(shù)。還有一種查找樹,即DonaldR.Momson于1968年提出的Patricia樹(PracticalAlgorithmToRetrieveInformationCodedInAlphanumeric)。這是一種基于以二進(jìn)制表示的鍵值的查找樹,尤其適合于處理非常長的、可變長度的鍵值。Partricia的基本思想是構(gòu)建一個二叉樹,但不是針對鍵值中每個比特都形成一個結(jié)點(diǎn),對于那些不影響樹中條目查找的比特則不生成結(jié)點(diǎn),因此在每個結(jié)點(diǎn)中都包含下一個結(jié)點(diǎn)待比較的鍵值位置信息。該方法的缺點(diǎn)是糟糕情況下的性能并不穩(wěn)定,因?yàn)橐淮尾檎铱赡苄枰L問樹中的較多個結(jié)點(diǎn),每次結(jié)點(diǎn)訪問必須進(jìn)行一次內(nèi)存訪問,這對于目前網(wǎng)絡(luò)對時延和抖動的要求日益苛刻來說是個很大的問題。隨著Internet網(wǎng)絡(luò)用戶不斷擴(kuò)大,各種網(wǎng)絡(luò)應(yīng)用越來越豐富,用戶對各種網(wǎng)絡(luò)應(yīng)用的要求不斷提高,internet對網(wǎng)絡(luò)設(shè)備的帶寬也提出了越來越高的要求。最近幾年以及將來的發(fā)展趨勢來看,internet服務(wù)將更加依賴設(shè)備的性能;在IP數(shù)據(jù)傳輸設(shè)備中,影響其轉(zhuǎn)發(fā)性能的一個重要因素是報文在轉(zhuǎn)發(fā)過程中進(jìn)行的精確匹配查找各種業(yè)務(wù)表的效率。滿足這種性能需要的一種方式增加內(nèi)存訪問帶寬,目前典型的內(nèi)存訪問總線寬度是32,64比特,在嵌入式系統(tǒng)中將內(nèi)存訪問總線增加到256或512比特是可行的,有點(diǎn)遺憾的是目前沒有有效的利用高內(nèi)存訪問帶寬的優(yōu)勢的算法,單次訪問返回有效數(shù)據(jù)的并沒有隨內(nèi)存總線寬度成線性增長;在傳統(tǒng)的樹查找算法中檢查在每次檢查結(jié)點(diǎn)時都進(jìn)行一次在內(nèi)存訪問后,一般一個內(nèi)存結(jié)點(diǎn)的大小不到64個比特,而一次內(nèi)存訪問能返回256或512比特,其中大部分空間被浪費(fèi)了。改進(jìn)前Patricia查找樹算法示例該示例^i殳系統(tǒng)有256比特的內(nèi)存帶寬,在一個內(nèi)存訪問周期內(nèi)能返回256比特。普通的Patricia樹結(jié)點(diǎn)結(jié)構(gòu)由下面幾項(xiàng)組成結(jié)點(diǎn)中關(guān)鍵比特的位置9比特左指針18比特右指針18比特結(jié)點(diǎn)是葉子2比特葉子大小左+右4比特總共結(jié)點(diǎn)大小51比特由此可見,一次內(nèi)存訪問有256-51-205比特浪費(fèi)了,相應(yīng)的內(nèi)存訪問的內(nèi)容有效利用率為20%。另外,對于一個深度為3的樹,需要進(jìn)行3次內(nèi)存訪問才能訪問到樹的底部。一般來說,對于一個n個結(jié)點(diǎn)的樹需要訪問d次才能訪問到樹的底部,d為樹的深度。圖1是現(xiàn)有技術(shù)查找樹的結(jié)構(gòu),描述了一個現(xiàn)有技術(shù)下Patricia樹的結(jié)構(gòu),該樹包含結(jié)點(diǎn)O、1、2、4、5和6,下面連接了B、C、D、E、F和G6個子樹的根結(jié)點(diǎn)以及葉子A。每個結(jié)點(diǎn)的結(jié)構(gòu)都包含關(guān)鍵詞比較的位置,左指針指向左子結(jié)點(diǎn)或葉子,右指針指向右子結(jié)點(diǎn)或葉子。根據(jù)慣例,沿一個查找樹往下進(jìn)行查找時,當(dāng)父結(jié)點(diǎn)的比4^比特為0時,下一個待^r查的結(jié)點(diǎn)即是該父結(jié)點(diǎn)的左子結(jié)點(diǎn),反之上述比較比特為1時下一個待檢查的結(jié)點(diǎn)為該父結(jié)點(diǎn)的右子結(jié)點(diǎn)。假設(shè)這樣一個查找鍵10100101101010101100在圖1所示的樹結(jié)構(gòu)下進(jìn)行查找。首先判斷結(jié)點(diǎn)O,其關(guān)鍵詞的比較比特是第3個比特,鍵值為1,即根據(jù)結(jié)點(diǎn)0的右指針查找下一個結(jié)點(diǎn)2;結(jié)點(diǎn)2關(guān)鍵詞的比較比特是第10個比特,鍵值為O,即根據(jù)結(jié)點(diǎn)2的左指針查找下一個結(jié)點(diǎn)5;結(jié)點(diǎn)5關(guān)鍵詞的比較比特是第13個比特,鍵值為1,即根據(jù)結(jié)點(diǎn)5的右指針查找下一個結(jié)點(diǎn)E;另外假設(shè)一個關(guān)鍵詞10010001011010101100,依次經(jīng)過結(jié)點(diǎn)0和結(jié)點(diǎn)1,最后找到葉子A。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種Patricia樹快速查詢方法,以減少Patricia查找樹算法的內(nèi)存訪問次數(shù),提高查找效率。為了解決上述問題,本發(fā)明提供了一種Patricia樹快速查詢方法,該方法包括以下步驟(a)將Patricia樹根據(jù)樹的深度劃分成一個或多個子樹;(b)將每個子樹的所有結(jié)點(diǎn)信息壓縮成一個壓縮樹結(jié)構(gòu);(c)通過處理器與內(nèi)存的高帶寬訪問,一次內(nèi)存讀取獲得某個子樹的所有信息。進(jìn)一步地,步驟(b)中的壓縮樹結(jié)構(gòu)存儲在一個連續(xù)的內(nèi)存塊中。進(jìn)一步地,應(yīng)用該方法的系統(tǒng)內(nèi)存帶寬256比特,步驟(a)中以深度為3將Patricia樹劃分為一個或多個子樹。進(jìn)一步地,步驟(b)中一個壓縮樹結(jié)構(gòu)包括第一索引表和第二索引表兩部分,第一索引表是該子樹的結(jié)點(diǎn)和葉子信息,第二索引表是該子樹的葉子指針以及該子樹下面的子樹的根結(jié)點(diǎn)指針,該兩索引表均包括至少一個條目。進(jìn)一步地,第一索引表中,每個結(jié)點(diǎn)和葉子信息用一個條目表示,包括以下信息該結(jié)點(diǎn)是子結(jié)點(diǎn)或葉子的信息、該結(jié)點(diǎn)的下一個結(jié)點(diǎn)或葉子在索引表中的條目索引值、該條目索引值是指向第一索引表或第二索引表中的條目的信息以及該結(jié)點(diǎn)在關(guān)鍵詞中比較比特的位置信息。進(jìn)一步地,第一索引表中每一條目占用16比特,其中該結(jié)點(diǎn)是子結(jié)點(diǎn)或葉子的信息占用1比特,該結(jié)點(diǎn)的下一個結(jié)點(diǎn)或葉子在索引表中的條目索引值占用3比特,該條目索引值是指向第一索引表還是第二索引表中的條目的信息占用1比特,該結(jié)點(diǎn)在關(guān)鍵詞中比較比特的位置信息占用9比特。進(jìn)一步地,第一索引表中的條目索引值分為兩類,一類指向第一索引表的某個條目,另一類指向第二索引表的某個條目。進(jìn)一步地,壓縮樹結(jié)構(gòu)中所包含的上述結(jié)點(diǎn)的子結(jié)點(diǎn)或葉子信息是存放在第一索引表的相鄰兩行,且左子結(jié)點(diǎn)或葉子在右子結(jié)點(diǎn)或葉子前。進(jìn)一步地,壓縮樹結(jié)構(gòu)中所包含的上述結(jié)點(diǎn)的子樹的根結(jié)點(diǎn)指針或者葉子指針存放在第二索引表的相鄰兩行,且左子樹根結(jié)點(diǎn)指針或者葉子指針在右子樹根結(jié)點(diǎn)指針或者葉子指針之前。進(jìn)一步地,若某結(jié)點(diǎn)只有右子結(jié)點(diǎn),則對該結(jié)點(diǎn)信息進(jìn)行壓縮處理時,增加左子結(jié)點(diǎn)。相較于現(xiàn)有技術(shù),本發(fā)明引入了高內(nèi)存訪問帶寬下實(shí)現(xiàn)高效的Patricia查找樹的方法,其有益效果突出表現(xiàn)在三個方面,其一是大大提高了對高內(nèi)存訪問帶寬的有效利用;其二是相對改進(jìn)前的Patricia查找樹算法,其內(nèi)存空間利用率得到了較大提高;尤為重要的第三點(diǎn)是減少了Patricia查找樹算法的內(nèi)存訪問次數(shù),提高了該算法的查找效率。圖l是現(xiàn)有技術(shù)查找樹的結(jié)構(gòu)示意圖。圖2是本發(fā)明Patrica樹快速查找方法示意圖。圖3是本發(fā)明Patrica查找樹的結(jié)構(gòu)示意圖。圖4是本發(fā)明Patrica樹快速查找方法所應(yīng)用的硬件結(jié)構(gòu)示意圖。具體實(shí)施方式本發(fā)明Patricia樹快速查找方法如圖2所示,包括以下步驟步驟201:將Patricia樹根據(jù)樹的深度劃分成一個或多個子樹;若以深度為3進(jìn)行子樹劃分,當(dāng)Patricia樹深度為3時,根據(jù)本發(fā)明方法則只有一個子樹,當(dāng)Patricia樹深度大于3時,可以劃分出多個子樹。步驟202:將每個子樹的所有結(jié)點(diǎn)信息壓縮成一個壓縮樹結(jié)構(gòu);為了更快地獲得結(jié)點(diǎn)信息,上述壓縮樹結(jié)構(gòu)存儲在一個連續(xù)的內(nèi)存塊中;具體的壓縮樹結(jié)構(gòu)將在下文進(jìn)行詳細(xì)描述。步驟203:通過處理器與內(nèi)存的高帶寬訪問,一次內(nèi)存讀取獲得某個子樹的所有信息,進(jìn)而提高Patricia樹算法的查找性能。本發(fā)明方法適用于256比特以上內(nèi)存帶寬的系統(tǒng),根據(jù)該方法的思想設(shè)計其數(shù)據(jù)結(jié)構(gòu)可以到達(dá)最優(yōu)的查找性能。利用處理器執(zhí)行操作時,上述Patricia查找樹或子樹中包含所有可能的查找路徑,在每條查找路徑中至少執(zhí)行兩次查找步驟,在一次內(nèi)存訪問中能執(zhí)行3個或3個以上上述查找步驟。判斷一個結(jié)點(diǎn)的過程即為一次查找步驟,內(nèi)存帶寬為256bit時,子樹的深度是3,在一次內(nèi)存訪問中能執(zhí)行3個上述查找步驟;內(nèi)存為512時,子樹深度可以更深,那么每次內(nèi)存訪問能執(zhí)行更多查找步驟。以下對子樹的壓縮樹結(jié)構(gòu)進(jìn)行詳細(xì)描述本發(fā)明Patricia查找樹方法用于存儲和查找信息,其對每個子樹的所有結(jié)點(diǎn)信息的壓縮處理成一個壓縮樹內(nèi)存結(jié)構(gòu),該壓縮樹內(nèi)存結(jié)構(gòu)由兩部分組成,其一是該子樹的結(jié)點(diǎn)和葉子信息,其二是該子樹的葉子指針以及該子樹下面的子樹的根結(jié)點(diǎn)指針,即索引表A和索引表B。索引表A中每個條目結(jié)構(gòu)相同,都表示一個結(jié)點(diǎn)或葉子的信息,條目結(jié)構(gòu)如下結(jié)點(diǎn)中關(guān)鍵比特的位置9比特是否為葉子1比特沿該條目查找的下一個條目的索引3比特標(biāo)識上述的下一個條目的索引值是在索引表A或索引表B中1比特葉子大小2比特總共單個條目結(jié)構(gòu)大小16比特索引表B中的每個條目是一個指針,其大小為18比特;整個壓縮樹結(jié)構(gòu)的大小為索引表A中7個條目(結(jié)點(diǎn))十索引表B中8個條目(葉子或子樹的根結(jié)點(diǎn)指針),即7*16+8*18=256比特。因此整個壓縮樹結(jié)構(gòu)能在一次內(nèi)存訪問中獲得。對每個子樹的所有結(jié)點(diǎn)信息的壓縮處理具有以下特點(diǎn)1、Patricia樹或子樹的所有結(jié)點(diǎn)以一個壓縮樹結(jié)構(gòu)的形式存儲,至少一個結(jié)點(diǎn)有一個右結(jié)點(diǎn)和左結(jié)點(diǎn),所述結(jié)點(diǎn)擁有結(jié)點(diǎn)屬性,一個壓縮樹結(jié)構(gòu)由索引表A和索引表B表示;索引表A和索引表B均至少包含一個條目;一個結(jié)點(diǎn)信息是存放在上述索引表A中的一個條目,條目信息包括該結(jié)點(diǎn)是一個子結(jié)點(diǎn)或者葉子的信息、該結(jié)點(diǎn)的下一個結(jié)點(diǎn)或者葉子在索引表中的條目索引值、該條目索引值是指向索引表A或索引表B中的條目的信息以及該結(jié)點(diǎn)在關(guān)鍵詞中比較比特的位置信息,其中條目索引值分為兩類,一類指向下一個結(jié)點(diǎn)或葉子,該指針指向索引表A中的某個條目;另一類指向索引表B中的某個條目;2、壓縮樹結(jié)構(gòu)中所包含的上述結(jié)點(diǎn)的子結(jié)點(diǎn)或葉子信息是存放在索51表A的相鄰兩行,且左子結(jié)點(diǎn)或葉子在右子結(jié)點(diǎn)或葉子前;壓縮樹結(jié)構(gòu)中所包含的上述結(jié)點(diǎn)的子樹的根結(jié)點(diǎn)指針或者葉子指針存放在索引表B的相鄰兩行,且左子樹纟艮結(jié)點(diǎn)指針或者葉子指針在右子樹根結(jié)點(diǎn)指針或者葉子指針之前。根據(jù)上述描述,右結(jié)點(diǎn)是放在左結(jié)點(diǎn)之后的,沒有直接的信息到達(dá)右結(jié)點(diǎn),依賴這個規(guī)則省掉了右結(jié)點(diǎn)的連接信息,因此必須通過左結(jié)點(diǎn)的信息到達(dá)右結(jié)點(diǎn),如果有右結(jié)點(diǎn)而沒有左結(jié)點(diǎn),采用本發(fā)明方法進(jìn)行Patricia樹快速查詢時,需要增加左結(jié)點(diǎn),以圖1所示Patricia樹為例,采用本發(fā)明方法時,應(yīng)變化為圖3所示結(jié)構(gòu)。圖3中的樹結(jié)構(gòu)和圖l很類似,該結(jié)構(gòu)也包含結(jié)點(diǎn)O、1、2、4、5和6,下面連接了B、C、D、E、F和G6個子樹的根結(jié)點(diǎn)。與圖l不同的是增加結(jié)點(diǎn)3,另外,圖1中的結(jié)點(diǎn)包含左右指針,圖2中已經(jīng)沒有這些信息。圖1和圖2其實(shí)是同一個樹,因采用本發(fā)明方法圖2中添加結(jié)點(diǎn)3,添加結(jié)點(diǎn)3的目的在于能根據(jù)左結(jié)點(diǎn)3來找到右結(jié)點(diǎn)4。舉例說明如下判斷結(jié)點(diǎn)1的關(guān)鍵bit時,如果是O,那么下一個查找的是結(jié)點(diǎn)3,如果是l則查找的是結(jié)點(diǎn)4,而如果沒有右結(jié)點(diǎn),如結(jié)點(diǎn)4,則在應(yīng)用本發(fā)明方法時就沒有必要增加結(jié)點(diǎn)4。假設(shè)系統(tǒng)和
背景技術(shù)
示例的硬件環(huán)境相同,即有256比特的內(nèi)存帶寬,在一個內(nèi)存訪問周期內(nèi)能返回256比特,則為了與內(nèi)存帶寬256比特相適應(yīng),以深度為3對樹進(jìn)行子樹劃分,在其他的系統(tǒng)環(huán)境中若內(nèi)存帶寬大于256比特,也可以以深度為4或其他合適深度進(jìn)行子樹劃分。圖3中,Patricia樹的每個結(jié)點(diǎn)的信息以及各結(jié)點(diǎn)的邏輯關(guān)系通過壓縮存放在表1和表2中。表l即為圖3中所描述的樹結(jié)構(gòu)中對應(yīng)的索引表A,如下表所示,索引表A中每個條目表示一個結(jié)點(diǎn)。其索引號即為其結(jié)點(diǎn)號,并不占實(shí)際內(nèi)存空間。每個條目有一個比特表示該結(jié)點(diǎn)是否是葉子,有9比特表示該結(jié)點(diǎn)的比較比特在關(guān)鍵詞中的位置,有3個比特表示該結(jié)點(diǎn)的下一個結(jié)點(diǎn)、葉子索引或者指針?biāo)饕?;還有1個比特表示前面所述的3比特是下一個結(jié)點(diǎn)、葉子索引或者指針?biāo)饕槐韑<table>tableseeoriginaldocumentpage10</column></row><table><table>tableseeoriginaldocumentpage11</column></row><table>表2為圖3中所描述的樹結(jié)構(gòu)中對應(yīng)的索引表B,索引表B中每個條目表示一個子樹的根結(jié)點(diǎn)指針或者葉子指針;索引表A和索引表B是分別存》文在一個連續(xù)的內(nèi)存塊中。表2<table>tableseeoriginaldocumentpage11</column></row><table>下面描述如何將圖3所包含的查找樹壓縮成表1和2,即索引表A和B。首先,結(jié)點(diǎn)0存放在表1中的第一個條目(索引號為0),該結(jié)點(diǎn)不是葉子,比l^比特在關(guān)鍵詞中的位置為3,下一個結(jié)點(diǎn)索引為1,因?yàn)槭窍乱粋€結(jié)點(diǎn)索引,其標(biāo)識比特為0;接下來存放的是結(jié)點(diǎn)1,該結(jié)點(diǎn)不是葉子,比較比特在關(guān)鍵詞中的位置為5,下一個葉子索引為3,因?yàn)槭窍乱粋€葉子索引,其標(biāo)識比特為0;根據(jù)慣例右結(jié)點(diǎn)或者右葉子是存放在左結(jié)點(diǎn)或左葉子之后,因此結(jié)點(diǎn)2依次存放繼結(jié)點(diǎn)l后,即索引號為2的條目上,該條目的下一個結(jié)點(diǎn)索引為5;接下來是結(jié)點(diǎn)3的條目,該結(jié)點(diǎn)是葉子,其下一個是表2中的指針?biāo)饕?,表2中索引0條目包含的內(nèi)容即是該葉子的數(shù)據(jù)指針;結(jié)點(diǎn)4的下一個結(jié)點(diǎn)為左子樹的根結(jié)點(diǎn)指針?biāo)饕撍饕?是表2的鍵值,故標(biāo)識比特為1;還是根據(jù)前述慣例,結(jié)點(diǎn)4的右子樹的根結(jié)點(diǎn)指針是存放在表2中繼其左左子樹根結(jié)點(diǎn)指針之后,即C存在放在表2索引值為2的條目中;結(jié)點(diǎn)5,6以及子樹的根結(jié)點(diǎn)D、E、F、G根據(jù)上述原則分別存放在表1、表2中。ii由上可以發(fā)現(xiàn),為查找到結(jié)點(diǎn)E和葉子A,利用目前已有技術(shù),即圖1的方式必須分別進(jìn)行4次和3次內(nèi)存訪問。在目前對性能要求越來越高的數(shù)據(jù)處理設(shè)備中,多次內(nèi)存訪問操作無疑是其性能的一個關(guān)鍵缺陷所在。采用本發(fā)明方法在圖3的例子中只需要一次內(nèi)存訪問即可獲得深度為3的子樹內(nèi)所有結(jié)點(diǎn)的相關(guān)信息。另外,為了保證圖1中各結(jié)點(diǎn)的邏輯連接,每個結(jié)點(diǎn)都有左右結(jié)點(diǎn)指針,而一般此類指針的長度在20比特左右。本文提出的方法中壓縮樹結(jié)構(gòu)內(nèi)部結(jié)點(diǎn)間的邏輯關(guān)系已經(jīng)不需要用左右子結(jié)點(diǎn)指針來記錄,只有葉子或者子樹的根結(jié)點(diǎn)的指針仍然在索引表2中存在,這樣減少了總體內(nèi)存的消耗量。上述應(yīng)用實(shí)例旨對本發(fā)明方法的基本思想進(jìn)行說明,該方法不受限于例中的應(yīng)用細(xì)節(jié),例中的細(xì)節(jié)描述只是讓該方法更容易理解。如圖4所示,本發(fā)明方法在以下數(shù)據(jù)設(shè)備中實(shí)現(xiàn),該設(shè)備包括數(shù)據(jù)接口401、網(wǎng)絡(luò)處理器402、控制CPU403、內(nèi)存404、交換網(wǎng)4妄口405以及交換網(wǎng)406,其中數(shù)據(jù)接口401,包括多個物理接口以連接不同的網(wǎng)絡(luò),是網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)出芯片的數(shù)據(jù)通道。網(wǎng)絡(luò)處理器402,包括微引擎組4021、幀緩存4022,其中,微引擎組4021,在數(shù)據(jù)幀到達(dá)時,對數(shù)據(jù)幀進(jìn)行解碼分析,提取幀頭部和IP包的重要字段作為鍵值查詢路由以及其它業(yè)務(wù)的查找,根據(jù)查詢結(jié)果做相應(yīng)的處理。幀緩存4022,在數(shù)據(jù)幀到達(dá)網(wǎng)絡(luò)處理器時的臨時存儲區(qū)。在數(shù)據(jù)接收方向上,網(wǎng)絡(luò)處理器402把從某個物理接口收到的數(shù)據(jù)幀去除通信接口的封裝組成數(shù)據(jù)包,連同數(shù)據(jù)包的狀態(tài)信息一同存入進(jìn)出數(shù)據(jù)包幀緩存4022中。微引擎組4021對數(shù)據(jù)幀進(jìn)行解碼分析,并作各種業(yè)務(wù)處理;在數(shù)據(jù)發(fā)送方向上,根據(jù)數(shù)據(jù)包緩存4022中的狀態(tài)信息,對數(shù)據(jù)包作各種數(shù)據(jù)業(yè)務(wù)處理,然后加上通信接口封裝,在對應(yīng)的數(shù)據(jù)接口401發(fā)出。控制CPU403,將路由或其它業(yè)務(wù)表根據(jù)本文提出改進(jìn)的Patricia查找樹算法生成微引擎4021能查找的條目,并放在內(nèi)存404里面;交換網(wǎng)接口405,將網(wǎng)絡(luò)處理器處理好的信元送往交換網(wǎng)406。該快速查詢設(shè)備工作的流程包括如下步驟步驟A.控制CPU403根據(jù)各種業(yè)務(wù)需要生成各種Patricia查找樹表,存放在內(nèi)存404中;步驟B.數(shù)據(jù)通信接口401接收數(shù)據(jù)包;步驟C.從數(shù)據(jù)分組中根據(jù)業(yè)務(wù)需要提取特定字段,形成查找4建值;步驟D.微引擎4021根據(jù)鍵值查找,一次訪問即獲得與該數(shù)據(jù)分組鍵值匹配的結(jié)果;步驟E.微引擎4021根據(jù)查找的結(jié)果作相應(yīng)處理,并判斷是否還有其它業(yè)務(wù)需要處理,如果有則跳轉(zhuǎn)到步驟C,否則跳轉(zhuǎn)到步驟F;步驟F.微引擎4021對數(shù)據(jù)分組進(jìn)行二層數(shù)據(jù)封裝;步驟G.通過數(shù)據(jù)接口405發(fā)送數(shù)據(jù)包。本發(fā)明在高內(nèi)存訪問帶寬下實(shí)現(xiàn)高效的Patricia查找樹的方法,其有益效果突出表現(xiàn)在三個方面,其一是大大提高了對高內(nèi)存訪問帶寬的有效利用;其二是相對改進(jìn)前的Patricia查找樹算法,其內(nèi)存空間利用率得到了較大提高;尤為重要的第三點(diǎn)是減少了Patricia查找樹算法的內(nèi)存訪問次數(shù),提高了該算法的查找效率。權(quán)利要求1、一種Patricia樹快速查詢方法,其特征在于,該方法包括以下步驟(a)將Patricia樹根據(jù)樹的深度劃分成一個或多個子樹;(b)將每個子樹的所有結(jié)點(diǎn)信息壓縮成一個壓縮樹結(jié)構(gòu);(c)通過處理器與內(nèi)存的高帶寬訪問,一次內(nèi)存讀取獲得某個子樹的所有信息。2、如權(quán)利要求l所述的方法,其特征在于步驟(b)中的壓縮樹結(jié)構(gòu)存儲在一個連續(xù)的內(nèi)存塊中。3、如權(quán)利要求1所述的方法,其特征在于應(yīng)用該方法的系統(tǒng)內(nèi)存帶寬256比特,步驟(a)中以深度為3將Patricia樹劃分為一個或多個子樹。4、如權(quán)利要求l所述的方法,其特征在于步驟(b)中一個壓縮樹結(jié)構(gòu)包括第一索引表和第二索引表兩部分,第一索引表是該子樹的結(jié)點(diǎn)和葉子信息,第二索引表是該子樹的葉子指針以及該子樹下面的子樹的根結(jié)點(diǎn)指針,該兩索引表均包4舌至少一個條目。5、如權(quán)利要求4所述的方法,其特征在于第一索引表中,每個結(jié)點(diǎn)和葉子信息用一個條目表示,包括以下信息該結(jié)點(diǎn)是子結(jié)點(diǎn)或葉子的信息、該結(jié)點(diǎn)的下一個結(jié)點(diǎn)或葉子在索引表中的條目索引值、該條目索引值是指向第一索引表或第二索引表中的條目的信息以及該結(jié)點(diǎn)在關(guān)鍵詞中比較比特的位置信息。6、如權(quán)利要求5所述的方法,其特征在于第一索引表中每一條目占用16比特,其中該結(jié)點(diǎn)是子結(jié)點(diǎn)或葉子的信息占用1比特,該結(jié)點(diǎn)的下一個結(jié)點(diǎn)或葉子在索引表中的條目索引值占用3比特,該條目索引值是指向第一索引表還是第二索引表中的條目的信息占用1比特,該結(jié)點(diǎn)在關(guān)鍵詞中比較比特的位置信息占用9比特。7、如權(quán)利要求5所述的方法,其特征在于第一索引表中的條目索引值分為兩類,一類指向第一索引表的某個條目,另一類指向第二索引表的某個條目。8、如權(quán)利要求4所述的方法,其特征在于壓縮樹結(jié)構(gòu)中所包含的上述結(jié)點(diǎn)的子結(jié)點(diǎn)或葉子信息是存放在第一索引表的相鄰兩行,且左子結(jié)點(diǎn)或葉子在右子結(jié)點(diǎn)或葉子前。9、如權(quán)利要求4所述的方法,其特征在于壓縮樹結(jié)構(gòu)中所包含的上述結(jié)點(diǎn)的子樹的根結(jié)點(diǎn)指針或者葉子指針存放在第二索引表的相鄰兩行,且左子樹根結(jié)點(diǎn)指針或者葉子指針在右子樹根結(jié)點(diǎn)指針或者葉子指針之前。10、如權(quán)利要求1至9中任一項(xiàng)所述的方法,其特征在于若某結(jié)點(diǎn)只有右子結(jié)點(diǎn),則對該結(jié)點(diǎn)信息進(jìn)行壓縮處理時,增加左子結(jié)點(diǎn)。全文摘要本發(fā)明提供了一種Patricia樹快速查詢方法,該方法包括以下步驟(a)將Patricia樹根據(jù)樹的深度劃分成一個或多個子樹;(b)將每個子樹的所有結(jié)點(diǎn)信息壓縮成一個壓縮樹結(jié)構(gòu);(c)通過處理器與內(nèi)存的高帶寬訪問,一次內(nèi)存讀取獲得某個子樹的所有信息,本發(fā)明Patricia樹快速查詢方法可以減少Patricia查找樹算法的內(nèi)存訪問次數(shù),提高查找效率。文檔編號G06F17/30GK101241499SQ20081000834公開日2008年8月13日申請日期2008年2月26日優(yōu)先權(quán)日2008年2月26日發(fā)明者尹旺中申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
北宁市| 驻马店市| 灵石县| 祁东县| 汤原县| 闵行区| 乌审旗| 恩平市| 论坛| 赤峰市| 米脂县| 漳浦县| 云龙县| 北流市| 乌什县| 馆陶县| 会理县| 兴海县| 布拖县| 舞钢市| 白沙| 中山市| 抚宁县| 土默特左旗| 修文县| 绵竹市| 咸宁市| 宜阳县| 宽甸| 普兰县| 鹤岗市| 思南县| 鄂托克前旗| 深泽县| 镇雄县| 河北区| 搜索| 中牟县| 张家港市| 德庆县| 肥乡县|