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

基于地址指針鏈表的緩存管理裝置和方法

文檔序號:6618842閱讀:172來源:國知局
專利名稱:基于地址指針鏈表的緩存管理裝置和方法
技術(shù)領(lǐng)域
本發(fā)明涉及緩存管理技術(shù),特別涉及一種基于地址指針鏈表的緩存管理 裝置和方法。
背景技術(shù)
圖1為現(xiàn)有緩存管理系統(tǒng)的結(jié)構(gòu)示意圖。如圖1所示,該系統(tǒng)包括緩存
空間(BUFFER)、包接收才莫塊(INPUT)、包發(fā)送模塊(OUTPUT)、以 及緩存管理裝置(BUFFER MANAGER )。 緩存空間被劃分成多個緩存塊。
包接收模塊向緩存管理裝置為每一個接收數(shù)據(jù)包申請空閑緩存塊的地 址指針,并在解析該接收數(shù)據(jù)包成功后,依據(jù)申請到的地址指針將該接收數(shù) 據(jù)包以塊為單位存入至對應(yīng)的各緩存塊。
包發(fā)送模塊向緩存管理裝置申請查詢待發(fā)送數(shù)據(jù)包對應(yīng)的各緩存塊的 地址指針,并依據(jù)查詢到的地址指針依次從對應(yīng)緩存塊中讀出完整的數(shù)據(jù)包 并發(fā)送。
由于分別存儲同 一數(shù)據(jù)包內(nèi)各連續(xù)數(shù)據(jù)的緩存塊之間并不是連續(xù)的,因 此,緩存管理裝置中還需要維護一地址指針鏈表,用以記錄每一個已申請地 址指針所指向的下一個地址指針,這樣,緩存管理裝置才能夠連續(xù)查詢到同 一數(shù)據(jù)包內(nèi)的連續(xù)數(shù)據(jù)并供包發(fā)送模塊讀取和發(fā)送。
此外,緩存管理裝置不僅負責申請地址指針、查詢地址指針,還在包發(fā) 送模塊發(fā)送完整數(shù)據(jù)包之后、以及包接收模塊對接收數(shù)據(jù)包解析錯誤之后, 釋放該數(shù)據(jù)包所對應(yīng)的各緩存塊的地址指針。
圖2為現(xiàn)有緩存管理裝置的內(nèi)部邏輯結(jié)構(gòu)圖。如圖2所示,該緩存管理裝置包括
空閑指針單元、圖2中示為空閑指針存儲隊列PTRQ,其為一寬度為地 址指針深度、深度為BUFFER中所有緩存塊總數(shù)的先進先出存儲器(FIFO), PTRQ內(nèi)部記錄BUFFER中空閑緩存塊的空閑地址指針,圖3中示出了 PTRQ 所記錄的空閑地址指針隊列的一實例。初始化時,BUFFER中所有緩存塊均 為空閑,相應(yīng)地,所有地址指針均作為空閑地址指針記錄于PTRQ中。
地址申請單元(Request),在包接收模塊開始解析接收數(shù)據(jù)包時,從 PTRQ記錄的空閑地址指針中依次為接收數(shù)據(jù)包中的每 一 塊連續(xù)數(shù)據(jù)申請對 應(yīng)緩存塊的地址指針,以供包接收模塊可將解析成功的數(shù)據(jù)包存入至 BUFFER中對應(yīng)緩存塊。
第一地址釋放信息存儲單元、圖2中示為包接收模塊地址釋放信息隊列 RLSQ1,其為一寬度為地址指針深度的FIFO,包接收模塊在解析接收數(shù)據(jù) 包時,只有解析至包尾才可獲知該接收數(shù)據(jù)包是否錯誤,如果錯誤,則由于 該接收數(shù)據(jù)包中的所有連續(xù)數(shù)據(jù)塊均已被申請了對應(yīng)緩存塊的地址指針,因 此,包接收模塊將解析錯誤的接收包數(shù)據(jù)已申請的地址信息記錄在RLSQl 中,該地址信息包括解析錯誤的接收數(shù)據(jù)包包頭的地址指針、以及該接收數(shù) 據(jù)包所占用的緩存塊數(shù)量。
鏈表信息單元,其由一寬度為指針深度、深度為BUFFER中所有緩存 塊總數(shù)的隨機存儲器(RAM),圖2中將該RAM示為ADD_LINK—RAM, 記錄已申請地址指針的下一個地址指針,圖4中按照如圖3中所示的地址指 針排列順序,示出了 ADD—LINK_RAM所記錄的已申請地址指針的下一個 地址指針的一實例。
鏈表建立單元(UpBuild),將當前申請的地址指針寫入至上一個申請 的地址指針在ADD—LINK—RAM中對應(yīng)的位置,用以表示當前申請的地址 指針,為上一個申請的地址指針所指向的下一個地址指針。
鏈表查詢單元(Lookup),在包發(fā)送模塊從BUFFER中讀取同一l丈據(jù) 包中每一連續(xù)數(shù)據(jù)塊之前,依次查找ADD—LINK_RAM中對應(yīng)的已申i青地
8址指針的下一個地址指針、以供包發(fā)送沖莫塊可從BUFFER中對應(yīng)緩存塊讀 取數(shù)據(jù)包。
第二地址釋放信息存儲單元、圖2中示為包發(fā)送模塊地址釋放信息隊列 RLSQ0,其為一寬度為地址指針深度的FIFO,包發(fā)送模塊在讀取并發(fā)送完 整數(shù)據(jù)包后,將該發(fā)送數(shù)據(jù)包的地址信息記錄在RLSQ0中,該地址信息包 括該發(fā)送數(shù)據(jù)包包頭的地址指針、以及該發(fā)送數(shù)據(jù)包所占用的緩存塊數(shù)量。
地址釋放單元(Release),將RLSQ1、 RLSQ0中記錄的地址信息所表 示的地址指針均釋放至PTRQ中。但由于RLSQ1、 RLSQ0中記錄的地址信 息中,僅記錄有包頭的地址指針、以及數(shù)據(jù)包所占用的緩存塊數(shù)量,因此, 除了數(shù)據(jù)包包頭的地址指針可直接釋放之外,其余數(shù)據(jù)塊對應(yīng)的緩存塊的地 址指針均需要通過鏈表查詢單元在ADD—LINK—RAM中依次查找。
如上可見,現(xiàn)有如圖2所示的緩存管理裝置中,PTRQ為寬度為地址指 針深度、深度為BUFFER中所有緩存塊總數(shù)的FIFO,其占用了極大的硬件 資源。假設(shè)其寬度為20比特、深度為22G,則總共需要20M比特的存儲資 源才能夠?qū)崿F(xiàn)該FIFO,而緩存管理裝置通常是由在現(xiàn)場可編程門陣列 (FPGA )來實現(xiàn)的,但FPGA卻難以提供如此大容量的資源。與PTRQ同 理,ADD—LINK—RAM也需要極大的存儲資源,因而也難以由FPGA來實現(xiàn)。
而且,現(xiàn)有如圖2所示的緩存管理裝置不但在包發(fā)送模塊讀取數(shù)據(jù)包時 需要查詢ADD—LINK—RAM,而且,由于包接收模塊和包發(fā)送模塊所提供的 需釋放的地址信息中,僅記錄有包頭的地址指針、以及數(shù)據(jù)包所占用的緩存 塊數(shù)量,因而在釋放地址指針時仍需要再次查詢ADD—LINK—RAM,導(dǎo)致地 址指針的釋放效率低、進而還可能導(dǎo)致異常丟包。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種基于地址指針鏈表的緩存管理裝置和方 法,能夠節(jié)省硬件資源。
本發(fā)明提供的一種基于地址指針鏈表的緩存管理裝置,包括空閑指針單元,記錄BUFFER中空閑緩存塊的空閑地址指針; 地址申請單元,從空閑地址指針中為接收數(shù)據(jù)包申請地址指針; 鏈表信息單元,記錄已申請地址指針的下 一個地址指針; 鏈表查詢單元,查找已申請地址指針的下 一個地址指針; 第一 FIFO,記錄解析錯誤的接收數(shù)據(jù)包的地址信息; 第二 FIFO,記錄發(fā)送數(shù)據(jù)包的地址信息;
地址釋放單元,將所述地址信息表示的地址指針釋放至空閑指針單元;
其中,BUFFER中所有緩存塊的地址指針被劃分為若干組,每一組內(nèi)各 地址指針的高位相同、低位不同,且每一組內(nèi)除一個可指向其他組的預(yù)定地 址指針之外,其余地址指針均指向同組內(nèi)的地址指針;
所述鏈表信息單元中分別記錄每一組中已申請地址指針所指向的同組 地址指針的低位、每一組中已申請的預(yù)定地址指針所指向的不同組地址指 針、以及表示該預(yù)定地址指針是否被占用的對應(yīng)標志位;
且,所述地址申請單元從標志位置為表示未占用的預(yù)定地址指針所在組 內(nèi)為接收數(shù)據(jù)包申請地址指針、并優(yōu)先從同 一組內(nèi)執(zhí)行所述申請。
所述鏈表信息單元包括
寬度為地址指針的低位、深度為BUFFER中緩存塊總數(shù)的RAM與所述 組總數(shù)之差,記錄鏈表建立單元寫入的每一組中已申請地址指針所指向的同 組地址指針的低位;
寬度為地址指針深度、深度為所述組的總數(shù)的RAM,記錄每一組中已 申請的預(yù)定地址指針所指向的不同組地址指針、以及表示該預(yù)定地址指針是 否^f皮占用的對應(yīng)標志位。
所述鏈表信息單元為寬度為每組中指向組內(nèi)的各地址指針低位總和、與 一個地址指針深度加1的總比特數(shù),深度為所述組的總數(shù)的RAM。
所述空閑指針單元具有與BUFFER中每一緩存塊的地址指針——對應(yīng) 的空閑指針指示位,每一空閑指針指示位用以表示對應(yīng)緩存塊的地址指針是 否空閑;
10地址申請單元將有效的空閑指針指示位對應(yīng)的地址指針選定為已申請
的地址指針、并將該空閑指針指示位置為無效,以實現(xiàn)所述申請;
地址釋放單元將第一 FIFO 、第二 FIFO中記錄的地址指針對應(yīng)的空閑指
針指示位置為有效,以實現(xiàn)所述釋放。
所述空閑指針單元為寬度為1、深度為BUFFER中緩存塊總數(shù)的RAM。 第一 FIFO,記錄解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針; 第二 FIFO,記錄發(fā)送數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針; 地址釋放單元直接將第一 FIFO、第二 FIFO中記錄的地址指針釋放至空
閑指針單元。
所述第一 FIFO為包級FIFO,該包級FIFO至少具有如下控制信號
寫地址指針,指示接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針在包級 FIFO中的當前寫地址;
首地址指針,指示當前接收數(shù)據(jù)包包頭所對應(yīng)的緩存塊的地址指針在包 級FIFO中的包頭寫地址;
尾地址指針,指示當前接收數(shù)據(jù)包包尾所對應(yīng)的緩存塊的地址指針在包 級FIFO中的包尾寫地址;
丟棄信號,可在當前接收數(shù)據(jù)包解析成功后被置為有效、并將寫地址指 針從包尾寫地址返回至對應(yīng)的包頭寫地址處,以供解析成功的接收數(shù)據(jù)包對 應(yīng)的每一緩存塊的地址指針被后續(xù)寫操作覆蓋擦除;在當前接收數(shù)據(jù)報解析 失敗后被置為無效、并保持寫地址指針停留在當前位置、以使得解析錯誤的 接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針可記錄于包級FIFO。
本發(fā)明提供的一種基于地址指針鏈表的緩存管理方法,包括
記錄BUFFER中空閑緩存塊的空閑地址指針;
從空閑地址指針中為接收數(shù)據(jù)包申請地址指針;
記錄已申請地址指針的下 一個地址指針;
查找已申請地址指針的下一個地址指針;
記錄解析錯誤的接收數(shù)據(jù)包的地址信息、以及發(fā)送數(shù)據(jù)包的地址信息;釋放所述地址信息表示的地址指針;
其中,將BUFFER中所有緩存塊的地址指針被劃分為若干組,每一組 內(nèi)各地址指針的高位相同、低位不同,且每一組內(nèi)除一個可指向其他組的預(yù) 定地址指針之外,其余地址指針均指向同組內(nèi)的地址指針;
所述記錄已申請地址指針的下一個地址指針包括分別記錄每一組中已 申請地址指針所指向的同組地址指針的低位、每一組中已申請的預(yù)定地址指 針所指向的不同組地址指針、以及表示該預(yù)定地址指針是否被占用的對應(yīng)標 志位;
所述申請地址指針包括從標志位置為表示未占用的預(yù)定地址指針所在 組內(nèi)為接收數(shù)據(jù)包申請地址指針、并優(yōu)先從同 一 組內(nèi)執(zhí)行所述申請。
設(shè)置寬度為地址指針的低位、深度為BUFFER中緩存塊總數(shù)與所述組 總數(shù)之差的RAM,用以記錄每一組中已申請地址指針所指向的同組內(nèi)地址 指針的組內(nèi)的低位;
設(shè)置寬度為地址指針深度加1、深度為所述組總數(shù)的RAM,用以每一 組中已申請的預(yù)定地址指針所指向的不同組地址指針、以及表示該預(yù)定地址 指針是否被占用的對應(yīng)標志位。
設(shè)置寬度為每組中指向組內(nèi)的各地址指針低位總和、與一個地址指針深 度加1的總比特數(shù),深度為所述組的總數(shù)的RAM,用以分別記錄每一組中 已申請地址指針所指向的同組地址指針的低位、每一組中預(yù)定地址指針所指 向的不同組地址指針、以及表示該預(yù)定地址指針是否被占用的對應(yīng)標志位。
所述記錄BUFFER中空閑緩存塊的空閑地址指針包括設(shè)置與BUFFER 中每一緩存塊的地址指針一一對應(yīng)的空閑指針指示位,并利用每一空閑指針 指示位用以表示對應(yīng)緩存塊的地址指針是否空閑;
所述申請包括將有效的空閑指針指示位對應(yīng)的地址指針選定為已申請 的地址指針、并將該空閑指針指示位置為無效;
所述釋放包括將對應(yīng)的空閑指針指示位置為有效。
設(shè)置寬度為1、深度為BUFFER中緩存塊總數(shù)的RAM用以記錄所述空閑指針指示位。
所述記錄解析錯誤的接收數(shù)據(jù)包的地址信息、以及發(fā)送數(shù)據(jù)包的地址信
息包括記錄解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針、以及發(fā) 送數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針;
所述釋放所述地址信息表示的地址指針包括直接將所述記錄解析錯誤 的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針、以及發(fā)送數(shù)據(jù)包對應(yīng)的每一緩 存塊的地址指針釋放。
所述實時記錄解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針包

