一般來說,本發(fā)明的實施例涉及多位特里結(jié)構(gòu)(multi-bittrie)的領域,更具體來說,涉及存儲體感知多位特里結(jié)構(gòu)。
背景技術(shù):多位特里結(jié)構(gòu)(mtrie)是一種主要用于給定關鍵字(例如IP地址)的最長前綴匹配以得到關聯(lián)值(例如路由或下一跳)的樹數(shù)據(jù)結(jié)構(gòu)。在其最簡單形式中,mtrie中的各節(jié)點具有兩種類型:(1)葉,或者(2)mtrie節(jié)點。顧名思義,葉節(jié)點存儲值并且終止搜索。mtrie節(jié)點常常存儲步幅大小S,步幅大小S指示為了確定要采取哪個分支、從關鍵字的剩余部分要處理的位數(shù)??赡芊种У臄?shù)量為2^S,并且關鍵字位(它們的S)提供子節(jié)點的索引。代替存儲(指向子分支的)全部2^S個指針,常常對空間來優(yōu)化mtrie節(jié)點。這通過將給定mtrie節(jié)點的子存儲在連續(xù)陣列(mtrie塊)中來進行。而且,mtrie節(jié)點存儲指向那個節(jié)點的子分支mtrie塊的開始的基指針。給定mtrie塊的基址(BA)、mtrie塊中的每個mtrie節(jié)點的大小(SZ)和子節(jié)點的索引(I),能夠容易地使用下列公式來計算子節(jié)點的存儲地址(AD):AD(I)=BA+SZ*I。圖1是示出按照現(xiàn)有技術(shù)的3級mtrie的框圖。第0級100是根節(jié)點,并且具有3位的步幅以及指向其子mtrie塊第1級110的基指針Ptr1。注意,在第1級的根的子作為2^3條目(0至7)的陣列存儲在連續(xù)mtrie塊中。索引001處的條目被示為具有3的步幅以及指向第2A級120的基址的基指針Ptr2。第1級110的索引011處的條目被示為具有2的步幅以及指向第2B級121的基址的基指針Ptr3。第110級110的索引6處的條目被示為具有1的步幅以及指向第2C級122的基址的基指針Ptr4。mtrie中的查找在根處與所提供的關鍵字一起開始。在每個中間mtrie節(jié)點,關鍵字的一部分(如步幅所指定)被用盡以確定下一個節(jié)點,依此類推。最后,一旦到達葉節(jié)點,則查找以葉中存儲的值終止。圖1示出使用帶圓圈的1-4的四個步驟在mtrie中的關鍵字的查找。步驟1示出,正執(zhí)行關鍵字001100的查找。第0級100中的步幅為三,因此查找使用三個最高有效位在索引001處對子分支第1級進行索引。步驟2對訪問指向第2A級120的索引001處的mnode并且顯示三的步幅的第1A級110進行索引。步驟3使用三的步幅和Ptr2在索引100處對第2A級進行索引。步驟4訪問保存與關鍵字001100關聯(lián)的值的索引100處的葉節(jié)點。存儲器技術(shù)使得各存儲器裝置被組織為存儲體的集合(例如4或8)。來自該地址的位的子集在最初配置裝置時被選擇作為存儲體選擇符。一般來說,存儲體選擇符位被選擇成使得將第一塊(例如前8、前16或者前32個字節(jié))指配給第一存儲體以及將下一塊指配給下一存儲體,等等。術(shù)語“條帶化(striping)”還用于描述塊的大小以及如何將地址分布于不同存儲體。除了存儲器技術(shù)之外,存儲體的數(shù)量和條帶化大小(塊大小)還取決于管理存儲器的存儲控制器。圖2是示出按照現(xiàn)有技術(shù)的存儲器的4個存儲體中存儲的4級mtrie的框圖。圖2以四列示出存儲器的4個存儲體,即存儲體0-3。存儲地址開始于存儲體中的第一存儲塊處的0x000,并且從左至右遞增,使得存儲體1的第一存儲塊處于地址0x010,存儲體2的第一存儲塊處于地址0x020,以及存儲體3的第一存儲塊處于地址0x030。存儲體0的第二存儲塊處于地址0x040。這種尋址方案繼續(xù)進行到處于地址0x180的存儲體0的最后的第七存儲塊、處于地址0x190的存儲體1的最后塊、處于地址0x1A0的存儲體2的最后塊、以及處于地址0x1B0的存儲體3的最后塊。因此,通過跨越多于16個字節(jié)(圖2中的一個存儲塊的寬度)的連續(xù)地址所分配的陣列會跨越至少兩個存儲體。圖2中,四級mtrie開始于地址0x000處的存儲體0的第一塊中存儲的根節(jié)點第0級200。根節(jié)點指向第1級210,第1級開始于存儲體1的第二存儲塊、地址0x050,并且跨越到存儲體3的第二存儲塊、地址0x07F。第1級200中的mtrie節(jié)點指向第2A級220,第2A級220存儲在存儲體0的第五塊并且跨越到存儲在地址0x100至0x11F的存儲體1的第五塊。第1級200中的另一個mtrie節(jié)點指向第2B級221,第2B級221存儲在存儲體2的第五塊并且跨越到存儲在地址0x120至0x13F的存儲體3的第五塊。第2A級220中的mtrie節(jié)點指向地址0x180處的存儲體0的第七塊中的第3A級230。第2B級221中的mtrie節(jié)點指向存儲體2的第七塊中并且跨越到地址0x1A0-0x1BF處的存儲體3的第七塊的第3B級231。定義存儲器裝置(和控制器)的另一方面是最大事務處理速率。最大事務處理速率是每秒能夠執(zhí)行的訪問(讀和寫)次數(shù)。存儲器裝置具有總的最大事務處理速率和每存儲體的最大事務處理速率。下表提供兩種芯片上存儲器技術(shù)、即靜態(tài)隨機存取存儲器(SRAM)和嵌入式動態(tài)隨機存取存儲器(eDRAM)以及兩種芯片外存儲器技術(shù)、即降低等待時間動態(tài)隨機存取存儲器(RL-DRAM)和雙倍數(shù)據(jù)速率同步動態(tài)隨機存取存儲器(DDR-SDRAM)的示范比較。即使存儲器裝置(具有b個存儲體)額定為每秒M個事務處理的總吞吐量,所得到的有效吞吐量也取決于如何將訪問均勻地分布于b個存儲體。例如,eDRAM裝置被示為具有對裝置總體而言600tps的總吞吐量以及每存儲體的吞吐量150tps。這意味著,為了實現(xiàn)所提供的最大吞吐量,對這個eDRAM的訪問需要擴散于8個存儲體中的至少4個存儲體上。在最壞情況下,如果所有訪問針對單個存儲體,則有效吞吐量將是單個存儲體的吞吐量(M/b)。術(shù)語“存儲體沖突”用于表示如下事實:對存儲器裝置的訪問不均等地分布于存儲體上。由于存儲體沖突拉低了存儲器裝置的性能,所以是不希望有的。用于避免存儲體沖突的現(xiàn)有方案依靠隨機性和統(tǒng)計分布來提供跨存儲體的均勻分布訪問。隨機化能夠在存儲器分配時間執(zhí)行,使得將地址指配給哪些節(jié)點沒有規(guī)律性。如果將多個數(shù)據(jù)結(jié)構(gòu)映射到同一存儲器裝置,則能夠看到多個數(shù)據(jù)結(jié)構(gòu)的分配中的隨機化如何降低跨存儲體的不均勻分布的概率。若給定存儲地址本身,還使用哈希對如何揀選存儲體進一步加擾。在分組轉(zhuǎn)發(fā)應用中使用的網(wǎng)絡處理單元(NPU)、以及具體來說是用于因特網(wǎng)協(xié)議(IP)地址查找的mtrie的上下文中,查找一般被切斷成一些分組屬性(例如源IP地址)。每個查找又根據(jù)用于查找的關鍵字而轉(zhuǎn)換為一系列存儲器訪問。因此,一旦數(shù)據(jù)結(jié)構(gòu)已經(jīng)建立,則訪問模式取決于業(yè)務混合。這是關于訪問的隨機性和統(tǒng)計分布的附加假設開始起作用的情況。但是,上述技術(shù)沒有完全消除存儲體沖突的可能性。因此,雖然依靠隨機性和統(tǒng)計分布對于大多數(shù)現(xiàn)實世界應用是足夠好的,但是它可能并不適合于所有情形(當這些假設中的一個或多個無效時)。在NPU的上下文中,一些數(shù)據(jù)結(jié)構(gòu)由于原始性能原因而放置在芯片上。芯片上存儲器趨向于小的尺寸。因此,若給定尺寸限制,這類存儲器只能夠容納一個或兩個數(shù)據(jù)結(jié)構(gòu),或者在一些情況下,僅容納較大數(shù)據(jù)結(jié)構(gòu)的一部分。因此,芯片上存儲器往往不能獲得存儲器分配中隨機化的有益效果以避免存儲體沖突。另外,在需要為性能嚴格預算并且保證性能的一些硬件實現(xiàn)中,依靠隨機性的解決方案是不適合的。
技術(shù)實現(xiàn)要素:本發(fā)明的實施例包括耦合到網(wǎng)絡并且配置成從網(wǎng)絡的其它網(wǎng)絡單元接收分組的網(wǎng)絡單元。網(wǎng)絡單元處理分組并且在存儲體感知多位特里結(jié)構(gòu)(mtrie)內(nèi)維護因特網(wǎng)協(xié)議(IP)地址查找表。網(wǎng)絡單元包括配置成從網(wǎng)絡的其它網(wǎng)絡單元接收分組的多個網(wǎng)絡接口,各分組包含目的地IP地址。網(wǎng)絡單元還包括處理器,處理器耦合到多個網(wǎng)絡接口,以及配置成處理所接收分組并且為所接收分組中的一個或多個確定下一跳。網(wǎng)絡單元還包括存儲器和存儲控制模塊。存儲器耦合到處理器,并且配置成存儲存儲體感知mtrie。存儲控制模塊耦合到處理器和存儲器,并且包括多個存儲體。存儲控制模塊配置成識別存儲器中存在的多個存儲體。存儲控制模塊還配置成識別存儲體感知mtrie中的一個或多個mtrie級中的一個或多個mtrie塊。存儲控制模塊還配置成將給定mtrie塊的所有mtrie節(jié)點存儲在同一存儲體中。存儲控制模塊還配置成將步幅長度以及指向另一個mtrie塊的指針存儲在一個或多個mtrie節(jié)點中,并且配置成將轉(zhuǎn)發(fā)接口標識符存儲在一個或多個mtrie節(jié)點中。對于每個后續(xù)mtrie級,存儲控制模塊還配置成確保該mtrie級中的每個mtrie塊存儲在除了存儲緊鄰的前一mtrie級的mtrie塊的存儲體之外的多個存儲體之一中。本發(fā)明的實施例包括由存儲體感知多位(mtrie)控制模塊執(zhí)行的用于將mtrie中的多個mtrie級分布于存儲器中的多個存儲體的方法。存儲體感知mtrie控制模塊識別存儲器中存在的多個存儲體。存儲體感知mtrie控制模塊識別一個或多個mtrie級中的一個或多個mtrie塊,每個mtrie塊是與mtrie級關聯(lián)的mtrie節(jié)點的陣列。存儲體感知mtrie控制模塊將一個或多個mtrie塊中的每個存儲在多個存儲體之一中,給定mtrie塊中的所有mtrie節(jié)點都存儲在同一存儲體中。對于每個后續(xù)mtrie級,存儲體感知mtrie控制模塊確保該mtrie級中的每個mtrie塊存儲在除了存儲緊鄰的前一mtrie級的mtrie塊的存儲體之外的多個存儲體之一中。本發(fā)明的實施例包括要耦合到處理器和包括多個存儲體的存儲器的存儲控制模塊。存儲控制模塊將多個多位(mtrie)級分布于多個存儲體。存儲控制模塊包括配置成識別存儲器中存在的多個存儲體的存儲體感知mtrie控制模塊。存儲體感知mtrie控制模塊還配置成識別一個或多個mtrie級中的一個或多個mtrie塊,每個mtrie塊是與mtrie級關聯(lián)的mtrie節(jié)點的陣列。存儲體感知mtrie控制模塊還配置成將一個或多個mtrie塊中的每個存儲在多個存儲體之一中,給定mtrie塊中的所有mtrie節(jié)點都存儲在同一存儲體中。對于每個后續(xù)mtrie級,存儲體感知mtrie控制模塊還配置成確保該mtrie級中的每個mtrie塊存儲在除了存儲緊鄰的前一mtrie級的mtrie塊的存儲體之外的多個存儲體之一中。附圖說明在附圖中,通過示例而不是限制來說明本發(fā)明,附圖中相似的參考標號表示相似的單元。應當注意,本公開中,“一”或“一個”實施例的不同說法不一定表示同一個實施例,這類說法表示至少一個。此外,在結(jié)合一個實施例來描述特定特征、結(jié)構(gòu)或特性時,無論是否明確描述,均認為結(jié)合其它實施例來實現(xiàn)這種特征、結(jié)構(gòu)或特性是在本領域的技術(shù)人員的知識范圍之內(nèi)的。通過參照以下描述和用于示出本發(fā)明的實施例的附圖,可以最佳地理解本發(fā)明。附圖中:圖1是示出按照現(xiàn)有技術(shù)的3級mtrie的框圖。圖2是示出按照現(xiàn)有技術(shù)的存儲器的4個存儲體中存儲的4級mtrie的框圖。圖3是示出按照本發(fā)明的實施例具有存儲體感知多位特里結(jié)構(gòu)(mtrie)的網(wǎng)絡單元的框圖。圖4是示出按照本發(fā)明的實施例維護存儲體感知mtrie的方法的流程圖。圖5是示出按照本發(fā)明的實施例具有存儲體感知多位特里結(jié)構(gòu)(mtrie)的存儲器的框圖。圖6是示出按照本發(fā)明的實施例在板塊(slab)/片(slice)分配中具有存儲體感知多位特里結(jié)構(gòu)(mtrie)的存儲器的框圖。具體實施方式以下描述會描述用于將存儲體感知多位特里結(jié)構(gòu)存儲在網(wǎng)絡單元內(nèi)的方法和設備。在以下描述中,提出了諸如邏輯實現(xiàn)、操作碼、指定操作數(shù)的手段、資源劃分/共享/重復實現(xiàn)、系統(tǒng)組件的類型和相互關系以及邏輯劃分/集成選擇之類的許多具體細節(jié),以便提供對本發(fā)明的更透徹理解。然而,本領域的技術(shù)人員會理解,即使沒有這類具體細節(jié),也可實施本發(fā)明。在其它情況下,沒有詳細示出控制結(jié)構(gòu)、門級電路和完整軟件指令序列,以免影響對本發(fā)明的理解。通過所包含的描述,本領域的技術(shù)人員將能夠?qū)崿F(xiàn)適當?shù)墓δ苄远鵁o需過分實驗。說明書中提到“一個實施例”、“實施例”、“一個示例實施例”等表示所述實施例可包括特定特征、結(jié)構(gòu)或特性,但可能不一定每個實施例都包括該特定特征、結(jié)構(gòu)或特性。此外,這類短語不一定指同一個實施例。此外,在結(jié)合一個實施例來描述特定特征、結(jié)構(gòu)或特性時,無論是否明確描述,均認為結(jié)合其它實施例來實現(xiàn)這種特征、結(jié)構(gòu)或特性是在本領域的技術(shù)人員的知識范圍之內(nèi)的。在以下描述和權(quán)利要求書中,可使用術(shù)語“耦合”和“連接”及其派生詞。應當理解,這些術(shù)語不是要作為彼此的同義詞?!榜詈稀庇糜诒硎颈舜丝梢曰蛘呖梢圆恢苯游锢砘螂娊佑|的兩個或更多單元相互合作或交互。“連接”用于表示彼此耦合的兩個或更多單元之間的通信的建立。圖3是示出按照本發(fā)明的實施例具有存儲體感知多位特里結(jié)構(gòu)(mtrie)的網(wǎng)絡單元的框圖。不是依靠隨機性,而是網(wǎng)絡單元將mtrie級分布于存儲體,從而確保給定mtrie塊中的所有mtrie節(jié)點都放置在同一存儲體中,并且不同mtrie級的mtrie塊放置在不同存儲體中。其優(yōu)點在于,與所查找的關鍵字無關并且因此與貫穿mtrie以查找對應mtrie葉節(jié)點的路徑無關,訪問不同級的任何查找將命中不同存儲體。因此,對存儲器裝置的存儲器訪問將更均勻地分布于存儲體,并且因而減少存儲體沖突。網(wǎng)絡單元300耦合到網(wǎng)絡390。在一個實施例中,網(wǎng)絡單元300通過網(wǎng)絡390耦合到多個端站(例如訂戶端站或服務器端站)391。在另一個實施例中,網(wǎng)絡單元300通過網(wǎng)絡390耦合到多個其它網(wǎng)絡單元391。在又一個實施例中,網(wǎng)絡單元通過網(wǎng)絡390耦合到多個端站391和多個網(wǎng)絡單元392。第一網(wǎng)絡單元300包括耦合到處理器320的多個網(wǎng)絡接口310A-310N。處理器320還耦合到存儲控制模塊330,存儲控制模塊330耦合到存儲器340。存儲器存儲存儲體感知mtrie(例如mtrie內(nèi)的因特網(wǎng)協(xié)議(IP)地址查找表)。在一個實施例中,存儲器是RL-DRAM(降低等待時間動態(tài)隨機存取存儲器)。另一個實施例可使用其它類型的存儲器(例如eDRAM(嵌入式動態(tài)隨機存取存儲器))。而其它實施例利用DDR-DRAM(雙倍數(shù)據(jù)速率動態(tài)隨機存取存儲器)或SDR-DRAM(單數(shù)據(jù)速率動態(tài)隨機存取存儲器)。在一些實施例中,存儲控制模塊330還包括具體在存儲器340內(nèi)建立和維護存儲體感知mtrie的存儲體感知mtrie控制模塊335(虛線中所示)。在其它實施例中,存儲體感知mtrie控制模塊335包括由處理器320執(zhí)行的指令集,并且存儲控制模塊330在存儲器340內(nèi)建立和維護存儲體感知mtrie。在一個實施例中,網(wǎng)絡單元300利用存儲體感知mtrie來存儲和維護將目的地IP地址與下一跳關聯(lián)的IP地址查找表。當處理器通過多個網(wǎng)絡接口接收分組時,處理器為所接收分組中的一個或多個確定下一跳。當處理器了解IP地址與下一跳之間的新關聯(lián)時,處理器指導存儲控制模塊330將IP地址用作關鍵字以及將下一跳用作關聯(lián)值將新條目存儲在IP地址查找表中。圖4是示出按照本發(fā)明的實施例維護存儲體感知mtrie的方法的流程圖。在框400,存儲控制模塊330識別存儲器340中存在的多個存儲體。在框410,存儲控制模塊330識別各將放置在多個mtrie級之一中的一個或多個mtrie塊。每個mtrie塊是與給定mtrie級關聯(lián)的mtrie節(jié)點的陣列。在框415,存儲控制模塊330將每個mtrie塊存儲在多個存儲體之一中,使得給定mtrie級的所有mtrie節(jié)點都存儲在同一存儲體中。在一個實施例中,指向另一級的mtrie節(jié)點,存儲控制模塊330存儲標識關鍵字的多少要用作下一索引的步幅大小(步幅長度)以及指向下一級的另一個mtrie塊的指針。在其它實施例中,指向另一級的mtrie節(jié)點沒有存儲步幅長度,因為它跨mtrie中的所有mtrie節(jié)點是固定的。在作為葉節(jié)點的mtrie節(jié)點中,存儲控制模塊330將存儲對應值、例如與用作那個葉節(jié)點的關鍵字的特定IP地址對應的下一跳(轉(zhuǎn)發(fā)接口標識符)。在存儲多個mtrie級的多個mtrie塊時,存儲控制模塊對于每個后續(xù)級420執(zhí)行下列步驟:在框425,存儲控制模塊330將確保每個mtrie級中的每個mtrie塊存儲在除了存儲緊鄰的前一mtrie級的mtrie塊的存儲體之外的存儲體之一中。在一個實施例中,存儲控制模塊330還將確保給定mtrie級中的所有mtrie塊存儲在相同存儲體中。又在另一個實施例中,存儲控制模塊330將確保各存儲體僅包含來自一個mtrie級的mtrie塊。又參照圖3,四級存儲體感知mtrie在存儲器340內(nèi)被示為分布于四個存儲級。本領域的技術(shù)人員會知道,存儲器的深度和mtrie的深度沒有明確綁定在一起,并且在這里只是為了便于說明而示出。在存儲體0,根mtrie節(jié)點第0級被存儲,并且指向存儲體1中存儲的mtrie子分支第1級mtrie塊。第1級mtrie塊中的mtrie節(jié)點指向存儲體2中存儲的兩個分開的第2級mtrie塊。第2級mtrie塊中的mtrie節(jié)點指向存儲體3中存儲的兩個分開的第3級mtrie塊。能夠參照圖5更詳細地說明圖3。圖5是示出按照本發(fā)明的實施例具有存儲體感知多位特里結(jié)構(gòu)(mtrie)的存儲器的框圖。圖5與圖2相似,但是圖2示出與圖5的存儲體感知mtrie相反的不是存儲體感知的mtrie。圖5以四列示出存儲器的四個存儲體,即存儲體0-3。存儲地址開始于存儲體中的第一存儲塊處的0x000,并且從左至右遞增,使得存儲體1的第一存儲塊處于地址0x010,存儲體2的第一存儲塊處于地址0x020,以及存儲體3的第一存儲塊處于地址0x030。存儲體0的第二存儲塊處于地址0x040。這種尋址方案繼續(xù)進行到處于地址0x180的存儲體0的最后的第七存儲塊、處于地址0x190的存儲體1的最后塊、處于地址0x1A0的存儲體2的最后塊以及處于地址0x1B0的存儲體3的最后塊。圖2中,四級存儲體感知mtrie在存儲器340中被示為分布于四個存儲級。在存儲體0中,根mtrie節(jié)點第0級500存儲在地址0x000-0x00F。根mtrie節(jié)點500指向地址0x010-0x01F、0x050-0x05F、0x090-0x09F和0x0D0-0x0DF處的存儲體1中存儲的mtrie子分支第1級mtrie塊510。第1級mtrie塊510中的兩個mtrie節(jié)點指向存儲體2中存儲的兩個分開的第2級mtrie塊。mtrie塊520將mtrie級2A保持在地址0x020-0x02F、0x060-0x06F和0x0A0-0x0AF。mtrie塊521將mtrie級2B保持在地址0x160-0x16F和0x1A0-0x1AF。塊520中的mtrie節(jié)點指向地址0x070-0x7F和0x0B0-0x0BF處的存儲體3中的第3A級。塊521中的mtrie節(jié)點指向地址0x130-0x13F、0x170-0x17F和0x1B0-0x1BF處的存儲體3中的第3B級。圖2中,存儲塊為16字節(jié)寬。假定mtrie塊中的每個mtrie節(jié)點也是16字節(jié),則存儲控制器能夠使用mtrie塊中的索引以及mtrie塊的起始地址來轉(zhuǎn)換到特定mtrie節(jié)點的存儲地址。例如,如果查找要求存儲控制器訪問第2A級520中的第二mtrie節(jié)點(索引為1,因為第一mtrie節(jié)點是索引0),則存儲控制器能夠計算存儲體感知偏移,以便加至那個mtrie塊的起始地址(0x020)。存儲體感知偏移等于索引(I)*(存儲體數(shù)量(B)*塊大小(CSZ)),在示范情況下按照十六進制為1*4*16=64(或0x40)。將0x40加至起始地址0x20得到存儲地址0x060或存儲體2中的第二塊。因此,地址(I)=起始地址(SA)+索引(I)*(存儲體(B)*塊大小(CSZ)或Ad(I)=SA+I*(B*CZ)。當然,這種計算簡化成塊大小和mtrie節(jié)點大小相等的情形。在其它實施例中,有利的是將mtrie節(jié)點之間的間距存儲在每個mtrie節(jié)點本身中的mtrie塊內(nèi)。如果間距(SP)存儲在mtrie節(jié)點中,則地址計算簡化為Ad(I)=SA+I*SP。這允許塊大小和mtrie節(jié)點大小不同。本領域的技術(shù)人員會知道,SP可等于塊大小,并且仍然有利的是將SP存儲在mtrie節(jié)點中以避免存儲器訪問期間的B*CSZ的常數(shù)乘法。在一個實施例中,有利的是將mtrie節(jié)點大小增加到等于塊大小。mtrie節(jié)點大小的增加沒有降低存儲器訪問速率,因為存儲控制器必須訪問塊,而與使用塊的部分或者塊的全部無關。此外,有利的是確保用于查找的所有訪問分布于存儲體。因此,存儲控制器(例如330)將mtrie中的每級映射到不同存儲體,但是不排除每級可分為如圖6中對第2級所示的多個mtrie塊。使用圖6作為示例,每次對第2級需要mtrie塊時,會從存儲體2來分配存儲器。因此,存儲控制器能夠確信mtrie中的關鍵字的給定查找不會對其自己呈現(xiàn)存儲體沖突,因為每級的各存儲器讀取將在不同存儲體中發(fā)生。通過構(gòu)造mtrie以確保給定查找中不發(fā)生存儲體沖突,使存儲器裝置的吞吐量對于那個查找為最大。在一個實施例中,這個mtrie分配方案采用將存儲器分配為板塊和片的存儲控制器來實現(xiàn)。例如,使用2級板塊分配器,板塊分配的第一級分配存儲器的大區(qū)域(板塊),而第二級從較大板塊內(nèi)少量發(fā)放較小固定大小的片。在使用存儲體感知mtrie來實現(xiàn)IP查找表的情況下,預計表更新引起對轉(zhuǎn)換和撤消基礎mtrie結(jié)構(gòu)的表的頻繁變更。從存儲器管理方面,這轉(zhuǎn)換成mtrie塊的頻繁分配和解除分配(釋放)。為了全面支持存儲體感知mtrie分配,存儲控制器將每個板塊當作一系列片,其中每個片包含在一個存儲體中。使用諸如參照圖5所述之類的算術(shù)地址轉(zhuǎn)換,將每個片當作存儲器的連續(xù)塊。標準存儲器管理算法能夠跨屬于特定存儲體的所有片運行。如果分配無法實現(xiàn),則附加板塊被分配和劃分在各片。如果某個板塊的所有片是自由的,則聚結(jié)邏輯負責將其存儲體組合為板塊,并且又將它釋放回到中心池中。圖6是示出按照本發(fā)明的實施例在板塊/片分配中具有存儲體感知多位特里結(jié)構(gòu)(mtrie)的存儲器的框圖。在圖6的存儲器中已經(jīng)分配存儲器的三個板塊、即板塊0-2。各板塊跨四個存儲體來分配,并且進一步切割為四個片,每個片包含在一個存儲體內(nèi)。圖6包含四級存儲體感知mtrie。根mtrie節(jié)點第0級600存儲在第一板塊的第一片、即板塊0片0中,并且指向被分為兩個mtrie塊的第1級。mtrie塊第1A級610存儲在板塊0片1中,并且指向第二級mtrie塊第2A級620。mtrie塊第1B級611存儲在板塊1片1中,并且指向第二級mtrie塊第2B級621。mtrie塊第2A級620存儲在板塊0片2中,并且指向板塊0片3中存儲的第三級mtrie塊第3A級630。mtrie塊第2B級621存儲在板塊2片2中,并且指向板塊2片3中存儲的第三級mtrie塊第3B級631。將各存儲器板塊劃分到其中的板塊數(shù)量取決于實現(xiàn)最大總吞吐量所需的存儲體的數(shù)量。如果參閱背景部分的eDRAM特性,即使存儲器本身被構(gòu)造成包含每裝置八個存儲體,訪問也僅需要分散于四個存儲體,以便得到最大吞吐量。因此,對于eDRAM,僅創(chuàng)建四個片是足夠的。通過四個片和八個存儲體,每個片將各由兩個存儲體來組成。在這種方案中,片內(nèi)的塊將分散在兩個存儲體。因此,存儲器訪問不需要分散在全部八個存儲體之中,只要存儲器訪問分散在四個片之中。如果mtrie結(jié)構(gòu)包含比片數(shù)更多的級,則存儲控制器對mtrie級執(zhí)行片的循環(huán)分配,而無需犧牲吞吐量,因為最大訪問次數(shù)分散在已經(jīng)配置用于最大總吞吐量的片上。本文所使用的“網(wǎng)絡單元”(例如路由器、交換機、橋)是包括硬件和軟件的一件組網(wǎng)設備,它在通信上互連網(wǎng)絡上的其它設備(例如其它網(wǎng)絡單元、端站)。一些網(wǎng)絡單元是“多服務網(wǎng)絡單元”,它們提供對多個連網(wǎng)功能(例如路由、橋接、交換、第2層匯聚、會話邊界控制、服務質(zhì)量和/或訂戶管理)的支持,和/或提供對多個應用服務(例如數(shù)據(jù)、語音和視頻)的支持。訂戶端站(例如服務器、工作站、膝上型計算機、上網(wǎng)本、掌上型設備、移動電話、智能電話、多媒體電話、基于因特網(wǎng)協(xié)議的語音(VOIP)電話、用戶設備、終端、便攜媒體播放器、GPS單元、游戲系統(tǒng)、機頂盒)訪問通過因特網(wǎng)提供的內(nèi)容/服務和/或覆蓋于因特網(wǎng)(例如通過其中隧道傳遞)上的虛擬專用網(wǎng)(VPN)上提供的內(nèi)容/服務。內(nèi)容和/或服務通常由屬于服務或內(nèi)容提供商的一個或多個端站(例如服務器端站)或者參與對等服務的端站來提供,并且可包括例如公開網(wǎng)頁(例如免費內(nèi)容、店面、搜索服務)、私人網(wǎng)頁(例如提供電子郵件服務的用戶名/密碼訪問網(wǎng)頁)和/或基于VPN的公司網(wǎng)絡。通常,訂戶端站(例如通過與接入網(wǎng)(有線或無線)耦合的客戶駐地設備)耦合到邊緣網(wǎng)絡單元,邊緣網(wǎng)絡單元(例如通過一個或多個核心網(wǎng)絡單元)耦合到與其它端站(例如服務器端站)耦合的其它邊緣網(wǎng)絡單元。網(wǎng)絡單元通常分為控制平面和數(shù)據(jù)平面(有時稱作轉(zhuǎn)發(fā)平面或媒體平面)。在網(wǎng)絡單元是路由器(或者實現(xiàn)路由功能性)的情況下,控制平面通常確定如何路由數(shù)據(jù)(例如分組)(例如數(shù)據(jù)的下一跳和該數(shù)據(jù)的輸出端口),而數(shù)據(jù)平面負責轉(zhuǎn)發(fā)該數(shù)據(jù)。例如,控制平面通常包括與其它網(wǎng)絡單元進行通信以交換路由并且基于一個或多個路由選擇量度來選擇那些路由的一個或多個路由選擇協(xié)議(例如邊界網(wǎng)關協(xié)議(BGP)、內(nèi)部網(wǎng)關協(xié)議(IGP)(例如開放式最短路徑優(yōu)先(OSPF)、路由選擇信息協(xié)議(RIP)、中間系統(tǒng)到中間系統(tǒng)(IS-IS))、標記分布協(xié)議(LDP)、資源保存協(xié)議(RSVP))。路由和鄰接物被存儲在控制平面上的一個或多個路由選擇結(jié)構(gòu)(例如路由選擇信息庫(RIB)、標記信息庫(LIB)、一個或多個鄰接物結(jié)構(gòu))中??刂破矫婊诼酚蛇x擇結(jié)構(gòu)采用信息(例如鄰接物和路由信息)來對數(shù)據(jù)平面編程。例如,控制平面將鄰接物和路由信息編程到數(shù)據(jù)平面上的一個或多個轉(zhuǎn)發(fā)結(jié)構(gòu)(例如轉(zhuǎn)發(fā)信息庫(FIB)、標記轉(zhuǎn)發(fā)信息庫(LFIB)以及一個或多個鄰接物結(jié)構(gòu))中。數(shù)據(jù)平面在轉(zhuǎn)發(fā)業(yè)務時使用這些轉(zhuǎn)發(fā)和鄰接物結(jié)構(gòu)。每個路由選擇協(xié)議基于某些路由量度(量度對于不同路由選擇協(xié)議能夠是不同的)將路由條目下載到主RIB。每個路由選擇協(xié)議能夠在本地RIB(例如OSPF本地RIB)中存儲路由條目,其中包括沒有下載到主RIB的路由條目。管理主RIB的RIB模塊從路由選擇協(xié)議所下載的路由中選擇路由(基于量度集合),并且將那些所選路由(有時稱作活動路由條目)下載到數(shù)據(jù)平面。RIB模塊還能夠使路由在路由選擇協(xié)議之間重新分布。對于第2層轉(zhuǎn)發(fā),網(wǎng)絡單元能夠存儲用于基于這個數(shù)據(jù)中的第2層信息來轉(zhuǎn)發(fā)數(shù)據(jù)的一個或多個橋接表。通常,網(wǎng)絡單元包括一個或多個線路卡的集合、一個或多個控制卡的集合以及可選的一個或多個服務卡(有時稱作資源卡)的集合。這些卡通過一個或多個機構(gòu)(例如耦合線路卡的第一全網(wǎng)格以及耦合全部卡的第二全網(wǎng)格)耦合在一起。線路卡的集合組成數(shù)據(jù)平面,而控制卡的集合提供控制平面并且通過線路卡與外部網(wǎng)絡單元交換分組。服務卡的集合能夠提供專用處理(例如第4層至第7層服務(例如防火墻、IPsec、IDS、P2P)、VoIP會話邊緣控制器、移動無線網(wǎng)關(GGSN、演進分組系統(tǒng)(EPS)網(wǎng)關))。作為舉例,服務卡可用于端接IPsec隧道,并且執(zhí)行伴隨認證和加密算法。如本文所述,指令可表示配置成執(zhí)行某些操作或具有預定功能性的諸如專用集成電路(ASIC)之類的硬件的特定配置或者在非暫時計算機可讀介質(zhì)中實施的存儲器中存儲的軟件指令。因此,附圖所示的技術(shù)能夠使用在一個或多個電子裝置(例如端站、網(wǎng)絡單元)上存儲和執(zhí)行的代碼及數(shù)據(jù)來實現(xiàn)。這類電子裝置使用諸如非暫時計算機可讀存儲介質(zhì)(例如磁盤、光盤、隨機存取存儲器、只讀存儲器、閃存裝置、相變存儲器)和暫時計算機可讀通信介質(zhì)(例如電、光、聲或其它形式的傳播信號-諸如載波、紅外信號、數(shù)字信號)之類的計算機可讀介質(zhì)來存儲和(內(nèi)部和/或通過網(wǎng)絡與其它電子裝置之間)傳遞代碼和數(shù)據(jù)。另外,這類電子裝置通常包括一個或多個處理器的集合,處理器耦合到諸如一個或多個存儲裝置(非暫時機器可讀存儲介質(zhì))、用戶輸入/輸出裝置(例如鍵盤、觸摸屏和/或顯示器)和網(wǎng)絡連接之類的一個或多個其它組件。該處理器集合和其它組件的耦合通常通過一個或多個總線和橋(又稱作總線控制器)進行。因此,給定電子裝置的存儲裝置通常存儲供那個電子裝置的一個或多個處理器的集合上執(zhí)行的代碼和/或數(shù)據(jù)。當然,本發(fā)明的一個實施例的一個或多個部分可使用軟件、固件和/或硬件的不同組合來實現(xiàn)。備選實施例雖然圖中的流程圖示出本發(fā)明的某些實施例所執(zhí)行的操作的特定順序,但是應當理解這種順序是示范性的(例如備選實施例可按照不同順序來執(zhí)行操作、組合某些操作、交迭某些操作等)。雖然按照若干實施例描述了本發(fā)明,但是本領域的技術(shù)人員會知道,本發(fā)明并不局限于所述實施例,而是可在所附權(quán)利要求的精神和范圍之內(nèi)經(jīng)過修改和變更來實施。因此,本描述被看作是說明性而不是限制性的。