久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Blackfin533的CCSDS圖像壓縮算法編碼優化

基于Blackfin533的CCSDS圖像壓縮算法編碼優化

作者: 時間:2010-12-16 來源:網絡 收藏

5)在源代碼中,為了節省存儲器空間,在結構中使用了位域,但Blackfin 533在處理位域操作時效率極低,若將位域類型改為char或sh-ort類型,雖然在一定程度上增加了編碼時所需的存儲容量,但卻能夠明顯縮短編碼時間。
6)碼流輸出函數BitsOutput的功能是輸出指定位數的數據到碼流文件,在源代碼中占到總編碼時間的約1/5。據統計,在壓縮比率為8:1的 Lena圖時,程序調用BitsOutput函數達14萬多次。若將該函數改為32位的形式輸出,并通過移位方式進行碼流輸出以及在程序中減少該函數調用的方法進行優化,可使其占用周期減少到原來的20%。另外,編碼時只輸出一位的情況很多,將這些地方換成單獨的函數可進一步減少編碼時間;
7)循環優化:保持循環體內代碼簡單,減少分支判斷。避免循環中依賴前次循環的數據,這樣可以實現并行處理。內外循環合并,可以使優化器專注于內循環。減少數據跨切層數。利用Blackfin533的零開銷循環,將代碼中的循環層數控制在兩層以內。
(3)匯編級優化。
通過以上方式進行的CCSDS編碼器的優化,使得圖像編碼的時間縮短,但是,這樣實現的算法運行效率還是比較低,這是因為所有的代碼都是由C語言編寫的,并沒有完全利用的各種性能。因此必須結合本身的特點,對其進一步優化,才能使CCSDS高效的對圖像進行編碼。
C語言匯編化的優化方法有:
(1)節省寄存器資源。Blackfin提供了8個32位數據寄存器及一系列地址寄存器。對于這些寄存器,應盡可能做到一個寄存器多次使用,同時盡量使用較短的數據類型。
(2)利用指令的流水線結構,盡量展開C語言中的循環體,減少分支判斷,盡量減少流水線的打斷。
(3)使用并行指令。大多數指令都存在相應的可并行的指令,如一條運算指令可以并行兩條數據讀取指令。使用并行指令可以成倍地提高代碼的執行速度。
(4)將除法轉化為乘法或查表實現。Blackfin中提供了乘法器但沒有除法器,執行除法指令將花費幾十甚至上百個指令周期,因此將除法轉化為乘法或查表,可減少這種開銷。
(5)使用專用指令。Blackfin533提供了大量的圖像視頻專用指令,通過使用這些指令,能在很大程度上提高代碼的執行效率。

2 優化結果
選用Lena圖像和Area圖像在壓縮比率為8的情況下進行測試,測試結果如表1所示,可見文中的優化方案可將編碼時間由原來的3 425 ms優化至48 ms,時間節省98.6%,提高了CCSDS圖像壓縮算法編碼的實時性能。
b.JPG


3 結束語
文中首先介紹了CCSDS算法結構的一般流程,接著針對編碼器的移植提出了優化方案,包括算法編碼選項的選取優化、系統級優化、程序級優化以及匯編優化,最后給出了對比結果。可見,文中提出的優化方法縮短了編碼時間,提高了算法效率。

本文引用地址:http://cqxgywz.com/article/151180.htm

上一頁 1 2 下一頁

關鍵詞: DSP

評論


相關推薦

技術專區

關閉