專(zhuān)利名稱:一種dsp數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信號(hào)處理技術(shù)領(lǐng)域,尤其涉及一種DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法。
背景技術(shù):
隨著嵌入式實(shí)時(shí)系統(tǒng)在各個(gè)領(lǐng)域的廣泛應(yīng)用,嵌入式軟件的開(kāi)發(fā)也受到越來(lái)越多 的矚目。在滿足系統(tǒng)實(shí)時(shí)性要求的前提下,如何提高內(nèi)存分配的快速性、可靠性和高效性, 是嵌入式軟件系統(tǒng)面臨的一個(gè)重大問(wèn)題。內(nèi)存分配的快速性從嵌入式系統(tǒng)對(duì)實(shí)時(shí)性的要求 出發(fā),要求內(nèi)存在分配過(guò)程中盡可能的快,因此在嵌入式系統(tǒng)中,不可能采用通用操作系統(tǒng) 中復(fù)雜而繁瑣的內(nèi)存分配策略,一般都采用簡(jiǎn)單、快速的內(nèi)存分配方案;內(nèi)存分配的可靠性 則要求內(nèi)存分配的請(qǐng)求必須得到滿足;而內(nèi)存分配的高效性,則要求內(nèi)存分配盡可能地減 少浪費(fèi)。實(shí)時(shí)性通常要求嵌入式系統(tǒng)具有強(qiáng)大的并行計(jì)算能力與足夠的數(shù)據(jù)吞吐量,通常 由多片專(zhuān)用DSP構(gòu)成高效互聯(lián)的并行機(jī)來(lái)實(shí)現(xiàn)。而通用性就意味著系統(tǒng)處理的數(shù)據(jù)或?qū)ο?的大小及數(shù)目是動(dòng)態(tài)可變的,要求動(dòng)態(tài)分配DSP數(shù)據(jù)區(qū)。在沒(méi)有通用操作系統(tǒng)支撐的DSP 上,編制的應(yīng)用軟件很難管理硬件資源,一般的DSP應(yīng)用軟件與底層硬件緊耦合,與底層硬 件緊耦合的DSP —般應(yīng)用軟件則要求在設(shè)計(jì)時(shí)必須確定各種數(shù)據(jù)或?qū)ο笤诖鎯?chǔ)器中的分 布,無(wú)法適應(yīng)動(dòng)態(tài)的變化,無(wú)擴(kuò)展通用性。目前,一般的嵌入式系統(tǒng)采用的內(nèi)存管理方法通常是在設(shè)計(jì)時(shí)將內(nèi)存分成若干個(gè) 內(nèi)存區(qū),每個(gè)內(nèi)存區(qū)中的多個(gè)內(nèi)存塊大小相同,不同內(nèi)存區(qū)中的內(nèi)存塊的大小不同,并且不 同內(nèi)存區(qū)中的內(nèi)存塊的大小滿足k*2n,其中,η和k為自然數(shù)。這種方法通常存在以下缺占.1、各內(nèi)存區(qū)域的大小是預(yù)先估計(jì)得到的,與應(yīng)用的數(shù)據(jù)塊大小不匹配,應(yīng)用需要 申請(qǐng)內(nèi)存時(shí),往往需要根據(jù)所申請(qǐng)內(nèi)存的大小搜索各內(nèi)存區(qū),從中找到大小合適的內(nèi)存塊, 因而會(huì)產(chǎn)生內(nèi)存碎片。2、由于內(nèi)存區(qū)中的內(nèi)存塊的大小與應(yīng)用的數(shù)據(jù)塊大小不匹配,當(dāng)所申請(qǐng)的內(nèi)存塊 小于內(nèi)存區(qū)中空閑塊時(shí),將合并小內(nèi)存塊;當(dāng)所申請(qǐng)的內(nèi)存塊大于內(nèi)存區(qū)中空閑塊時(shí),將分 割大內(nèi)存塊,因此,內(nèi)存申請(qǐng)效率低下。因此,亟待提供一種DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法以克服上述缺陷。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題在于提供一種DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法,該方法可以根 據(jù)實(shí)際應(yīng)用的需要?jiǎng)討B(tài)管理DSP的內(nèi)存數(shù)據(jù)區(qū),高效且沒(méi)有內(nèi)存碎片。為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法,其包括以 下步驟根據(jù)DSP節(jié)點(diǎn)上對(duì)象數(shù)據(jù)的類(lèi)型和每類(lèi)對(duì)象數(shù)據(jù)的存儲(chǔ)需求將DSP數(shù)據(jù)區(qū)的地址 空間分區(qū),每個(gè)分區(qū)對(duì)應(yīng)一個(gè)內(nèi)存資源對(duì)象;
在每個(gè)所述內(nèi)存資源對(duì)象中創(chuàng)建對(duì)象數(shù)據(jù)池,同一所述對(duì)象數(shù)據(jù)池中的數(shù)據(jù)塊大 小相同且所述數(shù)據(jù)塊的大小與存入所述對(duì)象數(shù)據(jù)池的對(duì)象數(shù)據(jù)的存儲(chǔ)需求相應(yīng);建立所述分區(qū)與對(duì)應(yīng)的所述對(duì)象數(shù)據(jù)池的關(guān)聯(lián)并初始化所述對(duì)象數(shù)據(jù)池的控制 信息;以及執(zhí)行所述對(duì)象數(shù)據(jù)池中的數(shù)據(jù)塊的分配與釋放。與現(xiàn)有技術(shù)相比,本發(fā)明的DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法根據(jù)需要?jiǎng)澐諨SP內(nèi)存數(shù)據(jù) 區(qū),系統(tǒng)執(zhí)行時(shí),可以按需動(dòng)態(tài)分布對(duì)象數(shù)據(jù),適應(yīng)通用性的需求。并且,由于將不同的對(duì)象 數(shù)據(jù)分類(lèi)存放,每一類(lèi)的數(shù)據(jù)池結(jié)構(gòu)統(tǒng)一,減少了對(duì)象數(shù)據(jù)的存儲(chǔ)時(shí)間,有效提高了系統(tǒng)運(yùn) 行的效率。此外,由于是根據(jù)應(yīng)用中的各類(lèi)對(duì)象數(shù)據(jù)的存儲(chǔ)需求確定數(shù)據(jù)塊的大小,也就是 說(shuō),數(shù)據(jù)塊的大小與應(yīng)用需求相匹配,數(shù)據(jù)塊不需要分割與合并的操作,因而對(duì)象數(shù)據(jù)池中 不會(huì)產(chǎn)生內(nèi)存碎片,DSP數(shù)據(jù)區(qū)的內(nèi)存利用率高。再者,先將DSP數(shù)據(jù)區(qū)的空間地址分區(qū)、 創(chuàng)建對(duì)象數(shù)據(jù)池,然后再建立所述分區(qū)和所述對(duì)象數(shù)據(jù)池之間的聯(lián)系,這樣,內(nèi)存資源和對(duì) 象數(shù)據(jù)池的管理可以獨(dú)立變化,便于在各種類(lèi)型DSP芯片的地址空間或者某個(gè)DSP芯片的 任何地址區(qū)間中創(chuàng)建所需的對(duì)象數(shù)據(jù)池。優(yōu)選地,建立所述分區(qū)與對(duì)應(yīng)的所述對(duì)象數(shù)據(jù)池的關(guān)聯(lián)并初始化所述對(duì)象數(shù)據(jù)池 的控制信息的步驟具體包括將所述對(duì)象數(shù)據(jù)池的數(shù)據(jù)結(jié)構(gòu)定義為連續(xù)的數(shù)據(jù)塊鏈表并建 立數(shù)據(jù)池索引表,所述對(duì)象數(shù)據(jù)池的控制信息包括鏈表頭和數(shù)據(jù)塊頭,所述鏈表頭用于存 儲(chǔ)相應(yīng)的對(duì)象數(shù)據(jù)池中已分配數(shù)據(jù)塊存儲(chǔ)空間指針、相應(yīng)的對(duì)象數(shù)據(jù)池中空閑數(shù)據(jù)塊存儲(chǔ) 空間指針及對(duì)象數(shù)據(jù)池中剩余數(shù)據(jù)塊的個(gè)數(shù),所述數(shù)據(jù)塊頭存儲(chǔ)有對(duì)應(yīng)數(shù)據(jù)塊的大小、數(shù) 據(jù)指針以及下一個(gè)數(shù)據(jù)塊的指針。采用連續(xù)的數(shù)據(jù)塊鏈表表示對(duì)象數(shù)據(jù)池,便于實(shí)現(xiàn)多個(gè) 對(duì)象數(shù)據(jù)池的管理,提高存儲(chǔ)效率。兩級(jí)的索引結(jié)構(gòu)可以進(jìn)一步加快數(shù)據(jù)塊的分配。優(yōu)選地,所述DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法還包括將位圖與所述對(duì)象數(shù)據(jù)池相關(guān)聯(lián), 用于表示相應(yīng)的對(duì)象數(shù)據(jù)池的空閑或非空閑狀態(tài),以便于非正常使用時(shí)能快速返回錯(cuò)誤信 肩、ο優(yōu)選地,所述執(zhí)行所述對(duì)象數(shù)據(jù)池中的數(shù)據(jù)塊的分配與釋放的步驟具體為當(dāng)應(yīng) 用申請(qǐng)數(shù)據(jù)塊時(shí),根據(jù)應(yīng)用的對(duì)象數(shù)據(jù)的類(lèi)型搜索所述與對(duì)象數(shù)據(jù)池相關(guān)聯(lián)的位圖及其鏈 表指針,找到相應(yīng)的對(duì)象數(shù)據(jù)池;將相應(yīng)的對(duì)象數(shù)據(jù)池中空閑數(shù)據(jù)塊存儲(chǔ)空間指針指向的 數(shù)據(jù)塊的地址返回給應(yīng)用,并將該數(shù)據(jù)塊加入已分配數(shù)據(jù)塊存儲(chǔ)空間;以及在對(duì)應(yīng)數(shù)據(jù)塊 中存入對(duì)象數(shù)據(jù),并修改所述鏈表頭和數(shù)據(jù)塊頭中的控制信息;而當(dāng)釋放數(shù)據(jù)塊時(shí),將相應(yīng) 的數(shù)據(jù)塊歸還至所述對(duì)象數(shù)據(jù)池空閑數(shù)據(jù)塊存儲(chǔ)空間,并修改所述鏈表頭和數(shù)據(jù)塊頭中的 控制信息。優(yōu)選地,所述DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法還包括計(jì)算對(duì)象數(shù)據(jù)幀長(zhǎng),并根據(jù)所述對(duì) 象數(shù)據(jù)幀長(zhǎng)將所述對(duì)象數(shù)據(jù)分配到各個(gè)DSP節(jié)點(diǎn)。通過(guò)以下的描述并結(jié)合附圖,本發(fā)明將變得更加清晰,這些附圖用于解釋本發(fā)明 的實(shí)施例。
圖1為本發(fā)明DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法一個(gè)實(shí)施例的流程示意圖。圖2為圖1所示DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法中的對(duì)象數(shù)據(jù)池的數(shù)據(jù)結(jié)構(gòu)示意圖。
4
圖3為圖1所示DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法中的對(duì)象數(shù)據(jù)池的數(shù)據(jù)池索引結(jié)構(gòu)示意 圖。圖4為以水聲場(chǎng)信號(hào)產(chǎn)生器為例的對(duì)象數(shù)據(jù)池的結(jié)構(gòu)示意圖。
具體實(shí)施例方式現(xiàn)在參考附圖描述本發(fā)明的實(shí)施例,附圖中類(lèi)似的元件標(biāo)號(hào)代表類(lèi)似的元件。如 上所述,本發(fā)明提供了一種DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法,該方法可以根據(jù)實(shí)際應(yīng)用的需要?jiǎng)?態(tài)管理DSP的內(nèi)存數(shù)據(jù)區(qū),高效且沒(méi)有內(nèi)存碎片。下面將結(jié)合附圖詳細(xì)闡述本發(fā)明實(shí)施例的技術(shù)方案。如圖1所示,本實(shí)施例的DSP 數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法包括以下步驟。步驟SlOl 根據(jù)DSP節(jié)點(diǎn)上對(duì)象數(shù)據(jù)的類(lèi)型和每類(lèi)對(duì)象數(shù)據(jù)的存儲(chǔ)需求將DSP數(shù) 據(jù)區(qū)的地址空間分區(qū),每個(gè)分區(qū)對(duì)應(yīng)一個(gè)內(nèi)存資源對(duì)象。所述對(duì)象數(shù)據(jù)的類(lèi)型根據(jù)對(duì)象數(shù) 據(jù)的存儲(chǔ)需求劃分,所述存儲(chǔ)需求即為所需數(shù)據(jù)塊大小和容量。所述DSP節(jié)點(diǎn)是指單獨(dú)的 一塊DSP芯片。由于現(xiàn)有的嵌入式系統(tǒng)通常包括由多片專(zhuān)用DSP構(gòu)成高效互聯(lián)的并行機(jī),所以在 此情況下,在步驟SlOl之前,還包括根據(jù)嵌入式系統(tǒng)的工作參數(shù)計(jì)算對(duì)象數(shù)據(jù)幀長(zhǎng),并根 據(jù)所述對(duì)象數(shù)據(jù)幀長(zhǎng)將所述對(duì)象數(shù)據(jù)分配到各個(gè)DSP節(jié)點(diǎn)。具體的,可以結(jié)合嵌入式系統(tǒng) 所產(chǎn)生的數(shù)據(jù)幀長(zhǎng)和DSP硬件平臺(tái)資源參數(shù)來(lái)將所述對(duì)象數(shù)據(jù)分配到各個(gè)DSP節(jié)點(diǎn)。前述 工作參數(shù)包括采樣頻率和數(shù)據(jù)幀間隔等,所述DSP硬件平臺(tái)資源參數(shù)包括每個(gè)D/A通道板 輸出的通道數(shù)CharmelNum、DSP運(yùn)算板數(shù)DSPNum等。依據(jù)前述兩類(lèi)參數(shù),根據(jù)負(fù)載平衡原 則即可確定入池對(duì)象數(shù)據(jù)在每個(gè)DSP節(jié)點(diǎn)上的分布狀況。所述負(fù)載平衡原則是指在滿足嵌 入式系統(tǒng)實(shí)時(shí)性能前提下,每個(gè)DSP節(jié)點(diǎn)上的計(jì)算負(fù)載平衡。步驟S102 在每個(gè)所述內(nèi)存資源對(duì)象中創(chuàng)建對(duì)象數(shù)據(jù)池,同一所述對(duì)象數(shù)據(jù)池中 的數(shù)據(jù)塊大小相同且所述數(shù)據(jù)塊的大小與存入所述對(duì)象數(shù)據(jù)池的對(duì)象數(shù)據(jù)的存儲(chǔ)需求相應(yīng)。步驟S103 建立所述分區(qū)與對(duì)應(yīng)的所述對(duì)象數(shù)據(jù)池的關(guān)聯(lián)并初始化所述對(duì)象數(shù) 據(jù)池的控制信息。在本實(shí)施例中,該步驟具體為將所述對(duì)象數(shù)據(jù)池的數(shù)據(jù)結(jié)構(gòu)定義為連續(xù)的數(shù)據(jù) 塊鏈表并建立數(shù)據(jù)池索引表,所述對(duì)象數(shù)據(jù)池的控制信息包括鏈表頭Poolhead和數(shù)據(jù)塊 頭head,所述鏈表頭用于存儲(chǔ)相應(yīng)的對(duì)象數(shù)據(jù)池中已分配數(shù)據(jù)塊存儲(chǔ)空間指針pHead、相 應(yīng)的對(duì)象數(shù)據(jù)池中空閑數(shù)據(jù)塊存儲(chǔ)空間指針PBlock及對(duì)象數(shù)據(jù)池中剩余數(shù)據(jù)塊的個(gè)數(shù) iFreeCoimt,所述數(shù)據(jù)塊頭存儲(chǔ)有對(duì)應(yīng)數(shù)據(jù)塊的大小Size、數(shù)據(jù)指針pData以及下一個(gè)數(shù) 據(jù)塊的指針pNext。所述對(duì)象數(shù)據(jù)池的數(shù)據(jù)結(jié)構(gòu)如圖2所示。采用連續(xù)的空閑數(shù)據(jù)塊鏈表 表示對(duì)象數(shù)據(jù)池,便于實(shí)現(xiàn)多個(gè)對(duì)象數(shù)據(jù)池的管理,提高存儲(chǔ)效率。 進(jìn)一步地,如圖3所示,本實(shí)施例的DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法還可以包括將位圖與 所述對(duì)象數(shù)據(jù)池相關(guān)聯(lián),用于表示相應(yīng)的對(duì)象數(shù)據(jù)池的空閑或非空閑狀態(tài)。兩級(jí)的索引結(jié) 構(gòu)可以進(jìn)一步加快數(shù)據(jù)塊的分配和統(tǒng)一管理對(duì)象數(shù)據(jù)池鏈表。 步驟S104 執(zhí)行所述對(duì)象數(shù)據(jù)池中的數(shù)據(jù)塊的分配與釋放。具體的,當(dāng)應(yīng)用申請(qǐng) 數(shù)據(jù)塊時(shí),根據(jù)應(yīng)用的對(duì)象數(shù)據(jù)的類(lèi)型搜索所述與對(duì)象數(shù)據(jù)池相關(guān)聯(lián)的位圖及其鏈表指針,找到相應(yīng)的對(duì)象數(shù)據(jù)池;將相應(yīng)的對(duì)象數(shù)據(jù)池空閑的數(shù)據(jù)塊存儲(chǔ)空間指針指向的數(shù)據(jù) 塊的地址返回給應(yīng)用;以及在對(duì)應(yīng)數(shù)據(jù)塊中存入對(duì)象數(shù)據(jù),并修改所述鏈表頭和數(shù)據(jù)塊頭 中的控制信息。當(dāng)釋放數(shù)據(jù)塊時(shí),將相應(yīng)的數(shù)據(jù)塊歸還至所述對(duì)象數(shù)據(jù)池空閑數(shù)據(jù)塊存儲(chǔ) 空間??梢钥闯?,數(shù)據(jù)塊的申請(qǐng)與釋放均放在所述空閑數(shù)據(jù)塊鏈表的頭部進(jìn)行,可以實(shí)現(xiàn)數(shù) 據(jù)塊的快速分配。本發(fā)明的DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法根據(jù)需要?jiǎng)澐諨SP內(nèi)存數(shù)據(jù)區(qū),系統(tǒng)執(zhí)行時(shí),可 以按需動(dòng)態(tài)分布對(duì)象數(shù)據(jù),適應(yīng)通用性的需求。并且,由于將不同的對(duì)象數(shù)據(jù)分類(lèi)存放,每 一類(lèi)的數(shù)據(jù)池結(jié)構(gòu)統(tǒng)一,減少了對(duì)象數(shù)據(jù)的存儲(chǔ)時(shí)間,有效提高了系統(tǒng)運(yùn)行的效率。此外, 由于是根據(jù)應(yīng)用中的各類(lèi)對(duì)象數(shù)據(jù)的存儲(chǔ)需求確定數(shù)據(jù)塊的大小,也就是說(shuō),數(shù)據(jù)塊的大 小與應(yīng)用需求相匹配,數(shù)據(jù)塊不需要分割與合并的操作,因而對(duì)象數(shù)據(jù)池中不會(huì)產(chǎn)生內(nèi)存 碎片,DSP數(shù)據(jù)區(qū)的內(nèi)存利用率高。再者,先將DSP數(shù)據(jù)區(qū)的空間地址分區(qū)、創(chuàng)建對(duì)象數(shù)據(jù) 池,然后再建立所述分區(qū)和所述對(duì)象數(shù)據(jù)池之間的聯(lián)系,這樣,內(nèi)存資源和對(duì)象數(shù)據(jù)池的管 理可以獨(dú)立變化,便于在各種類(lèi)型DSP芯片的地址空間或者某個(gè)DSP芯片的任何地址區(qū)間 中創(chuàng)建所需的對(duì)象數(shù)據(jù)池。下面以水聲場(chǎng)信號(hào)實(shí)時(shí)產(chǎn)生器為例,詳細(xì)說(shuō)明本發(fā)明的DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方 法。該水聲場(chǎng)信號(hào)實(shí)時(shí)產(chǎn)生器的工作參數(shù)包括采樣頻率fs、水下目標(biāo)個(gè)數(shù)Targ etNum、聲 陣通道數(shù)ArrayNum、每個(gè)對(duì)象的處理時(shí)間和數(shù)據(jù)幀間隔T。則對(duì)象數(shù)據(jù)的幀長(zhǎng)可表示為DL =fsXT。然后由水聲場(chǎng)信號(hào)實(shí)時(shí)產(chǎn)生器的工作參數(shù)確定每一類(lèi)入池對(duì)象數(shù)據(jù)的存儲(chǔ)需求。 有關(guān)的DSP硬件平臺(tái)資源參數(shù)有每個(gè)D/A通道板輸出的基元數(shù)CharmelNum、DSP運(yùn)算板數(shù) DSPNum等。依據(jù)上述兩類(lèi)參數(shù),根據(jù)負(fù)載平衡原則可確定入池對(duì)象數(shù)據(jù)在每個(gè)DSP節(jié)點(diǎn)上 的分布狀況。在本實(shí)施例中,每個(gè)DSP計(jì)算的目標(biāo)個(gè)數(shù)可表示為M = TargetNum/DSPNum,那么 在每個(gè)DSP上必須分布M個(gè)目標(biāo)對(duì)象,因而目標(biāo)對(duì)象數(shù)據(jù)池容量應(yīng)為Size = M0由于每 個(gè)目標(biāo)對(duì)象中又包含4個(gè)聲信號(hào),因而,聲信號(hào)對(duì)象數(shù)據(jù)池容量應(yīng)為Size = 4*M。在每個(gè) 基元的輸出信號(hào)上都要疊加有海洋環(huán)境噪聲,因此需要計(jì)算ArrayNum路的海洋環(huán)境噪聲, 平衡每個(gè)DSP運(yùn)算板的計(jì)算負(fù)載,每個(gè)DSP節(jié)點(diǎn)需要計(jì)算的噪聲路數(shù)為NoiseCharmel = ArrayNum/DSPNum,每路噪聲的數(shù)據(jù)幀長(zhǎng)是DL,因此海洋環(huán)境噪聲數(shù)據(jù)對(duì)象數(shù)據(jù)塊的大小為 NoiseCharmehDL ;由于海洋環(huán)境噪聲又可分為流噪聲、環(huán)境噪聲和海洋背景噪聲,因此對(duì) 象數(shù)據(jù)塊數(shù)為3。由上述DSP運(yùn)算板數(shù)上每個(gè)DSP節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)需求,將DSP數(shù)據(jù)內(nèi)存分區(qū),每 個(gè)區(qū)對(duì)應(yīng)一個(gè)對(duì)象數(shù)據(jù)池。在本實(shí)施例中,DSP數(shù)據(jù)內(nèi)存劃分了 3個(gè)區(qū),對(duì)應(yīng)3個(gè)連續(xù)數(shù)據(jù) 塊鏈表表示的對(duì)象數(shù)據(jù)池,每個(gè)對(duì)象數(shù)據(jù)池的參數(shù)及結(jié)構(gòu)如圖4所示。數(shù)據(jù)池管理器給每 個(gè)數(shù)據(jù)池創(chuàng)建和初始化一個(gè)鏈表頭(Poolhead);給每個(gè)數(shù)據(jù)塊創(chuàng)建一個(gè)數(shù)據(jù)塊頭(head)。 隨后,根據(jù)數(shù)據(jù)區(qū)地址空間的劃分,將每個(gè)數(shù)據(jù)池的起始地址填入數(shù)據(jù)池指針數(shù)組,即建立 分區(qū)和對(duì)象數(shù)據(jù)池的關(guān)聯(lián)。每個(gè)對(duì)象數(shù)據(jù)池初始化后,池中數(shù)據(jù)塊均為空閑數(shù)據(jù)塊,因此 pBlock指向數(shù)據(jù)池中第一個(gè)數(shù)據(jù)塊,而pHead為空。在執(zhí)行數(shù)據(jù)塊的分配時(shí),各個(gè)數(shù)據(jù)池的 分配器從各自的PBlock指向的空閑數(shù)據(jù)塊存儲(chǔ)空間的開(kāi)始分配數(shù)據(jù)塊,已分配的數(shù)據(jù)塊 加入pHead指向的已分配數(shù)據(jù)塊存儲(chǔ)空間中,同時(shí)修改鏈表頭和數(shù)據(jù)塊頭中的控制信息。 本實(shí)施例的水聲場(chǎng)信號(hào)產(chǎn)生器經(jīng)適配接口與聲納對(duì)接后,給聲納提供測(cè)試激勵(lì)。在不改變
6測(cè)試臺(tái)硬件并不重新加載軟件的情況下,成功實(shí)現(xiàn)了 4種不同信號(hào)聲納信號(hào)的產(chǎn)生并饋入 實(shí)際聲納,實(shí)現(xiàn)了面向水聲場(chǎng)信號(hào)產(chǎn)生器應(yīng)用的DSP數(shù)據(jù)區(qū)的動(dòng)態(tài)管理。
權(quán)利要求
一種DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法,其特征在于,包括以下步驟根據(jù)DSP節(jié)點(diǎn)上對(duì)象數(shù)據(jù)的類(lèi)型和每類(lèi)對(duì)象數(shù)據(jù)的存儲(chǔ)需求將DSP數(shù)據(jù)區(qū)的地址空間分區(qū),每個(gè)分區(qū)對(duì)應(yīng)一個(gè)內(nèi)存資源對(duì)象;在每個(gè)所述內(nèi)存資源對(duì)象中創(chuàng)建對(duì)象數(shù)據(jù)池,同一所述對(duì)象數(shù)據(jù)池中的數(shù)據(jù)塊大小相同且所述數(shù)據(jù)塊的大小與存入所述對(duì)象數(shù)據(jù)池的對(duì)象數(shù)據(jù)的存儲(chǔ)需求相應(yīng);建立所述分區(qū)與對(duì)應(yīng)的所述對(duì)象數(shù)據(jù)池的關(guān)聯(lián)并初始化所述對(duì)象數(shù)據(jù)池的控制信息;以及執(zhí)行所述對(duì)象數(shù)據(jù)池中的數(shù)據(jù)塊的分配與釋放。
2.根據(jù)權(quán)利要求1所述的DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法,其特征在于,建立所述分區(qū)與對(duì)應(yīng) 的所述對(duì)象數(shù)據(jù)池的關(guān)聯(lián)并初始化所述對(duì)象數(shù)據(jù)池的控制信息的步驟具體包括將所述對(duì)象數(shù)據(jù)池的數(shù)據(jù)結(jié)構(gòu)定義為連續(xù)的數(shù)據(jù)塊鏈表并建立數(shù)據(jù)池索引表,所述對(duì) 象數(shù)據(jù)池的控制信息包括鏈表頭和數(shù)據(jù)塊頭,所述鏈表頭用于存儲(chǔ)相應(yīng)的對(duì)象數(shù)據(jù)池中已 分配數(shù)據(jù)塊存儲(chǔ)空間指針、相應(yīng)的對(duì)象數(shù)據(jù)池中空閑數(shù)據(jù)塊存儲(chǔ)空間指針及對(duì)象數(shù)據(jù)池中 剩余數(shù)據(jù)塊的個(gè)數(shù),所述數(shù)據(jù)塊頭存儲(chǔ)有對(duì)應(yīng)數(shù)據(jù)塊的大小、數(shù)據(jù)指針以及下一個(gè)數(shù)據(jù)塊 的指針。
3.根據(jù)權(quán)利要求2所述的DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法,其特征在于,還包括將位圖與對(duì)象 數(shù)據(jù)池相關(guān)聯(lián),用于表示相應(yīng)的對(duì)象數(shù)據(jù)池的空閑或非空閑狀態(tài)。
4.根據(jù)權(quán)利要求3所述的DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法,其特征在于,所述執(zhí)行所述對(duì)象數(shù) 據(jù)池中的數(shù)據(jù)塊的分配與釋放的步驟具體為當(dāng)應(yīng)用申請(qǐng)數(shù)據(jù)塊時(shí),根據(jù)應(yīng)用的對(duì)象數(shù)據(jù)的類(lèi)型搜索所述與對(duì)象數(shù)據(jù)池相關(guān)聯(lián)的位 圖及其鏈表指針,找到相應(yīng)的對(duì)象數(shù)據(jù)池;將相應(yīng)的對(duì)象數(shù)據(jù)池空閑數(shù)據(jù)塊存儲(chǔ)空間指針指向的數(shù)據(jù)塊的地址返回給應(yīng)用,并將 該數(shù)據(jù)塊加入已分配數(shù)據(jù)塊存儲(chǔ)空間;以及在對(duì)應(yīng)數(shù)據(jù)塊中存入對(duì)象數(shù)據(jù),并修改所述鏈表頭和塊頭中的控制信息;當(dāng)釋放數(shù)據(jù)塊時(shí),將相應(yīng)的數(shù)據(jù)塊歸還至所述對(duì)象數(shù)據(jù)池空閑數(shù)據(jù)塊存儲(chǔ)空間。
5.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法,其特征在于,當(dāng)所述DSP 節(jié)點(diǎn)為多個(gè)并行時(shí),還包括計(jì)算對(duì)象數(shù)據(jù)幀長(zhǎng),并根據(jù)所述對(duì)象數(shù)據(jù)幀長(zhǎng)將所述對(duì)象數(shù)據(jù) 分配到各個(gè)DSP節(jié)點(diǎn)。
全文摘要
本發(fā)明公開(kāi)了一種DSP數(shù)據(jù)區(qū)動(dòng)態(tài)管理方法,其包括以下步驟根據(jù)DSP節(jié)點(diǎn)上對(duì)象數(shù)據(jù)的類(lèi)型和每類(lèi)對(duì)象數(shù)據(jù)的存儲(chǔ)需求將DSP數(shù)據(jù)區(qū)的地址空間分區(qū),每個(gè)分區(qū)對(duì)應(yīng)一個(gè)內(nèi)存資源對(duì)象;在每個(gè)所述內(nèi)存資源對(duì)象中創(chuàng)建對(duì)象數(shù)據(jù)池,同一所述對(duì)象數(shù)據(jù)池中的數(shù)據(jù)塊大小相同且所述數(shù)據(jù)塊的大小與存入所述對(duì)象數(shù)據(jù)池的對(duì)象數(shù)據(jù)的存儲(chǔ)需求相應(yīng);建立所述分區(qū)與對(duì)應(yīng)的所述對(duì)象數(shù)據(jù)池的關(guān)聯(lián)并初始化所述對(duì)象數(shù)據(jù)池的控制信息;以及執(zhí)行所述對(duì)象數(shù)據(jù)池中的數(shù)據(jù)塊的分配與釋放。該方法可以根據(jù)實(shí)際應(yīng)用的需要?jiǎng)討B(tài)管理DSP的內(nèi)存數(shù)據(jù)區(qū),高效且沒(méi)有內(nèi)存碎片。
文檔編號(hào)G06F12/02GK101950273SQ201010291189
公開(kāi)日2011年1月19日 申請(qǐng)日期2010年9月26日 優(yōu)先權(quán)日2010年9月26日
發(fā)明者姚直象, 幸高翔, 張衛(wèi), 王希敏, 蔡志明, 郭瑞 申請(qǐng)人:中國(guó)人民解放軍海軍工程大學(xué)