Dsp工程的高效運(yùn)行方法及系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種DSP工程的高效運(yùn)行方法及系統(tǒng),涉及DSP工程【技術(shù)領(lǐng)域】,本發(fā)明通過(guò)將待運(yùn)行的工程拆分為兩部分,分別加載至SRAM和SDRAM中,從而給大數(shù)據(jù)量和大型工程的加載提供了可能,并通過(guò)設(shè)置2級(jí)緩存,確保大型工程不但可以加載,而且可以保持和小型工程一樣的處理效率;開(kāi)發(fā)人員可以在此硬件平臺(tái)上,幾乎無(wú)限制的添加程序和大塊數(shù)據(jù),由于片外的理論擴(kuò)展空間可以達(dá)到GB級(jí)別,但DSP芯片對(duì)工程的處理效率不會(huì)因?yàn)镈SP工程中程序和數(shù)據(jù)的添加而減速。
【專(zhuān)利說(shuō)明】DSP工程的高效運(yùn)行方法及系統(tǒng)【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及DSP工程【技術(shù)領(lǐng)域】,特別涉及一種DSP工程的高效運(yùn)行方法及系統(tǒng)?!颈尘凹夹g(shù)】
[0002]DSP芯片,也稱(chēng)數(shù)字信號(hào)處理器,是一種特別適合于進(jìn)行數(shù)字信號(hào)處理運(yùn)算的微處理器,其主要應(yīng)用是實(shí)時(shí)快速地實(shí)現(xiàn)各種數(shù)字信號(hào)處理算法。根據(jù)數(shù)字信號(hào)處理的要求,DSP芯片一般具有如下一些主要特征:在一個(gè)指令周期內(nèi)可完成一次乘法和一次加法;程序和數(shù)據(jù)空間分開(kāi),可以同時(shí)訪(fǎng)問(wèn)指令和數(shù)據(jù);具有低開(kāi)銷(xiāo)或無(wú)開(kāi)銷(xiāo)的循環(huán)和跳轉(zhuǎn)硬件支持;具有在單周期內(nèi)操作的多個(gè)硬件地址產(chǎn)生器;可以并行執(zhí)行多個(gè)操作;支持流水線(xiàn)操作,使取指、譯碼和執(zhí)行等操作可以并行執(zhí)行。
[0003]現(xiàn)有的DSP開(kāi)發(fā)步驟,通常都是先制作PCB開(kāi)發(fā)板,然后利用開(kāi)發(fā)板的聯(lián)合測(cè)試行動(dòng)小組(Joint Test Action Group, JTAG)接口,用仿真器下載編譯好的工程進(jìn)行實(shí)時(shí)的調(diào)試與運(yùn)行。再修改軟件,再調(diào)試,直到達(dá)到預(yù)期要求為止。通常計(jì)算機(jī)與DSP開(kāi)發(fā)板的連接方式如圖1所示,主流的有JTAG接口方式、外圍組件互連(Peripheral ComponentInterconnect,PCI)接口方式,二者選一即可。使用JTAG接口的缺點(diǎn)有:1、連接JTAG接口需要仿真器,仿真器價(jià)格較為昂貴,且極容易損壞,維修繁瑣。2、用JTAG仿真器下載代碼,需要預(yù)先安裝專(zhuān)業(yè)的軟件,需要有一定的DSP開(kāi)發(fā)基礎(chǔ)。3、要加載多個(gè)工程時(shí),容易誤操作。
[0004]為避免JTAG接口的缺點(diǎn),故而有時(shí)會(huì)使用通用的PCI接口,作為計(jì)算機(jī)(PC)與DSP開(kāi)發(fā)板連通的方法。此方法的優(yōu)點(diǎn):1、不需要使用仿真器,節(jié)省費(fèi)用,方便快捷。2、全部操作后臺(tái)運(yùn)行,客戶(hù)不可見(jiàn),不需要客戶(hù)有DSP開(kāi)發(fā)基礎(chǔ)。3、提供方便的用戶(hù)接口(UI),讓用戶(hù)可以直觀(guān)方便的選擇加載某一項(xiàng)工程。但是使用此方法也有弊端:1、如果工程過(guò)大,DSP芯片內(nèi)部存儲(chǔ)空間不夠,不能完全加載整個(gè)工程;2、如果把工程加載在DSP的片外存儲(chǔ)器卿SDRAM)中,DSP芯片不能高速實(shí)時(shí)運(yùn)行程序,導(dǎo)致DSP芯片對(duì)工程的處理效率非常低。
【發(fā)明內(nèi)容】
[0005](一)要解決的技術(shù)問(wèn)題
[0006]本發(fā)明要解決的技術(shù)問(wèn)題是:如何在保證DSP芯片存儲(chǔ)空間的情況下,提高DSP芯片對(duì)工程的處理效率。
[0007](二)技術(shù)方案
[0008]為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種DSP工程的高效運(yùn)行方法,所述方法包括以下步驟:
[0009]S1:將待運(yùn)行的工程中的數(shù)據(jù)段拆分成兩部分,一部分作為片內(nèi)工程,另一部分?jǐn)?shù)據(jù)段和所述待運(yùn)行的工程中的程序段作為片外工程;
[0010]S2:將所述片內(nèi)工程加載至DSP開(kāi)發(fā)板的普通SRAM中,將所述片外工程加載至所述DSP開(kāi)發(fā)板的SDRAM中;[0011]S3:在普通SRAM中劃分預(yù)設(shè)長(zhǎng)度的存儲(chǔ)空間作為2級(jí)緩存;
[0012]S4:所述DSP開(kāi)發(fā)板的DSP核與加載有所述片內(nèi)工程的普通SRAM之間通過(guò)所述DSP開(kāi)發(fā)板的I級(jí)數(shù)據(jù)緩存進(jìn)行數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和所述DSP開(kāi)發(fā)板的I級(jí)程序緩存實(shí)現(xiàn)程序讀取。
[0013]其中,步驟SI中,根據(jù)數(shù)據(jù)類(lèi)型及讀取寫(xiě)入次數(shù)將所述待運(yùn)行的工程中的數(shù)據(jù)段拆分成兩部分。
[0014]其中,步驟S2包括:
[0015]S201:將所述片內(nèi)工程通過(guò)PCI接口加載至所述DSP開(kāi)發(fā)板的普通SRAM中;
[0016]S202:將所述DSP開(kāi)發(fā)板的DSP核暫停運(yùn)行,并開(kāi)啟所述DSP開(kāi)發(fā)板的外部存儲(chǔ)器
接口 ;
[0017]S203:將所述片外工程通過(guò)所述PCI接口和外部存儲(chǔ)器接口加載至所述DSP開(kāi)發(fā)板的SDRAM中;
[0018]S204:將所述DSP開(kāi)發(fā)板的DSP核重新開(kāi)始運(yùn)行。
[0019]其中,步驟S4中,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取包括:
[0020]先在所述2級(jí)緩存中查找待讀取數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待讀取數(shù)據(jù),則從所述SDRAM中查找所述待讀取數(shù)據(jù),由所述SDRAM將所述待讀取數(shù)據(jù)依次通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核;若所述2級(jí)緩存中有所述待讀取數(shù)據(jù),則先失效所述2級(jí)緩存中的所述待讀取數(shù)據(jù),再將所述SDRAM中的所述待讀寫(xiě)數(shù)據(jù)傳輸至所述2級(jí)緩存中,覆蓋原來(lái)所述待讀取數(shù)據(jù)的舊數(shù)據(jù),最后將所述2級(jí)緩存中的新的所述待讀取數(shù)據(jù)通過(guò)所述I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核。
[0021]其中,步驟S4中,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)寫(xiě)入包括:
[0022]所述DSP核為寫(xiě)數(shù)據(jù)操作時(shí),先在所述2級(jí)緩存中查找待寫(xiě)入數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待寫(xiě)入數(shù)據(jù),則從所述SDRAM中查找所述待寫(xiě)入數(shù)據(jù),,由所述SDRAM將所述待寫(xiě)入數(shù)據(jù)傳輸至所述2級(jí)緩存,所述DSP核通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中;若所述2級(jí)緩存中有所述待寫(xiě)入數(shù)據(jù),則所述DSP核直接通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中。
[0023]本發(fā)明還公開(kāi)了一種DSP工程的高效運(yùn)行系統(tǒng),所述系統(tǒng)包括:
[0024]工程拆分模塊,用于將待運(yùn)行的工程中的數(shù)據(jù)段拆分成兩部分,一部分作為片內(nèi)工程,另一部分?jǐn)?shù)據(jù)段和所述待運(yùn)行的工程中的程序段作為片外工程;
[0025]工程加載模塊,用于將所述片內(nèi)工程加載至DSP開(kāi)發(fā)板的普通SRAM中,將所述片外工程加載至所述DSP開(kāi)發(fā)板的SDRAM中;
[0026]緩存劃分模塊,用于在普通SRAM中劃分預(yù)設(shè)長(zhǎng)度的存儲(chǔ)空間作為2級(jí)緩存;
[0027]讀取寫(xiě)入模塊,用于所述DSP開(kāi)發(fā)板的DSP核與加載有所述片內(nèi)工程的普通SRAM之間通過(guò)所述DSP開(kāi)發(fā)板的I級(jí)數(shù)據(jù)緩存進(jìn)行數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和所述DSP開(kāi)發(fā)板的I級(jí)程序緩存實(shí)現(xiàn)程序讀取。
[0028]其中,所述工程拆分模塊中,根據(jù)數(shù)據(jù)類(lèi)型及讀取寫(xiě)入次數(shù)將所述待運(yùn)行的工程中的數(shù)據(jù)段拆分成兩部分。
[0029]其中,所述工程加載模塊包括:
[0030]片內(nèi)工程加載子模塊,用于將所述片內(nèi)工程通過(guò)PCI接口加載至所述DSP開(kāi)發(fā)板的普通SRAM中;
[0031]DSP核暫停子模塊,用于將所述DSP開(kāi)發(fā)板的DSP核暫停工作,并開(kāi)啟所述DSP開(kāi)發(fā)板的外部存儲(chǔ)器接口;
[0032]片外工程加載子模塊,用于將所述片外工程通過(guò)所述PCI接口和外部存儲(chǔ)器接口加載至所述DSP開(kāi)發(fā)板的SDRAM中;
[0033]解除DSP暫停狀態(tài)子模塊,用于將所述DSP開(kāi)發(fā)板的DSP核重新開(kāi)始運(yùn)行。
[0034]其中,所述讀取寫(xiě)入模塊中,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取包括:
[0035]先在所述2級(jí)緩存中查找待讀取數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待讀取數(shù)據(jù),則從所述SDRAM中查找所述待讀取數(shù)據(jù),由所述SDRAM將所述待讀取數(shù)據(jù)依次通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核;若所述2級(jí)緩存中有所述待讀取數(shù)據(jù),則先失效所述2級(jí)緩存中的所述待讀取數(shù)據(jù),再將所述SDRAM中的所述待讀寫(xiě)數(shù)據(jù)傳輸至所述2級(jí)緩存中,覆蓋原來(lái)所述待讀取數(shù)據(jù)的舊數(shù)據(jù),最后將所述2級(jí)緩存中的新的所述待讀取數(shù)據(jù)通過(guò)所述I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核。
[0036]其中,所述讀取寫(xiě)入模塊中,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)寫(xiě)入包括:
[0037]所述DSP核為寫(xiě)數(shù)據(jù)操作時(shí),先在所述2級(jí)緩存中查找待寫(xiě)入數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待寫(xiě)入數(shù)據(jù),則從所述SDRAM中查找所述待寫(xiě)入數(shù)據(jù),由所述SDRAM將所述待寫(xiě)入數(shù)據(jù)傳輸至所述2級(jí)緩存,所述DSP核通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中;若所述2級(jí)緩存中有所述待寫(xiě)入數(shù)據(jù),則所述DSP核直接通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中。
[0038](三)有益效果
[0039]本發(fā)明通過(guò)將待運(yùn)行的工程拆分為兩部分,分別加載至SRAM和SDRAM中,從而給大數(shù)據(jù)量和大型工程的加載提供了可能,并通過(guò)設(shè)置2級(jí)緩存,確保大型工程不但可以加載,而且可以保持和小型工程一樣的處理效率;開(kāi)發(fā)人員可以在此硬件平臺(tái)上,幾乎無(wú)限制的添加程序和大塊數(shù)據(jù),由于片外的理論擴(kuò)展空間可以達(dá)到GB級(jí)別,但DSP芯片對(duì)工程的處理效率不會(huì)因?yàn)镈SP工程中程序和數(shù)據(jù)的添加而減速。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0040]圖1是現(xiàn)有技術(shù)中計(jì)算機(jī)與DSP開(kāi)發(fā)板之間的連接方式示意圖;
[0041]圖2是本發(fā)明一種實(shí)施方式的DSP工程的高效運(yùn)行方法的流程圖;
[0042]圖3是本發(fā)明的方法在加載工程的示意圖;
[0043]圖4是本發(fā)明的方法在數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入的示意圖;[0044]圖5是本發(fā)明一種實(shí)施方式的DSP工程的高效運(yùn)行系統(tǒng)的流程圖。
【具體實(shí)施方式】
[0045]下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的【具體實(shí)施方式】作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說(shuō)明本發(fā)明,但不用來(lái)限制本發(fā)明的范圍。
[0046]圖2是本發(fā)明一種實(shí)施方式的DSP工程的高效運(yùn)行方法的流程圖;參照?qǐng)D2,所述方法包括以下步驟:
[0047]S1:將待運(yùn)行的工程中的數(shù)據(jù)段拆分成兩部分,一部分作為片內(nèi)工程,另一部分?jǐn)?shù)據(jù)段和所述待運(yùn)行的工程中的程序段作為片外工程;
[0048]S2:參照?qǐng)D3,將所述片內(nèi)工程加載至DSP開(kāi)發(fā)板的普通SRAM中,將所述片外工程加載至所述DSP開(kāi)發(fā)板的SDRAM中;
[0049]S3:在普通SRAM中劃分預(yù)設(shè)長(zhǎng)度的存儲(chǔ)空間作為2級(jí)緩存;
[0050]S4:參照?qǐng)D4,所述DSP開(kāi)發(fā)板的DSP核與加載有所述片內(nèi)工程的普通SRAM之間通過(guò)所述DSP開(kāi)發(fā)板的I級(jí)數(shù)據(jù)緩存進(jìn)行數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和所述DSP開(kāi)發(fā)板的I級(jí)程序緩存實(shí)現(xiàn)程序讀取。
[0051]由于數(shù)據(jù)段中有些數(shù)據(jù)類(lèi)型的長(zhǎng)度較小(如int類(lèi)型的數(shù)據(jù))或讀取寫(xiě)入次數(shù)(即待運(yùn)行的工程中的讀取寫(xiě)入次數(shù))較高,為提高DSP工程的運(yùn)行效率,可將該部分?jǐn)?shù)據(jù)段作為片內(nèi)工程,將剩下的數(shù)據(jù)段和程序段作為片外工程,優(yōu)選地,步驟SI中,根據(jù)數(shù)據(jù)類(lèi)型及讀取寫(xiě)入次數(shù)將所述待運(yùn)行的工程中的數(shù)據(jù)段拆分成兩部分。
[0052]參照?qǐng)D3,為實(shí)現(xiàn)片內(nèi)工程和片外工程的加載,優(yōu)選地,步驟S2包括:
[0053]S201:將所述片內(nèi)工程通過(guò)PCI接口加載至所述DSP開(kāi)發(fā)板的普通SRAM中;
[0054]S202:將所述DSP開(kāi)發(fā)板的DSP核暫停運(yùn)行,并開(kāi)啟所述DSP開(kāi)發(fā)板的外部存儲(chǔ)器接口 ;
[0055]S203:將所述片外工程通過(guò)所述PCI接口和外部存儲(chǔ)器接口加載至所述DSP開(kāi)發(fā)板的SDRAM中;
[0056]S204:將所述DSP開(kāi)發(fā)板的DSP核重新開(kāi)始運(yùn)行。
[0057]參照?qǐng)D4,由于2級(jí)緩存中的數(shù)據(jù)和所述SDRAM的數(shù)據(jù)可能為出現(xiàn)不一致,為保證其一致性,優(yōu)選地,步驟S4中,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取包括:
[0058]先在所述2級(jí)緩存中查找待讀取數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待讀取數(shù)據(jù),則從所述SDRAM中查找所述待讀取數(shù)據(jù),由所述SDRAM將所述待讀取數(shù)據(jù)依次通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核;若所述2級(jí)緩存中有所述待讀取數(shù)據(jù),則先失效所述2級(jí)緩存中的所述待讀取數(shù)據(jù),再將所述SDRAM中的所述待讀寫(xiě)數(shù)據(jù)傳輸至所述2級(jí)緩存中,覆蓋原來(lái)所述待讀取數(shù)據(jù)的舊數(shù)據(jù),最后將所述2級(jí)緩存中的新的所述待讀取數(shù)據(jù)通過(guò)所述I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核。
[0059]由于2級(jí)緩存中的數(shù)據(jù)和所述SDRAM的數(shù)據(jù)可能為出現(xiàn)不一致,為保證其一致性,優(yōu)選地,步驟S4中,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)寫(xiě)入包括:[0060]所述DSP核為寫(xiě)數(shù)據(jù)操作時(shí),先在所述2級(jí)緩存中查找待寫(xiě)入數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待寫(xiě)入數(shù)據(jù),則從所述SDRAM中查找所述待寫(xiě)入數(shù)據(jù),由所述SDRAM將所述待寫(xiě)入數(shù)據(jù)傳輸至所述2級(jí)緩存,所述DSP核通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中;若所述2級(jí)緩存中有所述待寫(xiě)入數(shù)據(jù),則所述DSP核直接通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中。
[0061]實(shí)施例
[0062]下面以一個(gè)具體的實(shí)施例來(lái)說(shuō)明本發(fā)明,但不限定本發(fā)明的保護(hù)范圍。本實(shí)施例的方法包括:
[0063]步驟一:將待運(yùn)行的工程(將工程生成的.0ut文件先用德州儀器公司提供的工具軟件hex6x.exe變?yōu)槭M(jìn)制的hex文件,hex文件即為所述待運(yùn)行的工程)中的數(shù)據(jù)段拆分(拆分操作在鏈接文件.cmd文件中進(jìn)行)成兩部分,一部分作為片內(nèi)工程(數(shù)據(jù)長(zhǎng)度較小或讀取寫(xiě)入次數(shù)較多的數(shù)據(jù)段,記為in_chip.dat),另一部分?jǐn)?shù)據(jù)段和所述待運(yùn)行的工程中的程序段作為片外工程(記為out_chip.dat);其中,片內(nèi)工程在hex文件中的起始地址為0x00000000,片外工程在hex文件中的起始地址為0x80000000。
[0064]步驟二:參照?qǐng)D3,由于片內(nèi)工程中的數(shù)據(jù)會(huì)經(jīng)常調(diào)用,為了保證這部分?jǐn)?shù)據(jù)的讀寫(xiě)速度,不影響整個(gè)工程的速度,故而將所述片內(nèi)工程通過(guò)PCI接口加載至所述DSP開(kāi)發(fā)板的普通SRAM中;
[0065]步驟三:為順利寫(xiě)入片外工程,需要先將所述DSP開(kāi)發(fā)板的DSP核暫停運(yùn)行,并開(kāi)啟所述DSP開(kāi)發(fā)板的外部存儲(chǔ)器接口 EMIF(本實(shí)施例中,通過(guò)PCI接口修改EMIF控制寄存器的值來(lái)開(kāi)啟);
[0066]步驟四:由于片外工程中的數(shù)據(jù)很少讀寫(xiě),對(duì)處理效率有輕微的下降,但是SDRAM的空間大,可以放更多的數(shù)據(jù),故而將所述片外工程通過(guò)所述PCI接口、增強(qiáng)型直接內(nèi)存存取(EDMA)控制器和外部存儲(chǔ)器接口 EMIF加載至所述DSP開(kāi)發(fā)板的SDRAM中;
[0067]步驟五:將所述DSP開(kāi)發(fā)板的DSP核重新開(kāi)始運(yùn)行(本實(shí)施例中,通過(guò)PCI控制寄存器向DSP開(kāi)發(fā)板發(fā)中斷來(lái)喚醒DSP核)。
[0068]步驟六:工程開(kāi)始正常運(yùn)行,在未被使用的普通SRAM中劃分預(yù)設(shè)長(zhǎng)度的存儲(chǔ)空間作為2級(jí)緩存;
[0069]本步驟中,先通過(guò)德州儀器提供的CSL庫(kù)文件在普通SRAM中開(kāi)辟預(yù)設(shè)長(zhǎng)度的2級(jí)緩存,再用德州儀器提供的CSL庫(kù)文件打開(kāi)SDRAM的cache使能,這樣,SDRAM中的數(shù)據(jù)和程序就可以緩存至所述2級(jí)緩存中,
[0070]步驟七:所述DSP開(kāi)發(fā)板的DSP核與加載有所述片內(nèi)工程的普通SRAM之間通過(guò)所述DSP開(kāi)發(fā)板的I級(jí)數(shù)據(jù)緩存進(jìn)行數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和所述DSP開(kāi)發(fā)板的I級(jí)程序緩存實(shí)現(xiàn)程序讀取。
[0071 ] 步驟七中,參照?qǐng)D4,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)寫(xiě)入包括:
[0072]所述DSP核為寫(xiě)數(shù)據(jù)操作時(shí),先在所述2級(jí)緩存中查找待寫(xiě)入數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待寫(xiě)入數(shù)據(jù),則從所述SDRAM中查找所述待寫(xiě)入數(shù)據(jù),由所述SDRAM將所述待寫(xiě)入數(shù)據(jù)傳輸至所述2級(jí)緩存(通過(guò)EMIF和EDMA控制器進(jìn)行傳輸),所述DSP核通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中(通過(guò)EMIF和EDMA控制器進(jìn)行回寫(xiě));若所述2級(jí)緩存中有所述待寫(xiě)入數(shù)據(jù),則所述DSP核直接通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中。
[0073]步驟七中,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取包括:
[0074]先在所述2級(jí)緩存中查找待讀取數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待讀取數(shù)據(jù),則從所述SDRAM中查找所述待讀取數(shù)據(jù),由所述SDRAM將所述待讀取數(shù)據(jù)依次通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核;若所述2級(jí)緩存中有所述待讀取數(shù)據(jù),則先失效所述2級(jí)緩存中的所述待讀取數(shù)據(jù),再將所述SDRAM中的所述待讀寫(xiě)數(shù)據(jù)傳輸至所述2級(jí)緩存中,覆蓋原來(lái)所述待讀取數(shù)據(jù)的舊數(shù)據(jù),最后將所述2級(jí)緩存中的新的所述待讀取數(shù)據(jù)通過(guò)所述I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核。
[0075]步驟七中,由于SDRAM中的程序段只讀不寫(xiě),故而無(wú)需維護(hù)一致性,DSP工程可根據(jù)上述方法進(jìn)行高效運(yùn)行。
[0076]本發(fā)明還公開(kāi)了一種DSP工程的高效運(yùn)行系統(tǒng),參照?qǐng)D5,所述系統(tǒng)包括:
[0077]工程拆分模塊,用于將待運(yùn)行的工程中的數(shù)據(jù)段拆分成兩部分,一部分作為片內(nèi)工程,另一部分?jǐn)?shù)據(jù)段和所述待運(yùn)行的工程中的程序段作為片外工程;
[0078]工程加載模塊,用于將所述片內(nèi)工程加載至DSP開(kāi)發(fā)板的普通SRAM中,將所述片外工程加載至所述DSP開(kāi)發(fā)板的SDRAM中;
[0079]緩存劃分模塊,用于在普通SRAM中劃分預(yù)設(shè)長(zhǎng)度的存儲(chǔ)空間作為2級(jí)緩存;
[0080]讀取寫(xiě)入模塊,用于所述DSP開(kāi)發(fā)板的DSP核與加載有所述片內(nèi)工程的普通SRAM之間通過(guò)所述DSP開(kāi)發(fā)板的I級(jí)數(shù)據(jù)緩存進(jìn)行數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和所述DSP開(kāi)發(fā)板的I級(jí)程序緩存實(shí)現(xiàn)程序讀取(即工程已經(jīng)正常高效運(yùn)行)。
[0081]優(yōu)選地,所述工程拆分模塊中,根據(jù)數(shù)據(jù)類(lèi)型及讀取寫(xiě)入次數(shù)將所述待運(yùn)行的工程中的數(shù)據(jù)段拆分成兩部分。
[0082]優(yōu)選地,所述工程加載模塊包括:
[0083]片內(nèi)工程加載子模塊,用于將所述片內(nèi)工程通過(guò)PCI接口加載至所述DSP開(kāi)發(fā)板的普通SRAM中;
[0084]DSP核暫停子模塊,用于將所述DSP開(kāi)發(fā)板的DSP核暫停工作,并開(kāi)啟所述DSP開(kāi)發(fā)板的外部存儲(chǔ)器接口;
[0085]片外工程加載子模塊,用于將所述片外工程通過(guò)所述PCI接口和外部存儲(chǔ)器接口加載至所述DSP開(kāi)發(fā)板的SDRAM中;
[0086]解除DSP暫停狀態(tài)子模塊,用于將所述DSP開(kāi)發(fā)板的DSP核重新開(kāi)始運(yùn)行。
[0087]優(yōu)選地,所述讀取寫(xiě)入模塊中,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取包括:
[0088]先在所述2級(jí)緩存中查找待讀取數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待讀取數(shù)據(jù),則從所述SDRAM中查找所述待讀取數(shù)據(jù),由所述SDRAM將所述待讀取數(shù)據(jù)依次通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核;若所述2級(jí)緩存中有所述待讀取數(shù)據(jù),則先失效所述2級(jí)緩存中的所述待讀取數(shù)據(jù),再將所述SDRAM中的所述待讀寫(xiě)數(shù)據(jù)傳輸至所述2級(jí)緩存中,覆蓋原來(lái)所述待讀取數(shù)據(jù)的舊數(shù)據(jù),最后將所述2級(jí)緩存中的新的所述待讀取數(shù)據(jù)通過(guò)所述I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核。
[0089]優(yōu)選地,所述讀取寫(xiě)入模塊中,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)寫(xiě)入包括:
[0090]所述DSP核為寫(xiě)數(shù)據(jù)操作時(shí),先在所述2級(jí)緩存中查找待寫(xiě)入數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待寫(xiě)入數(shù)據(jù),則從所述SDRAM中查找所述待寫(xiě)入數(shù)據(jù),由所述SDRAM將所述待寫(xiě)入數(shù)據(jù)傳輸至所述2級(jí)緩存,所述DSP核通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中;若所述2級(jí)緩存中有所述待寫(xiě)入數(shù)據(jù),則所述DSP核直接通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中。
[0091]以上實(shí)施方式僅用于說(shuō)明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)【技術(shù)領(lǐng)域】的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專(zhuān)利保護(hù)范圍應(yīng)由權(quán)利要求限定。
【權(quán)利要求】
1.一種DSP工程的高效運(yùn)行方法,其特征在于,所述方法包括以下步驟: S1:將待運(yùn)行的工程中的數(shù)據(jù)段拆分成兩部分,一部分作為片內(nèi)工程,另一部分?jǐn)?shù)據(jù)段和所述待運(yùn)行的工程中的程序段作為片外工程; S2:將所述片內(nèi)工程加載至DSP開(kāi)發(fā)板的普通SRAM中,將所述片外工程加載至所述DSP開(kāi)發(fā)板的SDRAM中; 53:在普通SRAM中劃分預(yù)設(shè)長(zhǎng)度的存儲(chǔ)空間作為2級(jí)緩存; 54:所述DSP開(kāi)發(fā)板的DSP核與加載有所述片內(nèi)工程的普通SRAM之間通過(guò)所述DSP開(kāi)發(fā)板的I級(jí)數(shù)據(jù)緩存進(jìn)行數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和所述DSP開(kāi)發(fā)板的I級(jí)程序緩存實(shí)現(xiàn)程序讀取。
2.如權(quán)利要求1所述的方法,其特征在于,步驟SI中,根據(jù)數(shù)據(jù)類(lèi)型及讀取寫(xiě)入次數(shù)將所述待運(yùn)行的工程中的數(shù)據(jù)段拆分成兩部分。
3.如權(quán)利要求1所述的方法,其特征在于,步驟S2包括: 5201:將所述片內(nèi)工程通過(guò)PCI接口加載至所述DSP開(kāi)發(fā)板的普通SRAM中; 5202:將所述DSP開(kāi)發(fā)板的DSP核暫停運(yùn)行,并開(kāi)啟所述DSP開(kāi)發(fā)板的外部存儲(chǔ)器接口 ; 5203:將所述片外工程通過(guò)所述PCI接口和外部存儲(chǔ)器接口加載至所述DSP開(kāi)發(fā)板的SDRAM 中; 5204:將所述DSP開(kāi)發(fā)板的DSP核重新開(kāi)始運(yùn)行。
4.如權(quán)利要求1所述的方法,其特征在于,步驟S4中,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取包括: 先在所述2級(jí)緩存中查找待讀取數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待讀取數(shù)據(jù),則從所述SDRAM中查找所述待讀取數(shù)據(jù),由所述SDRAM將所述待讀取數(shù)據(jù)依次通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核;若所述2級(jí)緩存中有所述待讀取數(shù)據(jù),則先失效所述2級(jí)緩存中的所述待讀取數(shù)據(jù),再將所述SDRAM中的所述待讀寫(xiě)數(shù)據(jù)傳輸至所述2級(jí)緩存中,覆蓋原來(lái)所述待讀取數(shù)據(jù)的舊數(shù)據(jù),最后將所述2級(jí)緩存中的新的所述待讀取數(shù)據(jù)通過(guò)所述I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核。
5.如權(quán)利要求1所述的方法,其特征在于,步驟S4中,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)寫(xiě)入包括: 所述DSP核為寫(xiě)數(shù)據(jù)操作時(shí),先在所述2級(jí)緩存中查找待寫(xiě)入數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待寫(xiě)入數(shù)據(jù),則從所述SDRAM中查找所述待寫(xiě)入數(shù)據(jù),由所述SDRAM將所述待寫(xiě)入數(shù)據(jù)傳輸至所述2級(jí)緩存,所述DSP核通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中;若所述2級(jí)緩存中有所述待寫(xiě)入數(shù)據(jù),則所述DSP核直接通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中。
6.一種DSP工程的高效運(yùn)行系統(tǒng),其特征在于,所述系統(tǒng)包括: 工程拆分模塊,用于將待運(yùn)行的工程中的數(shù)據(jù)段拆分成兩部分,一部分作為片內(nèi)工程,另一部分?jǐn)?shù)據(jù)段和所述待運(yùn)行的工程中的程序段作為片外工程; 工程加載模塊,用于將所述片內(nèi)工程加載至DSP開(kāi)發(fā)板的普通SRAM中,將所述片外工程加載至所述DSP開(kāi)發(fā)板的SDRAM中; 緩存劃分模塊,用于在普通SRAM中劃分預(yù)設(shè)長(zhǎng)度的存儲(chǔ)空間作為2級(jí)緩存; 讀取寫(xiě)入模塊,用于所述DSP開(kāi)發(fā)板的DSP核與加載有所述片內(nèi)工程的普通SRAM之間通過(guò)所述DSP開(kāi)發(fā)板的I級(jí)數(shù)據(jù)緩存進(jìn)行數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取及數(shù)據(jù)寫(xiě)入,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和所述DSP開(kāi)發(fā)板的I級(jí)程序緩存實(shí)現(xiàn)程序讀取。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述工程拆分模塊中,根據(jù)數(shù)據(jù)類(lèi)型及讀取寫(xiě)入次數(shù)將所述待運(yùn)行的工程中的數(shù)據(jù)段拆分成兩部分。
8.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述工程加載模塊包括: 片內(nèi)工程加載子模塊,用于將所述片內(nèi)工程通過(guò)PCI接口加載至所述DSP開(kāi)發(fā)板的普通SRAM中; DSP核暫停子模塊,用于將所述DSP開(kāi)發(fā)板的DSP核暫停工作,并開(kāi)啟所述DSP開(kāi)發(fā)板的外部存儲(chǔ)器接口; 片外工程加載子模塊,用于將所述片外工程通過(guò)所述PCI接口和外部存儲(chǔ)器接口加載至所述DSP開(kāi)發(fā)板的SDRAM中; 解除DSP暫停狀態(tài)子模塊,用于將所述DSP開(kāi)發(fā)板的DSP核重新開(kāi)始運(yùn)行。
9.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述讀取寫(xiě)入模塊中,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)讀取包括: 先在所述2級(jí)緩存中查找待讀取數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待讀取數(shù)據(jù),則從所述SDRAM中查找所述待讀取數(shù)據(jù),由所述SDRAM將所述待讀取數(shù)據(jù)依次通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核;若所述2級(jí)緩存中有所述待讀取數(shù)據(jù),則先失效所述2級(jí)緩存中的所述待讀取數(shù)據(jù),再將所述SDRAM中的所述待讀寫(xiě)數(shù)據(jù)傳輸至所述2級(jí)緩存中,覆蓋原來(lái)所述待讀取數(shù)據(jù)的舊數(shù)據(jù),最后將所述2級(jí)緩存中的新的所述待讀取數(shù)據(jù)通過(guò)所述I級(jí)數(shù)據(jù)緩存?zhèn)鬏斨了鯠SP核。
10.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述讀取寫(xiě)入模塊中,所述DSP核與所述SDRAM之間通過(guò)所述2級(jí)緩存和I級(jí)數(shù)據(jù)緩存實(shí)現(xiàn)數(shù)據(jù)寫(xiě)入包括: 所述DSP核為寫(xiě)數(shù)據(jù)操作時(shí),先在所述2級(jí)緩存中查找待寫(xiě)入數(shù)據(jù),若所述2級(jí)緩存中沒(méi)有所述待寫(xiě)入數(shù)據(jù),則從所述SDRAM中查找所述待寫(xiě)入數(shù)據(jù),由所述SDRAM將所述待寫(xiě)入數(shù)據(jù)傳輸至所述2級(jí)緩存,所述DSP核通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中;若所述2級(jí)緩存中有所述待寫(xiě)入數(shù)據(jù),則所述DSP核直接通過(guò)所述I級(jí)數(shù)據(jù)緩存對(duì)所述待寫(xiě)入數(shù)據(jù)進(jìn)行寫(xiě)操作,所述2級(jí)緩存將寫(xiě)操作后的待寫(xiě)入數(shù)據(jù)回寫(xiě)至所述SDRAM中。
【文檔編號(hào)】G06F9/445GK103744698SQ201310737272
【公開(kāi)日】2014年4月23日 申請(qǐng)日期:2013年12月26日 優(yōu)先權(quán)日:2013年12月26日
【發(fā)明者】童超, 王傳志, 馬楠, 張治 , 張平 申請(qǐng)人:北京星河亮點(diǎn)技術(shù)股份有限公司