亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        TMS320C64x系列 DSP的軟件優(yōu)化技術(shù)

        2014-09-18 07:12:08徐書文
        電視技術(shù) 2014年13期
        關(guān)鍵詞:編譯器流水代碼

        葛 珊,徐書文

        (中國電子科技集團(tuán)公司第三研究所,北京 100015)

        數(shù)字信號處理器(DSP)的應(yīng)用起始于20世紀(jì)80年代,主要應(yīng)用于無線通信、一維信號處理(FFT運算)、二維信號處理(圖像處理)等數(shù)據(jù)運算量大的系統(tǒng)設(shè)備中。主頻從10 MHz發(fā)展到目前1 GHz以上,片內(nèi)RAM容量從幾百字節(jié),發(fā)展到上百兆字節(jié),外設(shè)功能也從簡單的數(shù)據(jù)讀取擴(kuò)展到控制、通信于一體的數(shù)字信號處理器。C6000系列產(chǎn)品是TI公司繼C5000系列產(chǎn)品之后推出的速度更高、功能更強(qiáng)大的產(chǎn)品。基于其特殊的硬件、軟件結(jié)構(gòu),已被廣泛應(yīng)用于雷達(dá)信號處理、圖像處理、工業(yè)控制、航空航天等領(lǐng)域。

        TMS320C64x系列DSP芯片是TI公司C6000系列產(chǎn)品中的一種,該系列芯片為定點DSP芯片,主頻為600 MHz~1 GHz,但其外設(shè)工作頻率最高為133 MHz,通過研究發(fā)現(xiàn),必須在外設(shè)數(shù)據(jù)采集及軟件編程設(shè)計方面進(jìn)行優(yōu)化設(shè)計,才能大幅度提高算法的運算速度,發(fā)揮芯片主頻提高的真正潛能。該芯片具有很高的操作靈活性和速度,同時如何充分利用它的硬件結(jié)構(gòu)及資源,發(fā)揮它的高速處理能力,是軟件設(shè)計人員首要考慮的問題。軟件優(yōu)化技術(shù)對實現(xiàn)系統(tǒng)的開發(fā)具有重要意義[1-4]。

        1 優(yōu)化設(shè)計

        1.1 開發(fā)系統(tǒng)配置

        CCS 2.0(C6000)是TI推出的專門開發(fā)C6000系列DSP的集成開發(fā)環(huán)境。CCS集成了工程管理工具、代碼編輯器、代碼產(chǎn)生工具、代碼調(diào)試工具等。編譯器的設(shè)置,是軟件優(yōu)化的先決條件,在程序代碼編譯前,需要在工程文件的Build Options控制編譯器選項中選擇-o2/-o3選項,這樣可以使編譯器最大限度地進(jìn)行分析和優(yōu)化。

        1.2 C代碼的優(yōu)化方法

        為了使C代碼獲得最好的性能,編寫時應(yīng)遵循下述規(guī)則:

        1)對于定點乘法輸入應(yīng)盡可能使用short型數(shù)據(jù),該數(shù)據(jù)類型可以有效利用C64x的16位乘法器;

        2)對循環(huán)計數(shù)器使用int或unsigned int類型,避免不必要的符號擴(kuò)展指令;

        3)使用restrict關(guān)鍵字限定一個指針、引用或數(shù)組;

        4)使用內(nèi)聯(lián)函數(shù)可以快速優(yōu)化C代碼,其使用方法與調(diào)用函數(shù)一樣。

        1.3 線性匯編代碼優(yōu)化方法

        編寫高效的匯編代碼應(yīng)遵循下述規(guī)則:

        1)使用并行的匯編代碼,充分利用某些指令的延時間隙,執(zhí)行代碼;

        2)使用打包數(shù)據(jù)處理,充分利用C64x寬的存儲空間通路,用字或者雙字的讀取和存儲操作數(shù)來進(jìn)行字或者半字?jǐn)?shù)據(jù)訪問;

        3)合并多操作為單個操作指令,C64x提供了許多能將一些一般操作結(jié)合在一起的指令,這些指令能減少代碼中的指令數(shù),減少代碼長度,利于簡化編程。

        1.4 交叉匯編代碼使用

        由于C語言靈活性強(qiáng)、便于閱讀,在編寫程序代碼時,可以用C語言編寫代碼的主體框架,將代碼中耗時最長的部分抽取出來,用并行匯編代碼編寫,這樣可以大幅提高代碼的執(zhí)行速度。

        1.5 軟件流水方法

        軟件流水就是編排循環(huán)指令,使循環(huán)的多次迭代能夠并行執(zhí)行。軟件流水應(yīng)從4個方面進(jìn)行考慮,分別是循環(huán)次數(shù)、冗余循環(huán)、循環(huán)展開和推測執(zhí)行。

        1)循環(huán)計數(shù)

        最有效的軟件流水的循環(huán)是按遞減計數(shù)形式對循環(huán)進(jìn)行計數(shù)??梢赃x擇編譯器的-o2或-o3選項優(yōu)化循環(huán)。

        2)消除冗余循環(huán)

        冗余循環(huán)的存在使代碼尺寸增加,也對代碼性能有影響。因此,運用編譯器的-mh或-mhn選項可以減少冗余循環(huán),提高編譯器完成優(yōu)化的能力。

        3)循環(huán)展開

        當(dāng)單次迭代操作沒有充分利用C64x結(jié)構(gòu)的所有資源時,可使用循環(huán)展開提高性能。有3種循環(huán)展開的方法:(1)編譯器自動執(zhí)行循環(huán)展開;(2)在程序中使用UNROLL偽指令建議編譯器做循環(huán)展開;(3)用戶自己在代碼中展開。

        4)推測執(zhí)行

        運用編譯器的-mh選項有助于編譯器消除軟件流水的填充和排空,間接地減輕寄存器壓力,可以獲得更簡潔的代碼和更佳的性能。

        2 優(yōu)化設(shè)計中注意的問題及解決方法

        2.1 軟件流水限制條件

        在以下3種情況中,不能進(jìn)行軟件流水:

        1)如果一個寄存器值存在的時間過長,這個代碼不能進(jìn)行軟件流水;

        2)如果循環(huán)體內(nèi)有復(fù)雜的條件代碼,對于C64x超過6個條件寄存器時,這個循環(huán)不可以進(jìn)行軟流水;

        3)一個有條件增大的循環(huán)控制變量的循環(huán)不能進(jìn)行軟件流水。

        2.2 避免交叉通路阻塞

        避免交叉通路阻塞的方法有2種:

        1)通過安排指令,當(dāng)操作數(shù)被更新至少一個周期以后再進(jìn)行交叉通路操作數(shù)讀取操作,交叉通路阻塞可以避免;

        2)適當(dāng)?shù)木幣?,C64x能夠在每個時鐘周期、每個數(shù)據(jù)交叉通路進(jìn)行一次源操作數(shù)讀取操作,可以避免交叉通路阻塞。

        3 仿真驗證

        以計算兩個16×16像素圖像的灰度絕對差為例,分析程序優(yōu)化前后的運算耗時情況。兩個16×16像素圖像的灰度絕對差公式為

        式中:R(u,v),S(u,v)分別表示16×16像素的圖像矩陣,每個像素為8 bit數(shù)據(jù)。優(yōu)化前,每次加載一個8 bit數(shù)據(jù)處理,測試代碼運行時間后,發(fā)現(xiàn)速度提高不明顯,因此,需要對代碼進(jìn)行改進(jìn)。選用3種不同的打包數(shù)據(jù)處理方式對代碼進(jìn)行優(yōu)化:

        1)方法1,用1條16 bit數(shù)據(jù)加載指令(LDHU,2LDB)實現(xiàn)一次加載2個8 bit(字)數(shù)據(jù)處理。

        2)方法2,用1條32 bit數(shù)據(jù)加載指令(LDW,LDNW)實現(xiàn)一次加載4個8 bit(雙字)數(shù)據(jù)處理,并且運用一組DOTPU4,SUBABS4指令進(jìn)行運算。

        3)方法3,用1條64 bit數(shù)據(jù)加載指令(LDDW,LDNDW)實現(xiàn)一次加載8個8 bit(4個字)數(shù)據(jù)處理,并且運用兩組并行的DOTPU4,SUBABS4指令進(jìn)行運算,同時使用并行的匯編代碼,充分利用某些指令的延時間隙,執(zhí)行代碼。

        優(yōu)化前后運算時間對比見表1。

        表1 代碼優(yōu)化前后比較

        從表1中可以看到,軟件優(yōu)化設(shè)計主要是通過利用數(shù)據(jù)并行加載、寄存器流水并行處理、減少循環(huán)次數(shù)的方法,可以大大減少運算時間,提高運行速度。

        4 結(jié)論

        在TMS320C64x系列DSP芯片應(yīng)用中,大部分每秒百萬次指令運算發(fā)生在緊湊的循環(huán)中,所以對于C64x代碼產(chǎn)生工具來說,在重要的循環(huán)中充分利用片內(nèi)的硬件資源,在軟件流水中,利用VelociTI結(jié)構(gòu)的多樣資源,可以大大提高代碼的效率。因此,本文介紹的基于C64x系列DSP的軟件優(yōu)化方法,為高速實時系統(tǒng)設(shè)計提供了一種很好的解決方法。

        :

        [1]Texas Instruments Incorporated.TMS320C6000優(yōu)化編譯器用戶手冊[M].田黎育,譯.北京:清華大學(xué)出版社,2005.

        [2]Texas Instruments Incorporated.TMS320C6000程序員手冊[M].朱夢宇,譯.北京:清華大學(xué)出版社,2005.

        [3]Texas Instruments Incorporated.TMS320C6000匯編語言工具用戶手冊[M].何佩琨,譯.北京:清華大學(xué)出版社,2005.

        [3]覃團(tuán)發(fā),泰德興,劉遠(yuǎn)毅,等.基于TMS320C6416的寬帶語音G.722.2聲碼器的實時實現(xiàn)[J].電聲技術(shù),2006,30(1):48-51

        猜你喜歡
        編譯器流水代碼
        流水
        文苑(2020年10期)2020-11-07 03:15:26
        基于相異編譯器的安全計算機(jī)平臺交叉編譯環(huán)境設(shè)計
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        流水有心
        天津詩人(2017年2期)2017-11-29 01:24:12
        前身寄予流水,幾世修到蓮花?
        視野(2015年6期)2015-10-13 00:43:11
        通用NC代碼編譯器的設(shè)計與實現(xiàn)
        落紅只逐東流水
        海峽姐妹(2014年5期)2014-02-27 15:09:38
        久久人人妻人人做人人爽| 偷拍一区二区三区四区视频| 一区二区在线观看视频亚洲| 国产情侣自拍在线视频| 无码欧美毛片一区二区三| 亚洲av无码专区亚洲av桃| 天堂网av在线| 一区二区三区国产色综合| 久久久久无码国产精品一区| 亚洲男人第一av网站| 亚洲熟妇中文字幕日产无码| 国产91精品一区二区麻豆亚洲| 亚洲精品国产精品乱码视色| 午夜福利一区二区三区在线观看| 无码国产亚洲日韩国精品视频一区二区三区| 成人片在线看无码不卡| 亚洲精品女人天堂av麻| 亚洲成人av在线蜜桃| 奇米影视色777四色在线首页| 久久精品国产成人| 精品国产一区二区三区久久狼| 久久99精品久久久久九色| 国产精女同一区二区三区久| 久久久久亚洲av综合波多野结衣| 精品人妻潮喷久久久又裸又黄| AV中文字幕在线视| 人妖一区二区三区在线| 一区二区三区乱码在线 | 欧洲| 美女在线国产| 国产精品不卡无码AV在线播放| 久草中文在线这里只有精品| 草草地址线路①屁屁影院成人| 欧美日韩精品一区二区在线视频| 中文字幕人成乱码中文乱码| 国产精品国产三级国产an不卡| 亚洲国产精品高清一区| 午夜无码国产理论在线| 在线观看国产精品91| 亚洲大片一区二区三区四区| 日本强伦姧人妻一区二区| 东北女人毛多水多牲交视频|