設(shè)置一具有寫地址指針、首地址指針、尾地址指針、以及丟棄信號的包 級FIFO;
依據(jù)包級FIFO的寫地址指針所指示的當前寫地址,依次將當前接收數(shù) 據(jù)包對應(yīng)的每一緩存塊的地址指針作為當前寫數(shù)據(jù)寫入至包級FIFO;
且,利用包級FIFO的首地址指針所指示的包頭寫地址,記錄當前接收 數(shù)據(jù)包包頭所對應(yīng)的緩存塊的地址指針在包級FIFO中的寫地址;利用包級 FIFO的尾地址指針所指示的包尾寫地址,記錄當前接收數(shù)據(jù)包包尾所對應(yīng) 的緩存塊的地址指針在包級FIFO中的寫地址;
在當前接收數(shù)據(jù)包解析成功后將包級FIFO的丟棄信號置為有效、并將 寫地址指針從包尾寫地址返回至對應(yīng)的包頭寫地址處,以供解析成功的接收 數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針被后續(xù)寫操作覆蓋;在當前接收數(shù)據(jù)報 解析失敗后將包級FIFO的丟棄信號置為無效、并保持寫地址指針停留在當 前位置、以使得解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針可記錄 于包級FIFO。
由上述技術(shù)方案可見,本發(fā)明將BUFFER中的所有緩存塊的地址指針 被劃分為若干組,并以同 一組內(nèi)地址指針的低位來記錄每一組內(nèi)各地址指針 之間的鏈表,還通過僅記錄每組中的一個預(yù)定地址指針所指向的其他組內(nèi)的 地址指針來建立組與組之間的鏈表,從而無需現(xiàn)有技術(shù)中所需的寬度為指針深度、深度為BUFFER中所有緩存塊總數(shù)的RAM即可實現(xiàn)地址鏈表的存儲, 進而可大大降低所需硬件資源。
可選地,利用寬度為地址指針的低位、深度為BUFFER中緩存塊總數(shù) 與所述組總數(shù)之差的一個RAM,以及寬度為地址指針深度加1、深度為所 述組的總數(shù)的另一個RAM構(gòu)成二級鏈接RAM,用以替換現(xiàn)有寬度為指針 深度、深度為BUFFER中所有緩存塊總數(shù)的RAM;或者,利用寬度為每組 中指向組內(nèi)的各地址指針低位總和、與一個地址指針深度加1的總比特數(shù), 深度為所述組的總數(shù)的一片RAM來替換現(xiàn)有寬度為指針深度、深度為 BUFFER中所有緩存塊總數(shù)的RAM。
進一步地,本發(fā)明還利用寬度為1、深度為BUFFER中緩存塊總數(shù)的 RAM來實現(xiàn)空閑指針單元,用以替換現(xiàn)有寬度為地址指針深度、深度為 BUFFER中所有緩存塊總數(shù)的FIFO,從而能夠大大降低所需硬件資源。
再進一步地,本發(fā)明中的第一、第二FIFO中分別記錄了解析錯誤的接 收數(shù)據(jù)包、發(fā)送數(shù)據(jù)包中所有數(shù)據(jù)塊對應(yīng)的緩存塊的地址指針,而非現(xiàn)有技 術(shù)中僅記錄包頭的地址指針和緩存塊數(shù)量,因而使得地址釋放單元無需通過 鏈表查詢單元進行查找,即可直接將第一、第二 FIFO中記錄的地址指針依 次釋放至空閑指針單元中,從而能夠提高地址釋放的效率、進而還可避免異 常丟包。
可選地,本發(fā)明可利用一具有丟包功能的包級FIFO來實現(xiàn)第一 FIFO, 這樣,包接收模塊可以在開始解析接收數(shù)據(jù)包的過程中,先將已申請的該接 收數(shù)據(jù)包中各數(shù)據(jù)塊對應(yīng)的緩存塊的地址指針均存入至包級FIFO、并標記 包頭的地址指針存儲位置,如果在解析完當前接收數(shù)據(jù)包的包尾時發(fā)現(xiàn)該接 收數(shù)據(jù)包正確,則調(diào)整包級FIFO的下一次寫位置為已標記的包頭的地址指 針存儲位置,以保證解析正確的接收數(shù)據(jù)包的各地址指針會被后續(xù)寫操作覆 蓋而不會保存在包級FIFO中;如果在解析完當前接收數(shù)據(jù)包的包尾時發(fā)現(xiàn) 該接收數(shù)據(jù)包錯誤,則仍保持包級FIFO的下一次寫位置為包尾的地址指針 的下一個存儲位置,從而將解析錯誤的接收數(shù)據(jù)包的各地址指針保存在包級FIFO中。如此一來,雖然包接收模塊只有在解析完接收數(shù)據(jù)包的包尾時才 可獲知該接收數(shù)據(jù)包是否錯誤,但利用丟包功能的包級FIFO即可避免在解 析完成之前記錄所有數(shù)據(jù)塊對應(yīng)的緩存塊的地址指針。


