两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

隊(duì)列存儲(chǔ)空間的管理方法和設(shè)備的制作方法

文檔序號(hào):6578996閱讀:222來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):隊(duì)列存儲(chǔ)空間的管理方法和設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種隊(duì)列存儲(chǔ)空間的管理方法和設(shè)備。
背景技術(shù)
報(bào)文或報(bào)文信息的入隊(duì)、出隊(duì)管理是通信處理芯片中常見(jiàn)的功能。隨著
網(wǎng)絡(luò)流量的飛速發(fā)展,對(duì)隊(duì)列管理模塊(Queue Manager;簡(jiǎn)稱(chēng)QM)的要求 也越來(lái)越高,從流量從10G比特每秒(Giga bit pet second;簡(jiǎn)稱(chēng)Gbps)、 20Gbps到40Gbps,甚至100Gbps。通常情況下,隊(duì)列管理包括入隊(duì)、出隊(duì)兩 個(gè)基本操作。報(bào)文入隊(duì)時(shí),根據(jù)報(bào)文包含的隊(duì)列號(hào)可以將報(bào)文存儲(chǔ)到對(duì)應(yīng)的 隊(duì)列空間中,在報(bào)文從出口出隊(duì)時(shí),可以從隊(duì)列空間讀出入隊(duì)的報(bào)文。
在一個(gè)具體隊(duì)列中,報(bào)文是按照順序存入、順序讀出的,存儲(chǔ)報(bào)文的隊(duì) 列空間總是有限的。現(xiàn)有的一種分配管理隊(duì)列空間方法是固定獨(dú)享分配地址 空間為每一個(gè)隊(duì)列預(yù)先分配一大段連續(xù)空間,所有屬于同一個(gè)隊(duì)列"^艮文按 到達(dá)的順序依次使用這個(gè)隊(duì)列的連續(xù)空間。 一般是把已有的隊(duì)列存儲(chǔ)空間平 均分配給每個(gè)隊(duì)列,進(jìn)行隊(duì)列的存儲(chǔ)訪問(wèn)時(shí),可以根據(jù)隊(duì)列號(hào)以及隊(duì)列內(nèi)的 報(bào)文順序號(hào)計(jì)算出訪問(wèn)的地址。固定獨(dú)享分配地址空間方法的處理非常簡(jiǎn)單, 隊(duì)列在發(fā)完一個(gè)包之后,可以順序遞增的計(jì)算出下一個(gè)包的地址。但是,固 定獨(dú)享分配地址空間的方法中地址空間不能共享,即^f吏某個(gè)隊(duì)列 一個(gè)包都沒(méi) 有,它的地址空間也不會(huì)給別的隊(duì)列用,造成了地址空間的浪費(fèi);并且由于 地址空間有限,當(dāng)隊(duì)列數(shù)非常多的時(shí)候,每個(gè)隊(duì)列分配到的空間就非常小了, 抗突發(fā)能力較弱。
另 一種分配管理隊(duì)列空間的方法是共享空間隊(duì)列,共享空間隊(duì)列空間管 理方法更為通用,尤其是在隊(duì)列數(shù)目比較多的情況下。在共享空間隊(duì)列空間 管理中,空間由所有隊(duì)列共享,當(dāng)某個(gè)報(bào)文到達(dá)時(shí)給該報(bào)文分配一個(gè)地址空 間。由于屬于不同隊(duì)列的報(bào)文交錯(cuò)到達(dá),因此一個(gè)隊(duì)列下各個(gè)報(bào)文存放的地址空間通常無(wú)法保證連續(xù),需要給每個(gè)隊(duì)列做一個(gè)鏈表,把屬于同一個(gè)隊(duì)列 的報(bào)文的地址空間鏈接起來(lái)。共享空間隊(duì)列空間管理的方法的優(yōu)點(diǎn)是空間充
分共享,缺點(diǎn)是需要操作鏈表。在報(bào)文出隊(duì)的時(shí)候,首先要讀出隊(duì)列頭;然 后根據(jù)隊(duì)列頭中的信息,讀出下一個(gè)報(bào)文的地址;再將這個(gè)地址作為新的隊(duì) 列頭指針。
共享空間隊(duì)列空間管理是一種基于鏈表的隊(duì)列管理, 一般包括以下4個(gè) 方面(1)空閑指針鏈表,進(jìn)行指針的分配、回收處理;(2)隊(duì)列的鏈表 狀態(tài)信息表,包括每個(gè)隊(duì)列的長(zhǎng)度、此鏈表的頭指針、尾指針;(3)隊(duì)列 鏈表,每個(gè)隊(duì)列維護(hù)一個(gè)鏈表,把所有報(bào)文入隊(duì)時(shí)申請(qǐng)的隊(duì)列指針按照順序 鏈接起來(lái);(4)隊(duì)列報(bào)文信息,通過(guò)鏈表的指針直接訪問(wèn)。其中報(bào)文入隊(duì)操 作具體為申請(qǐng)一個(gè)空閑指針,更新隊(duì)列鏈表狀態(tài)信息表的尾指針以及隊(duì)列 長(zhǎng)度(長(zhǎng)度加l),更新隊(duì)列鏈表,把當(dāng)前尾指針指向剛申請(qǐng)的空閑指針(鏈 表增加一個(gè)節(jié)點(diǎn))。報(bào)文出隊(duì)操作具體為根據(jù)隊(duì)列鏈表狀態(tài)信息表的頭指 針去讀隊(duì)列鏈表,得到頭指針的下一個(gè)指針,更新鏈表狀態(tài)信息表的隊(duì)列長(zhǎng) 度(長(zhǎng)度減l),刷新鏈表頭指針為下一個(gè)指針。
現(xiàn)有的基于鏈表的隊(duì)列管理方法,是一個(gè)報(bào)文分配一個(gè)獨(dú)立地址。由于 地址數(shù)量非常多,需要用一個(gè)隨機(jī)存儲(chǔ)器 (Random Access Memory;簡(jiǎn)稱(chēng) RAM)來(lái)存放。隊(duì)列每發(fā)送一個(gè)報(bào)文,都需要刷新這個(gè)隊(duì)列的頭指針,需要先 從RAM中讀出隊(duì)列下一個(gè)報(bào)文的地址,然后在將這個(gè)報(bào)文的地址寫(xiě)到隊(duì)列頭 指針。假如RAM的讀延時(shí)比較大,則頭指針的刷新要花很長(zhǎng)時(shí)間。而在頭指 針?biāo)⑿峦瓿芍?,這個(gè)隊(duì)列不能發(fā)下一個(gè)報(bào)文。影響隊(duì)列發(fā)報(bào)文的速度。由 于共享空間隊(duì)列空間管理涉及空閑指針的分配回收、隊(duì)列鏈表的管理, 一般 需要用FPGA片外RAM來(lái)存放隊(duì)列指針鏈表。以流量為40Gbps的隊(duì)列管理為 例,包處理速率為60百萬(wàn)包每秒(Million Packet Per Second;簡(jiǎn)稱(chēng)Mpps ) 次,在FPGA的200Mpps工作時(shí)鐘頻率的情況下,空閑指針的分配、回收、隊(duì) 列的鏈表更新則需要200Mpps/60 Mpps =3周期(cycle),即每3個(gè)周期需 要完成一次指針的分配、回收處理操作,鏈表的更新也要求3個(gè)周期處理完 成。但鏈表本身的特點(diǎn)需要根據(jù)當(dāng)前指針去讀RAM,獲取RAM的內(nèi)容后才能 得到下一個(gè)RAM的讀地址,讀取延遲也較大。而如果處理80Gbps/100Gbps時(shí), 則對(duì)RAM的要求更高,已經(jīng)達(dá)到目前RAM、現(xiàn)場(chǎng)可編程門(mén)陣列(Field-Programmable Gate Array;簡(jiǎn)稱(chēng)FPGA)工作頻率的設(shè)計(jì)能力極限。
采用共享隊(duì)列空間管理的方法,可以支持的隊(duì)列管理能力較低,如果需 要支持更高的隊(duì)列管理能力,則需要提升FPGA工作頻率,并選用時(shí)鐘頻率更 高、讀延時(shí)更小的片外存儲(chǔ)器RAM,不僅增加了成本,而且加大了設(shè)計(jì)難度。

發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種隊(duì)列存儲(chǔ)空間的管理方法和設(shè)備,用以解決現(xiàn)有 技術(shù)中存在的隊(duì)列管理能力低以及提高隊(duì)列管理能力所需成本高、設(shè)計(jì)難度 大的問(wèn)題。
本發(fā)明實(shí)施例提供一種隊(duì)列存儲(chǔ)空間的管理方法,包括
將隊(duì)列空閑指針鏈表中的隊(duì)列空閑指針設(shè)置為塊指針,每個(gè)所述塊指針 包括第一數(shù)量個(gè)子指針;
若報(bào)文需要加入指定隊(duì)列,判斷所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù) 量個(gè)子指針是否用完或判斷所述指定隊(duì)列的長(zhǎng)度是否為空;
如果所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針已用完或所述指 定隊(duì)列的長(zhǎng)度為空,從隊(duì)列空閑指針鏈表中為所述指定隊(duì)列申請(qǐng)一個(gè)隊(duì)列空 閑指針作為新的塊指針,才艮據(jù)所述新的塊指針將所述報(bào)文加入所述指定隊(duì)列。
本發(fā)明實(shí)施例又提供一種隊(duì)列存儲(chǔ)空間的管理設(shè)備,包括
設(shè)置模塊,用于將隊(duì)列空閑指針鏈表中的隊(duì)列空閑指針設(shè)置為塊指針, 每個(gè)所述塊指針包括第一數(shù)量個(gè)子指針;
判斷模塊,用于在報(bào)文需要加入指定隊(duì)列時(shí),判斷所述指定隊(duì)列已申請(qǐng) 的塊指針內(nèi)的固定數(shù)量的子指針是否用完或判斷所述指定隊(duì)列的長(zhǎng)度是否為

