在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

剖析DSP編程優化的7個方法

2oON_changxuemc ? 2018-02-02 14:56 ? 次閱讀

方法一 把浮點運算改成定點運算

因為C6x DSP板并不支持浮點運算,但我們的原始程序代碼是浮點運算的格式,所以必須改成定點運算,而其修改后的執行速度也會加快很多。我們采用 Q-format 規格來表示浮點運算。以下將介紹其相關原理。

定點DSP使用固定的小數點來表示小數部份的數字,這也造成了使用上的限制,而為了要分類不同范圍的小數點,我們必須使用Q-format的格式。不同的Q-format表示不同的小數點位置,也就是整數的范圍。Q15數字的格式,要注意在小數點后的每一位,表示下一位為前一位的二分之一,而MSB (most-significant-bit ) 則被指定成有號數 ( Sign bit )。當有號數被設成0而其余位設成1時,可得到最大的正數 (7FFFH ) ;而當有號數被設成1而其余位設成0時,可得到最大的負數 ( 8000H ) 。所以Q15格式的范圍從-1到0.9999694 (@1) ,因此我們可以藉由把小數點向右移位,來增加整數部份的范圍,Q14格式的范圍增為-2.0到1.9999694 (@2) ,然而范圍的增加卻犧牲了精確度。

方法二 建立表格 ( table )

原來程序的設計是除了要讀AAC的檔案外,在譯碼時,還要再另外讀取一些C語言程序代碼的內容再做計算,如讀取一些數值做sin、cos、exp的運算,但是為了加快程序的執行速度,故將這這些運算的結果建成表格,內建在程序中,可以不必再做額外的計算動做,以加速程序。

方法三 減短程序的長度

1.去除Debug的功能

原本程序在Debug的階段時,就加了許多用來偵測錯誤的部份,程序 Debug完后,已經沒有錯誤發生,所以就可以把這些部份給去除,以減少程序的長度,也可以減少程序執行時的時脈數,加快程序的速度。

2.去除計算時脈( clock ) 功能

原本程序可以計算執行程序所需的時脈數,我們也可以把這些部份給去除,如果有需要計算時脈時,我們可以用C6x的工具軟件來作,功能更強大。

方法四 減少I/O 過程

原本在做譯碼的動作時,是先讀取AAC檔案的一部份做譯碼,譯碼完成后再讀取下一部份,再做譯碼。但是由于C6x的板子跟PC做檔案讀取時相當的緩慢,讀取的動作占了大部份的時間,所以就將程序改成先將AAC檔案全部讀到C6x的內存中,再做譯碼。或是將AAC建成表格(約1 MB),以避免DSP板上的內存不足。

方法五 減少子程序的呼叫

在呼叫子程序時,必須先將緩存器的內容放到堆棧(stack) 中,而從子程序返回時,也要將這些緩存器原本的內容從堆棧中取出來。但是有些子程序的長度很短,而且被呼叫的次數又很多,往往幾個時脈就可以完成卻浪費時間在存取堆棧的內容上,所以干脆將這些很短的子程序直接寫在主程序當中,以減少時脈數。

方法六 寫匯編語言

雖然由C語言所編譯出來的匯編語言可以正確無誤的執行,但是這個匯編語言卻不是最有效率的寫法,所以為了增加程序的效率,于是在某些地方,例如一些被呼叫很多次且程序代碼不長的函式(function),必須改以自己動手寫匯編語言來取代。

方法七 利用平行處理的觀念

C6x是一顆功能強大的處理器,它CPU的內部提供了八個可以執行不同指令的單元,也就是說最多可以同時處理八個指令。所以如果我們可以用它來作平行處理,我們就可以大大的縮短程序執行的時間,最有效率的來利用它來作解碼的動作。

剖析DSP編程優化的7個方法

最后還要知道:

第三級優化(-O3),效率不高(經驗),還有一些諸如用一條讀32位的指令讀兩個相鄰的16位數據等,具體情況可以看看C優化手冊。但這些效率都不高(雖然ti的宣傳說能達到80%,我自己做的時候發現絕對沒有這個效率!65%還差不多),如果要提高效率只能用匯編來做了。還有要看看你的c程序是怎么編的,如果里面有很多中斷的話,6000可以說沒什么優勢。還有,profiler的數據也是不準確的,比實際的要大,大多少不好說。還有dsp在初始化的時候特別慢,這些時間就不要和pc機相比了,如果要比就比核心的部分。

關于profile:

C6x的Debug工具提供了一個profile界面。在圖9中,包括了幾個重要的窗口,左上角的窗口是顯示出我們寫的C語言,可以讓我們知道現在做到了哪一步。右上角的窗口顯示的是C6x所編譯出來的匯編語言,同樣的我們也可以知道現在做到了哪一步。左下角的窗口是命令列,是讓我們下指令以及顯示訊息的窗口。而中間的profile窗口就是在profile模式下最重要的窗口,它顯示出的項目如下:

Count被呼叫的次數

Inclusive 包含子程序的總執行clock數

Incl-Max 包含子程序的執行一次最大clock數

Exclusive 不包含子程序的總執行clock數

Excl-Max 不包含子程序的執行一次最大clock數

利用這個profile模式我們可以用來分析程序中每個函數被呼叫的次數、執行的時脈數等等。用這個分析的結果,我們就可以知道哪個函數所花費的時脈最多,是可以再改進的,而針對它來作最佳化。

匯編代碼級的優化

在經過C代碼的優化之后,還不能滿足性能上的要求,則可以通過profile

clock工具找出效率很低的部分,使用線性匯編重新改寫。再通過匯編優化器編譯,匯編優化器從輸入的線性匯編代碼中,完成以下功能:

● 尋找可以平行執行的CPU指令。

● 在軟件流水線期間,處理流水線標號。

● 分配寄存器的用法。

● 分配功能單元。

TI提供的匯編優化器可以得到很高的效率,一般可以滿足性能上的要求。

優化中的問題

在優化過程中,總是要對程序進行一定的改動,這樣經常會出現一些問題。

1) 優化結果的驗證

優化過的程序往往不知道是否運行正確,這就需要加以驗證。一般采用的辦法就是通過測試序列來驗證。測試序列指的是對于不同的算法所取的一組特殊的數據,這些數據可以準確的反映算法的特性。測試序列中每組數據包括輸入數據和輸出數據,通過對輸入數據的運算,把結果與輸出數據進行比較,判斷程序的正確性。一些常見的算法,一般都提供了測試序列。還有一些,沒有測試序列。這時就需要根據算法的特點,自己構造測試序列,進行驗證。構造的時候,注意序列最好有幾組,數據最好有一定的長度,這樣驗證的更準確。

2) 內存泄漏的問題

C64X系列DSP的內部存儲空間有1MB,其中程序和數據還有CPU的二級緩存將共享這片空間,因此當程序的運行不正常時,很有可能就是內存泄漏造成的。因此,在程序設計中,應盡量不用指針,同時注意進行邊界檢測。

程序設計的一些方法

程序設計時,一切以滿足實際的要求為目標。在實際的設計中,除了優化能夠提高性能以外,還可以采取其他的辦法,利用DSP的特性,提高程序的運行性能,滿足實際的設計要求。

1) 把程序和經常要用的數據放入片內RAM

片內RAM與CPU

工作在同一時鐘頻率,比片外RAM性能高得多。因此把程序放在片內可以大大提高運行的速度。同時對于一些經常要用到的數據,放入片內,也會節省處理時間。

2) 通過DMA技術搬移數據

對于C64X芯片,其片內RAM有1MB,但是對于一些大型的圖像處理算法而言,仍可能是不夠的,因此經常通過DMA技術,把需要用到的數據搬入片內,把不需要的搬到片外,可以大大的提高程序的運行速度。

3) CACHE的使用

增大CACHE,可以明顯的提高性能。但是C64X系列DSP中程序和數據還有CACHE共享片內RAM,因此增大CACHE,就減小了實際的片內可用空間,設計中需要注意。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • dsp
    dsp
    +關注

    關注

    556

    文章

    8148

    瀏覽量

    355747
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140680
  • 編程
    +關注

    關注

    88

    文章

    3686

    瀏覽量

    94951

原文標題:DSP代碼優化方法

