王 欣,蔣 林,曹 非,李遠(yuǎn)成
(1.西安科技大學(xué) 電氣與控制工程學(xué)院,陜西 西安 710600;2.西安科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,陜西 西安 710600)
高效視頻編碼(High Efficiency Video Coding,HEVC)標(biāo)準(zhǔn)是新一代視頻編碼國(guó)際標(biāo)準(zhǔn)。與上一代標(biāo)準(zhǔn)H.264/AVC相比,在編碼結(jié)構(gòu)上放棄了宏塊的概念[1],采用了對(duì)圖像進(jìn)行四叉樹(shù)劃分的方式。這種四叉樹(shù)遞歸結(jié)構(gòu)在將壓縮效率提升了1倍的同時(shí),也極大地增加了編碼計(jì)算復(fù)雜度與編碼時(shí)間[2]。因此,降低四叉樹(shù)編碼過(guò)程中的計(jì)算復(fù)雜度與減少編碼時(shí)間是研究的問(wèn)題之一[3]。
針對(duì)高效視頻編碼中編碼復(fù)雜度高的問(wèn)題,一些研究通過(guò)算法的簡(jiǎn)化,降低四叉樹(shù)編碼復(fù)雜度[4]。文獻(xiàn)[5]針對(duì)快速編碼單元(Coding Unit,CU)編碼過(guò)程中四叉樹(shù)遍歷計(jì)算出現(xiàn)的冗余信息,提出了一種靈活的復(fù)雜度分配機(jī)制,該分配機(jī)制將CU深度決策問(wèn)題轉(zhuǎn)換為分類問(wèn)題。但是,該方法存在計(jì)算量大和存儲(chǔ)成本高的問(wèn)題。從視頻編碼算法的角度考慮[6],優(yōu)化后的算法計(jì)算量仍然巨大,單從算法層面去進(jìn)行優(yōu)化[7-8],仍然無(wú)法滿足實(shí)時(shí)視頻編碼的需求。所以,在優(yōu)化編碼算法的同時(shí),采用FPGA進(jìn)行并行加速也是提升編碼效率的一種更有效的方式。文獻(xiàn)[9-11]在優(yōu)化編碼算法的同時(shí)進(jìn)行了FPGA加速,縮短了編碼時(shí)間,但也占用了較大的硬件資源和專用的DSP。文獻(xiàn)[10]基于多核處理器實(shí)現(xiàn)了解碼器,雖然有效利用了多核的并行性,但其使用了多達(dá)64個(gè)處理單元,硬件成本較高。
針對(duì)高效視頻編碼中編碼復(fù)雜度高的問(wèn)題,可以通過(guò)FPGA加速來(lái)提高編碼效率。利用硬件加速器來(lái)實(shí)現(xiàn)視頻編碼加速,執(zhí)行計(jì)算密集型算法,以滿足視頻應(yīng)用的性能要求,是當(dāng)前的研究熱點(diǎn)。四叉樹(shù)編碼算法的數(shù)據(jù)以CU的形式參與運(yùn)算,運(yùn)算步驟相對(duì)獨(dú)立,計(jì)算過(guò)程中數(shù)據(jù)依賴性低,具有較高的并行性,適合可重構(gòu)陣列處理器進(jìn)行并行運(yùn)算。四叉樹(shù)編碼的過(guò)程中會(huì)將圖像的數(shù)據(jù)最大劃分為樹(shù)形結(jié)構(gòu)單元(Coding Tree Unit,CTU),且編碼過(guò)程可以劃分成不同的模塊,不同的CTU間便可以采用流水線作業(yè)思想進(jìn)行加速作業(yè)。
綜上所述,基于可重構(gòu)陣列處理器,提出了一種新的四叉樹(shù)CU劃分并行化設(shè)計(jì)方案,在不考慮功耗的情況下,重點(diǎn)研究設(shè)計(jì)方案在并行加速與硬件資源消耗等方面的性能,實(shí)現(xiàn)四叉樹(shù)CU在可重構(gòu)陣列上的高效靈活部署。
HEVC編碼結(jié)構(gòu)首先是將視頻劃分為圖像組(Group of Picture,GOP),CTU是HEVC里的基本處理單元。在每個(gè)CTU內(nèi)部按照四叉樹(shù)的循環(huán)分層結(jié)構(gòu)劃分為不同的CU,CU是HEVC總體框架的基本單元。一幅圖像劃分為CTU以及一個(gè)CTU劃分為CU的圖像,劃分結(jié)構(gòu)示意圖如圖1所示。
CU的循環(huán)四叉樹(shù)分層結(jié)構(gòu)如圖2所示。CU是否繼續(xù)劃分取決于分割標(biāo)志位(Splitflag)。對(duì)于編碼單元CUd,假設(shè)其大小為2N×2N,深度為d。若它對(duì)應(yīng)的Splitflag值為0,則CUd不再進(jìn)行劃分;反之,CUd將會(huì)作為四叉樹(shù)劃分的根源被劃分為4個(gè)獨(dú)立的編碼單元CUd+1,編碼單元CUd+1的深度和大小變?yōu)閐+1和N×N。HEVC標(biāo)準(zhǔn)中最大的編碼單元(Largest Coding Unit,LCU)為64×64。
圖1 圖像劃分結(jié)構(gòu)示意Fig.1 Schematic diagram of image division structure
圖2 CU的循環(huán)四叉樹(shù)分層結(jié)構(gòu)Fig.2 Cyclic quadtree hierarchical structure of coding unit
在HEVC測(cè)試模型參考軟件中會(huì)有很多種可能的分割方法,通過(guò)尋找率失真(Rate Distortion,RD)最小的方法作為最佳分割[12]。率失真的計(jì)算公式如下:
J=SATD(S,P)+λmodeRmode,
(1)
式中,SATD(S,P)為經(jīng)過(guò)幀內(nèi)預(yù)測(cè)后得到的殘差塊的SATD;λmode為拉格朗日因子;Rmode為編碼當(dāng)前模式所需要的比特?cái)?shù)。SATD是指將殘差信號(hào)進(jìn)行哈達(dá)瑪變換后再求元素絕對(duì)值之和。
算法對(duì)每個(gè)CU均進(jìn)行率失真的計(jì)算,計(jì)算方法如下:
JCUi=JCU0+JCU1+JCU2+JCU3,
(2)
式中,JCUi(i=0,1,2,3)表示當(dāng)前CU的率失真;JCU0,JCU1,JCU2,JCU3表示分割后4個(gè)更小的CU的率失真。
通過(guò)遞歸的方式獲取所有的CU的率失真,對(duì)每一深度進(jìn)行分割后CU與分割前CU的率失真比較,選取率失真小的作為最優(yōu)CU分割方法。若J分割前>J分割后,此時(shí)Splitflag值為1,CUd將會(huì)作為四叉樹(shù)劃分的根源被劃分為4個(gè)獨(dú)立的編碼單元CUd+1。若J分割前 HEVC這種靈活的單元表示方法可以使得在平緩區(qū)域編碼效率大大提高的同時(shí)提供數(shù)據(jù)并行處理的結(jié)構(gòu)單元。 考慮到HEVC標(biāo)準(zhǔn)的特點(diǎn),在四叉樹(shù)編碼劃分的過(guò)程中信息劃分為相互獨(dú)立的部分,每一部分交給不同的處理單元PE來(lái)處理。結(jié)合分布式共享存儲(chǔ)結(jié)構(gòu),從數(shù)據(jù)級(jí)并行的角度進(jìn)行算法加速。數(shù)據(jù)并行實(shí)現(xiàn)示意圖如圖3所示。 圖3 并行實(shí)現(xiàn)示意Fig.3 Schematic diagram of data parallel implementation 在CTU進(jìn)行四叉樹(shù)編碼劃分的內(nèi)部,由于每個(gè)CTU的數(shù)據(jù)之間要進(jìn)行比較判別運(yùn)算,相鄰數(shù)據(jù)之間存在依賴關(guān)系,因此,可將CTU劃分成不同的塊,多塊CTU被分別送到不同的PE處理單元中并行進(jìn)行判別運(yùn)算處理,當(dāng)每個(gè)PE處理結(jié)果出現(xiàn)判別結(jié)束的標(biāo)志時(shí),將這個(gè)PE的輸出結(jié)果基于CTU到CU間的循環(huán)嵌套分層結(jié)構(gòu)再進(jìn)行下一層次的判別運(yùn)算。若所有進(jìn)行多塊CTU的PE劃分到最后,則將多塊CTU的數(shù)據(jù)再整合進(jìn)行判別,最終得到編碼劃分結(jié)果。在整個(gè)HEVC編碼過(guò)程中,可以分為不同的模塊,主要進(jìn)行數(shù)據(jù)加載、率失真的計(jì)算與比較、不同深度的數(shù)據(jù)劃分和編碼劃分結(jié)果的輸出,各個(gè)功能的模塊組成串行的四級(jí)流水,而分別在各個(gè)模塊的內(nèi)部,針對(duì)不同的子數(shù)據(jù)進(jìn)行數(shù)據(jù)并行。這樣,在四叉樹(shù)CU的劃分過(guò)程中基于可重構(gòu)陣列處理器混合功能并行和數(shù)據(jù)并行2種并行方式對(duì)編碼過(guò)程進(jìn)行加速。 可重構(gòu)陣列處理器(基于FPGA實(shí)現(xiàn)的BEE4平臺(tái)),能夠滿足四叉樹(shù)CU劃分的并行化設(shè)計(jì)需求[13]。可重構(gòu)陣列處理器由主控器和可重構(gòu)處理單元陣列組成。可重構(gòu)陣列處理器的部分硬件結(jié)構(gòu)如圖4所示,主要包括數(shù)據(jù)輸入存儲(chǔ)、陣列處理器、全局控制器、指令存儲(chǔ)器和數(shù)據(jù)輸出存儲(chǔ)器5部分。 圖4 可重構(gòu)陣列處理器部分硬件結(jié)構(gòu)Fig.4 Part of the hardware structure of the reconfigurable array processor 可重構(gòu)陣列處理器結(jié)構(gòu)中每16個(gè)處理單元(Process Element,PE)組成一個(gè)簇(Processing Element Group,PEG),采用4×4的矩陣結(jié)構(gòu)。采用分布式共享存儲(chǔ)結(jié)構(gòu),這種結(jié)構(gòu)是一種最直接且并行度很高的高速交換單元結(jié)構(gòu)。在邏輯上整個(gè)片上存儲(chǔ)采用統(tǒng)一的編址方式,在物理上分布于各個(gè)PE,實(shí)現(xiàn)了存儲(chǔ)的并行訪問(wèn)。具有“邏輯共享、物理分布”特性的分布式存儲(chǔ)結(jié)構(gòu),所表現(xiàn)出的并行化設(shè)計(jì)優(yōu)勢(shì),適合四叉樹(shù)編碼劃分算法這種數(shù)據(jù)密集型算法。 基于可重構(gòu)陣列處理器硬件結(jié)構(gòu)以及1.2節(jié)中四叉樹(shù)編碼劃分的并行性分析,從功能并行和數(shù)據(jù)并行2種并行方式對(duì)編碼過(guò)程進(jìn)行加速及映射實(shí)現(xiàn)。 2.2.1 基于分布式存儲(chǔ)的并行映射實(shí)現(xiàn)——數(shù)據(jù)并行 四叉樹(shù)編碼劃分的16個(gè)PE并行映射圖如圖5所示。 步驟1:將要?jiǎng)澐值脑紙D像幀數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)輸入存儲(chǔ)DIM中。PE00與DIM相連,將外部存儲(chǔ)中原始的一幀圖像分為64 pixel×64 pixel的CTU數(shù)據(jù)通過(guò)PE進(jìn)行數(shù)據(jù)下發(fā),分別下發(fā)給00~33號(hào)這16個(gè)PE。 步驟2:每個(gè)PE并行對(duì)其數(shù)據(jù)進(jìn)行判別運(yùn)算,若PE中的數(shù)據(jù)判別結(jié)果Splitflag值為1,直接將PE的RAM中的16×16的CU塊數(shù)據(jù)分割成8×8的CU,此時(shí)輸出depth為3;若每個(gè)PE中判別結(jié)果Splitflag值為0,若PE00,PE01,PE10,PE11內(nèi)數(shù)據(jù)判別Splitflag值均為0,則判別這4個(gè)PE的Splitflag值;若Splitflag值為1,此時(shí)輸出depth為2;與此同時(shí),PE02,PE03,PE12,PE13;PE20,PE21,PE30,PE31;PE02,PE03,PE12,PE13均并行采取相同的操作。 步驟3:若PE00,PE01,PE10,PE11的輸出結(jié)果Splitflag值為0,且PE02,PE03,PE12,PE13的輸出結(jié)果Splitflag值為0;PE20,PE21,PE30,PE31的輸出結(jié)果Splitflag值為0;PE02,PE03,PE12,PE13的輸出結(jié)果Splitflag值為0,則判別這4部分的輸出的Splitflag值,若Splitflag值為1,則輸出depth為1;否則,輸出depth為0。 圖5 基于可重構(gòu)陣列處理器的四叉樹(shù)編碼劃分映射Fig.5 Quadtree coding division mapping based on reconfigurable array processor 2.2.2 基于流水線加速并行——功能并行 在采用16個(gè)PE進(jìn)行四叉樹(shù)編碼的過(guò)程中,可以將劃分過(guò)程分為數(shù)據(jù)加載、率失真的計(jì)算與比較、不同深度的數(shù)據(jù)劃分以及編碼劃分結(jié)果的輸出等不同的模塊。有的PE在算法的執(zhí)行過(guò)程中會(huì)處于空閑狀態(tài),為了最大化地減少編碼時(shí)間,使用如圖6所示的流水線方式實(shí)現(xiàn)CTU間并行加速,其中B1~Bm是指在四叉樹(shù)劃分過(guò)程中不同深度模塊的操作。 圖6中,將圖像的像素塊通過(guò)原始數(shù)據(jù)加載、Splitflag值計(jì)算、深度劃分和結(jié)果輸出這4個(gè)部分進(jìn)行四叉樹(shù)編碼劃分。當(dāng)?shù)谝粋€(gè)CTU數(shù)據(jù)加載完成后,第二個(gè)CTU開(kāi)始原始數(shù)據(jù)加載。因此,采用此流水線方式能夠縮短編碼劃分的執(zhí)行時(shí)間。采用16個(gè)PE進(jìn)行四叉樹(shù)編碼劃分的方案采用流水線方式加速的設(shè)計(jì)方法,算法如下所示: if addparallel(“Quadtree”,1)finish∥激活四叉樹(shù)編碼劃分操作 The core 1exec Quadtree(image_orgin,image_code); endif addparallel(input,the_core)={ i=get_input_core_ID(input); if the coreiisfreedom∥確定處理單元是否空閑 return finish; else continue to wait;∥同步 endif} 其中,addparallel(“Quadtree”1)詢問(wèn)處理單元是否處于freedom狀態(tài),對(duì)于繁忙狀態(tài)則需要等待,進(jìn)行線程同步;反之,直接進(jìn)行運(yùn)算處理。 圖6 四叉樹(shù)編碼劃分時(shí)空間流水線作業(yè)圖Fig.6 Spatial pipeline operation diagram of quadtree coding division 在編譯方式上,與通用編譯為單一目標(biāo)處理器的匯編指令不同,可重構(gòu)編譯通過(guò)軟硬件劃分,將劃分結(jié)果分別生成主控制器的控制碼以及配置陣列處理器上的配置信息??芍貥?gòu)陣列處理器的執(zhí)行方式是通過(guò)主處理器將任務(wù)下發(fā)給可重構(gòu)陣列處理器執(zhí)行,采用主控制器選擇片上配置存儲(chǔ)器中的信息,將信息下發(fā)給處理簇PEG執(zhí)行,每個(gè)簇再通過(guò)片上配置存儲(chǔ)器將存儲(chǔ)的可重構(gòu)配置信息分配到PE中進(jìn)行運(yùn)算。 重構(gòu)配置信息執(zhí)行示意圖如圖7所示。首先,通過(guò)分析四叉樹(shù)CU的劃分算法與可重構(gòu)陣列結(jié)構(gòu)的關(guān)系得到四叉樹(shù)CU算法的配置信息。然后,將配置信息載入到片上配置存儲(chǔ)器,在可重構(gòu)計(jì)算陣列執(zhí)行時(shí),載入PEG。最后,在并行執(zhí)行的過(guò)程中,PEG00載入四叉樹(shù)編碼劃分配置信息后重復(fù)執(zhí)行N次四叉樹(shù)編碼劃分,最后得到四叉樹(shù)編碼劃分的結(jié)果。 圖7 可重構(gòu)配置信息執(zhí)行示意Fig.7 Schematic diagram of reconfigurable configuration information execution 為了驗(yàn)證四叉樹(shù)編碼并行化實(shí)現(xiàn)方案的可行性,在基于BEECube公司BEE4開(kāi)發(fā)平臺(tái)搭建的可重構(gòu)陣列處理器原型系統(tǒng)上進(jìn)行驗(yàn)證和測(cè)試[14]。首先,將算法代碼編譯為可重構(gòu)陣列處理器匯編指令代碼;接著,用指令翻譯器將匯編代碼指令翻譯成二進(jìn)制代碼;然后,使用Questasim10.1d進(jìn)行功能仿真驗(yàn)證,通過(guò)Xilinx公司的ISE14.7開(kāi)發(fā)環(huán)境對(duì)設(shè)計(jì)進(jìn)行綜合,并分析其性能;最后,在參考軟件HM中測(cè)試編碼性能,并將本文提出的四叉樹(shù)編碼劃分并行化方案在可重構(gòu)陣列處理器測(cè)試平臺(tái)中進(jìn)行FPGA硬件測(cè)試。 3.2.1 運(yùn)行時(shí)間分析 實(shí)驗(yàn)通過(guò)串行和并行2種實(shí)現(xiàn)方案對(duì)算法并行模塊運(yùn)行時(shí)間做對(duì)比分析。算法的運(yùn)行時(shí)間通過(guò)Qusetasim進(jìn)行功能仿真得到。在depth_balloons測(cè)試序列中找到4種具有代表性的CTU劃分模型,如圖8所示。測(cè)試模型a不進(jìn)行劃分,最大深度為0;測(cè)試模型b是一個(gè)深度為1的根節(jié)點(diǎn)劃分為最大深度3;測(cè)試模型c是一個(gè)深度為2的根節(jié)點(diǎn)劃分為最大深度3;測(cè)試模型d是全劃分為最大深度3。 在算法執(zhí)行過(guò)程中,記錄4種測(cè)試模型從開(kāi)始到結(jié)束的時(shí)間來(lái)計(jì)算運(yùn)行時(shí)間。4種測(cè)試序列在不同實(shí)現(xiàn)方案下的運(yùn)行時(shí)間對(duì)比如表1所示。 (a) 測(cè)試模型a (b) 測(cè)試模型b (c) 測(cè)試模型c (d) 測(cè)試模型d 表1 不同測(cè)試模型下不同方案運(yùn)行時(shí)間對(duì)比 由表1可以看出,用于測(cè)試的4種測(cè)試模型a~d的數(shù)據(jù)量是逐步增加的,測(cè)試模型a~d體現(xiàn)并行性的程度是逐漸提高的。與單個(gè)PE串行相比,并行方案在4種測(cè)試模型下的平均加速比達(dá)到了9.64,在可重構(gòu)陣列處理器上PE資源的使用比例,即在一個(gè)簇內(nèi)的PE資源利用率提高了93.75%。 由統(tǒng)計(jì)的運(yùn)行時(shí)間可以看出,并行加速比都隨著測(cè)試模型數(shù)據(jù)并行性的增加而增加。本文基于可重構(gòu)陣列處理器所設(shè)計(jì)的并行方案在不同的測(cè)試模型中均可提高數(shù)據(jù)的并行性,減少編碼時(shí)間,特別是在數(shù)據(jù)量越大、數(shù)據(jù)劃分越復(fù)雜的情況下。因而針對(duì)四叉樹(shù)編碼這種數(shù)據(jù)密集型算法,并行方案能夠有效減少算法的運(yùn)行時(shí)間。 文獻(xiàn)[15]提出了一種基于四叉樹(shù)模型的快速幀間編碼算法,同時(shí)考慮CU深度級(jí)別的邊緣信息,提出了一種快速CU劃分方案。根據(jù)提出的四叉樹(shù)模型和CU大小的相關(guān)性盡早確定可能的深度范圍,加快編碼過(guò)程。其實(shí)驗(yàn)平臺(tái)為Inter? CoreTMi5 CPU,16 GB內(nèi)存。本文基于可重構(gòu)陣列處理器的結(jié)構(gòu)特點(diǎn)進(jìn)行算法的并行實(shí)現(xiàn),減少編碼時(shí)間。采用本文所提出的并行化方案對(duì)PartScence,Basketballdrive,BQTerrace和Cactus測(cè)試序列進(jìn)行編碼劃分,編碼時(shí)間對(duì)比如圖9所示。與文獻(xiàn)[15]相比,本文對(duì)測(cè)試序列Cactus進(jìn)行四叉樹(shù)劃分的編碼時(shí)間減少最多,相比文獻(xiàn)[15]編碼時(shí)間總體提升約36倍。 圖9 編碼時(shí)間對(duì)比Fig.9 Coding time comparison chart 3.2.2 編碼性能對(duì)比分析 本文與3D-HEVC參考軟件(HM)中幾種測(cè)試序列在編碼過(guò)程中CU劃分結(jié)果分析統(tǒng)計(jì)并進(jìn)行了對(duì)比,結(jié)果如圖10和11所示。 圖10 HM劃分結(jié)果Fig.10 HM division result 圖11 本文劃分結(jié)果Fig.11 Division results of test 從圖10和11中的數(shù)據(jù)對(duì)比可以得出,本文與HM測(cè)試模型相比編碼劃分結(jié)果的精準(zhǔn)率為86%。 使用本文的方法作為編碼劃分的方法,選取了5組測(cè)試序列在BeeCube公司的BEE4搭建的可重構(gòu)陣列處理器測(cè)試平臺(tái)中進(jìn)行驗(yàn)證測(cè)試。采用的峰值信噪比(Peak Signal to Noise Ratio,PSNR)和結(jié)構(gòu)相似性(Structural Similariy Index Measurement,SSIM)是2種常用的圖像質(zhì)量評(píng)價(jià)指標(biāo),對(duì)完整Ι幀的測(cè)試結(jié)果圖像進(jìn)行分析,如表2所示,相比HM測(cè)試一個(gè)完整Ι幀的結(jié)果,平均PSNR值增加了2.425 1 dB,平均SSIM值為0.995 7。 表2 測(cè)試性能分析 3.2.3 硬件資源對(duì)比分析 為了更好地說(shuō)明本文設(shè)計(jì)方案的優(yōu)勢(shì),將算法對(duì)應(yīng)的硬件設(shè)計(jì)綜合情況與其他同類型文獻(xiàn)進(jìn)行對(duì)比。實(shí)驗(yàn)數(shù)據(jù)如表3所示,文獻(xiàn)[16]在Xilinx Virtex 6的開(kāi)發(fā)平臺(tái)上設(shè)計(jì)基于HEVC的視頻編碼算法,硬件設(shè)計(jì)上采用全流水線方式工作,最大只能支持5條路徑并行,本文中支持最大16個(gè)PE并行。與本文相比,文獻(xiàn)[16]的LUT的資源與寄存器的資源消耗增加了很多;在實(shí)現(xiàn)了更高的并行度的情況下,本文方案硬件消耗相對(duì)較少,ISE硬件綜合資源消耗圖如圖12所示,LUT資源僅使用了31 730個(gè),REG資源僅使用了9 664個(gè)。 圖12 硬件資源消耗Fig.12 Hardware resource consumption 文獻(xiàn)[17]在Xilinx Zynq ZC706上實(shí)現(xiàn),編碼器以140 MHz的工作頻率實(shí)現(xiàn)編碼,工作頻率略高于本文。本文和文獻(xiàn)[17]在功能上都可以支持任意大小塊劃分。但相比于文獻(xiàn)[16],本文的硬件消耗(LUT資源+REG資源)減少62%,且沒(méi)有使用乘法器進(jìn)行運(yùn)算,使用加法器和移位操作代替乘法器進(jìn)行運(yùn)算,計(jì)算速度更快,無(wú)需使用DSP資源。 文獻(xiàn)[18]基于Virtex 7現(xiàn)場(chǎng)可編程門(mén)陣列設(shè)計(jì)硬件的混合并行和數(shù)據(jù)流級(jí)架構(gòu)的HEVC編碼。在功能上可以支持任意大小塊劃分。相比于文獻(xiàn)[18],在工作頻率略高的情況下本文的硬件消耗也明顯減少。LUT資源僅占其使用量的28%,REG資源僅占其使用量的80%。 綜上所述,本文基于可重構(gòu)陣列處理器的設(shè)計(jì)方案在較低的硬件消耗下實(shí)現(xiàn)了四叉樹(shù)編碼的并行化設(shè)計(jì),并行加速比達(dá)到9.64,且在結(jié)構(gòu)上具備靈活性。 表3 硬件結(jié)果對(duì)比 針對(duì)3D-HEVC標(biāo)準(zhǔn)中四叉樹(shù)編碼劃分存在的編碼復(fù)雜度高、數(shù)據(jù)量大、編碼時(shí)間長(zhǎng)和資源消耗大的問(wèn)題,基于可重構(gòu)陣列處理器提出了一種新的四叉樹(shù)CU并行劃分方案,完成并行映射、功能仿真以及FPGA測(cè)試。該方案利用可重構(gòu)陣列結(jié)構(gòu)分布式共享存儲(chǔ)的特點(diǎn),充分挖掘數(shù)據(jù)之間的并行性,實(shí)現(xiàn)計(jì)算資源PE的最大化利用,減少編碼劃分的時(shí)間。實(shí)驗(yàn)結(jié)果表明,四叉樹(shù)CU劃分在更具備靈活性的同時(shí),與單個(gè)處理單元PE串行相比,16個(gè)PE并行設(shè)計(jì)的加速比達(dá)到9.64,很大程度上減少了編碼時(shí)間。相比于文獻(xiàn)[12]編碼效率總體提升了約36倍。簇內(nèi)PE的資源利用率提高了93.75%。與文獻(xiàn)[14]相比,在不使用DSP資源的情況下資源消耗降低了62%。與文獻(xiàn)[15]專用硬件對(duì)比,LUT資源消耗減少了78%,REG資源消耗減少了20%??傊?,基于可重構(gòu)陣列處理器的四叉樹(shù)編碼并行劃分方案,在不影響編碼質(zhì)量的同時(shí),提升了編碼效率,且硬件資源消耗也相對(duì)較少。1.2 四叉樹(shù)編碼劃分的并行性分析
2 基于可重構(gòu)陣列處理器的四叉樹(shù)編碼劃分并行實(shí)現(xiàn)
2.1 可重構(gòu)陣列處理器硬件結(jié)構(gòu)
2.2 四叉樹(shù)編碼劃分并行實(shí)現(xiàn)
2.3 重構(gòu)信息配置
3 實(shí)驗(yàn)及結(jié)果分析
3.1 實(shí)驗(yàn)平臺(tái)環(huán)境
3.2 實(shí)驗(yàn)結(jié)果
4 結(jié)束語(yǔ)