當(dāng)前位置:首頁(yè) > 電源 > 數(shù)字電源
[導(dǎo)讀]摘要 通過(guò)程序結(jié)構(gòu)的調(diào)整,編碼結(jié)構(gòu)的優(yōu)化及代碼的匯編級(jí)優(yōu)化,完成編碼器的DSP高效實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果表明,優(yōu)化后的編碼器降低了運(yùn)算復(fù)雜度,提高了CCSDS圖像壓縮算法的實(shí)時(shí)性。 關(guān)鍵詞 CCSDS;Blackfin533;編碼器;

摘要 通過(guò)程序結(jié)構(gòu)的調(diào)整,編碼結(jié)構(gòu)的優(yōu)化及代碼的匯編級(jí)優(yōu)化,完成編碼器的DSP高效實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果表明,優(yōu)化后的編碼器降低了運(yùn)算復(fù)雜度,提高了CCSDS圖像壓縮算法的實(shí)時(shí)性。
關(guān)鍵詞 CCSDS;Blackfin533;編碼器;優(yōu)化

    空間數(shù)據(jù)咨詢(xún)會(huì)(CCSDS)于2005年11月提出的針對(duì)空間應(yīng)用的CCSDS圖像壓縮算法,具有良好的圖像壓縮性能和抗誤碼能力,同時(shí)算法復(fù)雜度較低。但在具體硬件實(shí)現(xiàn)時(shí),仍不能夠滿(mǎn)足實(shí)時(shí)高效的要求,因此,必須對(duì)該算法的硬件實(shí)現(xiàn)進(jìn)行改進(jìn)和優(yōu)化。文中針對(duì)這一問(wèn)題,提出編碼優(yōu)化方案,提高算法的實(shí)時(shí)性。采用ADI公司的Blackfin533芯片以及Visual DSP++5.0仿真平臺(tái),是實(shí)現(xiàn)CCSDS編碼器的有效途徑。

1 編碼優(yōu)化
    文中采用CCSDS圖像壓縮算法編、解碼的C程序源代碼。通過(guò)以下幾個(gè)方面實(shí)現(xiàn)優(yōu)化:調(diào)整程序結(jié)構(gòu);編碼結(jié)構(gòu)的優(yōu)化;代碼的匯編級(jí)優(yōu)化。
1.1 程序結(jié)構(gòu)調(diào)整
    選用的源代碼是符合CCSDS圖像壓縮算法標(biāo)準(zhǔn)流程的編、解碼器源代碼,代碼容量約為326 kB,對(duì)于實(shí)時(shí)圖像壓縮,其中含有大量的冗余代碼,而所用芯片的64 kB指令存儲(chǔ)器是遠(yuǎn)遠(yuǎn)滿(mǎn)足不了要求的,因此,要將CCSDS源代碼移植到DSP上,就必須調(diào)整程序結(jié)構(gòu),去掉冗余代碼,降低程序所占內(nèi)存。
    (1)刪除與編碼無(wú)關(guān)的代碼。(2)刪除冗余判斷。(3)刪除不必要的中間變量。(4)改寫(xiě)編碼主函數(shù)。
    經(jīng)過(guò)以上優(yōu)化,代碼容量降低為56 kB,這樣,所選用的Blackfin533芯片的L1指令存儲(chǔ)器就足以容納,而無(wú)需利用高速Cache和DMA進(jìn)行指令的傳輸,提高了編碼效率。
