專利名稱:動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)管理技術(shù),尤其涉及一種動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法。
背景技術(shù):
在芯片設(shè)計(jì)領(lǐng)域,芯片常需要緩存大量的數(shù)據(jù),這些數(shù)據(jù)一般緩存在芯片內(nèi)部或者外掛的存儲(chǔ)器中,特別是在通信芯片的設(shè)計(jì)中,一個(gè)芯片常常需要處理多個(gè)業(yè)務(wù)通道,因此芯片的存儲(chǔ)空間必須同時(shí)滿足多個(gè)業(yè)務(wù)通道的存儲(chǔ)需求,而不同業(yè)務(wù)通道的流量特性以及它們對(duì)存儲(chǔ)容量的要求都有很大的不同,因此,如何高效,靈活的分配存儲(chǔ)器中的存儲(chǔ)空間進(jìn)行多通道數(shù)據(jù)的存儲(chǔ)成為了進(jìn)行芯片設(shè)計(jì)過程中需要考慮的主要問題之一。
如圖1所示,芯片對(duì)存儲(chǔ)器的訪問主要涉及存儲(chǔ)器讀寫接口模塊和存儲(chǔ)器訪問地址管理模塊兩部分。其中,所述存儲(chǔ)器訪問地址管理模塊用于完成對(duì)存儲(chǔ)器訪問地址的管理和調(diào)度,在存儲(chǔ)器的訪問中起著核心控制的作用,對(duì)存儲(chǔ)空間的分配和調(diào)度的效果好壞就是由該模塊的實(shí)現(xiàn)方式?jīng)Q定。
下面分別針對(duì)現(xiàn)有的兩種存儲(chǔ)器訪問地址管理模塊實(shí)現(xiàn)方式進(jìn)行說明。
第一種存儲(chǔ)器訪問地址管理模塊的實(shí)現(xiàn)方式為根據(jù)業(yè)務(wù)通道數(shù)據(jù)緩存空間需求,將RAM(隨機(jī)存儲(chǔ)器)空間進(jìn)行劃分,為每個(gè)業(yè)務(wù)通道獨(dú)立分配一段連續(xù)的存儲(chǔ)空間。芯片的存儲(chǔ)器訪問地址管理模塊管理著訪問RAM空間內(nèi)部每個(gè)存儲(chǔ)單元的地址,如圖2所示,所述地址包括通道緩存空間首地址和偏移地址。其中對(duì)應(yīng)每個(gè)業(yè)務(wù)通道的存儲(chǔ)空間的首地址是唯一且固定的,所述的偏移地址則是分配給該業(yè)務(wù)通道的存儲(chǔ)空間的內(nèi)部偏移地址,它分為讀偏移地址和寫偏移地址,隨讀寫訪問操作而變化。所述地址組成一個(gè)“通道緩存空間地址表”。該“通道緩存空間地址表”的訪問入口是業(yè)務(wù)通道號(hào)。
當(dāng)存取某個(gè)業(yè)務(wù)通道的數(shù)據(jù)時(shí),首先根據(jù)業(yè)務(wù)通道號(hào)訪問“通道緩存空間地址表”得到該業(yè)務(wù)通道在外部數(shù)據(jù)緩存空間的訪問地址,這包括首地址和讀(或?qū)?偏移地址,然后根據(jù)所述地址對(duì)業(yè)務(wù)通道的對(duì)應(yīng)的存儲(chǔ)空間中的數(shù)據(jù)進(jìn)行讀寫訪問。
在這種實(shí)現(xiàn)方式中,分配給每個(gè)業(yè)務(wù)通道的存儲(chǔ)空間是固定的,其大小由上述的偏移地址決定。而且,首先由于需要考慮到數(shù)據(jù)緩存的突發(fā)性,還需要有一定的容限,即分配給每個(gè)業(yè)務(wù)通道的緩存空間總是要比平均數(shù)據(jù)緩存容量要大很多,導(dǎo)致需要提供的RAM空間足夠大。其次,如果在系統(tǒng)運(yùn)行過程中有隨時(shí)加入新業(yè)務(wù)通道的需求,因此還需要預(yù)先保留有空閑的緩存空間,這就進(jìn)一步增大了對(duì)RAM空間的容量需求。另外,在系統(tǒng)運(yùn)行過程中,當(dāng)部分業(yè)務(wù)通道的緩存空間時(shí)無法回收給其他通道使用,造成空間的浪費(fèi)??傊?,這一種實(shí)現(xiàn)方式中,針對(duì)業(yè)務(wù)通道固定分配緩存空間的方法不靈活,不能根據(jù)業(yè)務(wù)通道的實(shí)際數(shù)據(jù)緩存需求動(dòng)態(tài)調(diào)整而造成RAM空間的浪費(fèi),所需RAM空間大而導(dǎo)致成本較高。
第二種存儲(chǔ)器訪問地址管理模塊的實(shí)現(xiàn)方式為采用環(huán)鏈的方式來管理存儲(chǔ)器空間首先將RAM空間劃分為一個(gè)個(gè)的存儲(chǔ)分塊,在初始化時(shí)根據(jù)每個(gè)業(yè)務(wù)通道的數(shù)據(jù)緩存流量的需求分配一定數(shù)目的存儲(chǔ)分塊,這些存儲(chǔ)分塊可以是劃分后RAM空間的任意一個(gè)分塊,每個(gè)業(yè)務(wù)通道的存儲(chǔ)分塊串接起來形成一條“鏈”,而鏈的首尾相接,從而形成了一個(gè)環(huán)狀的鏈。每個(gè)業(yè)務(wù)通道的數(shù)據(jù)存取都在該“環(huán)鏈”的分塊內(nèi)循環(huán)進(jìn)行。
具體的實(shí)現(xiàn)方式如圖3所示,首先將RAM空間劃分為n個(gè)RAM Block(存儲(chǔ)塊),這些RAM Block的訪問地址通過一個(gè)“分塊地址指針鏈表”來指示,該表中包含了n個(gè)block(塊),每個(gè)block存儲(chǔ)的內(nèi)容包括對(duì)應(yīng)RAMBlock的訪問地址和指向另外一個(gè)block的指針,通過該指針,可以將多個(gè)block串成“鏈”,也就將對(duì)應(yīng)的RAM Block串成了一條“鏈”。
例如,如圖3所示,根據(jù)通道0數(shù)據(jù)存儲(chǔ)需求,為其分配了block7、9和100三個(gè)分塊,并通過每個(gè)block中的指針串成了一個(gè)閉合的“環(huán)鏈”。
初始化時(shí),對(duì)應(yīng)通道0的RAM訪問地址指針通過隨意指向“環(huán)鏈”的一個(gè)block得到,例如block7,則開始讀寫是從block7對(duì)應(yīng)的RAM Block7開始的,寫入數(shù)據(jù)時(shí)當(dāng)RAM Block7被寫滿后數(shù)據(jù)會(huì)被依次寫入RAM Block9和RAM Block100。初始化后讀數(shù)據(jù)也是先從RAM Block7開始;環(huán)鏈里的空間是循環(huán)讀寫的,比如數(shù)據(jù)依次寫入了RAM Block7、RAM Block9和RAMBlock100,讀也依次從RAM Block7、RAM Block9到RAM Block100中讀出,依次循環(huán)。
這種實(shí)現(xiàn)方式中,通過將RAM空間進(jìn)行了分塊,分塊的大小可以靈活地控制,根據(jù)每個(gè)業(yè)務(wù)通道的數(shù)據(jù)緩存需求,在系統(tǒng)初始化時(shí)可以較靈活地分配分塊的數(shù)目,能提高RAM空間的利用效率。
然而,從本質(zhì)上看,這種實(shí)現(xiàn)方式仍屬于為每個(gè)業(yè)務(wù)通道固定分配緩存空間的方式。因此,在初始化配置時(shí)需要考慮每個(gè)業(yè)務(wù)通道的緩存需求來進(jìn)行分塊數(shù)目的分配,且仍需考慮通道的數(shù)據(jù)流量存在的突發(fā)數(shù)據(jù)存儲(chǔ)需求而進(jìn)行裕量配置。而且,如果系統(tǒng)有運(yùn)行過程中新增通道的可能,則必須預(yù)留部分備用分塊。另外,該方法同樣不能在數(shù)據(jù)處理過程中調(diào)整業(yè)務(wù)通道的存儲(chǔ)環(huán)鏈上的分塊數(shù)量,使得所述預(yù)留分塊,以及運(yùn)行過程中刪除的通道產(chǎn)生的空閑分塊均無法再被其他通道使用??梢姡谠摲桨钢?,仍未實(shí)現(xiàn)針對(duì)RAM空間的合理、有效應(yīng)用。
另外,在通信領(lǐng)域,出于QoS(服務(wù)質(zhì)量)的要求,不同的業(yè)務(wù)報(bào)文類型通常標(biāo)記為不同的優(yōu)先級(jí)別。在那些對(duì)報(bào)文進(jìn)行接收存儲(chǔ)、處理然后發(fā)送的報(bào)文處理系統(tǒng)中,通常需要對(duì)不同優(yōu)先級(jí)別的報(bào)文區(qū)別對(duì)待,高優(yōu)先級(jí)別的報(bào)文會(huì)被優(yōu)先處理和優(yōu)先發(fā)送。
報(bào)文處理系統(tǒng)對(duì)接收到的報(bào)文,一般會(huì)存儲(chǔ)到一個(gè)RAM(隨機(jī)存儲(chǔ)器)空間中去,對(duì)不同優(yōu)先級(jí)的報(bào)文如果不加區(qū)分地進(jìn)行存儲(chǔ),會(huì)為后續(xù)的優(yōu)先級(jí)處理帶來困難,因此,報(bào)文處理系統(tǒng)在存儲(chǔ)這些報(bào)文時(shí)就進(jìn)行了優(yōu)先級(jí)的區(qū)分對(duì)待,而在進(jìn)行處理和發(fā)送時(shí),同樣根據(jù)優(yōu)先級(jí)的不同而區(qū)分處理。
為了實(shí)現(xiàn)對(duì)不同優(yōu)先級(jí)的報(bào)文在RAM空間中進(jìn)行區(qū)分存儲(chǔ)排序處理。目前采用的方法主要為針對(duì)為每個(gè)優(yōu)先級(jí)別的報(bào)文固定為其分配一段存儲(chǔ)器空間進(jìn)行報(bào)文的存儲(chǔ),具體過程為1、將RAM空間按照?qǐng)?bào)文優(yōu)先級(jí)別數(shù)劃分為若干段的緩存空間。每個(gè)優(yōu)先級(jí)別固定分配一段空間;2、在接收存儲(chǔ)時(shí),不同的優(yōu)先級(jí)的報(bào)文按照一定的優(yōu)先級(jí)順序分別放到其對(duì)應(yīng)的那段緩存空間中,通過這樣的操作完成了報(bào)文的優(yōu)先級(jí)接收存儲(chǔ)排序;3、當(dāng)需要將報(bào)文進(jìn)行處理和發(fā)送時(shí),將報(bào)文從存儲(chǔ)空間讀出,這里也需要進(jìn)行報(bào)文優(yōu)先級(jí)的排序,例如,高優(yōu)先級(jí)的報(bào)文被優(yōu)先讀出和處理,高優(yōu)先級(jí)的報(bào)文被處理完后才去處理低優(yōu)先級(jí)的報(bào)文。
可以看出,上述方法的缺點(diǎn)包括第一,對(duì)RAM空間的利用率太低。為完成優(yōu)先級(jí)的存儲(chǔ)排序,對(duì)每個(gè)優(yōu)先級(jí)別固定分配了一段RAM空間,但實(shí)際系統(tǒng)中不同優(yōu)先級(jí)的報(bào)文實(shí)時(shí)的流量相差很大,有些優(yōu)先級(jí)的報(bào)文流量非常小,這部分優(yōu)先級(jí)報(bào)文的緩存空間可能在一段時(shí)間內(nèi)是空的,而另一些優(yōu)先級(jí)報(bào)文的緩存空間卻可能不夠用。這樣空間在分配時(shí)必須根據(jù)各個(gè)優(yōu)先級(jí)的報(bào)文流量分配,并考慮裕量,空間利用率低,一般RAM空間是采用存儲(chǔ)器件實(shí)現(xiàn)的,這樣大大增加了成本。
第二,當(dāng)QoS需求變化,需要增加優(yōu)先級(jí)數(shù)時(shí),現(xiàn)有技術(shù)需要對(duì)存儲(chǔ)空間重新進(jìn)行分配或者增加存儲(chǔ)空間,造成較大的設(shè)計(jì)改動(dòng)和成本增加;而且,當(dāng)需要減少某些優(yōu)先級(jí)時(shí),減少的優(yōu)先級(jí)所分配的空間不能供其他優(yōu)先級(jí)使用,如果要重新使用,則需要進(jìn)行設(shè)計(jì)改動(dòng)重新分配存儲(chǔ)空間。
發(fā)明內(nèi)容
鑒于上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明的目的是提供一種動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,從而使得針對(duì)通信系統(tǒng)中存儲(chǔ)器空間可以實(shí)現(xiàn)合理、有效地利用。
本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的本發(fā)明提供了一種動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,包括A、將存儲(chǔ)器的存儲(chǔ)空間分成若干個(gè)存儲(chǔ)分塊,并為每個(gè)存儲(chǔ)分塊分配對(duì)應(yīng)的地址指針信息;B、當(dāng)發(fā)生數(shù)據(jù)存儲(chǔ)需求時(shí),動(dòng)態(tài)為其分配一條由一個(gè)或多個(gè)存儲(chǔ)分塊基于所述地址指針信息組成的數(shù)據(jù)存儲(chǔ)分塊鏈,并利用所述數(shù)據(jù)存儲(chǔ)分塊鏈進(jìn)行數(shù)據(jù)的存儲(chǔ);C、當(dāng)所述的數(shù)據(jù)存儲(chǔ)分塊鏈中的存儲(chǔ)分塊無需存儲(chǔ)數(shù)據(jù)時(shí),則將其釋放為可以分配給其他數(shù)據(jù)存儲(chǔ)需求的存儲(chǔ)分塊。
所述的步驟A包括所述的若干個(gè)存儲(chǔ)分塊組成存儲(chǔ)分塊鏈;并且,每個(gè)存儲(chǔ)分塊對(duì)應(yīng)的地址指針信息包括分塊首地址用于指向存儲(chǔ)分塊在存儲(chǔ)器存儲(chǔ)空間中的位置;鏈接指針用于指向該存儲(chǔ)分塊鏈接的下一個(gè)存儲(chǔ)分塊的指針信息;鏈尾標(biāo)記單獨(dú)設(shè)置的標(biāo)志位,當(dāng)存儲(chǔ)分塊為鏈尾時(shí),該標(biāo)記有效;或者當(dāng)存儲(chǔ)分塊為鏈尾時(shí),將鏈接指針設(shè)置為特定值作為鏈尾標(biāo)記。
所述的步驟B還包括將為所述數(shù)據(jù)存儲(chǔ)需求分配的一個(gè)或多個(gè)存儲(chǔ)分塊基于存儲(chǔ)分決的鏈接指針信息組成的數(shù)據(jù)存儲(chǔ)分塊鏈,為所述的數(shù)據(jù)存儲(chǔ)分塊鏈建立數(shù)據(jù)存儲(chǔ)分塊鏈?zhǔn)孜仓羔槺?,表中記錄著所述?shù)據(jù)存儲(chǔ)分塊鏈的首尾指針信息。
所述的步驟B還包括當(dāng)為所述的數(shù)據(jù)存儲(chǔ)需求分配的數(shù)據(jù)存儲(chǔ)分塊鏈無法滿足數(shù)據(jù)存儲(chǔ)需求時(shí),則繼續(xù)為所述的數(shù)據(jù)存儲(chǔ)需求分配新的存儲(chǔ)分塊,新的存儲(chǔ)分塊串到已有的數(shù)據(jù)存儲(chǔ)分塊鏈的鏈尾,并修改數(shù)據(jù)存儲(chǔ)分塊鏈?zhǔn)孜仓羔槺硇畔ⅰ?br>
所述的步驟C包括當(dāng)所述的數(shù)據(jù)存儲(chǔ)需求需要存儲(chǔ)的數(shù)據(jù)量減少或不再需要進(jìn)行數(shù)據(jù)的存儲(chǔ)時(shí),則所述的數(shù)據(jù)存儲(chǔ)分塊鏈中的部分或全部分塊確定無需存儲(chǔ)數(shù)據(jù)。
所述的步驟C還包括將釋放的存儲(chǔ)分塊串到空閑存儲(chǔ)分塊鏈的鏈尾,并將空閑存儲(chǔ)分塊鏈對(duì)應(yīng)的地址信息中該空閑分塊的鏈尾標(biāo)記設(shè)置為有效,將原鏈尾空閑分塊的鏈尾標(biāo)記設(shè)置為無效。
所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法還包括根據(jù)數(shù)據(jù)存儲(chǔ)需求的大小,預(yù)先為通信系統(tǒng)中的各業(yè)務(wù)通道分配相應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈。
所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法還包括當(dāng)需要從所述的數(shù)據(jù)存儲(chǔ)分塊鏈中讀取數(shù)據(jù)時(shí),則需要從該數(shù)據(jù)存儲(chǔ)分塊鏈對(duì)應(yīng)的首尾指針表中獲取其鏈?zhǔn)追謮K的指針信息,進(jìn)行獲得其地址信息,并根據(jù)所述的地址信息讀取各存儲(chǔ)分塊中的數(shù)據(jù)。
所述的數(shù)據(jù)存儲(chǔ)需求包括通信設(shè)備的芯片中已經(jīng)配置的業(yè)務(wù)通道和新增加的業(yè)務(wù)通道的數(shù)據(jù)存儲(chǔ)需求。
本發(fā)明所述的方法中,步驟A所述的存儲(chǔ)分塊對(duì)應(yīng)的地址指針信息可以保存于芯片內(nèi)或外部存儲(chǔ)器中。
本發(fā)明中,當(dāng)業(yè)務(wù)通道的數(shù)據(jù)需要分優(yōu)先級(jí)存儲(chǔ)時(shí),該方法包括D、確定各業(yè)務(wù)通道待存儲(chǔ)數(shù)據(jù)報(bào)文的優(yōu)先級(jí)別,并為級(jí)別相同的報(bào)文分配相應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈分別進(jìn)行數(shù)據(jù)的存儲(chǔ);E、當(dāng)讀取數(shù)據(jù)時(shí),根據(jù)數(shù)據(jù)存儲(chǔ)分塊鏈存儲(chǔ)報(bào)文的優(yōu)先級(jí)別由高優(yōu)先級(jí)到低優(yōu)先級(jí)依次對(duì)相應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈進(jìn)行讀取數(shù)據(jù)操作。
本發(fā)明中所述的步驟D還包括為所述的數(shù)據(jù)存儲(chǔ)分塊鏈設(shè)置相應(yīng)的優(yōu)先級(jí)標(biāo)識(shí);并且,所述的步驟E還包括當(dāng)讀取數(shù)據(jù)時(shí),根據(jù)所述的優(yōu)先級(jí)標(biāo)識(shí)依次讀取各數(shù)據(jù)存儲(chǔ)分塊鏈中的數(shù)據(jù)。
本發(fā)明中,當(dāng)業(yè)務(wù)通道的數(shù)據(jù)需要分優(yōu)先級(jí)存儲(chǔ)時(shí),該方法包括F、確定待存儲(chǔ)數(shù)據(jù)報(bào)文的優(yōu)先級(jí)別,并將所述數(shù)據(jù)報(bào)文按照優(yōu)先級(jí)別順序存儲(chǔ)于該業(yè)務(wù)通道對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈中;G、當(dāng)進(jìn)行數(shù)據(jù)讀取時(shí),獲取存儲(chǔ)高優(yōu)先級(jí)別報(bào)文的存儲(chǔ)分塊的首地址信息,并依次從數(shù)據(jù)存儲(chǔ)分塊鏈中讀取數(shù)據(jù)。
所述的步驟F進(jìn)一步包括建立優(yōu)先級(jí)數(shù)據(jù)存儲(chǔ)分塊鏈,鏈中的存儲(chǔ)分塊對(duì)應(yīng)的各首地址指針表項(xiàng)中分別設(shè)置有優(yōu)先級(jí)標(biāo)識(shí),設(shè)置數(shù)據(jù)存儲(chǔ)分塊鏈?zhǔn)孜仓羔樦赶蛟撴湣?br>
所述的步驟F進(jìn)一步包括為待存儲(chǔ)數(shù)據(jù)報(bào)文從存儲(chǔ)分塊鏈中分配空閑的存儲(chǔ)分塊;查找所述優(yōu)先級(jí)數(shù)據(jù)存儲(chǔ)分塊鏈中各存儲(chǔ)分塊對(duì)應(yīng)的優(yōu)先級(jí)標(biāo)識(shí),并根據(jù)待存儲(chǔ)數(shù)據(jù)報(bào)文的優(yōu)先級(jí)及查找到的優(yōu)先級(jí)標(biāo)識(shí)確定存儲(chǔ)該報(bào)文的存儲(chǔ)分塊在優(yōu)先級(jí)數(shù)據(jù)存儲(chǔ)分塊鏈中的位置;將所述的存儲(chǔ)分塊串入優(yōu)先級(jí)數(shù)據(jù)存儲(chǔ)分塊鏈中確定的位置上。
所述的步驟F還包括在系統(tǒng)初始化時(shí),將由所有的存儲(chǔ)分塊串成的一條存儲(chǔ)分塊鏈的每一個(gè)首地址指針表項(xiàng)中設(shè)置有用于承載優(yōu)先級(jí)標(biāo)識(shí)的優(yōu)先級(jí)別域,且均初始化設(shè)置為最低優(yōu)先級(jí);當(dāng)需要存儲(chǔ)數(shù)據(jù)時(shí),從存儲(chǔ)分塊鏈中為該數(shù)據(jù)分配空閑的存儲(chǔ)分塊,并通過修改所述存儲(chǔ)分塊對(duì)應(yīng)首地址指針表項(xiàng)內(nèi)容將其串入優(yōu)先級(jí)數(shù)據(jù)存儲(chǔ)分塊鏈中。
所述的優(yōu)先級(jí)數(shù)據(jù)存儲(chǔ)分塊鏈中的存儲(chǔ)于同一個(gè)存儲(chǔ)分塊的報(bào)文均應(yīng)屬于同一個(gè)優(yōu)先級(jí)別。
由上述本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明具有以下優(yōu)點(diǎn)1、本發(fā)明所提供的對(duì)RAM空間進(jìn)行分塊及分塊動(dòng)態(tài)串鏈實(shí)現(xiàn)存儲(chǔ)器空間共享的方法,極大地提高了RAM空間的利用;特別在處理多個(gè)通道數(shù)據(jù)存儲(chǔ)的場(chǎng)合,理論上每個(gè)通道都可以使用整個(gè)RAM空間,RAM空間利用率能達(dá)到最大100%,大大節(jié)約了成本;本發(fā)明可以用于基于任何需要對(duì)存儲(chǔ)器進(jìn)行訪問管理的應(yīng)用。
2、本發(fā)明所提供的方法因?yàn)橹会槍?duì)業(yè)務(wù)通道的數(shù)據(jù)存儲(chǔ)需求實(shí)時(shí)動(dòng)態(tài)分配存儲(chǔ)空間,數(shù)據(jù)存儲(chǔ)需求大則分配的分塊多,存儲(chǔ)需求小則分配的分塊少。該方法能實(shí)時(shí)適應(yīng)業(yè)務(wù)通道的流量的突發(fā),對(duì)于那些難以估算通道數(shù)據(jù)流量或者通道數(shù)據(jù)流量在運(yùn)行過程中存在很大變化的應(yīng)用,具有重要的實(shí)用價(jià)值。
3、本發(fā)明提供的方法能夠簡(jiǎn)單而靈活地在系統(tǒng)的正常運(yùn)行過程中為新增通道分配存儲(chǔ)空間而不影響當(dāng)前其他通道數(shù)據(jù)的正常存儲(chǔ),并自動(dòng)地實(shí)現(xiàn)了對(duì)運(yùn)行過程中刪除通道存儲(chǔ)空間的回收和再利用,對(duì)于那些頻繁增刪存儲(chǔ)通道的應(yīng)用,具有重要的應(yīng)用價(jià)值。
圖1為通信設(shè)備中芯片對(duì)存儲(chǔ)器的訪問控制結(jié)構(gòu)示意圖;圖2和圖3分別為現(xiàn)有的兩種存儲(chǔ)器空間地址管理示意圖;圖4為本發(fā)明所述的方法的處理過程示意圖;圖5、圖6和圖7分別為本發(fā)明中動(dòng)態(tài)管理存儲(chǔ)器空間地址示意圖。
具體實(shí)施例方式
本發(fā)明提供了一種動(dòng)態(tài)共享RAM空間的實(shí)現(xiàn)方法,該方法的核心是采用對(duì)RAM空間進(jìn)行分塊和分塊動(dòng)態(tài)串鏈的方式,對(duì)存儲(chǔ)分塊進(jìn)行動(dòng)態(tài)的分配調(diào)度和回收管理,從而實(shí)現(xiàn)RAM空間在各個(gè)業(yè)務(wù)通道之間的完全共享,并靈活地實(shí)現(xiàn)為新增業(yè)務(wù)通道分配緩存空間,以及將刪除通道的緩存空間回收并重新使用等功能。當(dāng)然,本發(fā)明不僅適用于通信設(shè)備中的芯片設(shè)計(jì)領(lǐng)域,而且在其他需要進(jìn)行存儲(chǔ)器存儲(chǔ)控制的場(chǎng)合也有較高的實(shí)用價(jià)值。
本發(fā)明所述的方法的具體實(shí)現(xiàn)方式包括(1)首先,將所述的存儲(chǔ)器分成若干個(gè)存儲(chǔ)分塊,并分別為每個(gè)存儲(chǔ)分塊分配相應(yīng)的地址信息,每個(gè)存儲(chǔ)分塊通常包含多個(gè)數(shù)據(jù)存儲(chǔ)單元,且每個(gè)存儲(chǔ)分塊的地址信息包括存儲(chǔ)分塊的首地址信息及偏移地址信息,其中,首地址信息指示了存儲(chǔ)分塊在存儲(chǔ)器存儲(chǔ)空間中的位置,而偏移地址用于在具體讀/寫每個(gè)存儲(chǔ)分塊時(shí),作為低位地址尋址分塊中每個(gè)存儲(chǔ)單元;(2)其次,將所述的若干個(gè)分塊基于相應(yīng)的地址信息組成相應(yīng)的存儲(chǔ)分塊鏈,存儲(chǔ)分塊間通過鏈接指針鏈接組成空閑存儲(chǔ)分塊鏈;
所采用的方法為建立一個(gè)首地址指針表,所述的一個(gè)存儲(chǔ)分塊對(duì)應(yīng)表中的一個(gè)首地址指針表項(xiàng),表項(xiàng)中記錄了存儲(chǔ)分塊的地址指針信息,具體包括首地址信息、鏈接指針及鏈尾標(biāo)記信息,鏈接指針用于指示該存儲(chǔ)分塊在鏈中與其鏈接的下一個(gè)存儲(chǔ)分塊,所述的鏈尾標(biāo)記則用于標(biāo)明該存儲(chǔ)分塊是否為鏈中的鏈尾,如果是,則該標(biāo)記為有效,否則為無效;(3)最后,當(dāng)發(fā)生數(shù)據(jù)存儲(chǔ)需求時(shí),或者主動(dòng)為可能發(fā)生的數(shù)據(jù)存儲(chǔ)需求從空閑存儲(chǔ)分塊鏈中分配一個(gè)或多個(gè)存儲(chǔ)分塊,一個(gè)或多個(gè)存儲(chǔ)分塊同樣通過鏈接指針鏈接組成相應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈,對(duì)應(yīng)數(shù)據(jù)存儲(chǔ)需求的存儲(chǔ)器訪問指針指向數(shù)據(jù)存儲(chǔ)分塊鏈的鏈?zhǔn)?;通常需要針?duì)一個(gè)數(shù)據(jù)存儲(chǔ)需求分配一個(gè)數(shù)據(jù)存儲(chǔ)分塊鏈,如一個(gè)業(yè)務(wù)通道的數(shù)據(jù)存儲(chǔ)需求等;在為數(shù)據(jù)存儲(chǔ)需求分配存儲(chǔ)分塊過程中,既可以根據(jù)數(shù)據(jù)存儲(chǔ)需求的大小一次為其分配相應(yīng)數(shù)量的存儲(chǔ)分塊,也可以采用每次只分配固定數(shù)量的一個(gè)或幾個(gè)存儲(chǔ)分塊,當(dāng)分配的存儲(chǔ)分塊中存滿數(shù)據(jù)后,如果還需要存儲(chǔ)其他數(shù)據(jù),則再為其分配新的數(shù)據(jù)存儲(chǔ)分塊,直到滿足數(shù)據(jù)存儲(chǔ)需求;當(dāng)需要將數(shù)據(jù)存儲(chǔ)分塊鏈中的數(shù)據(jù)讀出時(shí),則從所述的首地址指針表中獲取該數(shù)據(jù)存儲(chǔ)分塊鏈中的鏈?zhǔn)椎姆謮K的地址信息,并根據(jù)所述的地址信息從數(shù)據(jù)存儲(chǔ)分塊鏈中進(jìn)行數(shù)據(jù)的讀取。
(4)另外,本發(fā)明還包括將已經(jīng)分配給相應(yīng)的數(shù)據(jù)存儲(chǔ)需求的數(shù)據(jù)存儲(chǔ)分塊鏈中的一個(gè)或多個(gè)存儲(chǔ)分塊不再需要進(jìn)行數(shù)據(jù)的存儲(chǔ)時(shí),即為空閑狀態(tài)時(shí),則將其釋放回空閑存儲(chǔ)分塊鏈中,以便于在執(zhí)行過程(3)時(shí)分配給另外的數(shù)據(jù)存儲(chǔ)需求應(yīng)用;具體包括當(dāng)某一數(shù)據(jù)存儲(chǔ)需求需要存儲(chǔ)數(shù)據(jù)量減少時(shí),或某一數(shù)據(jù)存儲(chǔ)需求不存在時(shí),則需要將其對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈中的部分或全部存儲(chǔ)分塊對(duì)應(yīng)的首地址指針表中的表項(xiàng)信息進(jìn)行調(diào)整,從而使得所述部分或全部存儲(chǔ)分塊重新串入空閑存儲(chǔ)分塊鏈中。
可以看出,本發(fā)明中,既實(shí)現(xiàn)了為各數(shù)據(jù)存儲(chǔ)需求動(dòng)態(tài)分配相應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈,又實(shí)現(xiàn)了動(dòng)態(tài)回收數(shù)據(jù)存儲(chǔ)分塊鏈中的空閑狀態(tài)的存儲(chǔ)分塊,從而使得針對(duì)存儲(chǔ)器存儲(chǔ)空間的利用更為靈活。
下面以通信設(shè)備中的芯片設(shè)計(jì)過程中的存儲(chǔ)器存儲(chǔ)控制應(yīng)用為例對(duì)本發(fā)明所述的方法的具體實(shí)現(xiàn)方式作進(jìn)一步說明,如圖4和圖5所示,具體包括步驟41將整個(gè)RAM空間劃分為若干個(gè)存儲(chǔ)分塊RAM Block,假設(shè)存儲(chǔ)分塊的數(shù)量為M,所述的RAM Block的大小可以根據(jù)具體設(shè)計(jì)靈活劃分,通常包括若干個(gè)存儲(chǔ)單元;每個(gè)RAM Block的訪問地址由首地址和偏移地址組成,其中首地址指示了RAM Block在RAM空間中的位置,而偏移地址用于具體讀寫每個(gè)RAMBlock時(shí)作為低位地址尋址分塊中每個(gè)存儲(chǔ)單元。
步驟42建立相應(yīng)的存儲(chǔ)分塊的首地址指針表,通過該首地址指針表便可以將所述的各個(gè)存儲(chǔ)分塊組成相應(yīng)的存儲(chǔ)分塊鏈;此時(shí),由于還未分配給相應(yīng)的業(yè)務(wù)通道用于數(shù)據(jù)的存儲(chǔ),因此可以稱為空閑存儲(chǔ)分塊鏈,相應(yīng)的存儲(chǔ)分塊,則可以稱為空閑存儲(chǔ)分塊;所述的首地址指針表由與所述的RAM Block數(shù)目一致的M個(gè)首地址指針表項(xiàng)組成,每個(gè)首地址指針表項(xiàng)的地址指針信息域包括對(duì)應(yīng)的RAM Block的首地址;鏈連接指針CI;鏈尾標(biāo)記end;鏈尾標(biāo)記有效,即end=1時(shí)的首地址指針表項(xiàng)中的CI值將被忽略,所述的鏈尾標(biāo)記也可以用其他方式表示,例如采用一個(gè)特定的CI值,該CI值不指向任何已存在的分塊;在實(shí)際芯片中,該分塊首地址指針表可以存放于芯片內(nèi)部或者外部的RAM中;將各個(gè)存儲(chǔ)分塊組成存儲(chǔ)分塊鏈的過程包括將一個(gè)首地址指針表項(xiàng)A的CI的內(nèi)容指向另一個(gè)“首地址指針表項(xiàng)”B,即通過A的CI內(nèi)容能尋址到B,這樣A和B就串接了起來;依次類推,所有的首地址指針表項(xiàng)者可以被串接起來形成一條鏈;因?yàn)槊總€(gè)首地址指針表項(xiàng)都帶有一個(gè)RAM Block的首地址信息,通過這種方式,外部的各個(gè)RAM Block也被串成了一條鏈,處于鏈尾的RAM Block對(duì)應(yīng)的首地址指針表項(xiàng)的鏈尾標(biāo)記end設(shè)置為有效;這樣,在系統(tǒng)初始化時(shí),所有的存儲(chǔ)分塊首先通過這樣的方式串成了一條空閑存儲(chǔ)分塊鏈,該空閑存儲(chǔ)分塊鏈?zhǔn)孜驳拇鎯?chǔ)分塊對(duì)應(yīng)的首地址指針表項(xiàng)被空閑鏈?zhǔn)孜仓羔標(biāo)赶颍此龅目臻e鏈?zhǔn)孜仓羔樣糜谥赶蚩臻e存儲(chǔ)分塊鏈的首尾存儲(chǔ)分塊對(duì)應(yīng)的首地址指針表項(xiàng)。
步驟43對(duì)應(yīng)每個(gè)已配置的業(yè)務(wù)通道分別為其從所述的存儲(chǔ)分塊鏈中分配相應(yīng)的存儲(chǔ)分塊,并串成相應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈,用于進(jìn)行業(yè)務(wù)通道的數(shù)據(jù)的存儲(chǔ);首先,在芯片的設(shè)計(jì)過程中,需要針對(duì)各個(gè)業(yè)務(wù)通道均設(shè)置一個(gè)數(shù)據(jù)存儲(chǔ)分塊鏈的首尾地址指針,該指針指向了一條數(shù)據(jù)存儲(chǔ)分塊鏈;當(dāng)某個(gè)業(yè)務(wù)通道有數(shù)據(jù)存儲(chǔ)需求時(shí),申請(qǐng)一個(gè)新的存儲(chǔ)分塊首地址分配給該業(yè)務(wù)通道,即從空閑存儲(chǔ)分塊鏈中取一個(gè)空閑存儲(chǔ)分塊分配給該業(yè)務(wù)通道,例如讀取空閑存儲(chǔ)分塊鏈的鏈?zhǔn)讓?duì)應(yīng)的首地址指針表項(xiàng)中的分塊首地址信息,并分配給該業(yè)務(wù)通道,并且,該首地址指針表項(xiàng)同時(shí)也被串入到該業(yè)務(wù)通道的數(shù)據(jù)存儲(chǔ)分塊鏈的鏈尾;如圖5所示,對(duì)于業(yè)務(wù)通道CH0,為其設(shè)置的首尾地址指針分別為CI(B)=9和CI(E)=11,此時(shí),可以確定該業(yè)務(wù)通道的數(shù)據(jù)存儲(chǔ)分塊鏈包括block9、10、11三個(gè)存儲(chǔ)分塊;當(dāng)為業(yè)務(wù)通道分配的存儲(chǔ)分塊寫滿數(shù)據(jù)后,則可以再次為該業(yè)務(wù)通道申請(qǐng)新的空閑存儲(chǔ)分塊,這樣每個(gè)業(yè)務(wù)通道已經(jīng)存儲(chǔ)數(shù)據(jù)的存儲(chǔ)分塊也串成一條鏈。
步驟44當(dāng)需要讀出某個(gè)業(yè)務(wù)通道的數(shù)據(jù)時(shí),只需要獲取該業(yè)務(wù)通道的數(shù)據(jù)存儲(chǔ)分塊鏈的鏈?zhǔn)椎拇鎯?chǔ)分塊的地址信息,即可從該存儲(chǔ)分塊開始依次讀取數(shù)據(jù)存儲(chǔ)分塊鏈中各存儲(chǔ)分塊中保存的數(shù)據(jù)信息;仍以業(yè)務(wù)通道CH0為例,當(dāng)需要讀出該業(yè)務(wù)通道對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈中存儲(chǔ)的數(shù)據(jù)時(shí),則查詢首地址指針表以獲取鏈?zhǔn)椎拇鎯?chǔ)分塊的地址信息,并從該地址信息開始進(jìn)行數(shù)據(jù)的讀取操作。
從上述過程描述可以看出,本發(fā)明可以針對(duì)業(yè)務(wù)通道數(shù)據(jù)存儲(chǔ)的需求,在芯片設(shè)計(jì)過程中根據(jù)實(shí)際需要靈活確定并調(diào)整分配給各個(gè)業(yè)務(wù)通道的存儲(chǔ)空間的大小,從而有利于對(duì)存儲(chǔ)器有限空間的合理利用。
除此之外,本發(fā)明還可以實(shí)現(xiàn)針對(duì)新增業(yè)務(wù)通道靈活地進(jìn)行存儲(chǔ)空間的分配,以及有效地回收已經(jīng)分配給相應(yīng)業(yè)務(wù)通道的存儲(chǔ)空間的功能。下面將分別進(jìn)行描述1、當(dāng)通信系統(tǒng)中出現(xiàn)新增的業(yè)務(wù)通道時(shí),只需再為該業(yè)務(wù)通道分配一個(gè)數(shù)據(jù)存儲(chǔ)分塊鏈?zhǔn)孜仓羔樇纯桑唧w的處理過程與上述步驟43相同,之后的存取操作過程同樣和其他的業(yè)務(wù)通道的操作處理過程相同;而且,整個(gè)處理過程不影響其他通道的數(shù)據(jù)存取。
2、當(dāng)已經(jīng)分配給相應(yīng)業(yè)務(wù)通道的存儲(chǔ)分塊不需要再進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí),則可以對(duì)所述的存儲(chǔ)分塊進(jìn)行回收,從而實(shí)現(xiàn)針對(duì)存儲(chǔ)器存儲(chǔ)空間的回收;通常在以下兩種情況下需要進(jìn)行存儲(chǔ)分塊的回收操作(1)當(dāng)業(yè)務(wù)通道的存儲(chǔ)分塊鏈鏈?zhǔn)椎拇鎯?chǔ)分塊存儲(chǔ)的內(nèi)容被讀取之后,需要將該存儲(chǔ)分塊釋放為空閑存儲(chǔ)分塊,該存儲(chǔ)分塊對(duì)應(yīng)的首地址指針表項(xiàng)將被串入到空閑存儲(chǔ)分塊鏈的鏈尾處;具體的處理方法包括對(duì)應(yīng)業(yè)務(wù)通道的鏈?zhǔn)字羔槺桓臑橹赶蜴溨泻驮摯鎯?chǔ)分塊連接的下一個(gè)存儲(chǔ)分塊;將該存儲(chǔ)分塊的鏈尾標(biāo)記end置為有效,并將原來空閑存儲(chǔ)分塊鏈的鏈尾的存儲(chǔ)分塊的鏈接指針CI改為指向該存儲(chǔ)分塊,且其鏈尾標(biāo)記end修改為無效;(2)對(duì)于刪除的業(yè)務(wù)通道,需要將分配給它的存儲(chǔ)分塊進(jìn)行回收處理,同時(shí),還需要?jiǎng)h除原來為其分配的數(shù)據(jù)存儲(chǔ)分塊鏈?zhǔn)孜仓羔?,回收的存?chǔ)分塊又可以供其他業(yè)務(wù)通道共享使用;例如,當(dāng)要?jiǎng)h除某個(gè)通道時(shí),首先不再為其申請(qǐng)新的存儲(chǔ)分塊;然后將該通道中已經(jīng)存儲(chǔ)數(shù)據(jù)的存儲(chǔ)分塊讀空并釋放,相應(yīng)的各個(gè)存儲(chǔ)分塊將被回收加入到空閑存儲(chǔ)分塊鏈中供其他通道使用,具體的處理方法是將各個(gè)存儲(chǔ)分塊依次串入空閑存儲(chǔ)分塊鏈的鏈尾處,并修改各存儲(chǔ)分塊及原空閑存儲(chǔ)分塊鏈的鏈尾的存儲(chǔ)分塊的鏈接指針CI及鏈尾標(biāo)記end;最后,刪除該業(yè)務(wù)通道對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈?zhǔn)孜仓羔槨?br>
本發(fā)明還可以使得不同優(yōu)先級(jí)報(bào)文合理地共享存儲(chǔ)器存儲(chǔ)空間,具體的實(shí)現(xiàn)方式可以有兩種,下面將分別進(jìn)行說明。
第一種為針對(duì)不同優(yōu)先級(jí)別報(bào)文分別建立對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈可以將業(yè)務(wù)傳輸中設(shè)定的每個(gè)優(yōu)先級(jí)看作是同一個(gè)數(shù)據(jù)存儲(chǔ)需求,針對(duì)每個(gè)優(yōu)先級(jí)都獨(dú)立對(duì)應(yīng)設(shè)置有一條優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”,所述的優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”包含一個(gè)或多個(gè)存儲(chǔ)分塊,每個(gè)存儲(chǔ)分塊所存儲(chǔ)的報(bào)文均應(yīng)屬于同一個(gè)優(yōu)先級(jí);而且,針對(duì)每個(gè)優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”還需要分別設(shè)置一個(gè)優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈?zhǔn)孜仓羔槨庇糜谥赶蛟撴湣?br>
當(dāng)需要存儲(chǔ)相應(yīng)優(yōu)先級(jí)的報(bào)文時(shí),則從“空閑存儲(chǔ)分塊鏈”中申請(qǐng)一個(gè)新的存儲(chǔ)分塊,并將其根據(jù)該報(bào)文的優(yōu)先級(jí)別加入到相應(yīng)優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”中,即將該存儲(chǔ)分塊對(duì)應(yīng)的“首地址指針表項(xiàng)”串入到對(duì)應(yīng)優(yōu)先級(jí)的“數(shù)據(jù)存儲(chǔ)分塊鏈”的鏈尾;同時(shí),將從“空閑存儲(chǔ)分塊鏈”中申請(qǐng)的該存儲(chǔ)分塊分配給需要存儲(chǔ)的報(bào)文,例如讀取該存儲(chǔ)分塊對(duì)應(yīng)的“首地址指針表項(xiàng)”中的分塊首地址信息分配給該報(bào)文,用于進(jìn)行報(bào)文的存儲(chǔ)操作。這樣,優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”中的各存儲(chǔ)分塊就可以按照存儲(chǔ)的先后順序依次串接起來。
當(dāng)需要對(duì)優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”中的存儲(chǔ)報(bào)文按優(yōu)先級(jí)讀取時(shí),則由于每條優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”均對(duì)應(yīng)同一個(gè)優(yōu)先級(jí),故僅需要對(duì)報(bào)文按照優(yōu)先級(jí)別的不同依次對(duì)相應(yīng)的優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”進(jìn)行讀取處理即可以實(shí)現(xiàn)按優(yōu)先級(jí)讀取并發(fā)送報(bào)文的處理要求。例如,高優(yōu)先級(jí)的報(bào)文被優(yōu)先處理,則依次去判斷各個(gè)優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”,如果高優(yōu)先級(jí)別的優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”中串有已經(jīng)存儲(chǔ)報(bào)文數(shù)據(jù)的分塊,則優(yōu)先讀取處理,之后處理較低優(yōu)先級(jí)對(duì)應(yīng)的優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”中存儲(chǔ)的報(bào)文,即依次由高優(yōu)先級(jí)到低優(yōu)先級(jí)。從而保證高優(yōu)先級(jí)別的報(bào)文總能被優(yōu)先處理,滿足了報(bào)文優(yōu)先級(jí)排序處理的需求。
同時(shí),在針對(duì)不同優(yōu)先級(jí)別報(bào)文分別建立優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”的方法中,如果由于QoS需求變化而需要增加處理的優(yōu)先級(jí)時(shí),則需要增加相應(yīng)的優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”;由于本發(fā)明可以實(shí)現(xiàn)存儲(chǔ)分塊共享,存儲(chǔ)分塊可以根據(jù)存儲(chǔ)請(qǐng)求自動(dòng)分配,因此,當(dāng)需要增加相應(yīng)的優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”時(shí),只需要再為該優(yōu)先級(jí)設(shè)置一個(gè)優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈?zhǔn)孜仓羔槨奔纯桑螽?dāng)需要向該優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”中存儲(chǔ)數(shù)據(jù)時(shí),從空閑存儲(chǔ)分塊鏈中為其分配相應(yīng)的存儲(chǔ)分塊就可以了,而不會(huì)影響到其他優(yōu)先級(jí)的報(bào)文存取處理過程。
如果需要?jiǎng)h除優(yōu)先級(jí)對(duì)應(yīng)的優(yōu)先級(jí)“數(shù)據(jù)存儲(chǔ)分塊鏈”,則需要將為其分配存儲(chǔ)分塊進(jìn)行回收,并刪除原來為其分配的“優(yōu)先級(jí)存儲(chǔ)分塊鏈?zhǔn)孜仓羔槨?,具體的存儲(chǔ)分塊的回收處理方式與前面針對(duì)其他鏈中的存儲(chǔ)分塊的回收處理方式相同,此處不贅述。
第二種為將各報(bào)文按照優(yōu)先級(jí)別順序存儲(chǔ)于同一數(shù)據(jù)存儲(chǔ)分塊鏈中在系統(tǒng)初始化時(shí),將所有的存儲(chǔ)分塊串成一條“空閑存儲(chǔ)分塊鏈”,其中每一個(gè)“首地址指針表項(xiàng)”中還設(shè)置有CLS(優(yōu)先級(jí)別)域,用于記錄在相應(yīng)的優(yōu)先級(jí)標(biāo)識(shí)信息,且均初始化設(shè)置為最低優(yōu)先級(jí),例如CLS=0;該“空閑存儲(chǔ)分塊鏈”首尾的“首地址指針表項(xiàng)”被“空閑存儲(chǔ)分塊鏈?zhǔn)孜仓羔槨彼赶颉?br>
當(dāng)有報(bào)文數(shù)據(jù)存儲(chǔ)需求時(shí),從“空閑存儲(chǔ)分塊鏈”中申請(qǐng)一個(gè)新的存儲(chǔ)分塊首地址,將從“空閑存儲(chǔ)分塊鏈”中取一個(gè)空閑存儲(chǔ)分塊分配給報(bào)文,比如讀取空閑鏈?zhǔn)椎膶?duì)應(yīng)“首地址指針表項(xiàng)”中的分塊首地址信息,分配給該報(bào)文進(jìn)行存儲(chǔ)。要求存儲(chǔ)進(jìn)同一個(gè)存儲(chǔ)分塊的報(bào)文數(shù)據(jù)都是屬于同一個(gè)優(yōu)先級(jí)別CLS。寫入該存儲(chǔ)分塊的地址包括分配得到的首地址和寫入操作時(shí)的寫偏移地址。
對(duì)于存儲(chǔ)了報(bào)文的所有存儲(chǔ)分塊,對(duì)應(yīng)著一條“數(shù)據(jù)存儲(chǔ)分塊鏈”,設(shè)置了“數(shù)據(jù)存儲(chǔ)分塊鏈?zhǔn)孜仓羔槨眮碇赶蛟摲謮K鏈。在存儲(chǔ)報(bào)文時(shí),所述報(bào)文的優(yōu)先級(jí)別CLS確定了在相應(yīng)的存儲(chǔ)分塊在“數(shù)據(jù)存儲(chǔ)分塊鏈”中的位置,也就是說“數(shù)據(jù)存儲(chǔ)分塊鏈”中的存儲(chǔ)分塊是按照其所存儲(chǔ)的報(bào)文優(yōu)先級(jí)別CLS進(jìn)行排序串鏈的,同樣,存儲(chǔ)分塊串鏈?zhǔn)峭ㄟ^對(duì)應(yīng)的“首地址指針表項(xiàng)”串鏈來完成。
下面將把存儲(chǔ)分塊串成“數(shù)據(jù)存儲(chǔ)分塊鏈”的處理過程進(jìn)行說明假設(shè)優(yōu)先級(jí)按高到低排序,例如有0~7個(gè)優(yōu)先級(jí),7為最高,0為最低,則將存儲(chǔ)分塊串鏈的過程為首先,一個(gè)被分配且正在存儲(chǔ)報(bào)文的存儲(chǔ)分塊,其“首地址指針表項(xiàng)”X的CLS域?qū)⒏聻楹推浯鎯?chǔ)的報(bào)文的優(yōu)先級(jí)別CLS一致;然后,從“數(shù)據(jù)存儲(chǔ)分塊鏈”的鏈?zhǔn)组_始,依次讀出一個(gè)“首地址指針表項(xiàng)”的CLS域和X的CLS域比較,如果前者的CLS值大于或等于X的CLS值(即優(yōu)先級(jí)與該報(bào)文相等或者更高),則再讀鏈中下一個(gè)“首地址指針表項(xiàng)”的CLS域來進(jìn)行比較,直到找到鏈中的一個(gè)“首地址指針表項(xiàng)”M的CLS比X的CLS值小(優(yōu)先級(jí)比X低),則將X插入到M的前面;如果一直比較到鏈尾都無法找到一個(gè)“首地址指針表項(xiàng)”的CLS域比X小,則說明該存儲(chǔ)分塊存儲(chǔ)的當(dāng)前報(bào)文的優(yōu)先級(jí)最低,則就加入到鏈尾中。通過這種方式,“數(shù)據(jù)存儲(chǔ)分塊鏈”中各個(gè)存儲(chǔ)分塊就可以按照優(yōu)先級(jí)順序和寫入存儲(chǔ)的順序從高到低排列。
第二種方式中,存儲(chǔ)報(bào)文的優(yōu)先級(jí)讀取過程由于所存儲(chǔ)報(bào)文的存儲(chǔ)分塊為按報(bào)文優(yōu)先級(jí)排序,故讀取報(bào)文時(shí)只需要從相應(yīng)的“數(shù)據(jù)存儲(chǔ)分塊鏈”中依次由鏈?zhǔn)组_始讀取分塊首地址,然后從該存儲(chǔ)分塊讀取報(bào)文即可。
在第二種方式中,同樣可以根據(jù)數(shù)據(jù)存儲(chǔ)情況進(jìn)行存儲(chǔ)分塊的回收處理,具體的回收處理方式與前面描述過的回收處理方式相同。同時(shí),該方式中,對(duì)于QoS的需求變化,可能需要新增優(yōu)先級(jí)別或者刪除某些優(yōu)先級(jí)別;當(dāng)需要新增優(yōu)先級(jí)和刪除優(yōu)先級(jí)時(shí),該方式中采用的優(yōu)先級(jí)存儲(chǔ)分塊串鏈方法可以支持任意的優(yōu)先級(jí)別,而且存儲(chǔ)分塊是共享的方式,只在有報(bào)文數(shù)據(jù)存儲(chǔ)請(qǐng)求時(shí)才會(huì)分配分塊空間,故新增優(yōu)先級(jí)別和刪除某些優(yōu)先級(jí)別對(duì)上述的存儲(chǔ)和優(yōu)先級(jí)排序操作都可自動(dòng)完成而無須進(jìn)行設(shè)計(jì)改動(dòng)。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,包括A、將存儲(chǔ)器的存儲(chǔ)空間分成若干個(gè)存儲(chǔ)分塊,并為每個(gè)存儲(chǔ)分塊分配對(duì)應(yīng)的地址指針信息;B、當(dāng)發(fā)生數(shù)據(jù)存儲(chǔ)需求時(shí),動(dòng)態(tài)為其分配一條由一個(gè)或多個(gè)存儲(chǔ)分塊基于所述地址指針信息組成的數(shù)據(jù)存儲(chǔ)分塊鏈,并利用所述數(shù)據(jù)存儲(chǔ)分塊鏈進(jìn)行數(shù)據(jù)的存儲(chǔ);C、當(dāng)所述的數(shù)據(jù)存儲(chǔ)分塊鏈中的存儲(chǔ)分塊無需存儲(chǔ)數(shù)據(jù)時(shí),則將其釋放為可以分配給其他數(shù)據(jù)存儲(chǔ)需求的存儲(chǔ)分塊。
2.根據(jù)權(quán)利要求1所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,所述的步驟A包括所述的若干個(gè)存儲(chǔ)分塊組成存儲(chǔ)分塊鏈;并且,每個(gè)存儲(chǔ)分塊對(duì)應(yīng)的地址指針信息包括分塊首地址用于指向存儲(chǔ)分塊在存儲(chǔ)器存儲(chǔ)空間中的位置;鏈接指針用于指向該存儲(chǔ)分塊鏈接的下一個(gè)存儲(chǔ)分塊的指針信息;鏈尾標(biāo)記單獨(dú)設(shè)置的標(biāo)志位,當(dāng)存儲(chǔ)分塊為鏈尾時(shí),該標(biāo)記有效;或者當(dāng)存儲(chǔ)分塊為鏈尾時(shí),將鏈接指針設(shè)置為特定值作為鏈尾標(biāo)記。
3.根據(jù)權(quán)利要求1所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,所述的步驟B還包括將為所述數(shù)據(jù)存儲(chǔ)需求分配的一個(gè)或多個(gè)存儲(chǔ)分塊基于存儲(chǔ)分塊的鏈接指針信息組成的數(shù)據(jù)存儲(chǔ)分塊鏈,為所述的數(shù)據(jù)存儲(chǔ)分塊鏈建立數(shù)據(jù)存儲(chǔ)分塊鏈?zhǔn)孜仓羔槺?,表中記錄著所述?shù)據(jù)存儲(chǔ)分塊鏈的首尾指針信息。
4.根據(jù)權(quán)利要求1、2或3述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,所述的步驟B還包括當(dāng)為所述的數(shù)據(jù)存儲(chǔ)需求分配的數(shù)據(jù)存儲(chǔ)分塊鏈無法滿足數(shù)據(jù)存儲(chǔ)需求時(shí),則繼續(xù)為所述的數(shù)據(jù)存儲(chǔ)需求分配新的存儲(chǔ)分塊,新的存儲(chǔ)分塊串到已有的數(shù)據(jù)存儲(chǔ)分塊鏈的鏈尾,并修改數(shù)據(jù)存儲(chǔ)分塊鏈?zhǔn)孜仓羔槺硇畔ⅰ?br>
5.根據(jù)權(quán)利要求1、2或3所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,所述的步驟C包括當(dāng)所述的數(shù)據(jù)存儲(chǔ)需求需要存儲(chǔ)的數(shù)據(jù)量減少或不再需要進(jìn)行數(shù)據(jù)的存儲(chǔ)時(shí),則所述的數(shù)據(jù)存儲(chǔ)分塊鏈中的部分或全部分塊確定無需存儲(chǔ)數(shù)據(jù)。
6.根據(jù)權(quán)利要求1、2或3所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,所述的步驟C還包括將釋放的存儲(chǔ)分塊串到空閑存儲(chǔ)分塊鏈的鏈尾,并將空閑存儲(chǔ)分塊鏈對(duì)應(yīng)的地址信息中該空閑分塊的鏈尾標(biāo)記設(shè)置為有效,將原鏈尾空閑分塊的鏈尾標(biāo)記設(shè)置為無效。
7.根據(jù)權(quán)利要求1、2或3所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,該方法還包括根據(jù)數(shù)據(jù)存儲(chǔ)需求的大小,預(yù)先為通信系統(tǒng)中的各業(yè)務(wù)通道分配相應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈。
8.根據(jù)權(quán)利要求1、2或3所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,該方法還包括當(dāng)需要從所述的數(shù)據(jù)存儲(chǔ)分塊鏈中讀取數(shù)據(jù)時(shí),則需要從該數(shù)據(jù)存儲(chǔ)分塊鏈對(duì)應(yīng)的首尾指針表中獲取其鏈?zhǔn)追謮K的指針信息,進(jìn)行獲得其地址信息,并根據(jù)所述的地址信息讀取各存儲(chǔ)分塊中的數(shù)據(jù)。
9.根據(jù)權(quán)利要求1、2或3所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,所述的數(shù)據(jù)存儲(chǔ)需求包括通信設(shè)備的芯片中已經(jīng)配置的業(yè)務(wù)通道和新增加的業(yè)務(wù)通道的數(shù)據(jù)存儲(chǔ)需求。
10.根據(jù)權(quán)利要求9所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,步驟A所述的存儲(chǔ)分塊對(duì)應(yīng)的地址指針信息可以保存于芯片內(nèi)或外部存儲(chǔ)器中。
11.根據(jù)權(quán)利要求9所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,當(dāng)業(yè)務(wù)通道的數(shù)據(jù)需要分優(yōu)先級(jí)存儲(chǔ)時(shí),該方法包括D、確定各業(yè)務(wù)通道待存儲(chǔ)數(shù)據(jù)報(bào)文的優(yōu)先級(jí)別,并為級(jí)別相同的報(bào)文分配相應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈分別進(jìn)行數(shù)據(jù)的存儲(chǔ);E、當(dāng)讀取數(shù)據(jù)時(shí),根據(jù)數(shù)據(jù)存儲(chǔ)分塊鏈存儲(chǔ)報(bào)文的優(yōu)先級(jí)別由高優(yōu)先級(jí)到低優(yōu)先級(jí)依次對(duì)相應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈進(jìn)行讀取數(shù)據(jù)操作。
12.根據(jù)權(quán)利要求11所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于所述的步驟D還包括為所述的數(shù)據(jù)存儲(chǔ)分塊鏈設(shè)置相應(yīng)的優(yōu)先級(jí)標(biāo)識(shí);并且,所述的步驟E還包括當(dāng)讀取數(shù)據(jù)時(shí),根據(jù)所述的優(yōu)先級(jí)標(biāo)識(shí)依次讀取各數(shù)據(jù)存儲(chǔ)分塊鏈中的數(shù)據(jù)。
13.根據(jù)權(quán)利要求9所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,當(dāng)業(yè)務(wù)通道的數(shù)據(jù)需要分優(yōu)先級(jí)存儲(chǔ)時(shí),該方法包括F、確定待存儲(chǔ)數(shù)據(jù)報(bào)文的優(yōu)先級(jí)別,并將所述數(shù)據(jù)報(bào)文按照優(yōu)先級(jí)別順序存儲(chǔ)于該業(yè)務(wù)通道對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)分塊鏈中;G、當(dāng)進(jìn)行數(shù)據(jù)讀取時(shí),獲取存儲(chǔ)高優(yōu)先級(jí)別報(bào)文的存儲(chǔ)分塊的首地址信息,并依次從數(shù)據(jù)存儲(chǔ)分塊鏈中讀取數(shù)據(jù)。
14.根據(jù)權(quán)利要求13所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,所述的步驟F進(jìn)一步包括建立優(yōu)先級(jí)數(shù)據(jù)存儲(chǔ)分塊鏈,鏈中的存儲(chǔ)分塊對(duì)應(yīng)的各首地址指針表項(xiàng)中分別設(shè)置有優(yōu)先級(jí)標(biāo)識(shí),設(shè)置數(shù)據(jù)存儲(chǔ)分塊鏈?zhǔn)孜仓羔樦赶蛟撴湣?br>
15.根據(jù)權(quán)利要求14所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,所述的步驟F進(jìn)一步包括為待存儲(chǔ)數(shù)據(jù)報(bào)文從存儲(chǔ)分塊鏈中分配空閑的存儲(chǔ)分塊;查找所述優(yōu)先級(jí)數(shù)據(jù)存儲(chǔ)分塊鏈中各存儲(chǔ)分塊對(duì)應(yīng)的優(yōu)先級(jí)標(biāo)識(shí),并根據(jù)待存儲(chǔ)數(shù)據(jù)報(bào)文的優(yōu)先級(jí)及查找到的優(yōu)先級(jí)標(biāo)識(shí)確定存儲(chǔ)該報(bào)文的存儲(chǔ)分塊在優(yōu)先級(jí)數(shù)據(jù)存儲(chǔ)分塊鏈中的位置;將所述的存儲(chǔ)分塊串入優(yōu)先級(jí)數(shù)據(jù)存儲(chǔ)分塊鏈中確定的位置上。
16.根據(jù)權(quán)利要求13所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,所述的步驟F還包括在系統(tǒng)初始化時(shí),將由所有的存儲(chǔ)分塊串成的一條存儲(chǔ)分塊鏈的每一個(gè)首地址指針表項(xiàng)中設(shè)置有用于承載優(yōu)先級(jí)標(biāo)識(shí)的優(yōu)先級(jí)別域,且均初始化設(shè)置為最低優(yōu)先級(jí);當(dāng)需要存儲(chǔ)數(shù)據(jù)時(shí),從存儲(chǔ)分塊鏈中為該數(shù)據(jù)分配空閑的存儲(chǔ)分塊,并通過修改所述存儲(chǔ)分塊對(duì)應(yīng)首地址指針表項(xiàng)內(nèi)容將其串入優(yōu)先級(jí)數(shù)據(jù)存儲(chǔ)分塊鏈中。
17.根據(jù)權(quán)利要求16所述的動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法,其特征在于,所述的優(yōu)先級(jí)數(shù)據(jù)存儲(chǔ)分塊鏈中的存儲(chǔ)于同一個(gè)存儲(chǔ)分塊的報(bào)文均應(yīng)屬于同一個(gè)優(yōu)先級(jí)別。
全文摘要
本發(fā)明涉及一種動(dòng)態(tài)共享存儲(chǔ)器存儲(chǔ)空間的實(shí)現(xiàn)方法。該方法主要包括首先,將存儲(chǔ)器的存儲(chǔ)空間分成若干個(gè)存儲(chǔ)分塊,并為每個(gè)存儲(chǔ)分塊分配對(duì)應(yīng)的地址指針信息,串成存儲(chǔ)分塊鏈;然后,在存儲(chǔ)數(shù)據(jù)時(shí),動(dòng)態(tài)為其分配一條由一個(gè)或多個(gè)存儲(chǔ)分塊基于所述地址指針信息組成的數(shù)據(jù)存儲(chǔ)分塊鏈進(jìn)行數(shù)據(jù)的存儲(chǔ);并且,在數(shù)據(jù)存儲(chǔ)分塊鏈中的存儲(chǔ)分塊無需存儲(chǔ)數(shù)據(jù)時(shí),將其釋放回存儲(chǔ)分塊鏈中。本發(fā)明所提供的對(duì)RAM空間進(jìn)行分塊及分塊動(dòng)態(tài)串鏈實(shí)現(xiàn)存儲(chǔ)器空間共享的方法,極大地提高了RAM空間的利用;特別在處理多個(gè)通道數(shù)據(jù)存儲(chǔ)的場(chǎng)合,理論上每個(gè)通道都可以使用整個(gè)RAM空間。因此,本發(fā)明可以用于基于任何需要的對(duì)存儲(chǔ)器進(jìn)行訪問管理的應(yīng)用。
文檔編號(hào)G06F12/02GK1855881SQ20051006658
公開日2006年11月1日 申請(qǐng)日期2005年4月28日 優(yōu)先權(quán)日2005年4月28日
發(fā)明者潘劍鋒, 涂君, 柳精偉, 雷春 申請(qǐng)人:華為技術(shù)有限公司