文章出處:【微信號:changxuemcu,微信公眾號:暢學單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    【火熱帖子TOP10】DSP編程技巧——持續更新中

    :揭開編譯器神秘面紗之處理器選項DSP編程技巧之3:揭開編譯器神秘面紗之程序優化DSP編程技巧之4---揭開編譯器神秘面紗之高級程序
    發表于 07-24 16:52

    請問如何對DSP編程序進行優化

    請問如何對DSP編程序進行優化
    發表于 04-23 07:00

    優化DSP功率預算的方法

    鑒于內核、存儲器、I/O 以及其它電軌的過多電壓電流要求,多核 DSP 實施需要智能電源管理。DSP 內核電壓電源的一重要性能基準就是能夠根據DSP 使用情況及環境條件實時調節 VC
    發表于 11-23 08:09

    基于DSP的任意碼長RS編碼及算法優化

    本文提出通過在DSP編程算法中增加實時構造有限域域表的方法,利用DSP的McBSP同步串行通信接口,實現任意碼長(最大為255)的RS編碼,同時討論了C語言
    發表于 08-07 09:39 ?24次下載

    EPROM優化快速編程方法研究

    摘要:隨著EPROM芯片技術的進步,各種編程開發裝置及編程方法相應得到發展。通過對標準編程和快速編程過程的分析,以及與
    發表于 05-18 09:20 ?16次下載

    DSP環境下C語言的編程優化

    DSP環境下C語言的編程優化,又需要的下來看看,
    發表于 01-19 16:57 ?22次下載

    DSP系統應用中FLASH在線編程方法

    DSP系統應用中FLASH在線編程方法
    發表于 02-08 00:51 ?12次下載

    基于DSP的圖像去霧算法優化方法_楊夢雯

    基于DSP的圖像去霧算法優化方法_楊夢雯
    發表于 03-19 19:07 ?3次下載

    基于TMS320C6000系列DSP的Flash編程方法

    基于TMS320C6000系列DSP的Flash編程方法
    發表于 10-19 11:37 ?7次下載
    基于TMS320C6000系列<b class='flag-5'>DSP</b>的Flash<b class='flag-5'>編程</b><b class='flag-5'>方法</b>

    DSP編程優化方法的探討

    DSP編程優化方法的探討
    發表于 10-20 10:41 ?5次下載
    <b class='flag-5'>DSP</b>匯<b class='flag-5'>編程</b>序<b class='flag-5'>優化</b><b class='flag-5'>方法</b>的探討

    dsp編程用什么語言_dsp編程如何實現的

    TI公司的DSP用CCS開發平臺,編程語言一般是C語言;來ADI公司的源DSP用VDSP++開發平臺,一般也是用C語言。當然兩公司百都有不同型號的
    發表于 04-08 15:15 ?2.9w次閱讀
    <b class='flag-5'>dsp</b><b class='flag-5'>編程</b>用什么語言_<b class='flag-5'>dsp</b><b class='flag-5'>編程</b>如何實現的

    DSP7經典程序免費下載

    本文檔的主要內容詳細介紹的是DSP7經典程序免費下載。
    發表于 11-20 17:59 ?20次下載

    超全使用串口對DSP進行應用可編程方法

    本文介紹了一種通過串口對DSP進行應用可編程方法,該方法簡單易操作,文中給出了具體的實現方法
    的頭像 發表于 04-02 16:13 ?3689次閱讀

    基于DSP的軟件流水優化

    本文通過研究軟件流水相關技術,結合TIDSPC6000系列DSP的硬件特性,探討了DSP軟件流水的相關優化方法。通過性能比較,說明這些方法
    發表于 04-27 09:38 ?10次下載

    SDAccel環境剖析和最優化指南

    電子發燒友網站提供《SDAccel環境剖析和最優化指南.pdf》資料免費下載
    發表于 09-15 11:37 ?0次下載
    SDAccel環境<b class='flag-5'>剖析</b>和最<b class='flag-5'>優化</b>指南
    主站蜘蛛池模板: 男人的天堂色偷偷 | 丁香婷婷啪啪 | 你懂的 在线观看 | 午夜影院在线免费 | 好爽好紧好大的免费视频国产 | 色成人综合网 | 五月婷亚洲 | 欧美三级网 | 长腿丝袜美女被啪啪 | 国产综合色精品一区二区三区 | 美女操网站 | 久久久午夜精品理论片 | 日本大黄在线观看 | 你懂的手机在线 | 99久久成人国产精品免费 | 黄色日比| 性色欧美 | 女人张开腿让男人桶视频免费大全 | 色视频网址 | 国产精品三区四区 | 欧美69xxx | 深爱五月激情网 | 精品福利视频网 | www.妖精视频 | 国产男人搡女人免费视频 | 日韩无 | 欧美精品一区二区三区在线播放 | 99久久免费中文字幕精品 | 老师下面很湿很爽很紧 | 午夜视频免费观看 | 国产精品久久久久久久牛牛 | 伊人一区二区三区 | 久久精品视频观看 | 午夜艹逼 | 国产成人a毛片 | 日韩毛片视频 | 操操干干| 亚洲一区免费在线 | 欧美亚洲综合在线观看 | 色综合天天综合网国产人 | 午夜免费啪在线观看视频网站 |