么,
第一入隊(duì)模塊,用于在所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的固定數(shù)量的子指 針已用完或所述指定隊(duì)列的長(zhǎng)度為空時(shí),從隊(duì)列空閑指針鏈表中為所述指定 隊(duì)列申請(qǐng)一個(gè)隊(duì)列空閑指針作為新的塊指針,根據(jù)所述新的塊指針將所述報(bào) 文加入所述指定隊(duì)列;
存儲(chǔ)模塊,用于存儲(chǔ)所述隊(duì)列空閑指針鏈表。
本發(fā)明實(shí)施例提供的隊(duì)列存儲(chǔ)空間的管理方法和設(shè)備,采用塊指針對(duì)隊(duì)列存儲(chǔ)空間進(jìn)行管理,可以降低對(duì)隊(duì)列空閑指針鏈表和隊(duì)列鏈表的訪問(wèn)次數(shù),
減少管理RAM所需的帶寬,可以在RAM固定的情況下大幅提高隊(duì)列管理能力, 成本低、開(kāi)發(fā)簡(jiǎn)單靈活。


圖1為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第一實(shí)施例的流程圖; 圖2為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第二實(shí)施例的流程圖; 圖3為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例的示意圖; 圖4為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中報(bào)文入隊(duì)的初始狀 態(tài)圖5為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中1號(hào)實(shí)線報(bào)文加入 指定隊(duì)列QO的狀態(tài)圖6為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中2號(hào)實(shí)線報(bào)文加入 指定隊(duì)列QO的狀態(tài)圖7為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中1號(hào)虛線才艮文加入 指定隊(duì)列Ql的狀態(tài)圖8為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中2號(hào)虛線報(bào)文加入 指定隊(duì)列Ql的狀態(tài)圖9為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中16號(hào)虛線^艮文加入 指定隊(duì)列Ql的狀態(tài)圖10為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中17號(hào)虛線報(bào)文加 入指定隊(duì)列Ql的狀態(tài)圖11為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中16號(hào)實(shí)線才艮文加 入指定隊(duì)列QO的狀態(tài)圖12為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中17號(hào)實(shí)線才艮文加 入指定隊(duì)列Q0的狀態(tài)圖13為本發(fā)明隊(duì)列存儲(chǔ)空間的管理設(shè)備第一實(shí)施例的結(jié)構(gòu)示意圖14為本發(fā)明隊(duì)列存儲(chǔ)空間的管理設(shè)備第二實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
圖1為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第一實(shí)施例的流程圖,如圖1所
示,該隊(duì)列存儲(chǔ)空間的管理方法包括以下步驟
步驟101、將隊(duì)列空閑指針鏈表中的隊(duì)列空閑指針設(shè)置為塊指針,每個(gè) 所述塊指針包括第一數(shù)量個(gè)子指針。
隊(duì)列本身的入隊(duì)/出隊(duì)操作是按照先進(jìn)先出的順序進(jìn)行處理的。隊(duì)列存儲(chǔ) 空間的管理設(shè)備在為隊(duì)列進(jìn)行指針?lè)峙鋾r(shí),可以預(yù)先將隊(duì)列空閑指針鏈表中 的空閑指針設(shè)置為塊指針,每個(gè)所述塊指針包括第一數(shù)量個(gè)子指針。第一數(shù) 量可以根據(jù)具體的隊(duì)列管理需求(例如隊(duì)列管理實(shí)際需要的處理能力和RAM 工作時(shí)鐘頻率等)設(shè)置。
步驟102、若報(bào)文需要加入指定隊(duì)列,判斷所述指定隊(duì)列申請(qǐng)的塊指針 內(nèi)的第一數(shù)量個(gè)子指針是否用完或判斷所述指定隊(duì)列的長(zhǎng)度是否為空,如果 所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針已用完或所述指定隊(duì)列的 長(zhǎng)度為空,執(zhí)行步驟103。
報(bào)文入隊(duì)時(shí),可以判斷該報(bào)文需要加入的指定隊(duì)列是否已經(jīng)申請(qǐng)了塊指 針,也就是可以判斷指定隊(duì)列是否為空,如果為空,則該指定隊(duì)列沒(méi)有申請(qǐng) 過(guò)塊指針,需要執(zhí)行步驟103。如果指定隊(duì)列不為空即則該指定隊(duì)列申請(qǐng)過(guò) 塊指針,需要判斷指定隊(duì)列申請(qǐng)的塊指針內(nèi)的子指針是否已經(jīng)用完,具體方 法為判斷所述子指針是否指示達(dá)到所述第一數(shù)量,如果是則所述指定隊(duì)列 申請(qǐng)的所述塊指針內(nèi)的第一數(shù)量個(gè)子指針用完。
例如 一般來(lái)說(shuō),子指針可以從"0000"開(kāi)始,也就是"0000"對(duì)應(yīng)第 一個(gè)子指針,如果第一數(shù)量為"16",則子指針為"1111"對(duì)應(yīng)第16個(gè)子指 針,當(dāng)子指針為"1111"時(shí)可以指示此次循環(huán)計(jì)數(shù)已達(dá)到第一數(shù)量"16", 也可以指示塊指針內(nèi)的第 一數(shù)量個(gè)子指針用完。
步驟103、從隊(duì)列空閑指針鏈表中為所述指定隊(duì)列申請(qǐng)一個(gè)隊(duì)列空閑指 針作為新的塊指針,根據(jù)所述新的塊指針將所述報(bào)文加入所述指定隊(duì)列。
如果指定隊(duì)列申請(qǐng)的塊指針內(nèi)的子指針已經(jīng)用完,需要從隊(duì)列空閑指針 鏈表中為需要加入指定隊(duì)列的報(bào)文申請(qǐng)一個(gè)隊(duì)列空閑指針作為新的塊指針, 根據(jù)所述新的塊指針將所述報(bào)文加入所述指定隊(duì)列。
步驟103具體可以包括步驟1031、從隊(duì)列空閑指針鏈表中為所述指定隊(duì)列申請(qǐng)一個(gè)隊(duì)列空閑指 針作為新的塊指針。
步驟1032、將所述新的塊指針作為實(shí)際訪問(wèn)地址的高位地址,并將所述 新的塊指針的子指針作為所述實(shí)際訪問(wèn)地址的低位地址,得到所述實(shí)際訪問(wèn) 地址,所述子指針為入隊(duì)順序計(jì)數(shù)器的數(shù)值,所述入隊(duì)順序計(jì)數(shù)器的初始值 為零。
報(bào)文入隊(duì)時(shí),實(shí)際訪問(wèn)地址由高位地址和低位地址兩部分組成,高位地 址為申請(qǐng)的新的塊指針;低位地址為新的塊指針的子指針,其中子指針具體 為入隊(duì)順序計(jì)數(shù)器的數(shù)值,入隊(duì)順序計(jì)數(shù)器記錄的是當(dāng)前加入指定隊(duì)列的報(bào) 文的循環(huán)次序。例如隊(duì)列空閑指針"0010"為新的塊指針,入隊(duì)順序計(jì)數(shù) 器的數(shù)值初始的二進(jìn)制地址"OOOO,,為子指針,則實(shí)際訪問(wèn)地址為"00100000"。
步驟1033、將所述"^艮文加入所述指定隊(duì)列中所述實(shí)際訪問(wèn)地址后,將所 述入隊(duì)順序計(jì)數(shù)器的數(shù)值加"1",將所述指定隊(duì)列的長(zhǎng)度加'T,。
例如第一數(shù)量為"16",當(dāng)?shù)趌個(gè)報(bào)文入隊(duì)時(shí),將該第1個(gè)報(bào)文加入 指定隊(duì)列中實(shí)際訪問(wèn)地址"00100000",并將入隊(duì)順序計(jì)數(shù)器的數(shù)值加T 為"0001",將實(shí)際訪問(wèn)地址更新為"00100001",并將指定隊(duì)列的長(zhǎng)度加 'T,。同理,入隊(duì)順序計(jì)數(shù)器的數(shù)值為T(mén)到'"15"時(shí),可以將15個(gè)報(bào)文 依次加入指定隊(duì)列。
步驟1034、將所述指定隊(duì)列的隊(duì)列鏈表當(dāng)前的尾指針更新為所述新的塊 指針,并將所述隊(duì)列空閑指針鏈表的頭指針更新為下一個(gè)可用的隊(duì)列空閑指 針。
如果在步驟102中當(dāng)判斷得出指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子 指針未用完時(shí),可以執(zhí)行步驟104,具體為
步驟104、根據(jù)已有的塊指針將所述報(bào)文加入所述指定隊(duì)列。
指定隊(duì)列不為空時(shí),已申請(qǐng)的塊指針內(nèi)的子指針可能未用完,也可能已 用完。如果指定隊(duì)列申請(qǐng)的塊指針內(nèi)的子指針沒(méi)有用完,則不用申請(qǐng)隊(duì)列空 閑指針,而是使用已有的塊指針內(nèi)的子指針將所述報(bào)文加入指定隊(duì)列。
其中步驟104具體可以包括
步驟1041、將所述已有的塊指針作為實(shí)際訪問(wèn)地址的高位地址,并將所 述指定隊(duì)列對(duì)應(yīng)的已有的塊指針的子指針作為所述實(shí)際訪問(wèn)地址的低位地址,得到所述實(shí)際訪問(wèn)地址,所述子指針為入隊(duì)順序計(jì)數(shù)器的數(shù)值,所述入 隊(duì)順序計(jì)數(shù)器的初始值為零。
步驟1042、將所述"^艮文加入所述指定隊(duì)列中所述實(shí)際訪問(wèn)地址后,將所 述入隊(duì)順序計(jì)數(shù)器的數(shù)值加"1",將所述指定隊(duì)列的長(zhǎng)度加"1"。
例如第一數(shù)量為"16",當(dāng)?shù)?6個(gè)報(bào)文入隊(duì)時(shí),將該第16個(gè)報(bào)文加 入指定隊(duì)列中實(shí)際訪問(wèn)地址"00101111",將指定隊(duì)列的長(zhǎng)度加"1",并將 將入隊(duì)順序計(jì)數(shù)器的數(shù)值加"1"得到"0000",將實(shí)際訪問(wèn)地址更新為 "00100000",此時(shí)相當(dāng)于將入隊(duì)順序計(jì)數(shù)器清零。如果第一數(shù)量為"4", 且入隊(duì)順序計(jì)數(shù)器的數(shù)值從"0000"開(kāi)始,則在入隊(duì)順序計(jì)數(shù)器為"0011" 時(shí)清零。
在第一數(shù)量個(gè)報(bào)文加入指定隊(duì)列之后,如果還有其他的報(bào)文需要加入指 定隊(duì)列,則隊(duì)列存儲(chǔ)空間的管理設(shè)備可以執(zhí)行步驟103,再為該指定隊(duì)列申 請(qǐng)一個(gè)隊(duì)列空閑指針;然后將隊(duì)列空閑指針作為實(shí)際訪問(wèn)地址的高位地址, 將子指針對(duì)應(yīng)的入隊(duì)順序計(jì)數(shù)器記錄的數(shù)值作為實(shí)際訪問(wèn)地址的低位地址, 繼續(xù)將第 一數(shù)量個(gè)報(bào)文加入指定隊(duì)列。直到將需要加入指定隊(duì)列的報(bào)文處理 完畢后,該入隊(duì)操作才結(jié)束。
本實(shí)施例采用塊指針對(duì)隊(duì)列存儲(chǔ)空間進(jìn)行管理,塊指針內(nèi)的子指針個(gè)數(shù) 即第一數(shù)量可以根據(jù)隊(duì)列管理能力的需求和RAM的能力具體設(shè)計(jì),根據(jù)塊指 針內(nèi)的子指針對(duì)第一數(shù)量個(gè)需要加入指定隊(duì)列的報(bào)文進(jìn)行入隊(duì)操作,降低了 對(duì)隊(duì)列空閑指針鏈表和隊(duì)列鏈表的訪問(wèn)次數(shù),減少管理RAM所需的帶寬,在 RAM固定的情況下大幅提高隊(duì)列管理能力,成本低、開(kāi)發(fā)簡(jiǎn)單、應(yīng)用靈活。
圖2為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第二實(shí)施例的流程圖,如圖2所 示,在本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第一實(shí)施例的基礎(chǔ)上,該隊(duì)列存儲(chǔ)空 間的管理方法還可以包括出隊(duì)的過(guò)程,具體為
步驟201、若所述指定隊(duì)列中有報(bào)文需要出隊(duì),判斷指定隊(duì)列中當(dāng)前出 隊(duì)報(bào)文對(duì)應(yīng)的塊指針內(nèi)的子指針是否用完或所述報(bào)文出隊(duì)后該指定隊(duì)列是否 為空,如果是,則執(zhí)行步驟202,否則,執(zhí)行步驟203。
在報(bào)文出隊(duì)時(shí),隊(duì)列存儲(chǔ)空間的管理設(shè)備可以根據(jù)指定隊(duì)列的鏈表狀態(tài) 信息表讀取指定隊(duì)列的隊(duì)列鏈表,判斷所述報(bào)文對(duì)應(yīng)的塊指針內(nèi)的所有子指 針是否用完或者判斷所述報(bào)文出隊(duì)后該指定隊(duì)列是否為空,其中判斷報(bào)文對(duì)應(yīng)的塊指針內(nèi)的所有子指針是否用完的方法為判斷所述報(bào)文對(duì)應(yīng)的塊指針 內(nèi)的子指針是否指示達(dá)到所述第一數(shù)量,如果是則所述^t艮文對(duì)應(yīng)的所述塊指 針內(nèi)的第 一數(shù)量個(gè)子指針用完。
步驟202、將所述報(bào)文對(duì)應(yīng)的塊指針釋放,并將釋放出的塊指針加入所 述隊(duì)列空閑指針鏈表。
當(dāng)所述"^艮文對(duì)應(yīng)的塊指針內(nèi)的所有子指針用完時(shí),步驟202具體可以包