1.2 主要函數(shù)和數(shù)據(jù)的優(yōu)化
    在以上優(yōu)化的基礎(chǔ)上,采用Blackfin533芯片對(duì)Lena圖像進(jìn)行壓縮,壓縮比率為8:1,時(shí)間為3425 ms,遠(yuǎn)達(dá)不到實(shí)時(shí)性的要求。因此,還需對(duì)編碼結(jié)構(gòu)和算法進(jìn)行改進(jìn),以提高編碼速度。
    (1)編碼選項(xiàng)的選取。
    在CCSDS圖像壓縮算法中有多種編碼供選取,增大了算法的靈活性,但也增加了算法硬件實(shí)現(xiàn)的復(fù)雜度,并且這些編碼選項(xiàng)在實(shí)現(xiàn)時(shí)存在大量判斷語(yǔ)句。一般情況下,判斷分支會(huì)打斷DSP指令運(yùn)行的流水線,從而影響編碼運(yùn)行時(shí)間。所以在進(jìn)行DSP移植時(shí)應(yīng)進(jìn)行編碼選項(xiàng)。
    1)編碼段大小S的選?。喝鐖Dl所示,S>64時(shí),重建圖像的客觀質(zhì)量增加趨于平緩,所以在實(shí)現(xiàn)時(shí)選擇S大小為64,這樣一個(gè)編碼段所需的編碼原數(shù)據(jù)存儲(chǔ)量為8kB,從而可以保證對(duì)編碼段的編碼過(guò)程在數(shù)據(jù)存儲(chǔ)器L1中完成,而無(wú)需Cache和DMA在各級(jí)存儲(chǔ)器之間轉(zhuǎn)移數(shù)據(jù),提高了編碼效率。


    2)DC系數(shù)編碼選項(xiàng)k的選?。簶?biāo)準(zhǔn)中提供了最優(yōu)化和啟發(fā)式兩種k值選擇方式,文中選擇復(fù)雜度較低的啟發(fā)式選取方案。
    (2)程序級(jí)優(yōu)化。
    1)Blackfin533是16位定點(diǎn)DSP處理器,而在源代碼中使用的是浮點(diǎn)DWT,移植在定點(diǎn)DSP中運(yùn)行需要大量時(shí)間。測(cè)試結(jié)果表明:對(duì)512× 512的圖像進(jìn)行浮點(diǎn)DWI變換耗時(shí)3000 ms以上,影響了CCSDS圖像壓縮算法的編碼效率。因此在實(shí)現(xiàn)過(guò)程中,采用定點(diǎn)化的方法實(shí)現(xiàn)浮點(diǎn)DWT,并最終匯編化,使對(duì)圖像進(jìn)行浮點(diǎn)DWT處理的時(shí)間降低到12 ms以下。
    2)源代碼中有大量數(shù)組類(lèi)型的指針變量,其緩沖區(qū)是通過(guò)malloc和calloc等函數(shù)進(jìn)行動(dòng)態(tài)分配的,這樣會(huì)占用大量的編碼時(shí)間和可能會(huì)導(dǎo)致內(nèi)存泄露以及導(dǎo)致DMA數(shù)組傳輸錯(cuò)誤等問(wèn)題,所以在實(shí)現(xiàn)過(guò)程中,由于所需編碼的圖像信息是可以事先得知的,于是可用靜態(tài)數(shù)組來(lái)代替動(dòng)態(tài)申請(qǐng)的數(shù)組,這樣不僅指定了分配的位置,便于DMA傳輸,還縮短了編碼時(shí)間。
    3)編碼塊的數(shù)據(jù)格式選取:源代碼中是將一個(gè)編碼塊按照二維數(shù)組的格式進(jìn)行存儲(chǔ)的,即8×8的格式。在實(shí)現(xiàn)過(guò)程中發(fā)現(xiàn),DC系數(shù)編碼及AC系數(shù)字的映射過(guò)程對(duì)二維數(shù)組的索引取值耗時(shí)很長(zhǎng),因此可以將編碼塊改成一維數(shù)組,即1×64的組織形式,這樣在實(shí)現(xiàn)過(guò)程中可以減少編碼時(shí)間。
    4)用查表法代替大量的判斷分支:AC系數(shù)熵編碼函數(shù)RiceCoding中有大量的分支判斷語(yǔ)句,占據(jù)大量的編碼時(shí)間,用查表法替換這里的分支判斷語(yǔ)句,可以使函數(shù)的編碼時(shí)間減少80%以上。此外,CCSDS編碼器代碼中的大量分支判斷語(yǔ)句和RiceCoding函數(shù)一樣,也可用查表法實(shí)現(xiàn)。這正是以空間換時(shí)間的典型應(yīng)用。[!--empirenews.page--]
    5)在源代碼中,為了節(jié)省存儲(chǔ)器空間,在結(jié)構(gòu)中使用了位域,但Blackfin 533在處理位域操作時(shí)效率極低,若將位域類(lèi)型改為char或sh-ort類(lèi)型,雖然在一定程度上增加了編碼時(shí)所需的存儲(chǔ)容量,但卻能夠明顯縮短編碼時(shí)間。
    6)碼流輸出函數(shù)BitsOutput的功能是輸出指定位數(shù)的數(shù)據(jù)到碼流文件,在源代碼中占到總編碼時(shí)間的約1/5。據(jù)統(tǒng)計(jì),在壓縮比率為8:1的 Lena圖時(shí),程序調(diào)用BitsOutput函數(shù)達(dá)14萬(wàn)多次。若將該函數(shù)改為32位的形式輸出,并通過(guò)移位方式進(jìn)行碼流輸出以及在程序中減少該函數(shù)調(diào)用的方法進(jìn)行優(yōu)化,可使其占用周期減少到原來(lái)的20%。另外,編碼時(shí)只輸出一位的情況很多,將這些地方換成單獨(dú)的函數(shù)可進(jìn)一步減少編碼時(shí)間;
    7)循環(huán)優(yōu)化:保持循環(huán)體內(nèi)代碼簡(jiǎn)單,減少分支判斷。避免循環(huán)中依賴(lài)前次循環(huán)的數(shù)據(jù),這樣可以實(shí)現(xiàn)并行處理。內(nèi)外循環(huán)合并,可以使優(yōu)化器專(zhuān)注于內(nèi)循環(huán)。減少數(shù)據(jù)跨切層數(shù)。利用Blackfin533的零開(kāi)銷(xiāo)循環(huán),將代碼中的循環(huán)層數(shù)控制在兩層以?xún)?nèi)。
    (3)匯編級(jí)優(yōu)化。
    通過(guò)以上方式進(jìn)行的CCSDS編碼器的優(yōu)化,使得圖像編碼的時(shí)間縮短,但是,這樣實(shí)現(xiàn)的算法運(yùn)行效率還是比較低,這是因?yàn)樗械拇a都是由C語(yǔ)言編寫(xiě)的,并沒(méi)有完全利用DSP的各種性能。因此必須結(jié)合DSP本身的特點(diǎn),對(duì)其進(jìn)一步優(yōu)化,才能使CCSDS高效的對(duì)圖像進(jìn)行編碼。
    C語(yǔ)言匯編化的優(yōu)化方法有:
    (1)節(jié)省寄存器資源。Blackfin提供了8個(gè)32位數(shù)據(jù)寄存器及一系列地址寄存器。對(duì)于這些寄存器,應(yīng)盡可能做到一個(gè)寄存器多次使用,同時(shí)盡量使用較短的數(shù)據(jù)類(lèi)型。
    (2)利用指令的流水線結(jié)構(gòu),盡量展開(kāi)C語(yǔ)言中的循環(huán)體,減少分支判斷,盡量減少流水線的打斷。
    (3)使用并行指令。大多數(shù)指令都存在相應(yīng)的可并行的指令,如一條運(yùn)算指令可以并行兩條數(shù)據(jù)讀取指令。使用并行指令可以成倍地提高代碼的執(zhí)行速度。
    (4)將除法轉(zhuǎn)化為乘法或查表實(shí)現(xiàn)。Blackfin中提供了乘法器但沒(méi)有除法器,執(zhí)行除法指令將花費(fèi)幾十甚至上百個(gè)指令周期,因此將除法轉(zhuǎn)化為乘法或查表,可減少這種開(kāi)銷(xiāo)。
    (5)使用專(zhuān)用指令。Blackfin533提供了大量的圖像視頻專(zhuān)用指令,通過(guò)使用這些指令,能在很大程度上提高代碼的執(zhí)行效率。

2 優(yōu)化結(jié)果
    選用Lena圖像和Area圖像在壓縮比率為8的情況下進(jìn)行測(cè)試,測(cè)試結(jié)果如表1所示,可見(jiàn)文中的優(yōu)化方案可將編碼時(shí)間由原來(lái)的3 425 ms優(yōu)化至48 ms,時(shí)間節(jié)省98.6%,提高了CCSDS圖像壓縮算法編碼的實(shí)時(shí)性能。



3 結(jié)束語(yǔ)
    文中首先介紹了CCSDS算法結(jié)構(gòu)的一般流程,接著針對(duì)編碼器的DSP移植提出了優(yōu)化方案,包括算法編碼選項(xiàng)的選取優(yōu)化、系統(tǒng)級(jí)優(yōu)化、程序級(jí)優(yōu)化以及匯編優(yōu)化,最后給出了對(duì)比結(jié)果。可見(jiàn),文中提出的優(yōu)化方法縮短了編碼時(shí)間,提高了算法效率。
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