專利名稱:一種高速路由器流量管理芯片鏈表存儲(chǔ)管理方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通訊技術(shù)中分組轉(zhuǎn)發(fā)設(shè)備的存儲(chǔ)管理方法,尤其涉及一種高速路 由器流量管理芯片鏈表存儲(chǔ)管理方法及系統(tǒng)。
背景技術(shù):
隨著網(wǎng)絡(luò)容量與業(yè)務(wù)不斷增長,為了實(shí)現(xiàn)報(bào)文的高速轉(zhuǎn)發(fā),一般在路由器內(nèi)部設(shè) 置專門的流量管理芯片完成對(duì)高速數(shù)據(jù)流的管理;在流量管理芯片中先將報(bào)文數(shù)據(jù)緩存后 調(diào)度輸出。對(duì)高端路由器設(shè)備而言,一個(gè)基本要求是至少緩存200ms線速的數(shù)據(jù)報(bào)文,在 40Gbps環(huán)境下,至少要SGbits緩存容量。流量管理芯片會(huì)外掛緩存存儲(chǔ)報(bào)文數(shù)據(jù),在芯片 內(nèi)部采用鏈表管理報(bào)文數(shù)據(jù)。每個(gè)鏈表節(jié)點(diǎn)對(duì)應(yīng)一片固定大小的外部存儲(chǔ)空間,根據(jù)鏈表 節(jié)點(diǎn)的個(gè)數(shù),決定將鏈表節(jié)點(diǎn)存儲(chǔ)在芯片內(nèi)部或外部。芯片需要提供100MPPS分組交換能力,在250M系統(tǒng)時(shí)鐘下,至少需要2個(gè)周期處 理一個(gè)鏈表節(jié)點(diǎn)。由于鏈表節(jié)點(diǎn)比較多,需要存儲(chǔ)在外掛的QDR(Quad DateRate,4倍數(shù)據(jù) 倍率)緩存中,而QDR存在讀延遲,讀延遲的范圍為7-15個(gè)周期,因此不能做到2周期處理 一個(gè)鏈表節(jié)點(diǎn)。目前現(xiàn)有技術(shù)中,尚沒有成熟的技術(shù)方案能夠解決該問題。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)中存在的問題和缺陷,提供一種高速路 由器流量管理芯片鏈表存儲(chǔ)管理方法及系統(tǒng),能夠?qū)崿F(xiàn)對(duì)鏈表節(jié)點(diǎn)的讀操作流水起來,隱 藏了讀延遲,提高報(bào)文處理速度。為此,本發(fā)明采用了如下技術(shù)方案一種高速路由器流量管理芯片鏈表存儲(chǔ)管理方法,包括如下步驟為每個(gè)報(bào)文隊(duì)列建立M個(gè)隊(duì)列鏈表,并將所述隊(duì)列鏈表保存于外掛的緩存中;M大 于等于N/K,且M為整數(shù),其中N為所述外掛的緩存的讀延時(shí),k為流量管理芯片要求處理一 個(gè)鏈表節(jié)點(diǎn)的時(shí)間;當(dāng)報(bào)文入隊(duì)時(shí),將該報(bào)文的鏈表節(jié)點(diǎn)存放在其對(duì)應(yīng)的所述M個(gè)隊(duì)列鏈表中;當(dāng)報(bào)文出隊(duì)時(shí),從該報(bào)文的M個(gè)隊(duì)列鏈表中找到對(duì)應(yīng)的鏈表節(jié)點(diǎn),并根據(jù)該鏈表 節(jié)點(diǎn)讀出對(duì)應(yīng)的報(bào)文數(shù)據(jù)。進(jìn)一步地,所述外掛的緩存指QDR緩存。進(jìn)一步地,M的取值滿足如果N/K為整數(shù),則M等于N/K,如果N/K不為整數(shù),則M 等于N/K+1。進(jìn)一步地,所述當(dāng)報(bào)文入隊(duì)時(shí),將該報(bào)文的鏈表節(jié)點(diǎn)存放在其對(duì)應(yīng)的所述M個(gè)隊(duì) 列鏈表中,具體包括當(dāng)一個(gè)報(bào)文入隊(duì)時(shí),根據(jù)報(bào)文的隊(duì)列號(hào)找到其對(duì)應(yīng)的所述M個(gè)隊(duì)列鏈表,并且根 據(jù)報(bào)文的長度,判斷該報(bào)文需要多少個(gè)鏈表節(jié)點(diǎn);將申請(qǐng)到的鏈表節(jié)點(diǎn)依次輪詢的添加到所述M個(gè)隊(duì)列鏈表中,依次更新所述M個(gè)隊(duì)列鏈表的尾節(jié)點(diǎn)指針數(shù)值。進(jìn)一步地,所述當(dāng)報(bào)文出隊(duì)時(shí),從該報(bào)文的M個(gè)隊(duì)列鏈表中找到對(duì)應(yīng)的鏈表節(jié)點(diǎn), 并根據(jù)該鏈表節(jié)點(diǎn)讀出對(duì)應(yīng)的報(bào)文數(shù)據(jù),具體包括當(dāng)報(bào)文出隊(duì)時(shí),根據(jù)出隊(duì)的隊(duì)列號(hào),依次讀取其對(duì)應(yīng)的所述M個(gè)隊(duì)列鏈表首節(jié)點(diǎn) 指針數(shù)值,將首節(jié)點(diǎn)對(duì)應(yīng)的存儲(chǔ)空間數(shù)據(jù)讀出,得到鏈表節(jié)點(diǎn),并根據(jù)鏈表節(jié)點(diǎn)讀出對(duì)應(yīng)的 報(bào)文數(shù)據(jù);讀出數(shù)值之后更新每條隊(duì)列鏈表首節(jié)點(diǎn)指針數(shù)值,并將該空閑地址對(duì)應(yīng)的節(jié)點(diǎn)添 加到空閑鏈表的尾部。一種高速路由器流量管理芯片鏈表存儲(chǔ)管理系統(tǒng),包括隊(duì)列鏈表建立模塊、報(bào)文 入隊(duì)管理模塊和報(bào)文出隊(duì)管理模塊;其中,所述隊(duì)列鏈表建立模塊用于,為每個(gè)報(bào)文隊(duì)列建立M個(gè)隊(duì)列鏈表,并將所述 隊(duì)列鏈表保存于外掛的緩存中;M大于等于N/K,且M為整數(shù),其中N為所述外掛的緩存的讀 延時(shí),k為流量管理芯片要求處理一個(gè)鏈表節(jié)點(diǎn)的時(shí)間;所述報(bào)文入隊(duì)管理模塊用于,當(dāng)報(bào)文入隊(duì)時(shí),將該報(bào)文的鏈表節(jié)點(diǎn)存放在其對(duì)應(yīng) 的所述M個(gè)隊(duì)列鏈表中;所述報(bào)文出隊(duì)管理模塊用于,當(dāng)報(bào)文出隊(duì)時(shí),從該報(bào)文的M個(gè)隊(duì)列鏈表中找到對(duì) 應(yīng)的鏈表節(jié)點(diǎn),并根據(jù)該鏈表節(jié)點(diǎn)讀出對(duì)應(yīng)的報(bào)文數(shù)據(jù)。進(jìn)一步地,所述外掛的緩存指QDR緩存。進(jìn)一步地,M的取值滿足如果N/K為整數(shù),則M等于N/K,如果N/K不為整數(shù),則M 等于N/K+1。本發(fā)明的有益效果為本發(fā)明提供了一種多鏈表結(jié)構(gòu)管理緩存空間,多個(gè)鏈表可以使讀操作流水起來, 隱藏了讀延遲,提高了報(bào)文處理速度,滿足高速處理報(bào)文數(shù)據(jù)要求,從而為高速路由器流量 管理芯片的鏈表存儲(chǔ)管理提高了有效的解決方案。本發(fā)明便于硬件實(shí)現(xiàn)、適應(yīng)高速大容量 緩存管理。同時(shí)本發(fā)明還具有實(shí)現(xiàn)簡(jiǎn)單,易于推廣使用的優(yōu)點(diǎn)。
圖1是高速路由器流量管理芯片鏈表存儲(chǔ)管理原理示意圖;圖2是本發(fā)明高速路由器流量管理芯片鏈表存儲(chǔ)管理方法流程示意圖;圖3是存儲(chǔ)空間和空閑鏈表一一對(duì)應(yīng)示意圖;圖4是隊(duì)列鏈表基本描述符信息示意圖;圖5是一個(gè)隊(duì)列入隊(duì)流程示意圖;圖6是隊(duì)列鏈表節(jié)點(diǎn)連接示意圖;圖7是一個(gè)隊(duì)列報(bào)文出隊(duì)流程示意圖; 圖8是一個(gè)隊(duì)列出一個(gè)數(shù)據(jù)包后的鏈表節(jié)點(diǎn)鏈接示意圖;圖9是一個(gè)隊(duì)列出隊(duì)讀鏈表節(jié)點(diǎn)流水示意圖;圖10是本發(fā)明高速路由器流量管理芯片鏈表存儲(chǔ)管理系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。 圖1是高速路由器流量管理芯片鏈表存儲(chǔ)管理原理示意圖,如圖所示,高速路由 器流量管理芯片包括隊(duì)列鏈表管理分系統(tǒng)、隊(duì)列調(diào)度分系統(tǒng)、鏈表節(jié)點(diǎn)存儲(chǔ)分系統(tǒng)和數(shù)據(jù) 緩存管理分系統(tǒng)。報(bào)文入隊(duì)時(shí),隊(duì)列鏈表管理分系統(tǒng)為入隊(duì)報(bào)文建立鏈表并將報(bào)文數(shù)據(jù)送 給數(shù)據(jù)緩存管理分系統(tǒng)存儲(chǔ),將鏈表節(jié)點(diǎn)存儲(chǔ)在鏈表節(jié)點(diǎn)存儲(chǔ)分系統(tǒng)中;出隊(duì)時(shí),隊(duì)列調(diào)度 分系統(tǒng)決定哪個(gè)隊(duì)列報(bào)文出隊(duì),并通知隊(duì)列鏈表管理系統(tǒng),隊(duì)列鏈表管理系統(tǒng)從該隊(duì)列鏈 表節(jié)點(diǎn)中獲取出隊(duì)報(bào)文地址信息,送給數(shù)據(jù)緩存管理分系統(tǒng),從數(shù)據(jù)緩存管理分系統(tǒng)讀出 報(bào)文數(shù)據(jù)。一般采用QDR緩存存儲(chǔ)隊(duì)列的鏈表節(jié)點(diǎn),QDR緩存存在讀延時(shí),假設(shè)QDR緩存的讀 延時(shí)為N,假設(shè)流量管理芯片要求處理一個(gè)鏈表節(jié)點(diǎn)的時(shí)間為K ;則本發(fā)明中一個(gè)報(bào)文隊(duì)列 需要的隊(duì)列鏈表個(gè)數(shù)為“N/K”(如果能夠整除就是該數(shù)值,如果不能整除則該數(shù)值加“ 1”), 當(dāng)然,一個(gè)報(bào)文隊(duì)列需要的隊(duì)列鏈表個(gè)數(shù)還可以為大于“N/K”。采用多鏈表結(jié)構(gòu),同一個(gè)報(bào) 文隊(duì)列的多個(gè)鏈表節(jié)點(diǎn)之間操作可以流水起來,達(dá)到減少Q(mào)DR緩存讀延時(shí)的效果,滿足流 量管理芯片規(guī)定的鏈表節(jié)點(diǎn)處理時(shí)間。下面闡述報(bào)文入隊(duì)和出隊(duì)時(shí)鏈表節(jié)點(diǎn)的添加和刪除 過程。假設(shè)每條隊(duì)列需要的隊(duì)列鏈表個(gè)數(shù)為M。每一個(gè)報(bào)文入隊(duì)時(shí),根據(jù)報(bào)文的隊(duì)列號(hào)找 到其對(duì)應(yīng)的M個(gè)隊(duì)列鏈表,即判斷該報(bào)文應(yīng)該添加到哪些隊(duì)列鏈表,并且根據(jù)報(bào)文的長度, 判斷該報(bào)文需要多少個(gè)鏈表節(jié)點(diǎn);然后將申請(qǐng)到的鏈表節(jié)點(diǎn)依次輪詢的添加到該M個(gè)隊(duì)列 鏈表中,依次更新隊(duì)列鏈表的尾節(jié)點(diǎn)指針數(shù)值;這樣就完成了一個(gè)報(bào)文的入隊(duì),將該報(bào)文的 鏈表節(jié)點(diǎn)添加到對(duì)應(yīng)的隊(duì)列鏈表中;每個(gè)隊(duì)列鏈表的建立過程與此類似,不再贅述。報(bào)文出隊(duì)時(shí),根據(jù)出隊(duì)的隊(duì)列號(hào),依次讀取該隊(duì)列鏈表首節(jié)點(diǎn)指針數(shù)值,將首節(jié)點(diǎn) 對(duì)應(yīng)的存儲(chǔ)空間數(shù)據(jù)讀出,讀出數(shù)值之后更新每條隊(duì)列鏈表首節(jié)點(diǎn)指針數(shù)值,并將該空閑 地址對(duì)應(yīng)的節(jié)點(diǎn)添加到空閑鏈表的尾部,以便下次利用。圖2是本發(fā)明高速路由器流量管理芯片鏈表存儲(chǔ)管理方法流程示意圖,如圖所 示,本發(fā)明高速路由器流量管理芯片鏈表存儲(chǔ)管理方法具體包括如下步驟1、為每個(gè)報(bào)文隊(duì)列建立M個(gè)隊(duì)列鏈表,并保存于外掛的緩存中,隊(duì)列鏈表的基本 描述符信息存儲(chǔ)于高速路由器流量管理芯片的片內(nèi)。本實(shí)施例中,外掛的緩存采用QDR緩存。如果N/K為整數(shù),則M不小于N/K,如果N/K不為整數(shù),則M不小于N/K+1,即M大 于等于N/K,且M為整數(shù)。其中N為QDR緩存的讀延時(shí),k為流量管理芯片要求處理一個(gè)鏈 表節(jié)點(diǎn)的時(shí)間。M的取值最好滿足如果N/K為整數(shù),則M等于N/K,如果N/K不為整數(shù),則 M 等于 N/K+1。2、當(dāng)報(bào)文入隊(duì)時(shí),根據(jù)報(bào)文的隊(duì)列號(hào)找到其對(duì)應(yīng)的所述M個(gè)隊(duì)列鏈表,并且根據(jù) 報(bào)文的長度,判斷該報(bào)文需要多少個(gè)鏈表節(jié)點(diǎn)。3、將申請(qǐng)到的鏈表節(jié)點(diǎn)依次輪詢的添加到所述M個(gè)隊(duì)列鏈表中,依次更新所述M 個(gè)隊(duì)列鏈表的尾節(jié)點(diǎn)指針數(shù)值。4、當(dāng)報(bào)文出隊(duì)時(shí),根據(jù)出隊(duì)的隊(duì)列號(hào),依次讀取其對(duì)應(yīng)的所述M個(gè)隊(duì)列鏈表首節(jié) 點(diǎn)指針數(shù)值,將首節(jié)點(diǎn)對(duì)應(yīng)的存儲(chǔ)空間數(shù)據(jù)讀出,得到鏈表節(jié)點(diǎn),并根據(jù)鏈表節(jié)點(diǎn)讀出對(duì)應(yīng)的報(bào)文數(shù)據(jù)。5、讀出數(shù)值之后更新每條隊(duì)列鏈表首節(jié)點(diǎn)指針數(shù)值, 并將該空閑地址對(duì)應(yīng)的節(jié)點(diǎn) 添加到空閑鏈表的尾部。下面以具體實(shí)施例的方式對(duì)本發(fā)明方案做進(jìn)一步說明。該實(shí)施例中,本發(fā)明采用4鏈表結(jié)構(gòu),因?yàn)樽xQDR緩存延遲為8個(gè)周期,最快每兩 個(gè)周期處理一個(gè)節(jié)點(diǎn),因此每個(gè)隊(duì)列鏈表使用4個(gè)子鏈表就可以實(shí)現(xiàn)讀操作流水。圖1中數(shù)據(jù)緩存管理分系統(tǒng)的存儲(chǔ)空間和隊(duì)列鏈表管理分系統(tǒng)的初始空閑鏈表 節(jié)點(diǎn)是一一對(duì)應(yīng)的,如圖3所示,該圖顯示了,數(shù)據(jù)緩存管理分系統(tǒng)的存儲(chǔ)空間被等分為N 塊,則在隊(duì)列鏈表管理分系統(tǒng)中,初始的空閑鏈表節(jié)點(diǎn)也分為N個(gè),它們之間是一一對(duì)應(yīng)的 關(guān)系。N為大于1的自然數(shù)。 每個(gè)隊(duì)列的隊(duì)列鏈表基本描述符信息存儲(chǔ)在片內(nèi),如圖4所示,它包括4個(gè)隊(duì)列鏈 表的首尾節(jié)點(diǎn)、一個(gè)4位的出隊(duì)活動(dòng)標(biāo)志、一個(gè)4位的入隊(duì)活動(dòng)標(biāo)志、4個(gè)1位的隊(duì)列鏈表 空標(biāo)志位和1位的隊(duì)列空標(biāo)志。只有4個(gè)1位的隊(duì)列鏈表空標(biāo)志都為“1”時(shí),該隊(duì)列為空。 入隊(duì)時(shí),根據(jù)報(bào)文隊(duì)列號(hào),選擇對(duì)應(yīng)的4個(gè)隊(duì)列鏈表,讀取該隊(duì)列的入隊(duì)活動(dòng)標(biāo)志判斷報(bào)文 鏈表節(jié)點(diǎn)應(yīng)該添加到哪個(gè)隊(duì)列鏈表中,當(dāng)該鏈表節(jié)點(diǎn)為該報(bào)文的尾節(jié)點(diǎn)時(shí),將該鏈表節(jié)點(diǎn) 的包尾標(biāo)志設(shè)置為“1”,否則為“0”。出隊(duì)時(shí),根據(jù)出隊(duì)的隊(duì)列號(hào)讀取鏈表基本描述符信息, 根據(jù)讀取的出隊(duì)活動(dòng)標(biāo)志判斷獲取哪個(gè)隊(duì)列鏈表首節(jié)點(diǎn)指針數(shù)值,將此首節(jié)點(diǎn)指針數(shù)值對(duì) 應(yīng)的存儲(chǔ)空間報(bào)文數(shù)據(jù)讀出,直至將該報(bào)文的尾節(jié)點(diǎn)報(bào)文數(shù)據(jù)讀出,才有可能更換出隊(duì)的 隊(duì)列號(hào),讀取另一個(gè)隊(duì)列的報(bào)文數(shù)據(jù);當(dāng)隊(duì)列鏈表的首尾節(jié)點(diǎn)相等時(shí),將該隊(duì)列鏈表標(biāo)記為 空,所有4個(gè)隊(duì)列鏈表都為空時(shí),該隊(duì)列的4個(gè)隊(duì)列鏈表整體標(biāo)記為空。下面用實(shí)例說明報(bào) 文入隊(duì)和出隊(duì)過程。 報(bào)文入隊(duì)流程如圖5所示,報(bào)文申請(qǐng)空閑鏈表節(jié)點(diǎn)之后,開始從第一個(gè)包節(jié)點(diǎn)添 力口,判斷該隊(duì)列鏈表是否為空,如果為空就以該空閑鏈表地址作為隊(duì)列鏈表首指針,然后判 斷該節(jié)點(diǎn)是否為包尾,如果是包尾,則結(jié)束入隊(duì),否則繼續(xù)添加下一個(gè)節(jié)點(diǎn),更新隊(duì)列鏈表 尾指針,判斷該包是否為包尾,依次類推直到該包的節(jié)點(diǎn)完全添加到鏈表中結(jié)束入隊(duì);如果 第一個(gè)包節(jié)點(diǎn)添加時(shí),該隊(duì)列非空,則將該節(jié)點(diǎn)添加到隊(duì)列中并更新隊(duì)列鏈表尾指針,判斷 該包是否為包尾,如果是包尾則結(jié)束此次入隊(duì),否則繼續(xù)添加直至該報(bào)文節(jié)點(diǎn)添加結(jié)束。假 設(shè)N-5號(hào)隊(duì)列的報(bào)文節(jié)點(diǎn)個(gè)數(shù)為20個(gè),這20報(bào)文節(jié)點(diǎn)入隊(duì)的順序依次為0到19,假設(shè)隊(duì)列 N-5初始時(shí)為空隊(duì)列。該隊(duì)列的第一個(gè)節(jié)點(diǎn)申請(qǐng)到的空閑節(jié)點(diǎn)地址為0,此時(shí)該隊(duì)列的入隊(duì) 活動(dòng)鏈表標(biāo)志為“0001”,則將該地址“0”存儲(chǔ)到隊(duì)列鏈表1的首指針;第二個(gè)節(jié)點(diǎn)申請(qǐng)到 的空閑節(jié)點(diǎn)地址為“1”;此時(shí)該隊(duì)列的入隊(duì)活動(dòng)鏈表標(biāo)志為“0010”,則將該地址“1”存儲(chǔ)到 隊(duì)列鏈表2的首指針;依次類推,將這20個(gè)節(jié)點(diǎn)添加到N-5號(hào)隊(duì)列的4個(gè)隊(duì)列鏈表中,最終 n-5號(hào)隊(duì)列的4個(gè)隊(duì)列鏈表實(shí)際的鏈接方式如圖6所示。每個(gè)鏈表節(jié)點(diǎn)中存儲(chǔ)了該節(jié)點(diǎn)指 向的下一個(gè)節(jié)點(diǎn)地址指針數(shù)值,出隊(duì)時(shí),要想獲得下一個(gè)節(jié)點(diǎn)地址則必須通過讀上一個(gè)節(jié) 點(diǎn)內(nèi)容獲得。N-5號(hào)隊(duì)列對(duì)應(yīng)的4個(gè)隊(duì)列鏈表鏈接的節(jié)點(diǎn)分別是隊(duì)列鏈表1鏈接的節(jié)點(diǎn)為 0、4、8、12和16,該隊(duì)列鏈表的首尾節(jié)點(diǎn)分別存儲(chǔ)第0和第12個(gè)節(jié)點(diǎn)數(shù)據(jù)指針;隊(duì)列鏈表2 鏈接的節(jié)點(diǎn)為1、5、9、13和17,該隊(duì)列鏈表的首尾節(jié)點(diǎn)分別存儲(chǔ)第1和第13個(gè)節(jié)點(diǎn)數(shù)據(jù)指 針;隊(duì)列鏈表3鏈接的節(jié)點(diǎn)為2、6、10、14和18,該隊(duì)列鏈表的首尾節(jié)點(diǎn)分別存儲(chǔ)第2和第 14個(gè)節(jié)點(diǎn)數(shù)據(jù)指針;隊(duì)列鏈表4鏈接的節(jié)點(diǎn)為3、7、11、15和19,該隊(duì)列鏈表的首尾節(jié)點(diǎn)分別存儲(chǔ)第3和第15個(gè)節(jié)點(diǎn)數(shù)據(jù)指針。 報(bào)文出隊(duì)的流程如圖7所示,滿足出隊(duì)條件的隊(duì)列給出出隊(duì)請(qǐng)求,根據(jù)出隊(duì)隊(duì)列 號(hào)查找隊(duì)列鏈表的首尾指針,根據(jù)出隊(duì)活動(dòng)標(biāo)志判斷從哪個(gè)隊(duì)列鏈表開始獲取鏈表節(jié)點(diǎn)數(shù) 據(jù);讀取鏈表節(jié)點(diǎn)數(shù)據(jù)之后,判斷該節(jié)點(diǎn)是否該報(bào)文的包尾,如果是,完成本次出隊(duì),等待下 個(gè)隊(duì)列的請(qǐng)求再次出隊(duì);否則,根據(jù)出隊(duì)活動(dòng)標(biāo)志判斷從另一個(gè)隊(duì)列鏈表獲取鏈表節(jié)點(diǎn)數(shù) 據(jù)。假如出隊(duì)的隊(duì)列號(hào)為N-5,且此時(shí)N-5號(hào)隊(duì)列的鏈表如圖6所示。根據(jù)隊(duì)列號(hào)N-5查 找到該隊(duì)列鏈表的首尾指針,此時(shí)出隊(duì)活動(dòng)標(biāo)志為“0001”,則從隊(duì)列鏈表1的首節(jié)點(diǎn)讀取 數(shù)據(jù),將首節(jié)點(diǎn)地址“0”和報(bào)文長度發(fā)送給數(shù)據(jù)緩存管理分系統(tǒng),將該節(jié)點(diǎn)對(duì)應(yīng)存儲(chǔ)空間的 報(bào)文讀出;讀地址為“0”的QDR緩存數(shù)據(jù),將讀出的地址指針“4”和包尾標(biāo)志等數(shù)據(jù)寫入隊(duì) 列鏈表1的首節(jié)點(diǎn),同時(shí)將地址為“0”的節(jié)點(diǎn)添加到空閑鏈表的尾部,等待入隊(duì)時(shí)再次使用 此空閑緩存空間。根據(jù)更新前的首節(jié)點(diǎn)包尾標(biāo)志判斷前首節(jié)點(diǎn)是否為包尾,如果是,則結(jié)束 此次出隊(duì);如果不是,則出隊(duì)活動(dòng)標(biāo)志為“0010”,獲取隊(duì)列鏈表2的首節(jié)點(diǎn)數(shù)據(jù),完成報(bào)文 出隊(duì),它的出隊(duì)過程和隊(duì)列鏈表1首節(jié)點(diǎn)處理過程一樣,直到一個(gè)報(bào)文完全出隊(duì)。假如此次 N-5號(hào)隊(duì)列出隊(duì)的報(bào)文需要5個(gè)鏈表節(jié)點(diǎn)空間,則該報(bào)文完全出隊(duì)之后的N-5號(hào)隊(duì)列的鏈表 如圖8所示。出隊(duì)時(shí),處理鏈表節(jié)點(diǎn)數(shù)據(jù)最快需要2個(gè)周期,隊(duì)列鏈表的首尾指針數(shù)據(jù)存儲(chǔ)在 片內(nèi),節(jié)點(diǎn)指針數(shù)據(jù)存儲(chǔ)在片外的QDR緩存中,QDR緩存存在讀延遲,單鏈表結(jié)構(gòu)滿足不了 2周期處理一個(gè)鏈表節(jié)點(diǎn)數(shù)據(jù),因此采用多鏈表結(jié)構(gòu)解決此問題。QDR緩存的讀延遲為8個(gè) 周期,4鏈表結(jié)構(gòu)能夠滿足流水的時(shí)序要求,圖9顯示了出隊(duì)時(shí)4鏈表流水處理過程。圖10是本發(fā)明高速路由器流量管理芯片鏈表存儲(chǔ)管理系統(tǒng)結(jié)構(gòu)示意圖,如圖所 示,本發(fā)明高速路由器流量管理芯片鏈表存儲(chǔ)管理系統(tǒng)包括隊(duì)列鏈表建立模塊、報(bào)文入隊(duì) 管理模塊和報(bào)文出隊(duì)管理模塊。其中,隊(duì)列鏈表建立模塊用于為每個(gè)報(bào)文隊(duì)列建立M個(gè)隊(duì)列鏈表,并保存于外掛 的緩存中,本實(shí)施例中,外掛的緩存為QDR緩存,隊(duì)列鏈表的基本描述符信息存儲(chǔ)于高速路 由器流量管理芯片的片內(nèi)。如果N/K為整數(shù),則M不小于N/K,如果N/K不為整數(shù),則M不小 于N/K+1,其中N為QDR緩存的讀延時(shí),k為流量管理芯片要求處理一個(gè)鏈表節(jié)點(diǎn)的時(shí)間。M 的取值最好滿足如果N/K為整數(shù),則M等于N/K,如果N/K不為整數(shù),則M等于N/K+1。報(bào)文入隊(duì)管理模塊用于,當(dāng)報(bào)文入隊(duì)時(shí),將該報(bào)文的鏈表節(jié)點(diǎn)存放在其對(duì)應(yīng)的M 個(gè)隊(duì)列鏈表中。報(bào)文出隊(duì)管理模塊用于,當(dāng)報(bào)文出隊(duì)時(shí),從該報(bào)文的M個(gè)隊(duì)列鏈表中找到對(duì)應(yīng)的 鏈表節(jié)點(diǎn),并根據(jù)該鏈表節(jié)點(diǎn)讀出對(duì)應(yīng)的報(bào)文數(shù)據(jù)。高速路由器流量管理芯片鏈表存儲(chǔ)管理系統(tǒng)的具體實(shí)施方案可參見上面對(duì)高速 路由器流量管理芯片鏈表存儲(chǔ)管理方法的具體說明,它們是一致的,此處不再贅述。以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳 細(xì)說明,所應(yīng)注意的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,本領(lǐng)域的技術(shù)人員可以對(duì) 本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改 和變型屬于本發(fā)明權(quán)利要求記載的技術(shù)方案及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包 含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種高速路由器流量管理芯片鏈表存儲(chǔ)管理方法,其特征在于,包括如下步驟為每個(gè)報(bào)文隊(duì)列建立M個(gè)隊(duì)列鏈表,并將所述隊(duì)列鏈表保存于外掛的緩存中;M大于等于N/K,且M為整數(shù),其中N為所述外掛的緩存的讀延時(shí),k為流量管理芯片要求處理一個(gè)鏈 表節(jié)點(diǎn)的時(shí)間;當(dāng)報(bào)文入隊(duì)時(shí),將該報(bào)文的鏈表節(jié)點(diǎn)存放在其對(duì)應(yīng)的所述M個(gè)隊(duì)列鏈表中;當(dāng)報(bào)文出隊(duì)時(shí),從該報(bào)文的M個(gè)隊(duì)列鏈表中找到對(duì)應(yīng)的鏈表節(jié)點(diǎn),并根據(jù)該鏈表節(jié)點(diǎn) 讀出對(duì)應(yīng)的報(bào)文數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的高速路由器流量管理芯片鏈表存儲(chǔ)管理方法,其特征在于, 所述外掛的緩存指4倍數(shù)據(jù)倍率緩存。
3.根據(jù)權(quán)利要求1所述的高速路由器流量管理芯片鏈表存儲(chǔ)管理方法,其特征在于,M 的取值滿足如果N/K為整數(shù),則M等于N/K,如果N/K不為整數(shù),則M等于N/K+1。
4.根據(jù)權(quán)利要求1或2或3所述的高速路由器流量管理芯片鏈表存儲(chǔ)管理方法,其特 征在于,所述當(dāng)報(bào)文入隊(duì)時(shí),將該報(bào)文的鏈表節(jié)點(diǎn)存放在其對(duì)應(yīng)的所述M個(gè)隊(duì)列鏈表中,包 括當(dāng)一個(gè)報(bào)文入隊(duì)時(shí),根據(jù)報(bào)文的隊(duì)列號(hào)找到其對(duì)應(yīng)的所述M個(gè)隊(duì)列鏈表,并且根據(jù)報(bào) 文的長度,判斷該報(bào)文需要多少個(gè)鏈表節(jié)點(diǎn);將申請(qǐng)到的鏈表節(jié)點(diǎn)依次輪詢的添加到所述M個(gè)隊(duì)列鏈表中,依次更新所述M個(gè)隊(duì)列 鏈表的尾節(jié)點(diǎn)指針數(shù)值。
5.根據(jù)權(quán)利要求1或2或3所述的高速路由器流量管理芯片鏈表存儲(chǔ)管理方法,其特 征在于,所述當(dāng)報(bào)文出隊(duì)時(shí),從該報(bào)文的M個(gè)隊(duì)列鏈表中找到對(duì)應(yīng)的鏈表節(jié)點(diǎn),并根據(jù)該鏈 表節(jié)點(diǎn)讀出對(duì)應(yīng)的報(bào)文數(shù)據(jù),包括當(dāng)報(bào)文出隊(duì)時(shí),根據(jù)出隊(duì)的隊(duì)列號(hào),依次讀取其對(duì)應(yīng)的所述M個(gè)隊(duì)列鏈表首節(jié)點(diǎn)指針 數(shù)值,將首節(jié)點(diǎn)對(duì)應(yīng)的存儲(chǔ)空間數(shù)據(jù)讀出,得到鏈表節(jié)點(diǎn),并根據(jù)鏈表節(jié)點(diǎn)讀出對(duì)應(yīng)的報(bào)文 數(shù)據(jù);讀出數(shù)值之后更新每條隊(duì)列鏈表首節(jié)點(diǎn)指針數(shù)值,并將該空閑地址對(duì)應(yīng)的節(jié)點(diǎn)添加到 空閑鏈表的尾部。
6.一種高速路由器流量管理芯片鏈表存儲(chǔ)管理系統(tǒng),其特征在于,包括隊(duì)列鏈表建立 模塊、報(bào)文入隊(duì)管理模塊和報(bào)文出隊(duì)管理模塊;其中,所述隊(duì)列鏈表建立模塊用于,為每個(gè)報(bào)文隊(duì)列建立M個(gè)隊(duì)列鏈表,并將所述隊(duì)列 鏈表保存于外掛的緩存中;M大于等于N/K,且M為整數(shù),其中N為所述外掛的緩存的讀延 時(shí),k為流量管理芯片要求處理一個(gè)鏈表節(jié)點(diǎn)的時(shí)間;所述報(bào)文入隊(duì)管理模塊用于,當(dāng)報(bào)文入隊(duì)時(shí),將該報(bào)文的鏈表節(jié)點(diǎn)存放在其對(duì)應(yīng)的所 述M個(gè)隊(duì)列鏈表中;所述報(bào)文出隊(duì)管理模塊用于,當(dāng)報(bào)文出隊(duì)時(shí),從該報(bào)文的M個(gè)隊(duì)列鏈表中找到對(duì)應(yīng)的 鏈表節(jié)點(diǎn),并根據(jù)該鏈表節(jié)點(diǎn)讀出對(duì)應(yīng)的報(bào)文數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的高速路由器流量管理芯片鏈表存儲(chǔ)管理系統(tǒng),其特征在于, 所述外掛的緩存指4倍數(shù)據(jù)倍率緩存。
8.根據(jù)權(quán)利要求6或7所述的高速路由器流量管理芯片鏈表存儲(chǔ)管理系統(tǒng),其特征在于,M的取值滿足如果N/K為整數(shù),則M等于N/K,如果N/K不為整數(shù),則M等于N/K+1。
全文摘要
本發(fā)明公開了一種高速路由器流量管理芯片鏈表存儲(chǔ)管理方法,包括步驟為每個(gè)報(bào)文隊(duì)列建立M個(gè)隊(duì)列鏈表,并保存于外掛的QDR緩存中;M大于等于N/K,且M為整數(shù),其中N為QDR的讀延時(shí),k為流量管理芯片要求處理一個(gè)鏈表節(jié)點(diǎn)的時(shí)間;當(dāng)報(bào)文入隊(duì)時(shí),將報(bào)文的鏈表節(jié)點(diǎn)存放在所述M個(gè)隊(duì)列鏈表中;當(dāng)報(bào)文出隊(duì)時(shí),從所述M個(gè)隊(duì)列鏈表中找到對(duì)應(yīng)的鏈表節(jié)點(diǎn),并根據(jù)鏈表節(jié)點(diǎn)讀出報(bào)文數(shù)據(jù)。采用本發(fā)明方法能夠?qū)崿F(xiàn)對(duì)鏈表節(jié)點(diǎn)的讀操作流水起來,隱藏了讀延遲,提高了報(bào)文處理速度。本發(fā)明還相應(yīng)公開了一種高速路由器流量管理芯片鏈表存儲(chǔ)管理系統(tǒng),包括隊(duì)列鏈表建立模塊、報(bào)文入隊(duì)管理模塊和報(bào)文出隊(duì)管理模塊。
文檔編號(hào)H04L12/56GK102130833SQ20111005944
公開日2011年7月20日 申請(qǐng)日期2011年3月11日 優(yōu)先權(quán)日2011年3月11日
發(fā)明者汪友寶, 褚勛富 申請(qǐng)人:中興通訊股份有限公司