李 勇,陳書明,陳勝剛
(國(guó)防科學(xué)技術(shù)大學(xué)計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073)
一種基于YHFT-MatrixDSP的去塊效應(yīng)濾波算法的向量化實(shí)現(xiàn)*
李 勇,陳書明,陳勝剛
(國(guó)防科學(xué)技術(shù)大學(xué)計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073)
針對(duì)H.264視頻壓縮編碼標(biāo)準(zhǔn)中去塊效應(yīng)濾波器部分提出了一種基于YHFT-Matrix DSP的并行設(shè)計(jì)及向量實(shí)現(xiàn)方法。重點(diǎn)對(duì)H.264協(xié)議中去塊效應(yīng)濾波器進(jìn)行理論分析,并利用向量數(shù)據(jù)訪問(wèn)單元、向量處理單元、高效的混洗單元和靈活的矩陣對(duì)其進(jìn)行并行算法設(shè)計(jì)。將去塊濾波算法分別映射到Y(jié)HFT-Matrix和TI的TMS320C6415中,通過(guò)統(tǒng)計(jì)兩者性能,表明YHFT-Matrix的性能優(yōu)于TMS320C6415。
H.264視頻壓縮編碼;去塊效應(yīng)濾波;并行設(shè)計(jì);向量實(shí)現(xiàn)
H.264/AVC視頻壓縮編碼中的去塊效應(yīng)濾波器被應(yīng)用到每個(gè)解碼模塊,以減少由塊效應(yīng)所引起的失真,平滑了塊的邊界、改善了解碼幀的質(zhì)量。濾波后的宏塊用于將來(lái)幀的運(yùn)動(dòng)補(bǔ)償預(yù)測(cè),因?yàn)V波過(guò)的圖像比一個(gè)有塊效應(yīng)的未濾波的圖像更接近原始圖像,能夠提高壓縮性能。隨著視頻壓縮編碼對(duì)計(jì)算性能的需求越來(lái)越高,在高性能視頻壓縮編碼領(lǐng)域,可編程處理器上基于并行計(jì)算模型的編碼器成為新的研究方向。
現(xiàn)有的運(yùn)用于通用處理器上的串行結(jié)構(gòu)編碼器已經(jīng)不能滿足高性能視頻編碼需求,而針對(duì)本文提出的向量處理器結(jié)構(gòu),還沒有實(shí)現(xiàn)去塊濾波并行算法,因此本文提出一種在向量處理器上并行實(shí)現(xiàn)去塊濾波的算法,以完成對(duì)性能需求高的協(xié)同任務(wù)。
文章第2節(jié)介紹自主研發(fā)的YHFT-Matrix DSP體系結(jié)構(gòu)及其特點(diǎn);第3節(jié)介紹濾波器的算法原理;第4節(jié)描述并行實(shí)現(xiàn)方法;第5節(jié)講述實(shí)驗(yàn)結(jié)果和分析;第6節(jié)給出結(jié)論。
我們自主研發(fā)的YHFT-Matrix DSP內(nèi)核部分結(jié)構(gòu)如圖1所示。其中,取指派發(fā)部件可以同時(shí)為標(biāo)量、向量單元派發(fā)指令;標(biāo)量單元(SPE)負(fù)責(zé)串行任務(wù)的處理,以及對(duì)向量單元執(zhí)行的控制,向量單元(VPE)負(fù)責(zé)計(jì)算密集的并行任務(wù)的處理,其中每個(gè)去處單元(PE)里的MAC單元用于實(shí)現(xiàn)乘加等操作,ALU單元用來(lái)實(shí)現(xiàn)加減、數(shù)據(jù)搬移、取絕對(duì)值及比較等操作,BP單元用于實(shí)現(xiàn)移位、混洗等操作;向量訪存單元為大寬度向量運(yùn)算提供高效的數(shù)據(jù)供給及搬移支持。矩陣寄存器文件MRF通過(guò)對(duì)矩陣按行列訪問(wèn)的支持,大大加速了應(yīng)用中大量存在的矩陣類運(yùn)算的執(zhí)行。
Figure 1 Structure of YHFT-Matrix kernel圖1 YHFT-Matrix內(nèi)核結(jié)構(gòu)
宏塊內(nèi)邊界濾波順序及用到的數(shù)據(jù):
一個(gè)宏塊含一個(gè)16×16亮度分量(Y)、兩個(gè)8×8色度分量(Cb和Cr)。濾波器被應(yīng)用到每個(gè)宏塊的4×4塊的垂直和水平邊界(除了塊邊界),濾波順序如圖2所示(亮度a→b→c→d→e→f→g→h;色度:i→j→k→l)。
Figure 2 Macro block boundary filtering order圖2 宏塊內(nèi)邊界濾波順序
每個(gè)濾波操作影響邊界兩邊的像素。圖3顯示了相鄰塊p和q的垂直和水平邊界兩邊的四個(gè)像素(p0、p1、p2、p3和q0、q1、q2、q3)。
Figure 3 Vertical and horizontal boundary filtering pixels圖3 垂直和水平邊界濾波像素
邊界強(qiáng)度的選擇:濾波強(qiáng)度bs依賴于當(dāng)前量化器、相鄰塊編碼方式及邊界上圖像像素的梯度。bs值由H.264標(biāo)準(zhǔn)定義:0~4。
濾波器判決條件:集合(p2,p1,p0,q0,q1,q2)的一組像素值在下列情況下才進(jìn)行濾波:
(1)bs>0;
(2)|p0-q0|<α且|p1-p0|<β且|q1-q0|<β。
濾波器判決條件如圖4和圖5所示,滿足判決條件后,按H.264標(biāo)準(zhǔn)中定義的運(yùn)算法則實(shí)現(xiàn)。其中,α和β是標(biāo)準(zhǔn)中定義的閾值。
Figure 4 Chrominance judgment圖4 色度判決條件
Figure 5 Luminance judgment圖5 亮度判決條件
圖4、圖5中,首先符合濾波條件(1)和(2)后才進(jìn)行濾波。其次,由0/1來(lái)判斷對(duì)亮度塊或色度塊像素的濾波。然后,由bs的值1、2、3、4和對(duì)應(yīng)的判決條件來(lái)決定對(duì)p和q進(jìn)行怎樣的修改。
4.1 實(shí)現(xiàn)難點(diǎn)
在對(duì)去塊效應(yīng)濾波算法分析后,采用向量處理器來(lái)實(shí)現(xiàn),由于向量處理單元中有16個(gè)PE,另外加入了混洗和矩陣寄存器,所以提高了數(shù)據(jù)塊之間的并行計(jì)算,簡(jiǎn)便地實(shí)現(xiàn)了矩陣的行列轉(zhuǎn)換,提高了性能。但是,這種向量化在去塊效應(yīng)濾波算法的應(yīng)用,也暴露了其不足之處;
(1)數(shù)據(jù)相關(guān):列邊界濾波時(shí),每個(gè)4×4塊與左右兩塊存在先后的數(shù)據(jù)相關(guān),如圖6所示。邊界a濾波時(shí),當(dāng)前塊與塊0存在數(shù)據(jù)相關(guān),邊界b濾波時(shí),修改后的當(dāng)前塊又與塊2存在數(shù)據(jù)相關(guān);行邊界濾波時(shí),每個(gè)4×4塊與上下兩塊存在先后的數(shù)據(jù)相關(guān),如圖6中塊1與當(dāng)前塊、修改后的當(dāng)前塊與塊3存在先后的數(shù)據(jù)相關(guān)。
(2)控制相關(guān):不同的輸入數(shù)據(jù)導(dǎo)致程序進(jìn)入不同分支執(zhí)行,而SIMD要求并行中不同的數(shù)據(jù)執(zhí)行相同的指令。由于去塊效應(yīng)濾波算法中邊界強(qiáng)度bs選擇的不同,16個(gè)運(yùn)算單元并行實(shí)現(xiàn)時(shí),每個(gè)運(yùn)算單元要實(shí)現(xiàn)的運(yùn)算可能不同,如果算法中的分支用跳轉(zhuǎn)來(lái)實(shí)現(xiàn),則不能實(shí)現(xiàn)16個(gè)PE按不同地址進(jìn)行跳轉(zhuǎn)。
Figure 6 Data correlation圖6 數(shù)據(jù)相關(guān)
(3)數(shù)據(jù)的行列轉(zhuǎn)換:如圖7所示,圖中每個(gè)數(shù)據(jù)代表一個(gè)像素值,每四個(gè)像素為一個(gè)字。列邊界濾波時(shí),數(shù)據(jù)需按行讀取,即第一次讀取一個(gè)字的位置是0、1、2、3,第二次讀取字的位置為4、5、6、7、…;行邊界濾波時(shí),數(shù)據(jù)需按列讀取,即第一次讀取字的位置為0、4、8、12,第二次讀取字的位置為1、5、9、13、…。當(dāng)列邊界濾波完成后執(zhí)行行邊界濾波時(shí),數(shù)據(jù)要完成行列轉(zhuǎn)換,以滿足運(yùn)算需求。
Figure 7 Data reading method圖7 數(shù)據(jù)讀取方式
4.2 解決方法
(1)為解決數(shù)據(jù)相關(guān),列邊界濾波時(shí),16行字無(wú)相關(guān)性,我們將數(shù)據(jù)按行存儲(chǔ)或行邊界濾波時(shí),16列字無(wú)相關(guān)性,我們將數(shù)據(jù)按列存儲(chǔ),這樣每次加載的16個(gè)字無(wú)相關(guān)性, 16個(gè)運(yùn)算單元可以實(shí)現(xiàn)并行運(yùn)算。
(2)為解決控制相關(guān),先求出所有的判決條件,算出所有需要修正的像素點(diǎn),然后按條件選擇出對(duì)應(yīng)于H.264標(biāo)準(zhǔn)定義的修正像素值。這樣選擇的值可實(shí)現(xiàn)不同的輸入數(shù)據(jù)程序進(jìn)入不同分支執(zhí)行。
(3)為實(shí)現(xiàn)數(shù)據(jù)的行列轉(zhuǎn)換,可通過(guò)混洗指令實(shí)現(xiàn)16個(gè)運(yùn)算單元中16個(gè)字的行列轉(zhuǎn)換,以實(shí)現(xiàn)上一宏塊與本宏塊邊界濾波,如圖8所示。還可以通過(guò)矩陣寄存器來(lái)實(shí)現(xiàn)16×16矩陣的行列轉(zhuǎn)換,如圖9所示。
圖8中,Src1、Src2和Dst分別表示源1、源2和目的操作數(shù),圖中的數(shù)字表示地址。
Figure 8 Shuffle mode configuration圖8 混洗模式配置
圖9中,RR0~RR15表示的是矩陣寄存器的行模式,CR0~CR15表示的是矩陣寄存器的列模式。每一個(gè)RR0或CR0對(duì)應(yīng)向量處理單元的16個(gè)PE。我們將16個(gè)字按列放入CR0~CR15,再按行讀出,就實(shí)現(xiàn)了16×16矩陣的行列轉(zhuǎn)換。
Figure 9 Matrix register圖9 矩陣寄存器
4.3 具體方案
16×16亮度塊像素值按圖10存儲(chǔ),我們先進(jìn)行列邊界濾波,再進(jìn)行行邊界濾波。要完成四次列邊界濾波和四次行邊界濾波,可將每次邊界濾波作為一個(gè)核,只要每次循環(huán)的接口數(shù)據(jù)準(zhǔn)備好,循環(huán)八次即可。8×8色度Cb和Cr按圖11存儲(chǔ),要完成列邊界濾波和行邊界濾波各兩次。
Figure 10 Luminance data preparation圖10 亮度數(shù)據(jù)準(zhǔn)備
Figure 11 Chrominance data preparation圖11 色度數(shù)據(jù)準(zhǔn)備
具體映射步驟如下所示。
已知端口輸入數(shù)據(jù):16×16宏塊的亮度(Y)像素值或8×8宏塊的兩個(gè)色度(Cb和Cr)像素值,標(biāo)準(zhǔn)定義的閾值α、β,邊界強(qiáng)度值bs。
第1步數(shù)據(jù)準(zhǔn)備:因Matrix的向量處理單元含16個(gè)運(yùn)算單元,而列邊界濾波時(shí),每行數(shù)據(jù)無(wú)相關(guān)性,將像素值每一行的1個(gè)字按行搬運(yùn)至存儲(chǔ)體中,即圖10中第0、1、2、…、15,16個(gè)字搬運(yùn)至BANK0~BANK15中。數(shù)據(jù)加載時(shí),用標(biāo)量處理單元對(duì)數(shù)據(jù)存放地址進(jìn)行初始化,每次加載16個(gè)字到16個(gè)PE的寄存器中。
第2步列邊界濾波:數(shù)據(jù)加載完成后,16個(gè)PE并行運(yùn)算,每完成一個(gè)邊界濾波,本次修改完成的q值放入寄存器作為下次濾波的p值,q值由存儲(chǔ)體中加載,循環(huán)四次,完成列邊界濾波后,數(shù)據(jù)按列寫入矩陣寄存器中(CR0~CR15),如圖9所示。
第3步條件處理:因邊界強(qiáng)度bs的不同,16個(gè)運(yùn)算單元跳轉(zhuǎn)的地址可能不同。要完成并行運(yùn)算,我們的實(shí)現(xiàn)方法是:先完成所有p、q值的修改和所有條件的運(yùn)算,然后通過(guò)有條件MOV選擇出對(duì)應(yīng)bs的p、q值。
第4步行邊界濾波:第一個(gè)行邊界的p值是將存儲(chǔ)體中上個(gè)宏塊邊界數(shù)據(jù)讀入到寄存器中,再按水平濾波的要求通過(guò)如圖7所示的混洗完成數(shù)據(jù)的行轉(zhuǎn)換成列。q值從矩陣寄存器中按行(如RR0~RR3)順次讀入到寄存器中,完成第一個(gè)行邊界濾波,本次修改完成的q值放入寄存器作為下次濾波的p值。第二個(gè)行邊界q值從矩陣寄存器中按行順次讀入(如RR4~RR7),依次類推,完成四次行邊界濾波。
第5步數(shù)據(jù)存回:行邊界中每完成一次濾波,將四個(gè)有效位混洗成一個(gè)字,16個(gè)PE中的值一次存回。
本文在構(gòu)建的精確單核YHFT-Matrix主頻為500 MHz的實(shí)驗(yàn)?zāi)M平臺(tái)上,分別編寫了16×16亮度塊和8×8色度塊并行程序。在向量處理器上完成去塊濾波算法的映射,測(cè)試后得到其性能。然后,在TMS320C6415處理器中編寫去塊效應(yīng)濾波算法程序,完成映射,優(yōu)化后通過(guò)測(cè)試得到性能。通過(guò)比較在兩個(gè)處理器上得到的性能得到其加速比,給出在YHFT-Matrix上按本文的向量化映射的優(yōu)點(diǎn)。性能統(tǒng)計(jì)如表1所示。
Table 1 Performance statistics表1 性能統(tǒng)計(jì)
在表1中,Matrix和TMS320C6415分別表示向量處理器和TI的處理器,第三行是指兩個(gè)處理器之間的加速比。第二列、第三列分別給出了去塊濾波算法16×16的亮度塊和8×8色度塊在向量處理器和TI的處理器上優(yōu)化后的時(shí)鐘數(shù)和兩處理器實(shí)現(xiàn)時(shí)的加速比。由表1中的加速比可以看到:在向量處理器中實(shí)現(xiàn)去塊濾波,16個(gè)PE一起工作,使每次運(yùn)算量加大,濾波處理速度加快,性能得到大幅提升。
表2給出的是去塊濾波算法在向量處理器上運(yùn)用矩陣寄存器映射時(shí)得到的性能改善。
Table 2 Reduced overhead statistics of using Matrix register表2 矩陣寄存器使用減小的開銷統(tǒng)計(jì)表
(1)由于在向量處理器上映射去塊濾波算法而帶來(lái)了混洗操作。從前面講述的原理中知道,宏塊要經(jīng)過(guò)列邊界濾波和行邊界濾波。列邊界濾波時(shí),數(shù)據(jù)按存儲(chǔ)體中讀取即按照H.264標(biāo)準(zhǔn)濾波,但第一個(gè)行邊界濾波時(shí)需使用混洗操作對(duì)數(shù)據(jù)進(jìn)行位置變換,以達(dá)到H.264標(biāo)準(zhǔn)定義的行邊界濾波要求。
(2)矩陣寄存器在向量處理器上使用帶來(lái)的性能改善。矩陣寄存器支持的按行或列讀取使宏塊數(shù)據(jù)較簡(jiǎn)便地實(shí)現(xiàn)行列轉(zhuǎn)換,以滿足H.264標(biāo)準(zhǔn)定義的行邊界濾波要求。這種變換會(huì)減少向量處理器上映射的額外開銷,如表2所示。
總之,16個(gè)運(yùn)算單元并行執(zhí)行,大大提高了加速比。另外,通過(guò)應(yīng)用混洗和矩陣寄存器,較簡(jiǎn)便地實(shí)現(xiàn)16個(gè)字和16×16個(gè)字節(jié)的行列轉(zhuǎn)換,使程序性能大大提高。
本文針對(duì)自主研發(fā)的YHFT-Matrix DSP體系結(jié)構(gòu)的特點(diǎn),利用向量化的映射方法,通過(guò)分組并行法解決數(shù)據(jù)相關(guān)性,通過(guò)條件選擇來(lái)解決控制相關(guān)性,借助于混洗、矩陣寄存器完成手工匯編,充分發(fā)揮了程序間的并行性,提高了程序執(zhí)行效率,改善了性能。
[1] H.264(E) and ISO/IEC 14496-10:2005(E):Advanced video coding for generic audiovisual services[S].Geneva:Tele-communication Standardization Sector, 2009.
[2] List P, Joch A, Lainema J. Adaptive deblocking filter[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2003,13(7):614-619.
[3] Texas Instruments.TMS320C6000 CPU and instruction set reference guide[M]. Texas Instruments, 2005.
[4] Texas Instruments. TMS320C6000 series of DSP programming tools and guidelines[M]. Tian Li-qing, He Pei-kun, Zhu Meng-yu, translation. Beijing: Tsinghua University Press, 2006.(in Chinese)
[5] Li Fang-hui, Wang Fei, He Pei-kun. Principle and application of TMS320C6000 series DSPs[M].second edition. Beijing: Electronic Industry Press, 2003.(in Chinese)
[6] Gao Hai-lin. DSP technology and its applications[M]. Beijing Jiaotong University Press, 2006.(in Chinese)
附中文參考文獻(xiàn):
[4] 美國(guó)德州儀器公司.TMS320C6000系列DSP編程工具與指南[M].田黎青,何佩琨,朱夢(mèng)宇,譯.北京:清華大學(xué)出版社,2006.
[5] 李方慧,王飛,何佩琨. TMS320C6000系列DSPs原理與應(yīng)用[M].第二版.北京:電子工業(yè)出版社,2003.
[6] 高海林. DSP技術(shù)及其應(yīng)用[M]. 北京:北京交通大學(xué)出版社, 2006.
LIYong,born in 1986,MS,his research interest includes microprocessor design.
陳書明(1961-),男,安徽六安人,博士,教授,研究方向?yàn)楦咝阅芪⑻幚砥髟O(shè)計(jì)和超深亞微米VLSI設(shè)計(jì)理論與技術(shù)等。E-mail:smchen@nudt.edu.cn
CHENShu-ming,born in 1961,PhD,professor,his research interests include high-performance microprocessor design, ULSI design theory and techniques.
VectorizableimplementationofadaptivedeblockingfilteronYHFT-MatrixDSP
LI Yong,CHEN Shu-ming,CHEN Sheng-gang
(College of Computer,National University of Defense Technology,Changsha 410073,China)
A parallel vector implementation method for the deblocking filter in H.264 coding algorithm is mapped on the YHFT-Matrix DSP. The deblocking filter is analyzed theoretically. The vector data access unit, the vector processing unit, the data shuffle unit and the flexible matrix are fully used to efficiently develop the parallelism of the deblocking filter algorithm. In experiment, the deblocking filter algorithm is mapped on both YHFT-Matrix and TI TMS320C6415. And the result shows that YHFT-Matrix outperforms TI TMS320C6415.
H.264 video coding;deblocking filter;parallel design;vectorizable implementation
2011-05-12;
:2011-09-20
核高基重大專項(xiàng)資助項(xiàng)目(2009ZX01034-001-006)
1007-130X(2014)02-0206-05
TP332.2
:A
10.3969/j.issn.1007-130X.2014.02.003
李勇(1986-),男,安徽六安人,碩士,研究方向?yàn)槲⑻幚砥髟O(shè)計(jì)。E-mail:hglyah@163.com
通信地址:410073 湖南省長(zhǎng)沙市國(guó)防科學(xué)技術(shù)大學(xué)計(jì)算機(jī)學(xué)院Address:College of Computer,National University of Defense Technology,Changsha 410073,Hunan,P.R.China