圖1為現(xiàn)有緩存管理系統(tǒng)的結(jié)構(gòu)示意圖; 圖2為現(xiàn)有緩存管理裝置的內(nèi)部邏輯結(jié)構(gòu)圖3為現(xiàn)有空閑指針單元所記錄的空閑地址指針隊列的一實例示意圖; 圖4為現(xiàn)有鏈表信息單元所記錄的地址指針的一實例示意圖; 圖5為本發(fā)明實施例中緩存管理裝置的內(nèi)部邏輯結(jié)構(gòu)圖; 圖6為本發(fā)明實施例中空閑指針單元所記錄的空閑地址指針隊列的一 實例示意圖7為本發(fā)明實施例中空閑指針單元所記錄的空閑地址指針隊列的另 一實例示意圖8為本發(fā)明實施例中數(shù)據(jù)包實際占用地址指針的排列順序的一實例 示意圖9為本發(fā)明實施例中鏈表信息單元所記錄的地址指針的一實例示意
圖10為本發(fā)明實施例中鏈表信息單元所記錄的地址指針的另一實例示 意圖11a 圖llb為本發(fā)明實施例中所使用的一種包級FIFO的內(nèi)部邏輯變 化示意圖。
具體實施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉 實施例,對本發(fā)明進一步詳細說明。
圖5為本發(fā)明實施例中緩存管理裝置的內(nèi)部邏輯結(jié)構(gòu)圖。如圖5所示,本實施例中的緩存管理裝置包括
空閑指針單元、在圖5中示為PTR—VALID,記錄BUFFER中空閑緩存 塊的空閑地址指針;初始化時,BUFFER中所有緩存塊均為空閑,相應(yīng)地, 所有地址指針均作為空閑地址指針記錄于空閑指針單元中。
本實施例中,為了減少空閑指針單元所需的硬件資源,圖5中所示的 PTR—VALID與圖2中所示的PTRQ略有不同。具體來說,PTR_VALID可 以只具有與BUFFER中每一緩存塊的地址指針——對應(yīng)的1比特、或較少 的多比特空閑指針指示位,每一 空閑指針指示位用以表示對應(yīng)緩存塊的地址 指針是否空閑,初始化時,PTR一VALID中所有空閑指針指示位均被置為表 示未使用的有效、即空閑。圖6中示出了 PTR一VALID所記錄的空閑地址指 的一實例,l表示已使用、即已申請,O表示未使用、即空閑。
這樣,假設(shè)PTRQ的寬度為m、深度為2n,而PTR—VALID的寬度為i、 深度為2n, m為大于l的整整數(shù),i、 n為大于等于l的正整數(shù),i小于m。 則PTRQ總共需要m x 2n比特的存儲資源,PTR—VALID總共需要i x 2n比特 的存儲資源??梢?,PTR—VALID相比于現(xiàn)有寬度為地址指針深度、深度為 BUFFER中所有緩存塊總數(shù)的PTRQ,可以大大減少空閑指針單元所需的硬 件資源。較佳地,本實施例利用寬度為1、深度為BUFFER中緩存塊總數(shù)的 RAM來實現(xiàn)PTR一VALID。當然,如果有足夠的硬件資源,空閑指針單元可 以為現(xiàn)有如圖2所示的PTRQ。
對于上述PTR一VALID,地址申請單元將表示空閑的有效空閑指^N旨示 位對應(yīng)的地址指針選定為已申請的地址指針通知給包接收模塊、然后將該空 閑指針指示位置為表示已申請的無效,以實現(xiàn)地址指針的申請。并且,地址 釋放單元則將RLSQ1、 RLSQ2中記錄的地址信息所表示的待釋放地址指針 對應(yīng)的空閑指針指示位,置為表示空閑的有效,以實現(xiàn)地址指針的釋放。
鏈表信息單元,記錄已申請地址指針的下一個地址指針。本實施例為了 減少鏈表信息單元所需的硬件資源,對鏈表信息單元進行了部分改進。具體 至圖5中,改進后的鏈表信息單元包括由 ADD_LINK_RAM和
16RE一LINK一RAM構(gòu)成的二級鏈接RAM,且圖5中示出的ADD—LINK—RAM 相比于現(xiàn)有如圖2所示的ADD—LINK—RAM也略有不同。
具體來說,為了配合由ADD—LINK—RAM和RE—LINK—RAM構(gòu)成的二 級鏈接RAM,首先需要將BUFFER中的所有緩存塊的地址指針被劃分為若 干組,以每組8個地址指針為例,圖7中示出了 PTR—VALID所記錄的以組 劃分的另一實例,l表示已使用、即已申請,0表示未使用、即空閑。
較佳地,每組中各緩存塊的地址指針可以為各緩存塊的預(yù)設(shè)組內(nèi)編號 與該組內(nèi)緩存塊總數(shù)乘以該組編號之積的和,這樣,可以保證同一組中各地 址指針的高位相同、低位不同,不同的低位即可表示各地址指針在的預(yù)設(shè)組 內(nèi)編號。且,每一組內(nèi)除一個可指向其他組的預(yù)定地址指針之外,其余地址 指針均指向同組內(nèi)的地址指針。
在申請地址指針時,地址申請單元優(yōu)先從同 一組內(nèi)申請。相應(yīng)地, ADD—LINK_RAM作為組內(nèi)記錄子單元,僅記錄每一組中已申請地址指針所 指向的同組內(nèi)下一個地址指針的組內(nèi)的低位。
當同一組內(nèi)的地址指針全部被申請,則需要從其他組內(nèi)繼續(xù)申請,但 ADD—LINK—RAM僅記錄組內(nèi)預(yù)設(shè)編號,此時就需要由RE—LINK—RAM作 為組間記錄子單元,記錄每一組中的一個預(yù)定地址指針所指向的下一個不同 組內(nèi)的地址指針、以及表示該已申請的預(yù)定地址指針被占用的對應(yīng)標志位, 每一組中可指向其他組的地址指針通??稍O(shè)置為該組的最后一個地址指針。
這樣,ADD—LINK—RAM就可由寬度為地址指針的低位、深度為 BUFFER中緩存塊總數(shù)與所述組總數(shù)之差的RAM來實現(xiàn),其中,深度為緩 存塊總數(shù)減所述組總數(shù),是因為每組中均有一個指向其他組的地址指針不會 在ADDJLINK—RAM中記錄;RE—LINK—RAM則可由寬度為地址指針深度、 深度為所述組的總數(shù)的RAM來實現(xiàn)。相比于現(xiàn)有技術(shù)中寬度為指針深度、 深度為BUFFER中所有緩存塊總數(shù)的一片RAM所占用的mx2n比特的存儲 資源,本實施例中實現(xiàn)鏈表信息單元的兩片RAM總共也只需要m,x (2n-p) + (m+l) xp的存儲資源,m,表示地址指針的低位、m,小于m, p表示組數(shù)、p小于等于2",可降低鏈表信息單元所需的硬件資源。
仍以每組8個地址指針為例,圖9中按照如圖8所示的數(shù)據(jù)包實際占用 地址指針的排列順序,示出了 ADD_LINK—RAM所記錄的同組內(nèi)下一個地 址指針的低3位、以及RE—LINK—RAM所記錄的每組中預(yù)定地址指針所指 向的不同組內(nèi)的完整地址指針的一實例。其中,00004-00007表示第l組內(nèi) 的地址指針、84000~84007表示第1050組內(nèi)的地址指針。
或者,也可以將ADD_LINK—RAM與RE—LINK—RAM合并為同一片 RAM,設(shè)置該RAM的寬度為每組中指向組內(nèi)的各地址指針低位總和、與一 個地址指針深度加1的總比特數(shù),即m, x (每組地址指針總數(shù)-l ) +m+l, 深度為所述組的總數(shù)p。那么該RAM總共只需要[m, x (每組地址指針總數(shù) -l)+m+l]xp的存儲資源,因而相比于現(xiàn)有技術(shù)中所需的mx2n,仍可降低 鏈表信息單元所需的硬件資源。
同樣以每組8個地址指針為例,圖10中按照如圖8所示的數(shù)據(jù)包實際 占用地址指針的排列順序,示出了一片RAM所記錄的同組內(nèi)下一個地址指 針的低3位、以及預(yù)定地址指針所指向的不同組內(nèi)的完整位地址指針的 一 實 例。其中,00004-00007表示第1組內(nèi)的地址指針、84000 84007表示第1050 組內(nèi)的地址指針。
需要說明的是,由于每一組中僅有一個地址指針指向不同組、而除該預(yù) 定地址指針之外的組內(nèi)其他地址指針均指向本組,因此,為了保證跨組的地 址指針之間的鏈接,如果每一組中指向不同組的預(yù)定地址指針的標志位表示 被占用,則即便該組內(nèi)的其他地址指針空閑也不能被申請。
相應(yīng)地,鏈表建立單元在表示被占用的標志位所對應(yīng)的已申請的預(yù)定地 址指針被釋放后,將該預(yù)定地址指針的標志位置為表示未占用;而地址申請 單元,則僅從標志位置為表示未占用的預(yù)定地址指針所在組內(nèi)為接收數(shù)據(jù)包 申請地址指針、并優(yōu)先從同一組內(nèi)執(zhí)行所述申請;且,與包發(fā)送模塊相連的 鏈表查找單元,則可按照上述規(guī)則查找可供包發(fā)送模塊從BUFFER中讀取 發(fā)送數(shù)據(jù)包的地址指針。此外,本實施例中如圖5所示的包接收模塊地址釋放信息隊列RLSQ1、以及包發(fā)送模塊地址釋放信息隊列RLSQ0可以與如圖2所示的相同。但為了提高釋放地址指針的效率,本實施例對RLSQ1、 RLSQ0、以及地址釋放單元的工作原理也進行了部分改進
RLSQ1,其為一寬度為地址指針深度的FIFO,但該FIFO中記錄解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針,而非如現(xiàn)有技術(shù)那樣僅記錄解析錯誤的接收數(shù)據(jù)包包頭的地址指針、以及該接收數(shù)據(jù)包所占用的緩存塊數(shù)量。
RLSQ0,其為一寬度為地址指針深度的FIFO,但該FIFO中記錄發(fā)送數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針,而非如現(xiàn)有技術(shù)那樣僅記錄發(fā)送數(shù)據(jù)包包頭的地址指針、以及該發(fā)送數(shù)據(jù)包所占用的緩存塊數(shù)量。
如此一來,地址釋放單元無需通過鏈表查詢單元,即可直接將RLSQ1、RLSQ0中記錄的地址指針釋放至空閑指針單元。也就是說,如圖5所示的緩存管理裝置僅在包發(fā)送模塊讀取數(shù)據(jù)包時才需要通過鏈表查詢單元來查詢鏈表信息單元,而在釋放地址指針時則無需再次查詢鏈表信息單元,從而就可提高地址釋放的效率、進而還可避免異常丟包。
另外,需要補充說明的是,對于RLSQO,包發(fā)送模塊可在依次讀取并發(fā)送完整數(shù)據(jù)包中的每一個數(shù)據(jù)塊的過程中,實時將每一個已讀取并發(fā)送的數(shù)據(jù)塊對應(yīng)的緩存塊的地址指針依次存入至RLSQ0,而不是像現(xiàn)有技術(shù)那樣在一個完整數(shù)據(jù)包發(fā)送之后才向RLSQ0中存入待釋放的地址信息;但對于RLSQ1,由于包接收模塊只有在解析完接收數(shù)據(jù)包的包尾時才可獲知該接收數(shù)據(jù)包是否錯誤,因而包接收模塊只有等待接收數(shù)據(jù)包的解析完成之后,才可決定該接收數(shù)據(jù)包中所有數(shù)據(jù)塊對應(yīng)的緩存塊的地址指針是否需要存入至RLSQ1中以待釋放,如此一來,如果利用現(xiàn)有的FIFO來實現(xiàn)RLSQ1 ,就需要額外記錄當前解析的接收數(shù)據(jù)包中所有數(shù)據(jù)塊對應(yīng)的緩存塊的地址指針。
為了避免在解析完成之前記錄所有數(shù)據(jù)塊對應(yīng)的緩存塊的地址指針,本
19實施例提供了一種具有丟包功能的包級FIF0來實現(xiàn)RLSQ1。具有丟包功能的包級FIFO是由現(xiàn)有包級FIFO改進而來。
現(xiàn)有包級FIFO除了具有存儲隊列之外,還具有下述信號端口指示當前寫地址的寫地址指針、指示當前讀地址的讀地址指針、指示包頭的首地址指針、指示包尾的尾地址指針,現(xiàn)有包級FIFO還具有可統(tǒng)計已存儲的所有數(shù)據(jù)的計數(shù)器,用以判斷該包級FIFO是否已滿。
本實施例為了使現(xiàn)有包級FIFO具備丟包功能,還為現(xiàn)有包級FIFO額外增加了信號端口,即丟棄信號和復(fù)制信號,如果該丟棄信號被置為有效,則寫地址指針就從包尾寫地址返回至對應(yīng)的包頭寫地址處,否則,寫地址指針仍停留在其當前位置;如果復(fù)制信號被置為有效,則讀地址指針就從包尾讀地址返回至對應(yīng)的包頭讀地址處,否則,讀地址指針仍停留在其當前位置。
假設(shè)以一數(shù)據(jù)包為讀寫數(shù)據(jù),如果寫地址指針從包尾寫地址返回至對應(yīng)的包頭寫地址處,則只要后續(xù)進行任何寫操作,均可將已寫入的該數(shù)據(jù)包刪除、即丟包;如果讀地址指針從包尾讀地址返回至對應(yīng)的包頭讀地址處,則可繼續(xù)讀取該數(shù)據(jù)包,以實現(xiàn)數(shù)據(jù)包的復(fù)制。
對于本實施例來說,并不需要復(fù)制功能,因而僅保留上述包級FIFO的丟包功能,并以當前解析的接收數(shù)據(jù)包中所有數(shù)據(jù)塊對應(yīng)的緩存塊的地址指針作為寫數(shù)據(jù)。
如此一來,本實施例中用于實現(xiàn)RLSQ1的丟級FIFO具有與包接收模塊相連的如下信號端口
寫地址指針,指示當前寫地址,以供包接收模塊依次將當前接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針作為當前寫數(shù)據(jù)寫入至包級FIFO;
首地址指針,指示包頭寫地址,該包頭寫地址表示當前接收數(shù)據(jù)包包頭所對應(yīng)的緩存塊的地址指針在包級FIFO中的寫地址;
尾地址指針,指示包尾寫地址,該包尾寫地址表示當前接收數(shù)據(jù)包包尾所對應(yīng)的緩存塊的地址指針在包級FIFO中的寫地址;
丟棄信號,可在當前接收數(shù)據(jù)包解析成功后被包接收模塊置為有效、并將寫地址指針從包尾寫地址返回至對應(yīng)的包頭寫址處,以供解析成功的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針被后續(xù)寫操作覆蓋、保證包級FIFO中僅記錄解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針。
這樣,包接收模塊可以在開始解析接收數(shù)據(jù)包的過程中,先將已申請的
該接收數(shù)據(jù)包中各數(shù)據(jù)塊對應(yīng)的緩存塊的地址指針均存入至包級FIFO、并標記包頭的地址指針存儲位置,參見圖lla,如果在解析完當前接收數(shù)據(jù)包的包尾時發(fā)現(xiàn)該接收數(shù)據(jù)包正確,則將丟棄信號置為有效、調(diào)整包級FIFO的下一次寫位置為已標記的包頭的地址指針存儲位置,參見圖llb,以保證解析正確的接收數(shù)據(jù)包的各地址指針會被后續(xù)寫操作覆蓋而不會保存在包級FIFO中;如果在解析完當前接收數(shù)據(jù)包的包尾時發(fā)現(xiàn)該接收數(shù)據(jù)包錯誤,則將丟棄信號置為無效、仍保持如圖lla所示的包級FIFO的下一次寫位置為包尾的地址指針的下一個存儲位置,從而將解析錯誤的接收數(shù)據(jù)包的各地址指針保存在包級FIFO中。
以上,是對本實施例中緩存管理裝置的詳細說明,由于該裝置可以由承載于FPGA中的計算機程序來實現(xiàn),因而本實施例還提供了體現(xiàn)該計算機程序流程的緩存管理方法,該方法可用于將接收數(shù)據(jù)包解析成功后存入至BUFFER、以及從BUFFER讀取并發(fā)送數(shù)據(jù)包,且該緩存管理方法包括
a、 記錄BUFFER中空閑緩存塊的空閑地址指針;
b、 從空閑地址指針中為接收數(shù)據(jù)包申請地址指針,以供包接收模塊可將解析成功的數(shù)據(jù)包存入至BUFFER中對應(yīng)緩存塊;
c、 記錄已申請地址指針的下一個地址指針;
d、 查找已申請地址指針的下一個地址指針、以供包發(fā)送模塊可從BUFFER中對應(yīng)緩存塊讀取數(shù)據(jù)包;
e、 記錄解析錯誤的接收數(shù)據(jù)包的地址信息、以及發(fā)送數(shù)據(jù)包的地址信息,并釋放所述地址信息表示的地址指針。
需要說明的是,上述步驟a e之間不具有固定的先后執(zhí)行順序,且可以
21是各步驟同時執(zhí)行。
而且,為了減少記錄地址指針鏈表所需的硬件資源,可以先將BUFFER中的所有緩存塊的地址指針被劃分為若干組,例如按照同 一組中的地址指針高位相同劃分組,且,所述組內(nèi)預(yù)設(shè)編號為同一組中地址指針的低位,且,在步驟c中分別記錄每一組內(nèi)的地址指針鏈表、以及組間的地址指針鏈表。
此時,步驟c可具體包括記錄每一組中已申請地址指針所指向的同組內(nèi)下一個地址指針的組內(nèi)預(yù)設(shè)編號,并記錄每一組中已申請地址指針所指向的不同組內(nèi)下一個地址指針、以及表示該已申請地址指針被占用的對應(yīng)標志位。具體實現(xiàn)時,可設(shè)置寬度為地址指針的低位、深度為BUFFER中緩存塊總數(shù)的RAM,用以記錄每一組中已申請地址指針所指向的同組內(nèi)下一個地址指針的組內(nèi)預(yù)設(shè)編號;設(shè)置寬度為地址指針深度加1、深度為所述組的總數(shù)的RAM,用以記錄每一組中已申請地址指針所指向的不同組內(nèi)下一個地址指針、以及表示該已申請地址指針被占用的對應(yīng)標志位。
相應(yīng)地,在步驟e釋放表示被占用的標志位所對應(yīng)的已申請地址指針后,還需要進一步將該標志位置為表示未占用;而在申請地址指針時,則應(yīng)從標志位置為表示未占用的地址指針所在組內(nèi)為接收數(shù)據(jù)包申請地址指針、并優(yōu)先從同 一 組內(nèi)執(zhí)行所述申請。
同樣為了減少記錄空閑地址指針所占用的硬件資源,步驟a之前可以設(shè)置與BUFFER中每一緩存塊的地址指針——對應(yīng)的空閑指針指示位,例如設(shè)置寬度為1、深度為BUFFER中緩存塊總數(shù)的RAM用以記錄空閑指針指示位;且,在步驟a中利用每一空閑指針指示位用以表示對應(yīng)緩存塊的地址指針是否空閑。
相應(yīng)地,在步驟b中,需要將有效的空閑指針指示位對應(yīng)的地址指針選定為已申請的地址指針、并將該空閑指針指示位置為無效;在步驟e執(zhí)行釋放時,需要將對應(yīng)的空閑指針指示位置為有效。
此外,為了提高地址釋放效率,步驟e中可實時記錄解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針、以及發(fā)送數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針,并將解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針、以及發(fā)送數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針釋放至空閑指針單元。
進一步地,在步驟e中實時記錄解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針時,可利用預(yù)先設(shè)置的一具有寫地址指針、首地址指針、尾地址指針、以及丟棄信號的包級FIFO來執(zhí)行,且對于當前解析的每一個接收數(shù)據(jù)包執(zhí)行的具體步驟包括
el、依據(jù)包級FIFO的寫地址指針所指示的當前寫地址,依次將當前接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針作為當前寫數(shù)據(jù)寫入至包級FIFO;
e2、利用包級FIFO的首地址指針所指示的包頭寫地址,記錄當前接收數(shù)據(jù)包包頭所對應(yīng)的緩存塊的地址指針在包級FIFO中的寫地址,并利用包級FIFO的尾地址指針所指示的包尾寫地址,記錄當前接收數(shù)據(jù)包包尾所對應(yīng)的緩存塊的地址指針在包級FIFO中的寫地址;
e3、在當前接收數(shù)據(jù)包解析成功后將包級FIFO的丟棄信號置為有效、并將寫地址指針從包尾寫地址返回至對應(yīng)的包頭寫地址處,以供解析成功的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針被后續(xù)寫操作覆蓋、保證包級FIFO中僅記錄解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針。
以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1、一種基于地址指針鏈表的緩存管理裝置,包括空閑指針單元,記錄BUFFER中空閑緩存塊的空閑地址指針;地址申請單元,從空閑地址指針中為接收數(shù)據(jù)包申請地址指針;鏈表信息單元,記錄已申請地址指針的下一個地址指針;鏈表查詢單元,查找已申請地址指針的下一個地址指針;第一FIFO,記錄解析錯誤的接收數(shù)據(jù)包的地址信息;第二FIFO,記錄發(fā)送數(shù)據(jù)包的地址信息;地址釋放單元,將所述地址信息表示的地址指針釋放至空閑指針單元;其特征在于,BUFFER中所有緩存塊的地址指針被劃分為若干組,每一組內(nèi)各地址指針的高位相同、低位不同,且每一組內(nèi)除一個可指向其他組的預(yù)定地址指針之外,其余地址指針均指向同組內(nèi)的地址指針;所述鏈表信息單元中分別記錄每一組中已申請地址指針所指向的同組地址指針的低位、每一組中已申請的預(yù)定地址指針所指向的不同組地址指針、以及表示該預(yù)定地址指針是否被占用的對應(yīng)標志位;且,所述地址申請單元從標志位置為表示未占用的預(yù)定地址指針所在組內(nèi)為接收數(shù)據(jù)包申請地址指針、并優(yōu)先從同一組內(nèi)執(zhí)行所述申請。
2、 如權(quán)利要求1所述的緩存管理裝置,其特征在于,所述鏈表信息單 元包括寬度為地址指針的低位、深度為BUFFER中緩存塊總數(shù)的RAM與所述 組總數(shù)之差,記錄鏈表建立單元寫入的每一組中已申請地址指針所指向的同 組地址指針的低位;寬度為地址指針深度、深度為所述組的總數(shù)的RAM,記錄每一組中已 申請的預(yù)定地址指針所指向的不同組地址指針、以及表示該預(yù)定地址指針是 否#1占用的對應(yīng)標志位。
3、 如權(quán)利要求1所述的緩存管理裝置,其特征在于,所述鏈表信息單元為寬度為每組中指向組內(nèi)的各地址指針低位總和、與一個地址指針深度加1的總比特數(shù),深度為所述組的總數(shù)的RAM。
4、 如權(quán)利要求1至3中任一項所述的緩存管理裝置,其特征在于,所 述空閑指針單元具有與BUFFER中每一緩存塊的地址指針——對應(yīng)的空閑 指針指示位,每一空閑指針指示位用以表示對應(yīng)緩存塊的地址指針是否空 閑;地址申請單元將有效的空閑指針指示位對應(yīng)的地址指針選定為已申請 的地址指針、并將該空閑指針指示位置為無效,以實現(xiàn)所述申請;地址釋放單元將第一 FIFO、第二 FIFO中記錄的地址指針對應(yīng)的空閑指 針指示位置為有效,以實現(xiàn)所述釋放。
5、 如權(quán)利要求4所述的緩存管理裝置,其特征在于,所述空閑指針單 元為寬度為1、深度為BUFFER中緩存塊總數(shù)的RAM。
6、 如權(quán)利要求1至3中任一項所述的緩存管理裝置,其特征在于, 第一 FIFO,記錄解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針; 第二FIFO,記錄發(fā)送數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針; 地址釋放單元直接將第一 FIFO、第二 FIFO中記錄的地址指針釋放至空閑指針單元。
7、 如權(quán)利要求6所述的緩存管理裝置,其特征在于,所述第一 FIFO 為包級FIFO,該包級FIFO至少具有如下控制信號寫地址指針,指示接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針在包級 FIFO中的當前寫地址;首地址指針,指示當前接收數(shù)據(jù)包包頭所對應(yīng)的緩存塊的地址指針在包 級FIFO中的包頭寫地址;尾地址指針,指示當前接收數(shù)據(jù)包包尾所對應(yīng)的緩存塊的地址指針在包 級FIFO中的包尾寫地址;丟棄信號,可在當前接收數(shù)據(jù)包解析成功后被置為有效、并將寫地址指 針從包尾寫地址返回至對應(yīng)的包頭寫地址處,以供解析成功的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針被后續(xù)寫操作覆蓋擦除;在當前接收數(shù)據(jù)報解析失敗后被置為無效、并保持寫地址指針停留在當前位置、以使得解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針可記錄于包級FIFO。
8、 一種基于地址指針鏈表的緩存管理方法,包括 記錄BUFFER中空閑緩存塊的空閑地址指針;從空閑地址指針中為接收數(shù)據(jù)包申請地址指針;記錄已申請地址指針的下一個地址指針;查找已申請地址指針的下一個地址指針;記錄解析錯誤的接收數(shù)據(jù)包的地址信息、以及發(fā)送數(shù)據(jù)包的地址信息; 釋放所述地址信息表示的地址指針;其特征在于,將BUFFER中所有緩存塊的地址指針被劃分為若干組, 每一組內(nèi)各地址指針的高位相同、低位不同,且每一組內(nèi)除一個可指向其他 組的預(yù)定地址指針之外,其余地址指針均指向同組內(nèi)的地址指針;所述記錄已申請地址指針的下一個地址指針包括分別記錄每一組中已 申請地址指針所指向的同組地址指針的低位、每一組中已申請的預(yù)定地址指 針所指向的不同組地址指針、以及表示該預(yù)定地址指針是否被占用的對應(yīng)標 志位;所述申請地址指針包括從標志位置為表示未占用的預(yù)定地址指針所在 組內(nèi)為接收數(shù)據(jù)包申請地址指針、并優(yōu)先從同 一組內(nèi)執(zhí)行所述申請。
9、 如權(quán)利要求8所述的緩存管理方法,其特征在于, 設(shè)置寬度為地址指針的低位、深度為BUFFER中緩存塊總數(shù)與所述組總數(shù)之差的RAM,用以記錄每一組中已申請地址指針所指向的同組內(nèi)地址 指針的組內(nèi)的低位;設(shè)置寬度為地址指針深度加1、深度為所述組總數(shù)的RAM,用以每一 組中預(yù)定地址指針所指向的不同組地址指針、以及表示該預(yù)定地址指針是否 4皮占用的對應(yīng)標志位。
10、 如權(quán)利要求8所述的緩存管理方法,其特征在于,設(shè)置寬度為每組中指向組內(nèi)的各地址指針低位總和、與一個地址指針深度加1的總比特數(shù),深度為所述組的總數(shù)的RAM,用以分別記錄每一組中已申請地址指針所指向的同組地址指針的低位、每一組中已申請的預(yù)定地址指針所指向的不同組 地址指針、以及表示該預(yù)定地址指針是否被占用的對應(yīng)標志位。
11、 如權(quán)利要求8至10中任一項所述的緩存管理方法,其特征在于, 所述記錄BUFFER中空閑緩存塊的空閑地址指針包括設(shè)置與BUFFER中 每一緩存塊的地址指針——對應(yīng)的空閑指針指示位,并利用每一空閑指針指 示位用以表示對應(yīng)緩存塊的地址指針是否空閑;所述申請包括將有效的空閑指針指示位對應(yīng)的地址指針選定為已申請 的地址指針、并將該空閑指針指示位置為無效;所述釋放包括將對應(yīng)的空閑指針指示位置為有效。
12、 如權(quán)利要求11所述的緩存管理方法,其特征在于,設(shè)置寬度為1、 深度為BUFFER中緩存塊總數(shù)的RAM用以記錄所述空閑指針指示位。
13、 如權(quán)利要求8至10中任一項所述的緩存管理方法,其特征在于, 所述記錄解析錯誤的接收數(shù)據(jù)包的地址信息、以及發(fā)送數(shù)據(jù)包的地址信息包括記錄解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針、以及發(fā) 送數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針;所述釋放所述地址信息表示的地址指針包括直接將所述記錄解析錯誤 的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針、以及發(fā)送數(shù)據(jù)包對應(yīng)的每一緩 存塊的地址指針釋放。
14、 如權(quán)利要求13所述的緩存管理方法,其特征在于,所述實時記錄 解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針包括設(shè)置一具有寫地址指針、首地址指針、尾地址指針、以及丟棄信號的包 級FIFO;依據(jù)包級FIFO的寫地址指針所指示的當前寫地址,依次將當前接收數(shù) 據(jù)包對應(yīng)的每一緩存塊的地址指針作為當前寫數(shù)據(jù)寫入至包級FIFO;且,利用包級FIFO的首地址指針所指示的包頭寫地址,記錄當前接收數(shù)據(jù)包包頭所對應(yīng)的緩存塊的地址指針在包級FIFO中的寫地址;利用包級 FIFO的尾地址指針所指示的包尾寫地址,記錄當前接收數(shù)據(jù)包包尾所對應(yīng) 的緩存塊的地址指針在包級FIFO中的寫地址;在當前接收數(shù)據(jù)包解析成功后將包級FIFO的丟棄信號置為有效、并將 寫地址指針從包尾寫地址返回至對應(yīng)的包頭寫地址處,以供解析成功的接收 數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針被后續(xù)寫操作覆蓋;在當前接收數(shù)據(jù)報 解析失敗后將包級FIFO的丟棄信號置為無效、并保持寫地址指針停留在當 前位置、以使得解析錯誤的接收數(shù)據(jù)包對應(yīng)的每一緩存塊的地址指針可記錄 于包級FIFO。
15、 一種應(yīng)用于如權(quán)利要求8所述方法的包級FIFO,其具有一存儲隊 列,以及如下信號端口指示當前寫地址的寫地址指針、指示當前讀地址的 讀地址指針、指示包頭的首地址指針、指示包尾的尾地址指針;且,該包級FIFO還具有可統(tǒng)計已存儲的所有數(shù)據(jù)的計數(shù)器,用以判斷 該包級FIFO是否已滿;其特征在于,該包級FIFO的信號端口還包括丟棄信號,在其被置為有效時,寫地址指針從包尾寫地址返回至對應(yīng)的 包頭寫地址處,在其被置為無效時,寫地址指針停留在當前位置;復(fù)制信號,在其被置為有效時,則讀地址指針從包尾讀地址返回至對應(yīng) 的包頭讀地址處,在其被置為無效時,讀地址指針仍停留在當前位置。
全文摘要
本發(fā)明公開了一種基于地址指針鏈表的緩存管理裝置及方法。本發(fā)明將BUFFER中的所有緩存塊的地址指針被劃分為若干組,并以同一組內(nèi)地址指針的低位來記錄每一組內(nèi)各地址指針之間的鏈表,還通過僅記錄每組中的一個預(yù)定地址指針所指向的其他組內(nèi)的地址指針來建立組與組之間的鏈表,從而無需現(xiàn)有技術(shù)中所需的寬度為指針深度、深度為BUFFER中所有緩存塊總數(shù)的RAM即可實現(xiàn)地址鏈表的存儲,進而可大大降低所需硬件資源。
文檔編號G06F3/06GK101551736SQ20091008413
公開日2009年10月7日 申請日期2009年5月20日 優(yōu)先權(quán)日2009年5月20日
發(fā)明者彬 王 申請人:杭州華三通信技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
玛曲县| 义马市| 阿合奇县| 唐海县| 新田县| 黔江区| 石门县| 固阳县| 越西县| 绍兴市| 大渡口区| 湖州市| 高要市| 永靖县| 平陆县| 松江区| 宝山区| 黔南| 云龙县| 青神县| 蓝田县| 赫章县| 罗田县| 南康市| 云和县| 海淀区| 彭泽县| 交城县| 陇南市| 石阡县| 衡南县| 武城县| 黑河市| 奉新县| 藁城市| 苍山县| 永定县| 会泽县| 米泉市| 阳高县| 漯河市|