久久中文视频-久久中文网-久久中文亚洲国产-久久中文字幕久久久久-亚洲狠狠成人综合网-亚洲狠狠婷婷综合久久久久
[Full]
完整版
[Rss]
訂閱
[Xml]
無(wú)圖版
[Xhtml]
無(wú)圖版
Rss
& SiteMap
曙海教育集團(tuán)論壇
http://www.bjzhda.cn
曙海教育集團(tuán)論壇
◎
曙海教育集團(tuán)論壇
→
DSP6000系統(tǒng)開(kāi)發(fā)
→
TMS320C6000系列DSP的軟件優(yōu)化技術(shù)
共44 條記錄, 每頁(yè)顯示 10 條, 頁(yè)簽:
[1]
[2]
[3]
[4]
[5]
[瀏覽完整版]
標(biāo)題:TMS320C6000系列DSP的軟件優(yōu)化技術(shù)
1樓
wangxinxin
發(fā)表于:2010-11-22 13:35:17
以下內(nèi)容含腳本,或可能導(dǎo)致頁(yè)面不正常的代碼
<strong>摘要</strong> 詳細(xì)介紹DSP軟件優(yōu)化流程;結(jié)合具體實(shí)例闡述在C語(yǔ)言中使用內(nèi)聯(lián)函數(shù)、指夸并行、字裝載半字型數(shù)據(jù)、軟件流水等幾種代碼優(yōu)化技術(shù),并對(duì)各種技術(shù)優(yōu)化后的代碼執(zhí)行效率進(jìn)行總結(jié)分析,對(duì)實(shí)際系統(tǒng)的開(kāi)發(fā)具有重要意義。 <b>關(guān)鍵詞</b> DSP軟件優(yōu)化 軟件流水 TMS320C6000 <b>1 DSP系統(tǒng)的軟件優(yōu)化流程 </b>DSP系統(tǒng)的軟件優(yōu)化流程如圖l所示。整個(gè)工作流程分為3個(gè)階段: <p align="center"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624211.jpg" border="0"/> 第l階段,直接根據(jù)需要用高級(jí)C語(yǔ)言實(shí)現(xiàn)DSP功能,測(cè)試代碼的正確性。然后,移植到C6X平臺(tái),利用C6X開(kāi)發(fā)環(huán)境Profile測(cè)試程序的運(yùn)行時(shí)間。若不滿足要求,則進(jìn)入下一階段。 第2階段,利用C6X提供的優(yōu)化方式和其他各種優(yōu)化技巧,如使用不同的編譯器選項(xiàng)使能軟件流水,循環(huán)展開(kāi),字存取代替半字存取等,優(yōu)化C語(yǔ)言代碼。如果還不能滿足要求,則進(jìn)入第3階段。 第3階段,將C語(yǔ)言代碼中耗時(shí)最長(zhǎng)的部分抽取出來(lái),用線性匯編語(yǔ)言重寫(xiě),用匯編優(yōu)化器進(jìn)行優(yōu)化。使用profile確定這段代碼是否需要進(jìn)一步優(yōu)化。 <b>2 優(yōu)化過(guò)程 </b>首先,用C語(yǔ)言編寫(xiě)程序,并通過(guò)編譯驗(yàn)證其正確性。然后,使用內(nèi)聯(lián)函數(shù)和合適的優(yōu)化選項(xiàng)進(jìn)行優(yōu)化,并通過(guò)CCS中的profiler確定是否有函數(shù)需要被進(jìn)一步優(yōu)化,使用線性匯編語(yǔ)言重寫(xiě)需要被優(yōu)化的函數(shù)。最后,使用匯編優(yōu)化編程技巧和匯編優(yōu)化器優(yōu)化匯編代碼。 <b>2.1 編譯器</b> 當(dāng)優(yōu)化器被激活時(shí),將完成圖2所示的過(guò)程。C/C++語(yǔ)言源代碼首先通過(guò)一個(gè)完成預(yù)處理的解析器(Parser),生成一個(gè)中間文件(.if)作為優(yōu)化器(Optimizer)的輸入。優(yōu)化器生成一個(gè)優(yōu)化文件(.opt),這個(gè)文件作為完成進(jìn)一 步優(yōu)化的代碼生成器(Code generator)的輸入,最終生成匯編文件(.a(chǎn)sm)。當(dāng)選擇編譯選項(xiàng)時(shí),-o2和-o3將盡可能地優(yōu)化軟件。 <p align="center"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624764.jpg" border="0"/> <b>2.2 編譯器內(nèi)聯(lián)函數(shù) </b><b> </b>TMS320C6X提供了很多內(nèi)聯(lián)函數(shù),它們直接映射為內(nèi)嵌C6X匯編指令的特殊函數(shù),這樣可迅速優(yōu)化C語(yǔ)言代碼。C編譯器以內(nèi)聯(lián)函數(shù)的形式支持所有C語(yǔ)言代碼不易表達(dá)的指令。內(nèi)聯(lián)函數(shù)用下劃線“_”開(kāi)頭,如例2,使用時(shí)如同調(diào)用普通函數(shù)一樣。下面結(jié)合實(shí)例,研究一下完成200點(diǎn)點(diǎn)積經(jīng)過(guò)上述各種優(yōu)化技術(shù)優(yōu)化后的代碼效率。完成200點(diǎn)的點(diǎn)積運(yùn)算C語(yǔ)言代碼程序dotp.c如下: <img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624365.jpg" border="0"/> <b>3 線性匯編代碼的優(yōu)化 </b>優(yōu)化線性匯編代碼,首先是盡可能地使指令并行,使得同一時(shí)間內(nèi)多個(gè)功能單元同時(shí)被使用,然后是調(diào)整代碼順序,縮減等待時(shí)延(NOPS),如例5。接下來(lái)使用字訪問(wèn)short型數(shù)據(jù).如例6,最后使用軟件流水技術(shù)。當(dāng)進(jìn)行實(shí)際操作時(shí),并不是要按順序地完成上面的每一步。只要達(dá)到要求,就可以結(jié)束。 <b>3.1 C語(yǔ)言代碼轉(zhuǎn)換到線性匯編代碼</b> 定點(diǎn)點(diǎn)積中,C語(yǔ)言代碼內(nèi)部循環(huán)使用線性匯編指令,如例3所示。 <img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624673.jpg" border="0"/> <b>3.2 線性匯編的資源分配 </b><b> </b>①裝載指令(LDW)必須使用.D單元。 ②乘法指令(MPY和MPYH)必須使用.M單元。 ③加法指令(ADD)使用.L單元, ④減法指令(SUB)使用.S單元。 ⑤跳轉(zhuǎn)指令(B)使用.S單元。 由此得到例4的匯編代碼。 例4 下面的例子是沒(méi)有并行執(zhí)行的匯編代碼: <img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624730.jpg" border="0"/> 完成200次循環(huán)迭代,經(jīng)過(guò)profile clock分析循環(huán)部分,需要16×200=3200 cycles。 <b>3.3 使用并行指令完成點(diǎn)積代碼 </b>使用并行指令完成點(diǎn)積代碼如例5所示。 <img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624381.jpg" border="0"/> 使用并行指令,循環(huán)體內(nèi)需要8個(gè)時(shí)鐘周期。這段循環(huán)代碼的執(zhí)行周期為8×200=l600 cycles。 <b>3.4 使用字存取原short型數(shù)據(jù) </b>為進(jìn)一步提高效率,使用字存取原short型數(shù)據(jù),如例6所示。 <img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624901.jpg" border="0"/> <img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624517.jpg" border="0"/> 這段代碼在循環(huán)體內(nèi)仍然是8個(gè)時(shí)鐘周期,迭代100次為8×100=800 cycles。 <b>4 軟件流水技術(shù) </b>軟件流水技術(shù)是用在循環(huán)語(yǔ)句中調(diào)用指令的方法,即安排循環(huán)中的多個(gè)迭代運(yùn)算并行執(zhí)行。在編譯C語(yǔ)言代碼時(shí),可以選擇編譯器的-o2或-o3選項(xiàng),編譯器將根據(jù)程序盡可能地安排軟件流水。圖3所示為運(yùn)用軟件流水的循環(huán)結(jié)構(gòu),它包括A、B、C、D、E五次迭代,同一周期最多執(zhí)行五次迭代的不同指令(陰影部分)。圖3中陰影部分稱為“循環(huán)內(nèi)核”,核中不同的指令并行執(zhí)行。核前執(zhí)行的過(guò)程稱為“流水線填充”,核后執(zhí)行的過(guò)程稱為。流水線排空”。 <p align="center"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624761.jpg" border="0"/> 在DSP算法中存在大量的循環(huán)操作,因此充分運(yùn)用軟件流水線方式,能極大地提高程序的運(yùn)行速度。當(dāng)手繪軟件流水時(shí),首先要畫(huà)出相關(guān)圖,如圖4所示,然后建立軟件流水迭代間隔編排表,最后根據(jù)編排表寫(xiě)出程序。 <p align="center"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624162.jpg" border="0"/> 在畫(huà)相關(guān)圖時(shí)應(yīng)遵循: ①畫(huà)出節(jié)點(diǎn)和路徑; ②寫(xiě)出完成各指令需要的CPU周期; ③為各節(jié)點(diǎn)指派功能單元; ④分開(kāi)路徑,以使最多的功能單元被使用。 根據(jù)相關(guān)圖寫(xiě)出模迭代間隔安排表,如表1所列。 <p align="center"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624961.jpg" border="0"/> 由此迭代間隔表寫(xiě)出對(duì)應(yīng)代碼: <img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624473.jpg" border="0"/> <img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624333.jpg" border="0"/> <b>5 總結(jié) </b>各種優(yōu)化技術(shù)所需時(shí)鐘數(shù)如表2所列。表中括號(hào)內(nèi)數(shù)字為循環(huán)內(nèi)核時(shí)鐘周期,括號(hào)前數(shù)字為流水線填充時(shí)鐘周期,括號(hào)后數(shù)字為流水線排空CPU時(shí)鐘周期。 <p align="center"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.jdzj.com/UpLoadFiless/Article/iccpic/2008-08/20080803221624220.jpg" border="0"/> 由此得出遵循以上的軟件優(yōu)化流程和代碼優(yōu)化技術(shù),可以極大地提高代碼效率,這對(duì)實(shí)際應(yīng)用具有重大意義。
說(shuō)明:
上面顯示的是代碼內(nèi)容。您可以先檢查過(guò)代碼沒(méi)問(wèn)題,或修改之后再運(yùn)行.
共44 條記錄, 每頁(yè)顯示 10 條, 頁(yè)簽:
[1]
[2]
[3]
[4]
[5]
Copyright © 2000 - 2009
曙海
教育集團(tuán)
Powered By
曙海教育集團(tuán)
Version 2.2
Processed in .04688 s, 2 queries.
[Full]
完整版
[Rss]
訂閱
[Xml]
無(wú)圖版
[Xhtml]
無(wú)圖版
主站蜘蛛池模板:
免费成人
|
欧美性精品hd在线观看
|
久久精品久久精品久久精品
|
99视频在线观看免费视频
|
久久精品国产亚洲欧美
|
成人国产欧美精品一区二区
|
黄色三区
|
免费v片视频在线观看视频 免费v片在线观看
|
免费看日韩欧美一级毛片
|
国内精品久久久久久久aa护士
|
成人爱做日本视频免费
|
亚洲精品一区二区久久
|
一级毛片视频
|
国产成人精品综合在线
|
女人夜色黄网在线观看
|
国产人成
|
久久羞羞
|
韩国三级 mp4
|
中文字幕 亚洲一区
|
免费人成在线观看视频不卡
|
欧美aaaa在线观看视频免费
|
三级视频网站在线观看
|
久久视频国产
|
国产美女作爱
|
cao草棚视频网址成人
|
成年人国产视频
|
国产自约视频
|
久久一区视频
|
国产农村乱子伦精品视频
|
亚洲视频在线观看网站
|
欧日韩美香蕉在线观看
|
最新在线精品国自拍视频
|
美女网站免费观看视频
|
国产高清视频a在线大全
|
亚洲精品视频观看
|
久久久在线视频精品免费观看
|
国产精品夫妇久久
|
色综合久久久久
|
国产三级国产精品国产国在线观看
|
国产亚洲福利一区二区免费看
|
在线观看精品自拍视频
|