基于JPEG2000小波提升在DSP上的緩存管理
掃描二維碼
隨時(shí)隨地手機(jī)看文章
JPEG2000壓縮標(biāo)準(zhǔn)與JPEG相比有更高的壓縮效率,盡管如此,它在執(zhí)行時(shí)間上還存在一些問(wèn)題。為縮短執(zhí)行時(shí)間,必須對(duì)小波變換編碼進(jìn)行優(yōu)化。小波提升方案與傳統(tǒng)的卷積濾波相比需要更小的內(nèi)存和計(jì)算量。可是,提升方案在執(zhí)行垂直小波濾濾時(shí)仍存在嚴(yán)重的緩存失敗問(wèn)題。
Meerwald曾經(jīng)提出過(guò)行擴(kuò)展和聚合的方法,Chatterjee和Brooks也提出了條采集和遞歸數(shù)據(jù)設(shè)計(jì)來(lái)改善提升方案的緩存處理。盡管這些方法可以降低緩存挫敗率,卻不能完全消除緩存失敗問(wèn)題。緩存失敗問(wèn)題在一個(gè)內(nèi)存有限的嵌入式系統(tǒng)中變得較為突出,尤其是在DSP中更為嚴(yán)重。為解決這一問(wèn)題,筆者提出了一種新的方法與DSP相匹配。
主要方法
圖1是該方法的內(nèi)存結(jié)構(gòu)圖。它由一個(gè)有兩個(gè)64字節(jié)塊聯(lián)合的16KB數(shù)據(jù)緩沖存儲(chǔ)器L1、直接映射到SRAM上的數(shù)據(jù)存儲(chǔ)器L2、直接映射到DRAM上的外部存儲(chǔ)器和一個(gè)DMA控制器組成。
通常,為執(zhí)行提升方案,圖像的行先在水平方向?yàn)V波,然后經(jīng)水平濾波的圖像再進(jìn)行垂直濾波。提出的新方法采用一個(gè)改進(jìn)的按塊執(zhí)行的提升方案,塊大小與L1緩存中的塊大小相同。圖1描述了該方法。在小波提升變換開始前,在輸入圖像內(nèi)存中塊1的數(shù)據(jù)已通過(guò)DMA傳輸?shù)絃2,然后L2中塊1的第一行被取到L1緩存中在水平方向提升。以相同方式對(duì)塊1下面的行進(jìn)行處理。注意在塊1的最后一行濾波后,L1緩存中包含輸入圖像內(nèi)存中塊1的數(shù)據(jù);其次,塊1的垂直方向的濾波在L1緩存中完成。這樣,垂直提升就不需要取數(shù)據(jù),因?yàn)長(zhǎng)1緩存包含塊1的數(shù)據(jù)。因此,塊1在水平和垂直方向的濾波只在CPU需要下一水平行時(shí)才可能有緩存失敗。這就是筆者提出的方法有顯著性能的原因所在。
塊1完成濾波后,塊2被取到L1緩存的1路中;然后,塊2的濾波完成后,塊3被從L2取到L1的0路中。同時(shí),0路中濾波過(guò)的塊1一行一行移到L2。因2描述了濾波過(guò)的塊1的移動(dòng),每個(gè)子帶分別稱為L(zhǎng)L、LH、HL和HH,已經(jīng)由小波提升算法形成。每個(gè)子帶中的數(shù)據(jù)從L2通過(guò)DMA傳送到輸出圖像內(nèi)存中的恰當(dāng)位置。
L2與外部存儲(chǔ)器之間的數(shù)據(jù)傳遞是獨(dú)立于L1與L2間的數(shù)據(jù)傳遞進(jìn)行的。這意味著通過(guò)DMA的塊復(fù)制不影響CPU的運(yùn)轉(zhuǎn)。因此,通過(guò)小波提升序列的重新排序和控制DMA,在沒(méi)有額外CPU負(fù)載的情況下增大了緩存成功率。
該方法完全去除了緩存失敗的問(wèn)題,但還存在一個(gè)問(wèn)題,因?yàn)樾V波在邊界需要一些鄰近塊的系數(shù)才能獲得正確的濾波結(jié)果。而這一方法中,垂直提升處理與這一問(wèn)題不相關(guān),因?yàn)榇怪钡膬蓚€(gè)鄰近塊總是同時(shí)裝載于L1緩存中。但對(duì)于水平提升處理,筆者用下面的方法來(lái)解決:區(qū)1和區(qū)3都取到濾波器區(qū)域1,如圖3所示。對(duì)于濾波器區(qū)2,區(qū)2和區(qū)3都是必需的。然而,當(dāng)達(dá)到改進(jìn)性能時(shí),重疊處理的開銷是可忽略的。
仿真結(jié)果
為檢驗(yàn)所提出方法的效率,在TMS320C6416 DSP上用Jasper1.700.2版進(jìn)行了仿真。所有數(shù)據(jù)都對(duì)灰度圖像的第一級(jí)分解并且所有圖像的寬度2倍放大。
其中,在水平濾波上產(chǎn)生的緩存失敗是由塊重疊引起的。然而,在垂直濾波中,算法完全去除了緩存失敗,因此,算法減少了98%的緩存失敗率。
對(duì)于所有的圖像大小,在水平濾波上都沒(méi)有改進(jìn),但是所有三種方法在垂直濾波中,行擴(kuò)展、聚合及兩種方法的聯(lián)合處理時(shí)間減少分別為78%、88%和90%;條采集、遞歸數(shù)據(jù)設(shè)計(jì)與兩種方法結(jié)合的處理時(shí)間減少分別為73%、66%和82%。筆者提出的方法在垂直濾波中減少處理時(shí)間為98%。注意,水平濾波的速度與垂直濾波基本相同。這意味著筆者提出的算法在垂直濾波中消除了最多的緩存失敗。
筆者已經(jīng)驗(yàn)證了JPEG 2000的小波提升算法的性能及其在存儲(chǔ)系統(tǒng)中的執(zhí)行。實(shí)驗(yàn)結(jié)果表明提出的方法與現(xiàn)有的快速方法相比要快2~3.5倍。