<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 在DSP處理器上并行實現(xiàn)ATR算法

          在DSP處理器上并行實現(xiàn)ATR算法

          作者: 時間:2010-01-08 來源:網(wǎng)絡(luò) 收藏

          ③數(shù)據(jù)的定標

          由于TMS320C62x是定點系列芯片,不支持浮點操作。在程序編寫過程中,應(yīng)當盡量采用定點的數(shù)據(jù)結(jié)構(gòu)。而實際處理的數(shù)據(jù)通常都是浮點的,所以需要把浮點數(shù)據(jù)通過定標轉(zhuǎn)化為整型數(shù)據(jù)處理,提高程序的處理速度。數(shù)據(jù)的定標是十分關(guān)鍵的步驟,既要使數(shù)據(jù)處理精度滿足性能要求,又要防止在數(shù)據(jù)處理過程中出現(xiàn)溢出。

          (2)優(yōu)化C代碼

          優(yōu)化C代碼包括向編譯器指明不相關(guān)的指令、循環(huán)展開、循環(huán)合并、使用內(nèi)聯(lián)函數(shù)、使用字訪問短整型數(shù)據(jù)和軟件流水等方法。

          ①向編譯器指明不相關(guān)的指令

          為使指令操作,編譯器必須確定指令間的相關(guān)性,只有不相關(guān)的指令才可以執(zhí)行。如果編譯器不能確定兩條指令是不相關(guān)的,則認為是相關(guān)的,安排它們串行招待。用戶可通過如下方法指明相關(guān)的指令:

          ?關(guān)鍵字const可以指定一個目標,const表示一個變量或者一個變量的存儲單元保持不變,使用const可以提高代碼的性能和適應(yīng)性。

          ?一起使用-pm選項和-03選項可以確定程序優(yōu)先級。在程序優(yōu)先級中,所有源文件都被編譯成一個模塊,從而使編譯器更有效地消除相關(guān)性。

          ?使用-mt選項向編譯器說明在代碼中不存在存儲器相關(guān)性,即允許編譯器在無存儲器相關(guān)性的假設(shè)下進行優(yōu)化。

          ②循環(huán)展開

          循環(huán)展開就是把循環(huán)計數(shù)小的循環(huán)展開,成為非循環(huán)形式的串行程序,或者把循環(huán)計數(shù)大的循環(huán)部分展開,減少循環(huán)迭代次數(shù),增加單個循環(huán)內(nèi)的代碼,使得循環(huán)內(nèi)的操作可以均勻分布在各個功能單元上,保持的各個功能單元滿負荷運行。

          ③循環(huán)合并

          如果兩個循環(huán)計數(shù)差不多、循環(huán)執(zhí)行互不相同的操作,可以把它們合并在一起組成一個循不。當兩個循環(huán)的負荷都不滿時,這是非常有用的。

          ④使用內(nèi)聯(lián)函數(shù)

          TMS320C62x編譯器提供的內(nèi)聯(lián)函數(shù)是直接映射為內(nèi)聯(lián)指令的特殊函數(shù),內(nèi)聯(lián)函數(shù)的代碼高效、代碼長度短。用戶可以使用內(nèi)聯(lián)函數(shù)優(yōu)化C代碼。

          ⑤使用字節(jié)訪問短整型數(shù)據(jù)

          內(nèi)聯(lián)函數(shù)中有些指令是對存儲在32位寄存器的高16位和低16位字段進行操作的。當有大量短整型數(shù)據(jù)進行操作時,可以使用字(整型數(shù))一次訪問兩個短整型數(shù)據(jù)。然后使用內(nèi)聯(lián)函數(shù)對這些數(shù)據(jù)進行操作,從而減少對內(nèi)存的訪問。

          ⑥軟件流水

          軟件流水是用來安排循環(huán)指令,使這個循環(huán)多次迭代并行執(zhí)行的一種技術(shù)。在編譯時使用-o2和-o3選項,編譯器可對循環(huán)代碼軟件流水;使用-o3和-pm選項,使優(yōu)化器訪問整個程序,了解循環(huán)次數(shù);使用_nassert內(nèi)聯(lián)函數(shù),防止冗余循環(huán)產(chǎn)生;使用投機執(zhí)行(_mh選項)消除軟件注流水循環(huán)的排空,從而減少代碼尺寸。

          在嵌套循環(huán)中,編譯器僅對最里面的循環(huán)執(zhí)行軟件流水,因此對招待周期很少的內(nèi)循環(huán)作循環(huán)展開,外循環(huán)進行軟件流水,這樣可以改進C代碼并行執(zhí)行的性能。使用軟件流水還應(yīng)當注意:盡管軟件流水循環(huán)可以包含內(nèi)聯(lián)函數(shù),但是不能包含函數(shù)調(diào)用;在循環(huán)中不可以有條件終止指令;在循環(huán)體中不可以修改循環(huán)控制變量。

          (3)編寫線性匯編代碼

          編寫線性匯編代碼是并行軟件開發(fā)流程的第三個階段。了提高并行軟件代碼的性能,對影響并行程序速度的關(guān)鍵C代碼可以用線性編重新編寫。編寫線性匯編代碼不需要指明使用的寄存器、指令的并行與否、指令的延遲周期和指令使用的功能單元,匯編優(yōu)化器會根據(jù)情況確定這些住處。優(yōu)化線性匯編代碼的方法包括:為線性匯編指令指定功能單元,使得最后的匯編指令并行執(zhí)行;使用字訪問短整型數(shù)據(jù);使用軟件流水對循環(huán)進行優(yōu)化。編寫線性匯編代碼的工作量非常大,需要很長的開發(fā)周期,而且開發(fā)后的匯編代碼不能像C代碼那樣移植在其它的平臺上。

          應(yīng)用上述并行程序開發(fā)方法,在TMS320C6201 EVM板上了寬帶毫米波雷達目標時延神經(jīng)網(wǎng)絡(luò)識別。經(jīng)過實際測試,并行算法程序執(zhí)行時間為0.850ms,滿足了目標識別算法的實時性需求。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();