步驟2021 、根據(jù)所述指定隊(duì)列的鏈表狀態(tài)信息表讀取所述指定隊(duì)列的隊(duì) 列鏈表。
步驟2022、將所述隊(duì)列鏈表的頭指針作為實(shí)際訪問(wèn)地址的高位地址,并 將所述報(bào)文對(duì)應(yīng)的塊指針的子指針作為所述實(shí)際訪問(wèn)地址的低位地址,得到 所述實(shí)際訪問(wèn)地址,所述子指針為出隊(duì)順序計(jì)數(shù)器的數(shù)值,所述出隊(duì)順序計(jì) 數(shù)器的初始值為零。
其中隊(duì)列鏈表的頭指針指向的地址可以作為實(shí)際訪問(wèn)地址的高位地址, 報(bào)文對(duì)應(yīng)的塊指針的子指針可以作為實(shí)際訪問(wèn)地址的低位地址,從而得到實(shí) 際訪問(wèn)地址。其中報(bào)文對(duì)應(yīng)的塊指針的子指針為出隊(duì)順序計(jì)數(shù)器的數(shù)值,出 隊(duì)順序計(jì)數(shù)器的數(shù)值為當(dāng)前從指定隊(duì)列出隊(duì)的報(bào)文的循環(huán)次序。例如鏈表 狀態(tài)信息表的頭指針指向的地址為"0001",入隊(duì)順序計(jì)數(shù)器的數(shù)值初始的 二進(jìn)制地址為"0000",則實(shí)際訪問(wèn)地址為"00010000"?;蛘呃珀?duì)列 鏈表的頭指針指向的地址為"0011"入隊(duì)順序計(jì)數(shù)器的數(shù)值初始的二進(jìn)制地 址為"0000",則實(shí)際訪問(wèn)地址為"00110000"。
步驟2023、所述指定隊(duì)列中所述實(shí)際訪問(wèn)地址中的報(bào)文出隊(duì)后,將所述 指定隊(duì)列的長(zhǎng)度減'T,,將所述實(shí)際訪問(wèn)地址中的報(bào)文對(duì)應(yīng)的塊指針釋放, 并將釋放出的塊指針加入所述隊(duì)列空閑指針鏈表。
步驟2024、將所述指定隊(duì)列的隊(duì)列鏈表當(dāng)前的頭指針更新為所述隊(duì)列鏈 表的下一指針,將所述隊(duì)列空閑指針鏈表的尾指針或頭指針更新為釋放出的 塊指針。
例如第一數(shù)量為"16",指定隊(duì)列中實(shí)際訪問(wèn)地址"00011111",第 16個(gè)報(bào)文從實(shí)際訪問(wèn)地址"00011111"出隊(duì)時(shí),將出隊(duì)順序號(hào)加'T,得到 "0000",將實(shí)際訪問(wèn)地址更新為"00010000"",此時(shí)可以將出隊(duì)順序計(jì)數(shù)器清零。將得到的實(shí)際訪問(wèn)地址的高位地址"0001"釋放為隊(duì)列空閑指針。
釋放出隊(duì)列空閑指針后,可以將指定隊(duì)列的隊(duì)列鏈表的頭指針更新為隊(duì)列鏈 表的下一指針后,將隊(duì)列空閑指針鏈表的尾指針更新為上述例子中釋放得到
的隊(duì)列空閑指針,例如"0001"。
步驟203、不釋放所述報(bào)文對(duì)應(yīng)的塊指針。
當(dāng)所述報(bào)文對(duì)應(yīng)的塊指針內(nèi)的所有子指針未用完時(shí),不釋放所述報(bào)文對(duì) 應(yīng)的塊指針具體包括
步驟2031、根據(jù)所述指定隊(duì)列的鏈表狀態(tài)信息表讀取所述指定隊(duì)列的隊(duì) 列鏈表。
步驟2032、將所述隊(duì)列鏈表的頭指針作為實(shí)際訪問(wèn)地址的高位地址,并 將所述報(bào)文對(duì)應(yīng)的塊指針的子指針作為所述實(shí)際訪問(wèn)地址的低位地址,得到 所述實(shí)際訪問(wèn)地址,所述子指針為出隊(duì)順序計(jì)數(shù)器的數(shù)值,所述出隊(duì)順序計(jì) 數(shù)器的初始值為零。
步驟2033、所述指定隊(duì)列中所述實(shí)際訪問(wèn)地址中的報(bào)文出隊(duì)后,將所述 出隊(duì)順序計(jì)數(shù)器的數(shù)值加"1",將所述指定隊(duì)列的長(zhǎng)度減"1",不釋放所 述報(bào)文對(duì)應(yīng)的塊指針。
例如第一數(shù)量為"16",當(dāng)?shù)趌個(gè)報(bào)文出隊(duì)時(shí),將該第1個(gè)報(bào)文從對(duì) 應(yīng)的實(shí)際訪問(wèn)地址"00010000"出隊(duì)后,將出隊(duì)順序計(jì)數(shù)器的數(shù)值加'T,為 "0001",將實(shí)際訪問(wèn)地址更新為"00010001"。同理,出隊(duì)順序計(jì)數(shù)器的 數(shù)值為'T,到"15"時(shí),執(zhí)行步驟202則連續(xù)15個(gè)報(bào)文可以依次從指定隊(duì) 列出隊(duì)。
在第一數(shù)量個(gè)報(bào)文從指定隊(duì)列出隊(duì)之后,如果指定隊(duì)列中還有其他的報(bào) 文需要出隊(duì),則隊(duì)列存儲(chǔ)空間的管理設(shè)備根據(jù)讀取隊(duì)列鏈表的當(dāng)前的頭指針, 然后執(zhí)行步驟201,將隊(duì)列鏈表當(dāng)前的頭指針為實(shí)際訪問(wèn)地址的高位地址, 將報(bào)文對(duì)應(yīng)的塊指針的子指針即出隊(duì)順序計(jì)數(shù)器記錄的數(shù)值作為實(shí)際訪問(wèn)地 址低位地址,將第一數(shù)量個(gè)報(bào)文從指定隊(duì)列出隊(duì)。直到將需要從指定隊(duì)列出 隊(duì)的報(bào)文處理完畢后,該出隊(duì)操作才結(jié)束。
本實(shí)施例根據(jù)塊指針內(nèi)的子指針對(duì)指定隊(duì)列中第一數(shù)量個(gè)報(bào)文進(jìn)行連續(xù) 的出隊(duì)操作,子指針的第一數(shù)量可以^f艮據(jù)隊(duì)列管理能力的需求和RAM的能力 具體設(shè)計(jì),通過(guò)實(shí)施本發(fā)明,可以降低對(duì)隊(duì)列空閑指針鏈表和隊(duì)列鏈表的訪問(wèn)次數(shù),減少管理RAM所需的帶寬,在RAM固定的情況下大幅提高隊(duì)列管理 能力,成本低,開(kāi)發(fā)簡(jiǎn)單,應(yīng)用靈活。
圖3為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例的示意圖,如圖3所 示,在本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第一、第二實(shí)施例的基礎(chǔ)上,以指定 隊(duì)列為隊(duì)列O時(shí)為例,該隊(duì)列存儲(chǔ)空間的管理方法具體為將隊(duì)列空閑指針 鏈表中的隊(duì)列空閑指針設(shè)置為塊指針,每個(gè)塊指針包括第一數(shù)量個(gè)子指針; 在報(bào)文入隊(duì)操作時(shí),如果指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針已用 完或指定隊(duì)列的長(zhǎng)度為空,隊(duì)列存儲(chǔ)空間的管理設(shè)備從隊(duì)列空閑指針鏈表31 中為隊(duì)列0申請(qǐng)一個(gè)隊(duì)列空閑指針"0001",將隊(duì)列鏈表狀態(tài)信息表32中的 尾指針Tail-Ptr-0更新為"0001",將隊(duì)列0的長(zhǎng)度(Length)力口 "1",并 更新隊(duì)列鏈表33,將隊(duì)列鏈表當(dāng)前的尾指針指向剛申請(qǐng)的隊(duì)列空閑指針
"0001",此時(shí)隊(duì)列鏈表增加一個(gè)節(jié)點(diǎn)。假設(shè)第一數(shù)量為"16",在隊(duì)列的 報(bào)文表34進(jìn)行入隊(duì)操作時(shí),將入隊(duì)順序計(jì)數(shù)器counter — i記錄當(dāng)前報(bào)文入隊(duì) 的循環(huán)次序(從"0000"到"1111")作為子指針,將申請(qǐng)的隊(duì)列空閑指針 指向的地址"0001"與當(dāng)前報(bào)文入隊(duì)的循環(huán)次序(從"0000"到"1111") 結(jié)合,可以得到16個(gè)可用的實(shí)際訪問(wèn)地址Ptr_i_addr:從"00010000"到
"00011111",其中實(shí)際訪問(wèn)地址的高位地址Ptr_i為隊(duì)列空閑指針,實(shí)際 訪問(wèn)地址的低位地址addr為入隊(duì)順序計(jì)數(shù)器counter-i記錄的當(dāng)前報(bào)文入隊(duì) 的循環(huán)次序。然后,根據(jù)這16個(gè)實(shí)際訪問(wèn)地址可以將16個(gè)需要加入指定的 隊(duì)列0報(bào)文依次加入隊(duì)列0。此外,如果還有需要加入隊(duì)列0的報(bào)文,則為 隊(duì)列0再申請(qǐng)一個(gè)隊(duì)列空閑指針例如"0011",然后將"0011"與當(dāng)前報(bào)文 入隊(duì)的循環(huán)次序(從"0000"到"1111")結(jié)合得到16個(gè)可用的實(shí)際訪問(wèn)地 址從"00110000"到"00111111",繼續(xù)將需要加入指定隊(duì)列0的報(bào)文依 次加入隊(duì)列0,如此重復(fù)直至將需要加入指定隊(duì)列0的報(bào)文全部加入隊(duì)列0 為止。
在報(bào)文出隊(duì)操作時(shí),隊(duì)列存儲(chǔ)空間的管理設(shè)備根據(jù)隊(duì)列的鏈表狀態(tài)信息 表32的頭指針Head—Ptr —0讀取隊(duì)列鏈表33,可以從隊(duì)列鏈表33得到隊(duì)列0 的頭指針Next_Ptr_0,根據(jù)Next—Ptr — 0可以獲取隊(duì)列鏈表33的下一個(gè)指針 Next_Ptr_i。假設(shè)第一數(shù)量為"16",在隊(duì)列的報(bào)文表34進(jìn)行出隊(duì)操作時(shí), 可以將隊(duì)列0的頭指針Next-Ptr-0指向的地址Ptr —0作為實(shí)際訪問(wèn)地址的高位地址,將子指針即當(dāng)前報(bào)文出隊(duì)的循環(huán)次序作為實(shí)際訪問(wèn)地址的低位地址, 生成實(shí)際訪問(wèn)地址,具體生成方法和入隊(duì)操作時(shí)相同。才艮據(jù)生成的實(shí)際訪問(wèn)
地址依次將隊(duì)列0中的16個(gè)報(bào)文出隊(duì)。并將實(shí)際訪問(wèn)地址的高位地址釋放為 隊(duì)列空閑指針,然后將鏈表狀態(tài)信息表的隊(duì)列0的長(zhǎng)度減"1",并且將隊(duì)列 鏈表中隊(duì)列0頭指針?biāo)⑿聻橄乱粋€(gè)指針Next-Ptr一i。
下面以第一數(shù)量為"16",制定隊(duì)列為QO、 Ql為例,說(shuō)明隊(duì)列存儲(chǔ)空間 的管理的具體方法
圖4為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中報(bào)文入隊(duì)的初始狀 態(tài)圖,如圖4所示,實(shí)線報(bào)文為需要加入指定隊(duì)列Q0的報(bào)文,虛線報(bào)文為需 要加入指定隊(duì)列Ql的報(bào)文;指定隊(duì)列QO、 Ql的初始為空;隊(duì)列空閑指針鏈 表初始的頭指針為"0",尾指針為N-1,長(zhǎng)度為N;入隊(duì)操作時(shí),子指針對(duì) 應(yīng)的QO、 Ql的入隊(duì)順序計(jì)數(shù)器Counter_i的數(shù)值為報(bào)文入隊(duì)的循環(huán)次序,出 隊(duì)操作時(shí),子指針對(duì)應(yīng)的出隊(duì)順序計(jì)數(shù)器Counter_o的數(shù)值為報(bào)文出隊(duì)的循 環(huán)次序,Counter —i、 Counter_o初始值為"0"。
圖5為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中1號(hào)實(shí)線報(bào)文加入 指定隊(duì)列QO的狀態(tài)圖,如圖5所示,1號(hào)實(shí)線報(bào)文是指定隊(duì)列QO的第一個(gè) 報(bào)文,隊(duì)列存儲(chǔ)空間的管理設(shè)備需要為QO申請(qǐng)一個(gè)隊(duì)列空閑指針O,此時(shí)隊(duì) 列空閑指針鏈表的頭指針更新為下一個(gè)可用指針'T',長(zhǎng)度減"1"更新為 N-l。 QO的指針鏈表為0/0即QO的頭指針和尾指針都為"0",此時(shí)QO的長(zhǎng) 度為'T,,將隊(duì)列空閑指針O作為實(shí)際訪問(wèn)地址的高位地址,將QO的入隊(duì) 順序計(jì)數(shù)器的數(shù)值"0"作為實(shí)際訪問(wèn)地址的低位地址,可以生成實(shí)際訪問(wèn)地 址,根據(jù)實(shí)際訪問(wèn)地址可以將1號(hào)實(shí)線報(bào)文加入指定隊(duì)列Q0。 l號(hào)實(shí)線報(bào)文 加入QO后,用Counter_iO表示QO的入隊(duì)順序計(jì)數(shù)器,則入隊(duì)順序計(jì)數(shù)器 Counter —i0的數(shù)值加"1"后更新為"1"。
圖6為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中2號(hào)實(shí)線報(bào)文加入 指定隊(duì)列QO的狀態(tài)圖,如圖6所示,2號(hào)實(shí)線報(bào)文加入指定隊(duì)列QO時(shí),將 隊(duì)列空閑指針"0"作為實(shí)際訪問(wèn)地址的高位地址,將QO的入隊(duì)順序計(jì)數(shù)器 Counter-iO的數(shù)值"1"作為實(shí)際訪問(wèn)地址的^f氐位地址,生成實(shí)際訪問(wèn)地址 后,2號(hào)實(shí)線報(bào)文根據(jù)實(shí)際訪問(wèn)地址加入QO成功后,只需要將QO的入隊(duì)順 序計(jì)數(shù)器的數(shù)值加'T,后更新為"2",不需要申請(qǐng)新的隊(duì)列空閑指針。QO的指針鏈表還是0/0,但是QO的長(zhǎng)度更新為"2"。
圖7為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中1號(hào)虛線報(bào)文加入 指定隊(duì)列Ql的狀態(tài)圖,如圖7所示,1號(hào)虛線報(bào)文為加入指定隊(duì)列Ql的第 一個(gè)報(bào)文,需要從隊(duì)列空閑指針鏈表中為Ql申請(qǐng)新的隊(duì)列空閑指針"1"。 隊(duì)列空閑指針鏈表的頭指針更新為下一個(gè)可用指針"2",長(zhǎng)度減"1"更新 為N-2。 Ql的指針鏈表為1/1即Ql的頭指針和尾指針都為T(mén) ,此時(shí)Ql的 長(zhǎng)度為"1"。將隊(duì)列空閑指針'T,作為實(shí)際訪問(wèn)地址的高位地址,用Coun t er _ i 1 表示Ql的入隊(duì)順序計(jì)數(shù)器,則將入隊(duì)順序計(jì)數(shù)器Counter —il記錄的報(bào)文入 隊(duì)的循環(huán)次序"O"作為實(shí)際訪問(wèn)地址的低位地址,可以生成實(shí)際訪問(wèn)地址的, 根據(jù)實(shí)際訪問(wèn)地址可以將1號(hào)實(shí)線報(bào)文加入指定隊(duì)列Ql中。1號(hào)虛線報(bào)文加 入Q1后,Ql的入隊(duì)順序計(jì)數(shù)器的數(shù)值加"1"后更新為"1"。
圖8為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中2號(hào)虛線報(bào)文加入 指定隊(duì)列Ql的狀態(tài)圖,如圖8所示,2號(hào)虛線報(bào)文加入指定隊(duì)列Ql時(shí),將 隊(duì)列空閑指針'T,作為實(shí)際訪問(wèn)地址的高位地址,將Q1的入隊(duì)順序計(jì)數(shù)器 Counter-il的數(shù)值"1"作為實(shí)際訪問(wèn)地址的4氐位地址,生成實(shí)際訪問(wèn)地址, 2號(hào)虛線報(bào)文根據(jù)實(shí)際訪問(wèn)地址加入Q1成功后,Ql的指針鏈表還是1/1,但 是QO的長(zhǎng)度更新為"2"。只需要將QO的入隊(duì)順序計(jì)數(shù)器的數(shù)值加'T,后 更新為"2",不需要申請(qǐng)新的隊(duì)列空閑指針。隨后的3-15號(hào)虛線報(bào)文加入 Ql的方法與2號(hào)虛線報(bào)文相同。
圖9為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中16號(hào)虛線報(bào)文加入 指定隊(duì)列Ql的狀態(tài)圖,如圖9所示,16號(hào)虛線報(bào)文加入指定隊(duì)列Ql時(shí),將 隊(duì)列空閑指針'T,作為實(shí)際訪問(wèn)地址的高位地址,將Q1的入隊(duì)順序計(jì)數(shù)器 Coimter-il的數(shù)值"15"作為實(shí)際訪問(wèn)地址的低位地址,生成實(shí)際訪問(wèn)地址, 16號(hào)虛線報(bào)文根據(jù)實(shí)際訪問(wèn)地址加入Ql成功后,Ql的指針鏈表還是1/1, 但是Q1的長(zhǎng)度更新為"16",隊(duì)列空閑指針"1"對(duì)應(yīng)的塊指針的子指針已 經(jīng)被全部使用。將Q1入隊(duì)順序計(jì)數(shù)器清零,表示下一個(gè)報(bào)文加入隊(duì)列Ql時(shí) 需要申請(qǐng)新的隊(duì)列空閑指針。
圖10為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中17號(hào)虛線報(bào)文加 入指定隊(duì)列Ql的狀態(tài)圖,如圖10所示,17號(hào)虛線報(bào)文加入指定隊(duì)列Ql時(shí), 需要從隊(duì)列空閑指針鏈表中為Ql申請(qǐng)新的隊(duì)列空閑指針"2"。隊(duì)列空閑指針鏈表的頭指針更新為下一個(gè)可用指針"3",長(zhǎng)度減"1"更新為N-3。 Ql 的指針鏈表為1/2即Q0的頭指針為'T,、尾指針為"2",此時(shí)Q1的長(zhǎng)度 為"2"。將隊(duì)列空閑指針"2"作為實(shí)際訪問(wèn)地址的高位地址,將Q1的入隊(duì) 順序計(jì)數(shù)器Counter-il的數(shù)值"0"作為實(shí)際訪問(wèn)地址的低位地址,生成實(shí) 際訪問(wèn)地址,17號(hào)虛線報(bào)文根據(jù)實(shí)際訪問(wèn)地址加入Q1成功后,Ql的長(zhǎng)度更 新為17。 17號(hào)虛線報(bào)文加入Ql后,Ql入隊(duì)順序計(jì)數(shù)器的數(shù)值加"1"后更 新為"1"。此時(shí)Ql的入隊(duì)順序計(jì)數(shù)器Counter-il進(jìn)行新一輪的0-15循環(huán) 計(jì)數(shù),隊(duì)列存儲(chǔ)空間的管理設(shè)備對(duì)需要加入Q1的報(bào)文進(jìn)行新一輪入隊(duì)操作。 圖11為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中16號(hào)實(shí)線報(bào)文加 入指定隊(duì)列Q0的狀態(tài)圖,如圖11所示,假設(shè)3-15號(hào)實(shí)線報(bào)文已按照與2號(hào) 實(shí)線才艮文相同的方法加入Q 0 , 16號(hào)實(shí)線才艮文加入指定隊(duì)列Q 0時(shí),將隊(duì)列空 閑指針"0"作為高位地址,將QO的入隊(duì)順序計(jì)數(shù)器Counter-i0記錄的報(bào)文 入隊(duì)的順序"15"作為實(shí)際訪問(wèn)地址的低位地址,生成實(shí)際訪問(wèn)地址的,16 號(hào)實(shí)線報(bào)文根據(jù)實(shí)際訪問(wèn)地址成功加入QO后,Q0的指針鏈表還是0/0,但是 Q0的長(zhǎng)度更新為"16",隊(duì)列空閑指針"1"對(duì)應(yīng)的塊指針的子指針已經(jīng)被 全部使用。將Q0的入隊(duì)順序計(jì)數(shù)器清零,表示下一個(gè)報(bào)文加入隊(duì)列Q0時(shí)需 要申請(qǐng)新的隊(duì)列空閑指針。
圖12為本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第三實(shí)施例中17號(hào)實(shí)線4艮文加 入指定隊(duì)列Q0的狀態(tài)圖,如圖12所示,17號(hào)實(shí)線報(bào)文加入指定隊(duì)列Q0時(shí), 需要從隊(duì)列空閑指針鏈表中為Q0申請(qǐng)新的隊(duì)列空閑指針"3"。隊(duì)列空閑指 針鏈表的頭指針更新為下一個(gè)可用指針"4 ",長(zhǎng)度減'T'更新為N-4。 Q0 的指針鏈表為0/3即Q0的頭指針為"0"、尾指針為"3",此時(shí)Q0的長(zhǎng)度 為"2"。將隊(duì)列空閑指針"3"作為高位地址,將Q0的入隊(duì)順序計(jì)數(shù)器 Counter —i0的數(shù)值"0"作為實(shí)際訪問(wèn)地址的j氐位地址,生成實(shí)際訪問(wèn)地址, 17號(hào)實(shí)線報(bào)文根據(jù)實(shí)際訪問(wèn)地址加入QO成功后,Q0的長(zhǎng)度更新為"17"。 17號(hào)實(shí)線報(bào)文加入QO后,Q0的入隊(duì)順序計(jì)數(shù)器的數(shù)值加'T,后更新為'T,。 此時(shí)Q0的入隊(duì)順序計(jì)數(shù)器ounter-iO進(jìn)行新一輪的0-15計(jì)數(shù),隊(duì)列存儲(chǔ)空 間的管理設(shè)備對(duì)需要加入Q0的報(bào)文進(jìn)行新一輪的入隊(duì)操作。
將上述1-17號(hào)實(shí)線報(bào)文和1-17號(hào)虛線報(bào)文分別加入指定隊(duì)列Q0和Ql 之后,隊(duì)列的報(bào)文信息的存儲(chǔ)地址,入隊(duì)時(shí)可以根據(jù)(當(dāng)前報(bào)文的塊指針,coimter-U訪問(wèn),出隊(duì)時(shí)可以根據(jù){當(dāng)前報(bào)文的塊指針,counter_o)訪問(wèn)。
出隊(duì)時(shí),可以從隊(duì)列的鏈表狀態(tài)信息表讀取隊(duì)列鏈表,根據(jù)出隊(duì)順序計(jì) 數(shù)器Counter-o中記錄的才艮文出隊(duì)的順序控制出隊(duì)操作,當(dāng)Counter—o計(jì)數(shù) 到"15"后,如果當(dāng)前隊(duì)列的報(bào)文又出隊(duì),那么可以釋放隊(duì)列鏈表的首指針, 將Counter—o清零,并更新隊(duì)列空閑指針鏈表。但是Counter—o為"1"到 "15"時(shí),則僅進(jìn)行出隊(duì)操作,并不更新隊(duì)列空閑指針鏈表。
以2M個(gè)隊(duì)列指針為例,釆用之前的一個(gè)指針控制一個(gè)^^艮文的入隊(duì)出隊(duì) 時(shí),需要2Mx21bit的RAM;而本發(fā)明實(shí)施例中采用一個(gè)指4f生成16個(gè)實(shí)際 訪問(wèn)地址,可以對(duì)指定隊(duì)列的16個(gè)報(bào)文進(jìn)行入隊(duì)或者出隊(duì)的操作,只需要 認(rèn)xl7bit的RAM,其中128K=2M/16。因此隊(duì)列的鏈表狀態(tài)信息表中,每 個(gè)隊(duì)列的頭指針、尾指針記錄存儲(chǔ)的指針為17bit。此外本發(fā)明實(shí)施例中申 請(qǐng)一個(gè)隊(duì)列空閑指針,可以得到16個(gè)實(shí)際訪問(wèn)地址,那么對(duì)隊(duì)列空閑指針鏈 表的訪問(wèn)次數(shù)降低為原來(lái)的1/16,對(duì)RAM的帶寬需求也降^f氐為原來(lái)的1/16, 從而可以明顯P爭(zhēng)低對(duì)RAM的帶寬需求。綜上所述,本發(fā)明實(shí)施例的隊(duì)列存儲(chǔ) 空間的管理方法降低了對(duì)隊(duì)列空閑指針鏈表和隊(duì)列鏈表的訪問(wèn)次數(shù),減少管 理RAM所需的帶寬,可以在RAM固定的情況下大幅提高隊(duì)列管理能力,成本
低,開(kāi)發(fā)簡(jiǎn)單,應(yīng)用靈活。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟 可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀 取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述 的存儲(chǔ)介質(zhì)包括R0M、 RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
圖13為本發(fā)明隊(duì)列存儲(chǔ)空間的管理設(shè)備第一實(shí)施例的結(jié)構(gòu)示意圖,如圖 13所示,該隊(duì)列存儲(chǔ)空間的管理設(shè)備包括設(shè)置模塊51、判斷模塊52、第 一入隊(duì)模塊53和存儲(chǔ)模塊55。其中設(shè)置模塊51用于將隊(duì)列空閑指針鏈表中 的隊(duì)列空閑指針設(shè)置為塊指針,每個(gè)所述塊指針包括第一數(shù)量個(gè)子指針。判 斷模塊52用于在報(bào)文需要加入指定隊(duì)列時(shí),判斷所述指定隊(duì)列已申請(qǐng)的塊指 針內(nèi)的第一數(shù)量個(gè)子指針是否用完或判斷所述指定隊(duì)列的長(zhǎng)度是否為空。第 一入隊(duì)模塊53用于在所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針已 用完或所述指定隊(duì)列的長(zhǎng)度為空時(shí),從隊(duì)列空閑指針鏈表中為所述指定隊(duì)列 申請(qǐng)一個(gè)隊(duì)列空閑指針作為新的塊指針,根據(jù)所述新的塊指針將所述報(bào)文加入所述指定隊(duì)列。存儲(chǔ)模塊55用于存儲(chǔ)所述隊(duì)列空閑指針鏈表。
具體地,隊(duì)列本身的入隊(duì)/出隊(duì)操作是按照先進(jìn)先出的順序進(jìn)行處理的。 入隊(duì)操作時(shí),設(shè)置模塊51將存儲(chǔ)模塊55中的隊(duì)列空閑指針鏈表中的隊(duì)列空 閑指針設(shè)置為塊指針,每個(gè)所述塊指針包括第一數(shù)量個(gè)子指針,其中存儲(chǔ)模 塊可以為RAM。當(dāng)有報(bào)文需要加入指定隊(duì)列時(shí),判斷模塊52判斷該指定隊(duì)列 申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針是否用完或所述指定隊(duì)列的長(zhǎng)度為空, 如果所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針已用完或所述指定隊(duì) 列的長(zhǎng)度為空,第一入隊(duì)模塊53可以從隊(duì)列空閑指針鏈表中為所述指定隊(duì)列 申請(qǐng)一個(gè)隊(duì)列空閑指針作為新的塊指針,根據(jù)所述新的塊指針將所述報(bào)文加 入所述指定隊(duì)列。具體可以參照本發(fā)明隊(duì)列存儲(chǔ)空間的管理方法第一、第二、 第三實(shí)施例中的相關(guān)描述。
本實(shí)施例中,第一入隊(duì)^t塊申請(qǐng)一個(gè)隊(duì)列空閑指針后,可以采用塊指針 內(nèi)的第 一數(shù)量個(gè)子指針進(jìn)行隊(duì)列管理,其中第 一數(shù)量可以根據(jù)隊(duì)列管理能力 的需求和RAM的能力靈活設(shè)計(jì),根據(jù)塊指針內(nèi)的子指針對(duì)第一數(shù)量個(gè)需要加 入指定隊(duì)列的報(bào)文進(jìn)行入隊(duì)操作,降低了對(duì)隊(duì)列空閑指針鏈表和隊(duì)列鏈表的 訪問(wèn)次數(shù),減少管理RAM所需的帶寬,可以在R'AM固定的情況下大幅提高隊(duì) 列管理能力,成本低、開(kāi)發(fā)簡(jiǎn)單、應(yīng)用靈活。
圖14為本發(fā)明隊(duì)列存儲(chǔ)空間的管理設(shè)備第二實(shí)施例的結(jié)構(gòu)示意圖,如圖 14所示,隊(duì)列管理包括入隊(duì)操作和出隊(duì)操作,在本發(fā)明隊(duì)列存儲(chǔ)空間的管理 設(shè)備第 一 實(shí)施例的基礎(chǔ)上,該隊(duì)列存儲(chǔ)空間的管理設(shè)備在對(duì)指定隊(duì)列進(jìn)行入 隊(duì)操作時(shí)可以包括入隊(duì)順序計(jì)數(shù)器61,用于記錄當(dāng)前加入所述指定隊(duì)列的 報(bào)文的循環(huán)次序。
進(jìn)一步地,判斷模塊52包括入隊(duì)判斷子喪塊521,用于判斷所述子指 針是否指示達(dá)到所述第一數(shù)量,如果是則所述指定隊(duì)列申請(qǐng)的所述塊指針內(nèi) 的第一數(shù)量個(gè)子指針用完。
如果所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針已用完,則第一 入隊(duì)模塊53可以包括申請(qǐng)子模塊531、第一子指針子才莫塊532、第一入隊(duì) 子模塊533和第一更新子模塊534。其中申請(qǐng)子模塊531用于從隊(duì)列空閑指 針鏈表中為所述指定隊(duì)列申請(qǐng)一個(gè)隊(duì)列空閑指針作為塊指針。第一子指針子 模塊532用于將所述新的塊指針作為實(shí)際訪問(wèn)地址的高位地址,并將所述新的塊指針的子指針作為所述實(shí)際訪問(wèn)地址的低位地址,得到所述實(shí)際訪問(wèn)地 址,所述子指針為入隊(duì)順序計(jì)數(shù)器的數(shù)值,所述入隊(duì)順序計(jì)數(shù)器的初始值為
零。第一入隊(duì)子模塊533用于將所述報(bào)文加入所述指定隊(duì)列中所述實(shí)際訪問(wèn) 地址后,將所述入隊(duì)順序計(jì)數(shù)器的數(shù)值加1,將所述指定隊(duì)列的長(zhǎng)度加1。第 一更新子模塊534用于在將所述報(bào)文加入所述指定隊(duì)列之后,將所述指定隊(duì) 列的隊(duì)列鏈表當(dāng)前的尾指針更新為所述新的塊指針,并將所述隊(duì)列空閑指針 鏈表的頭指針更新為下一個(gè)可用的隊(duì)列空閑指針。
進(jìn)一步地,該隊(duì)列存儲(chǔ)空間的管理設(shè)備還可以包括第二入隊(duì)模塊54,用 于當(dāng)所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第 一數(shù)量個(gè)子指針未用完時(shí),根據(jù)已有 的塊指針將所述報(bào)文加入所述指定隊(duì)列。在所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的 第一數(shù)量個(gè)子指針未用完時(shí),第二入隊(duì)模塊54包括第二子指針子模塊541 和第二入隊(duì)子模塊542。其中第二子指針子模塊541將所述已有的塊指針作 為實(shí)際訪問(wèn)地址的高位地址,并將所述指定隊(duì)列奸應(yīng)的已有的塊指針的子指 針作為所述賣(mài)際訪問(wèn)地址的低位地址,得到所述實(shí)際訪問(wèn)地址,所述子指針 為入隊(duì)順序計(jì)數(shù)器的數(shù)值,所述入隊(duì)順序計(jì)數(shù)器的初始值為零。第二入隊(duì)子 模塊542用于將所述才艮文加入所述指定隊(duì)列中所述實(shí)際訪問(wèn)地址后,將所述 入隊(duì)順序計(jì)數(shù)器的數(shù)值加1,將所述指定隊(duì)列的長(zhǎng)度加1。
具體地,設(shè)置模塊51將存儲(chǔ)模塊55中的隊(duì)列空閑指針鏈表中的隊(duì)列空 閑指針設(shè)置為塊指針,每個(gè)所述塊指針包括第一數(shù)量個(gè)子指針,其中存儲(chǔ)模 塊可以為RAM。當(dāng)有報(bào)文需要加入指定隊(duì)列時(shí),判斷模塊52判斷該指定隊(duì)列 申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針是否用完iU旨定隊(duì)列是否為空,如果所 述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針已用完或指定隊(duì)列是否為 空,申請(qǐng)子模塊531從隊(duì)列空閑指針鏈表中為所述報(bào)文申請(qǐng)一個(gè)隊(duì)列空閑指 針作為新的塊指針,第一子指針子模塊532將所述新的塊指針作為實(shí)際訪問(wèn) 地址的高位地址,并將所述指定隊(duì)列的入隊(duì)順序計(jì)數(shù)器的數(shù)值作為所述實(shí)際 訪問(wèn)地址的低位地址,得到所述實(shí)際訪問(wèn)地址,所述入隊(duì)順序計(jì)數(shù)器的初始 值為零。然后第一入隊(duì)子模塊533將所述報(bào)文加入所述指定隊(duì)列的實(shí)際訪問(wèn) 地址后,將入隊(duì)順序計(jì)數(shù)器的數(shù)值加1,并將指定隊(duì)列的長(zhǎng)度加l。此時(shí)。第 一更新子模塊534可以將所述指定隊(duì)列的隊(duì)列鏈表當(dāng)前的尾指針更新為所述 新的塊指針,并將所述隊(duì)列空閑指針鏈表的頭指針更新為下一個(gè)可用的隊(duì)列
22空閑指針。如果指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針未用完,第二
入隊(duì)模塊54根據(jù)已有的塊指針將所述報(bào)文加入所述指定隊(duì)列。具體可以參照 本發(fā)明第一、第二、第三實(shí)施例中入隊(duì)操作的相關(guān)描述。
該隊(duì)列存儲(chǔ)空間的管理設(shè)備在對(duì)指定隊(duì)列進(jìn)行出隊(duì)操作時(shí),還可以包括 出隊(duì)模塊63,用于若所述指定隊(duì)列中有報(bào)文需要出隊(duì),判斷所述報(bào)文對(duì)應(yīng)的 塊指針內(nèi)的所有子指針是否用完或所述報(bào)文出隊(duì)后該指定隊(duì)列是否為空,如 果是,則將所述報(bào)文對(duì)應(yīng)的塊指針釋放,并將釋放出的塊指針加入所述隊(duì)列 空閑指針鏈表,否則,不釋放所述報(bào)文對(duì)應(yīng)的塊指針。出隊(duì)時(shí),判斷模塊52 可以包括出隊(duì)判斷子模塊523,用于判斷所述報(bào)文對(duì)應(yīng)的塊指針內(nèi)的子指 針是否指示達(dá)到所述第一數(shù)量,如果是則所述報(bào)文對(duì)應(yīng)的所述塊指針內(nèi)的第 一數(shù)量個(gè)子指針用完。
進(jìn)一步地,該隊(duì)列存儲(chǔ)空間的管理設(shè)備還包括出隊(duì)順序計(jì)數(shù)器65,用 于記錄當(dāng)前從所述指定隊(duì)列出隊(duì)的報(bào)文的循環(huán)次序。
再進(jìn)一步地,出EM莫塊63可以包括讀取子模塊631、第一出隊(duì)子模塊 632、第二出隊(duì)子模塊633和第二更新子模塊634。其中,讀取子模塊631用 于根據(jù)所述指定隊(duì)列的鏈表狀態(tài)信息表讀取所述指定隊(duì)列的隊(duì)列鏈表,將所 述隊(duì)列鏈表的頭指針作為實(shí)際訪問(wèn)地址的高位地址,并將所述報(bào)文對(duì)應(yīng)的塊 指針的子指針作為所述實(shí)際訪問(wèn)地址的低位地址,得到所述實(shí)際訪問(wèn)地址, 所述子指針為出隊(duì)順序計(jì)數(shù)器的數(shù)值,所述出隊(duì)順序計(jì)數(shù)器的初始值為零。 第一出隊(duì)子i^莫塊632用于當(dāng)所述^JL對(duì)應(yīng)的塊指針內(nèi)的所有子指針未用完 時(shí),所述指定隊(duì)列中所述實(shí)際訪問(wèn)地址中的報(bào)文出隊(duì)后,將所述出隊(duì)順序計(jì) 數(shù)器的數(shù)值加1,將所述指定隊(duì)列的長(zhǎng)度減1。第二出隊(duì)子才莫塊633用于當(dāng)所 述^^文對(duì)應(yīng)的塊指針內(nèi)的所有子指針用完時(shí),所述指定隊(duì)列中所述實(shí)際訪問(wèn) 地址中的報(bào)文出隊(duì)后,將所述指定隊(duì)列的長(zhǎng)度減1,將所述實(shí)際訪問(wèn)地址中 的報(bào)文對(duì)應(yīng)的塊指針釋放,并將釋放出的塊指針加入所述隊(duì)列空閑指針鏈表。 第二更新子模塊634用于在將所述塊指針加入所述隊(duì)列空閑指針鏈表之后, 將所述指定隊(duì)列的隊(duì)列鏈表當(dāng)前的頭指針更新為所述隊(duì)列鏈表的下一指針, 將所述隊(duì)列空閑指針鏈表的尾指針或頭指針更新為釋》文出的塊指針。
存儲(chǔ)模塊中除了存儲(chǔ)隊(duì)列空閑指針鏈表之外,還可以存儲(chǔ)指定隊(duì)列的鏈 表狀態(tài)信息表和隊(duì)列鏈表,以及入隊(duì)順序計(jì)數(shù)器和出隊(duì)順序計(jì)數(shù)器。具體地,出隊(duì)操作時(shí),讀取子模塊631根據(jù)指定隊(duì)列的鏈表狀態(tài)信息表 讀取指定隊(duì)列的隊(duì)列鏈表后,將隊(duì)列鏈表的頭指針作為實(shí)際訪問(wèn)地址高位地 址,并將子指針作為實(shí)際訪問(wèn)地址的低位地址,得到實(shí)際訪問(wèn)地址,其中子 指針為出隊(duì)順序計(jì)數(shù)器65的數(shù)值。當(dāng)所述報(bào)文對(duì)應(yīng)的塊指針內(nèi)的所有子指針 未用完時(shí),第一出隊(duì)子模塊632將指定隊(duì)列中實(shí)際訪問(wèn)地址中的報(bào)文出隊(duì)后, 將所述出隊(duì)順序計(jì)數(shù)器的數(shù)值加1,將所述指定隊(duì)列的長(zhǎng)度減1,此時(shí)并不釋 放報(bào)文對(duì)應(yīng)的塊指針。當(dāng)所述報(bào)文對(duì)應(yīng)的塊指針內(nèi)的所有子指針用完時(shí),第 二出隊(duì)子模塊633將所述指定隊(duì)列中所述實(shí)際訪問(wèn)地址中的報(bào)文出隊(duì)后,將 所述指定隊(duì)列的長(zhǎng)度減1,將所述報(bào)文對(duì)應(yīng)的塊指針釋放,并將所述塊指針 加入所述隊(duì)列空閑指針鏈表,然后,第二更新子模塊634將指定隊(duì)列的隊(duì)列 鏈表當(dāng)前的頭指針更新為所述隊(duì)列鏈表的下一指針,將隊(duì)列空閑指針鏈表的 尾指針或頭指針更新為釋放出的塊指針。
本實(shí)施例可以根據(jù)塊指針內(nèi)的子指針對(duì)指定隊(duì)列中第一數(shù)量個(gè)報(bào)文進(jìn)行 連續(xù)的入隊(duì)或出隊(duì)操作,子指針的第 一數(shù)量可以根據(jù)隊(duì)列管理能力的需求和 RAM的能力具體設(shè)計(jì),降低了對(duì)隊(duì)列空閑指針鏈表和隊(duì)列鏈表的訪問(wèn)次數(shù), 減少管理RAM所需的帶寬,可以在RAM固定的情況下大幅提高隊(duì)列管理能力, 成本低,開(kāi)發(fā)簡(jiǎn)單,應(yīng)用靈活。
最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其 限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù) 人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或 者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技 術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
2權(quán)利要求
1、一種隊(duì)列存儲(chǔ)空間的管理方法,其特征在于,包括將隊(duì)列空閑指針鏈表中的隊(duì)列空閑指針設(shè)置為塊指針,每個(gè)所述塊指針包括第一數(shù)量個(gè)子指針;若報(bào)文需要加入指定隊(duì)列,判斷所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針是否用完或判斷所述指定隊(duì)列的長(zhǎng)度是否為空;如果所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針已用完或所述指定隊(duì)列的長(zhǎng)度為空,從隊(duì)列空閑指針鏈表中為所述指定隊(duì)列申請(qǐng)一個(gè)隊(duì)列空閑指針作為新的塊指針,根據(jù)所述新的塊指針將所述報(bào)文加入所述指定隊(duì)列。
2、 根據(jù)權(quán)利要求l所述的隊(duì)列存儲(chǔ)空間的管理方法,其特征在于,判斷所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針是否用完,包括判斷所述子指針是否指示達(dá)到所述第一數(shù)量,如果是則所述指定隊(duì)列申請(qǐng)的所述塊指針內(nèi)的第一數(shù)量個(gè)子指針用完。
3、 根據(jù)權(quán)利要求1或2所述的隊(duì)列存儲(chǔ)空間的管理方法,其特征在于,從隊(duì)列空閑指針鏈表中為所述指定隊(duì)列申請(qǐng)一個(gè)隊(duì)列空閑指針作為新的塊指針,根據(jù)所述新的塊指針將所述報(bào)文加入所述指定隊(duì)列,包括從隊(duì)列空閑指針鏈表中為所述指定隊(duì)列申請(qǐng)一個(gè)隊(duì)列空閑指針作為新的塊指針;將所述新的塊指針作為實(shí)際訪問(wèn)地址的高位地址,并將所述新的塊指針的子指針作為所述實(shí)際訪問(wèn)地址的〗氐位地址,得到所述實(shí)際訪問(wèn)地址,所述子指針為入隊(duì)順序計(jì)數(shù)器的數(shù)值,所述入隊(duì)順序計(jì)數(shù)器的初始值為零;將所述才艮文加入所述指定隊(duì)列中所述實(shí)際訪問(wèn)地址后,將所述入隊(duì)順序計(jì)數(shù)器的數(shù)值加l,將所述指定隊(duì)列的長(zhǎng)度加1;將所述指定隊(duì)列的隊(duì)列鏈表當(dāng)前的尾指針更新為所述新的塊指針,并將所述隊(duì)列空閑指針鏈表的頭指針更新為下一個(gè)可用的隊(duì)列空閑指針。
4、 根據(jù)權(quán)利要求1或2所述的隊(duì)列存儲(chǔ)空間的管理方法,其特征在于,還包括當(dāng)所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針未用完時(shí),根據(jù)已有的塊指針將所述報(bào)文加入所述指定隊(duì)列,具體包括將所述已有的塊指針作為實(shí)際訪問(wèn)地址的高位地址,并將所述指定隊(duì)列對(duì)應(yīng)的已有的塊指針的子指針作為所述實(shí)際訪問(wèn)地址的低位地址,得到所述實(shí)際訪問(wèn)地址,所述子指針為入隊(duì)順序計(jì)數(shù)器的數(shù)值,所述入隊(duì)順序計(jì)數(shù)器的初始^f直為零;將所述報(bào)文加入所述指定隊(duì)列中所述實(shí)際訪問(wèn)地址后,將所述入隊(duì)順序計(jì)數(shù)器的數(shù)值加l,將所述指定隊(duì)列的長(zhǎng)度加1。
5、 根據(jù)權(quán)利要求1或2所述的隊(duì)列存儲(chǔ)空間的管理方法,其特征在于,還包括若所述指定隊(duì)列中有報(bào)文需要出隊(duì),判斷所述報(bào)文對(duì)應(yīng)的塊指針內(nèi)的所有子指針是否用完或所述報(bào)文出隊(duì)后該指定隊(duì)列是否為空,如果是,則將所述報(bào)文對(duì)應(yīng)的塊指針釋放,并將釋放出的塊指針加入所述隊(duì)列空閑指針鏈表,否則,不釋放所述報(bào)文對(duì)應(yīng)的塊指針。
6、 根據(jù)權(quán)利要求5所述的隊(duì)列存儲(chǔ)空間的管理方法,其特征在于,所述判斷所述報(bào)文對(duì)應(yīng)的塊指針內(nèi)的所有子指針是否用完,包括判斷所述才艮文對(duì)應(yīng)的塊指針內(nèi)的子指針是否指示達(dá)到所述第一數(shù)量,如果是則所述報(bào)文對(duì)應(yīng)的塊指針內(nèi)的第 一數(shù)量個(gè)子指針用完。
7、 根據(jù)權(quán)利要求5所述的隊(duì)列存儲(chǔ)空間的管理方法,其特征在于,所述將所述報(bào)文對(duì)應(yīng)的塊指針釋放,并將釋放出的塊指針加入所述隊(duì)列空閑指針鏈表,包括根據(jù)所述指定隊(duì)列的鏈表狀態(tài)信息表讀取所述指定隊(duì)列的隊(duì)列鏈表,將所述隊(duì)列鏈表的頭指針作為實(shí)際訪問(wèn)地址的高位地址,并將所述報(bào)文對(duì)應(yīng)的塊指針的子指針作為所述實(shí)際訪問(wèn)地址的低位地址,得到所述實(shí)際訪問(wèn)地址,所述子指針為出隊(duì)順序計(jì)數(shù)器的數(shù)值,所述出隊(duì)順序計(jì)數(shù)器的初始值為零;所述指定隊(duì)列中所述實(shí)際訪問(wèn)地址中的報(bào)文出隊(duì)后,將所述指定隊(duì)列的長(zhǎng)度減1,將所述實(shí)際訪問(wèn)地址中的報(bào)文對(duì)應(yīng)的塊指針釋放,并將釋放出的塊指針加入所述隊(duì)列空閑指針鏈表;將所述指定隊(duì)列的隊(duì)列鏈表當(dāng)前的頭指針更新為所述隊(duì)列鏈表的下一指針,將所述隊(duì)列空閑指針鏈表的尾指針或頭指針更新為釋放出的塊指針。
8、 根據(jù)權(quán)利要求5所述的隊(duì)列存儲(chǔ)空間的管理方法,其特征在于,所述不釋放所述報(bào)文對(duì)應(yīng)的塊指針,包括根據(jù)所述指定隊(duì)列的鏈表狀態(tài)信息表讀取所述指定隊(duì)列的隊(duì)列鏈表,將所述隊(duì)列鏈表的頭指針作為實(shí)際訪問(wèn)地址的高位地址,并將所述報(bào)文對(duì)應(yīng)的塊指針的子指針作為所述實(shí)際訪問(wèn)地址的低位地址,得到所述實(shí)際訪問(wèn)地址,所述子指針為出隊(duì)順序計(jì)數(shù)器的數(shù)值,所述出隊(duì)順序計(jì)數(shù)器的初始值為零;所述指定隊(duì)列中所述實(shí)際訪問(wèn)地址中的報(bào)文出隊(duì)后,將所述出隊(duì)順序計(jì)數(shù)器的數(shù)值加1,將所述指定隊(duì)列的長(zhǎng)度減1,不釋放所述報(bào)文對(duì)應(yīng)的塊指針。
9、 一種隊(duì)列存儲(chǔ)空間的管理設(shè)備,其特征在于,包括設(shè)置模塊,用于將隊(duì)列空閑指針鏈表中的隊(duì)列空閑指針設(shè)置為塊指針,每個(gè)所述塊指針包括第一數(shù)量個(gè)子指針;判斷模塊,用于在報(bào)文需要加入指定隊(duì)列時(shí),判斷所述指定隊(duì)列已申請(qǐng)的塊指針內(nèi)的固定數(shù)量的子指針是否用完或判斷所述指定隊(duì)列的長(zhǎng)度是否為土 ,第一入隊(duì)模塊,用于在所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的固定數(shù)量的子指針已用完或所述指定隊(duì)列的長(zhǎng)度為空時(shí),從隊(duì)列空閑指針鏈表中為所述指定隊(duì)列申請(qǐng)一個(gè)隊(duì)列空閑指針作為新的塊指針,才艮據(jù)所述新的塊指針將所述報(bào)文加入所述指定隊(duì)列;存儲(chǔ)模塊,用于存儲(chǔ)所述隊(duì)列空閑指針鏈表。
10、 根據(jù)權(quán)利要求9所述的隊(duì)列存儲(chǔ)空間的管理設(shè)備,其特征在于,所述判斷模塊包括入隊(duì)判斷子模塊,用于判斷所述子指針是否指示達(dá)到所述第一數(shù)量,如果是則所述指定隊(duì)列申請(qǐng)的所述塊指針內(nèi)的第一數(shù)量個(gè)子指針用完。
11、 根據(jù)權(quán)利要求9或10所述的隊(duì)列存儲(chǔ)空間的管理設(shè)備,其特征在于,還包括入隊(duì)順序計(jì)數(shù)器,用于記錄當(dāng)前加入所述指定隊(duì)列的報(bào)文的循環(huán)次序。
12、 根據(jù)權(quán)利要求ll所述的隊(duì)列存儲(chǔ)空間的管理設(shè)備,其特征在于,所述第一入隊(duì)模塊包括申請(qǐng)子模塊,用于從隊(duì)列空閑指針鏈表中為所述指定隊(duì)列申請(qǐng)一個(gè)隊(duì)列空閑指針作為新的塊指針;第 一子指針子模塊,用于將所述新的塊指針作為實(shí)際訪問(wèn)地址的高位地址,并將所述新的塊指針的子指針作為所述實(shí)際訪問(wèn)地址的低位地址,得到所述實(shí)際訪問(wèn)地址,所述子指針為入隊(duì)順序計(jì)數(shù)器的數(shù)值,所述入隊(duì)順序計(jì)數(shù)器的初始值為零;第一入隊(duì)子模塊,用于將所述報(bào)文加入所述指定隊(duì)列中所述實(shí)際訪問(wèn)地 址后,將所述入隊(duì)順序計(jì)數(shù)器的數(shù)值加1,將所述指定隊(duì)列的長(zhǎng)度加1;第一更新子模塊,用于在將所述報(bào)文加入所述指定隊(duì)列之后,將所述指 定隊(duì)列的隊(duì)列鏈表當(dāng)前的尾指針更新為所述新的塊指針,并將所述隊(duì)列空閑 指針鏈表的頭指針更新為下一個(gè)可用的隊(duì)列空閑指針。
13、 根據(jù)權(quán)利要求11所述的隊(duì)列存儲(chǔ)空間的管理設(shè)備,其特征在于,還 包括第二入隊(duì)模塊,用于當(dāng)所述指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指 針未用完時(shí),才艮據(jù)已有的塊指針將所述^^文加入所述指定隊(duì)列。
14、 根椐權(quán)利要求13所述的隊(duì)列存儲(chǔ)空間的管理設(shè)備,其特征在于,所 述第二入隊(duì)模塊包括第二子指針子模塊,用于將所述已有的塊指針作為實(shí)際訪問(wèn)地址的高位 地址,并將所述指定隊(duì)列對(duì)應(yīng)的已有的塊指針的子指針作為所述實(shí)際訪問(wèn)地 址的低位地址,得到所述實(shí)際訪問(wèn)地址,所述子指針為入隊(duì)順序計(jì)數(shù)器的數(shù) 值,所述入隊(duì)順序計(jì)數(shù)器的初始值為零;第二入隊(duì)子模塊,用于將所述報(bào)文加入所述指定隊(duì)列中所述實(shí)際訪問(wèn)地 址后,將所述入隊(duì)順序計(jì)數(shù)器的數(shù)值加1 ,將所述指定隊(duì)列的長(zhǎng)度加1。
15、 根據(jù)權(quán)利要求9或10所述的隊(duì)列存儲(chǔ)空間的管理設(shè)備,其特征在于, 還包括出隊(duì)模塊,用于若所述指定隊(duì)列中有報(bào)文需要出隊(duì),判斷所述報(bào)文對(duì)應(yīng) 的塊指針內(nèi)的所有子指針是否用完或所述"^艮文出隊(duì)后該指定隊(duì)列是否為空, 如果是,則將所述報(bào)文對(duì)應(yīng)的塊指針釋放,并將釋放出的塊指針加入所述隊(duì) 列空閑指針鏈表,否則,不釋放所述報(bào)文對(duì)應(yīng)的塊指針。
16、 根據(jù)權(quán)利要求15所述的隊(duì)列存儲(chǔ)空間的管理設(shè)備,其特征在于,所述判斷模塊包括出隊(duì)判斷子模塊,用于判斷所述報(bào)文對(duì)應(yīng)的塊指針內(nèi)的子指針是否指示 達(dá)到所述第一數(shù)量,如果是則所述報(bào)文對(duì)應(yīng)的所述塊指針內(nèi)的第一數(shù)量個(gè)子 指針用完。
17、 根據(jù)權(quán)利要求15所述的隊(duì)列存儲(chǔ)空間的管理設(shè)備,其特征在于,還包括出隊(duì)順序計(jì)數(shù)器,用于記錄當(dāng)前從所述指定隊(duì)列出隊(duì)的報(bào)文的循環(huán)次序。
18、根據(jù)權(quán)利要求15所述的隊(duì)列存儲(chǔ)空間的管理設(shè)備,其特征在于,所 述出隊(duì)模塊包括以下模塊的一個(gè)或者多個(gè)讀取子模塊,用于根據(jù)所述指定隊(duì)列的鏈表狀態(tài)信息表讀取所述指定隊(duì) 列的隊(duì)列鏈表,將所述隊(duì)列鏈表的頭指針作為實(shí)際訪問(wèn)地址的高位地址,并 將所述4艮文對(duì)應(yīng)的塊指針的子指針作為所述實(shí)際訪問(wèn)地址的低位地址,得到 所述實(shí)際訪問(wèn)地址,所述子指針為出隊(duì)順序計(jì)數(shù)器的數(shù)值,所述出隊(duì)順序計(jì) 數(shù)器的初始值為零;第 一 出隊(duì)子才莫塊,用于當(dāng)所述報(bào)文對(duì)應(yīng)的塊指針內(nèi)的所有子指針未用完 時(shí),所述指定隊(duì)列中所述實(shí)際訪問(wèn)地址中的報(bào)文出隊(duì)后,將所述出隊(duì)順序計(jì) 數(shù)器的數(shù)值加l,將所述指定隊(duì)列的長(zhǎng)度減l;第二出隊(duì)子才莫塊,用于當(dāng)所述報(bào)文對(duì)應(yīng)的塊指針內(nèi)的所有子指針用完或 所述報(bào)文出隊(duì)后該指定隊(duì)列為空時(shí),所述指定隊(duì)列中所述實(shí)際訪問(wèn)地址中的 報(bào)文出隊(duì)后,將所述指定隊(duì)列的長(zhǎng)度減1,將所述實(shí)際訪問(wèn)地址中的報(bào)文對(duì) 應(yīng)的塊指針釋放,并將釋放出的塊指針加入所述隊(duì)列空閑指針鏈表;第二更新子模塊,用于在將所述塊指針加入所述隊(duì)列空閑指針鏈表之后, 將所述指定隊(duì)列的隊(duì)列鏈表當(dāng)前的頭指針更新為所述隊(duì)列鏈表的下一指針, 將所述隊(duì)列空閑指針鏈表的尾指針或頭指針更新為釋放出的塊指針。
全文摘要
本發(fā)明實(shí)施例涉及一種隊(duì)列存儲(chǔ)空間的管理方法和設(shè)備,該隊(duì)列存儲(chǔ)空間的管理方法包括將隊(duì)列空閑指針鏈表中的隊(duì)列空閑指針設(shè)置為塊指針,每個(gè)塊指針包括第一數(shù)量個(gè)子指針;若報(bào)文需要加入指定隊(duì)列,判斷指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針是否用完或判斷指定隊(duì)列的長(zhǎng)度是否為空;如果指定隊(duì)列申請(qǐng)的塊指針內(nèi)的第一數(shù)量個(gè)子指針已用完或指定隊(duì)列的長(zhǎng)度為空,從隊(duì)列空閑指針鏈表中為指定隊(duì)列申請(qǐng)一個(gè)隊(duì)列空閑指針作為新的塊指針,根據(jù)新的塊指針將報(bào)文加入指定隊(duì)列。本發(fā)明實(shí)施例采用塊指針管理隊(duì)列存儲(chǔ)空間,降低訪問(wèn)隊(duì)列空閑指針鏈表和隊(duì)列鏈表的次數(shù),減少管理RAM所需帶寬,在RAM固定的情況下提高隊(duì)列管理能力,成本低。
文檔編號(hào)G06F12/06GK101605100SQ20091015198
公開(kāi)日2009年12月16日 申請(qǐng)日期2009年7月15日 優(yōu)先權(quán)日2009年7月15日
發(fā)明者伊學(xué)文, 程貴鋒, 范嘉旗, 陳武茂 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
万州区| 南康市| 永兴县| 彭水| 湾仔区| 五大连池市| 仙桃市| 台安县| 黄平县| 高台县| 鄄城县| 威信县| 鸡东县| 西峡县| 苏州市| 桑日县| 茌平县| 揭阳市| 凤台县| 芦溪县| 余干县| 延庆县| 广丰县| 福贡县| 泸水县| 曲沃县| 沭阳县| 资溪县| 噶尔县| 呼玛县| 五台县| 舞钢市| 西林县| 聂拉木县| 清徐县| 朝阳县| 甘南县| 乌拉特后旗| 三原县| 睢宁县| 桃园县|