面向向量处理器的去块滤波向量化实现方法

文档序号:10474151阅读:324来源:国知局
面向向量处理器的去块滤波向量化实现方法
【专利摘要】一种面向向量处理器的去块滤波向量化实现方法,其步骤为:S1:数据准备;输入n×m的被滤波视频数据块到向量存储体中,并进行系向量化;S2:水平滤波操作;S3:结果存储;根据步骤S2的结果为每个PE选择出(p3,p2,p1,p0,q0,q1,q2,q3)的最终结果以及p3和q3的值(p3,p2′,p1′,p0′,q0′,q1′,q2′,q3),存入矩阵寄存器文件;S4:重复步骤S2和步骤S3,直到水平方向所有边界滤波完毕;S5:垂直滤波;S6:结果存储;根据步骤S5的结果为每个PE选择出(p3,p2,p1,p0,q0,q1,q2,q3)的最终结果以及p3和q3的值(p3,p2′,p1′,p0′,q0′,q1′,q2′,q3),直接存入向量存储体;S7:重复步骤5和步骤6,直到垂直方向所有边界滤波完毕。本发明具有能够高效计算、充分发挥向量处理器多PE协作、缩短运算时间等优点。
【专利说明】
面向向量处理器的去块滤波向量化实现方法
技术领域
[0001] 本发明主要设及到向量处理器及视频编解码领域,特指一种面向向量处理器的去 块效应滤波的向量化实现方法。
【背景技术】
[0002] 在视频编解码算法中,基于块的预测、补偿、变化、量化会造成块效应,严重影响重 建图像的主观感知质量。为了消除图像的块效应,往往需要对重建图像进行块滤波,而国际 标准H. 264更是把去块效应滤波算法纳入到编解码算法的环路中,称为环路去块效应滤波 (in-loop deblocking filtering);由于编码块的每一个边界都需要进行滤波判决、计算 W及反复更新存储等,使得去块滤波算法耗费了解码器=分之一 W上的计算复杂度。因此, 采用加快去块效应滤波的执行速度对于实时高清视频编解码具有重要意义。
[0003] 加速去块效应滤波的通常做法是并行化。研究者往往采用专用硬件来加速去块效 应滤波算法,运种方法的缺点是灵活性差,在标准更新较为频繁的情况下开销巨大;同时, 必须采用专用的转置电路来处理去块效应滤波算法中对行列数据的访问。因此,可编程方 式更具市场。
[0004] 然而,传统单核处理器难W满足实时解码器对去块效应滤波的计算需求,多核处 理器由于禪合较为松散,核间数据传递开销较大,因此也不适用于去块效应滤波并行化加 速。在运种情况下,向量处理器成为了首选。向量处理器一般由多个处理单元(PE)组成,PE 间禪合紧密,每个PE包含独立的多个功能部件,如乘法部件、加法部件、移位部件等。每隔PE 都执行超长指令字(VLIW)指令,包含多个执行包,不共享流水线的功能部件可W同时执行 多个执行包。每个PE包含一组局部寄存器,所有PE的同一编号的局部寄存器在逻辑上又组 成一个向量寄存器。例如图1中PE_0~PE_M-1的所有RO寄存器在逻辑上组成了向量寄存器 VR0,每个PE所对应的RO称为向量寄存器VRO的一个元素。同时,向量处理器往往可W提供用 于矩阵行列访问的矩阵寄存器文件,可有效地满足去块效滤波不同方向滤波的存储访问需 求。
[0005] 然而,去块效应滤波算法自适应较强,相邻边界的执行路径因数据源而不同,且对 于同一个数据需要进行间断地、重复地读写,因此,如何在向量处理器上实现对去块效应滤 波算法的向量化计算加速是一个难点。

【发明内容】

[0006] 本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一 种原理简单、操作方便、能够高效计算、充分发挥向量处理器多PE协作、缩短运算时间的面 向向量处理器的去块滤波向量化实现方法。
[0007] 为解决上述技术问题,本发明采用W下技术方案:
[000引一种面向向量处理器的去块滤波向量化实现方法,其步骤为:
[0009] SI:数据准备;输入nXm的被滤波视频数据块到向量存储体中,并进行系向量化;
[0010] S2:水平滤波操作;选择当前需要滤波的水平边界,每个PE从向量存储体中读取需 要滤波的图像数据(口3,口2,口1,口0,9〇,91,92,93);使用图像数据(口3,口2,口1,口0,9〇,91,92, q3)和常量计算判决条件,并存储在向量条件寄存器中;根据去块效应滤波算法的规则计算 (p3,p2,Pl,PO,qO,ql,q2,q3)的所有结果,分别存人局部向量寄存器中;
[001 U S3:结果存储;根据步骤S2的结果为每个阳选择出(p3,p2,Pl,PO,qO,ql,q2,q3)的 最终结果W及p3和q3的值(p3,p2/,pl',p0/,q0/,ql/,q2/,q3),存入矩阵寄存器文件;
[0012] S4:重复步骤S2和步骤S3,直到水平方向所有边界滤波完毕;
[0013] S5:垂直滤波;选择当前需要滤波的边界,每个PE从矩阵寄存器文件中读取需要滤 波的图像数据(口3,口2,口1,口0,9〇,91,92,93),使用矩阵寄存器文件中经过了水平滤波的数 据作为原始数据,选择垂直方向的图像数据(口3,口2,口1,口0,9〇,91,92,93)和常量计算判决 条件,并存储在向量条件寄存器中;根据去块效应滤波算法的规则计算(p3,p2,Pl,PO,qO, ql,q2,q3)的所有结果,分别存入局部向量寄存器中;
[0014] S6:结果存储;根据步骤S5的结果为每个PE选择出(p3,p2,Pl,PO,qO,ql,q2,q3)的 最终结果W及p3和q3的值(p3,p2/,pl',p〇/,q〇/,ql/,q2/,q3),直接存入向量存储体;
[0015] S7:重复步骤5和步骤6,直到垂直方向所有边界滤波完毕。
[0016] 作为本发明的进一步改进:所述步骤S3和步骤S6中选择最终结果的操作包含W下 步骤:
[0017] Sioo:假设每个阳对应的边界的Pi的计算候选结果由RO~Rk-I组成,运些结果组 成一个完整的或者不完整的二叉树;对于任意一个PE,Pi的最终结果一定存在于RO~Rk-I 中;把RO~Rk-I根据PE的个数展开可写巧
;根据去块效应滤波算法 中相应的判决条件获得条件操作的条件矩^
, 其中 [001 引
[0019] S200:根据条件矩阵,通过k次向量条件MOV操作,可得Pi的最终结果Pi;即,Pi=S Ri ? Ci;
[0020] S300:重复步骤SlOO、S200,直到p2,Pl,pO,qO,ql,q2的结果选择完毕。
[0021] 作为本发明的进一步改进:所述步骤S3和步骤S6中条件操作的具体操作方法是: 假设向量处理器当前执行向量指令Inst,同时有条件寄存器R0,RO= {Roi,R〇2, ...,Rom-I},分 别对应阳G~阳M-1。若Roi = = 1,则阳i执行指令Inst,否则阳i执行空操作。
[0022] 作为本发明的进一步改进:所述向量存储体包括M个存储块,所述M个存储块与M个 向量PE依次一一对应;M个存储块统一编址,按BANK交叉存放;即,第一个字在第一个BANK存 放,第二个字在第二个BANK存放,…,直到第M个字在第M个BANK存放;然后第M+1个字又在第 一个BANK存放,…,依次类推;每个存储块分成上存储区和下存储区并支持同时进行两个向 量访存操作。
[0023] 作为本发明的进一步改进:所述向量矩阵寄存器文件由MXM个存储单元组成,每 个存储单元的位宽一般为4、8、12、16、32,该阵列在逻辑上为由1个行向量寄存器¥則一¥尺|?-1 或M个列向量CVRo-CVRm-I寄存器组成;每个行向量寄存器包含M个元素 Ei,〇-Ei, M-I,其中i = 0,1,2……M-I,每个列向量寄存器包含M个元素 Eo,i-Em-I,i,其中i = 0,l,2……M-I;矩阵寄 存器在读写使能、读写地址和行列选择信号的控制下完成行列向量的读出和写入。
[0024] 与现有技术相比,本发明的优点在于:
[0025] 1、本发明的面向向量处理器的去块效应滤波的向量化实现方法,可W同时执行M 个边界的滤波操作,有效地加速去块效应滤波的速度,为实时高清视频编解码的其他功能 模块预留更充足的时间。运种向量化的并行方法能够充分利用向量处理器的向量计算特 点、挖掘向量处理器的并行性,充分开发了去块效应滤波算法的数据并行性,能够大幅度提 高其运算性能。
[0026] 2、本发明的面向向量处理器的去块效应滤波的向量化实现方法,通过条件操作, 可W使得向量处理器处理由于源数据触发的多分支程序。向量处理器的各个PE从派发单元 获得的是同一条指令,其执行周期一般不能跨越各个PE执行结果不同的分支指令。本发明 通过条件操作,使得向量处理器可W顺利地执行包含多分支目标的指令。
【附图说明】
[0027] 图1是向量处理器的一般结构示意图。
[0028] 图2是本发明在具体实施例中垂直和水平边界滤波像素示意图。
[0029] 图3是本发明方法的流程示意图。
[0030] 图4是本发明在具体应用实例中的向量存储体结构示意图。
[0031] 图5是本发明在具体应用实例中滤波数据在向量存储体中的一种存放方式示意 图。
[0032] 图6是本发明中使用的矩阵寄存器的存储单元阵列结构示意图。
【具体实施方式】
[0033] W下将结合说明书附图和具体实施例对本发明做进一步详细说明。
[0034] 如图3所示,本发明的面向向量处理器的去块滤波向量化实现方法,包括W下步 骤:
[0035] SI:数据准备;
[0036] SlOl:输入nXm的被滤波视频数据块到向量存储体中。
[0037] S102:从向量存储体中加载算法所需要的常量,并对其进行系向量化。
[0038] S2:水平滤波操作;
[0039] S201:选择当前需要滤波的水平边界,每个PE从向量存储体中读取需要滤波的图 像数据(p3,p2,pl,p0,q0,ql,q2,q3);
[0040] S202:使用图像数据(p3,p2,pi,PO,qO,ql,q2,q3)和常量计算判决条件,并存储在 向量条件寄存器中;
[0041 ] S203 :根据去块效应滤波算法的规则计算(p3,p2,Pl,PO,qO,ql,q2,q3)的所有结 果,分别存入局部向量寄存器中。
[0042] S3:结果存储;
[0043] 根据去块效应滤波算法的判决条件寄存器的结果,为每个PE选择出(p3,p2,pl, p0,q0,ql,q2,q3)的最终结果W及p3和q3的值(p3,p2',pl',p0',q0',ql',q2',q3),存入矩 阵寄存器文件。
[0044] S4:重复步骤S2和步骤S3,直到水平方向所有边界滤波完毕。
[0045] S5:垂直滤波;
[0046] S501:选择当前需要滤波的边界,每个PE从矩阵寄存器文件中读取需要滤波的图 像数据(p3,p2,pl,p0,q0,ql,q2,q3)。
[0047] S502:使用矩阵寄存器文件中经过了水平滤波的数据作为原始数据,选择垂直方 向的图像数据(p3,p2,P1,PO,qO,ql,q2,q3)和常量计算判决条件,并存储在向量条件寄存 器中。
[0048] S503 :根据去块效应滤波算法的规则计算(p3,p2,Pl,PO,qO,ql,q2,q3)的所有结 果,分别存入局部向量寄存器中。
[0049] S6:结果存储;
[0050] 根据去块效应滤波算法的判决条件寄存器的结果,为每个PE选择出(p3,p2,Pl, p0,q0,ql,q2,q3)的最终结果W及p3和q3的值(p3,p2',pl',p0',q0',ql',q2',q3),直接存 入向量存储体。
[0051 ] S7:重复步骤5和步骤6,直到垂直方向所有边界滤波完毕。
[0052] 通过本发明的上述方法,可W高效的支持去块滤波向量化计算,充分发挥向量处 理器的全部PE的并行计算能力,有效地提高了向量处理器的执行效率,缩短了运算时间。
[0053] 在具体应用实例中,上述向量存储体包括M个存储块,所述M个存储块与M个向量PE 依次一一对应;M个存储块统一编址,按BANK交叉存放(指第一个字在第一个BANK存放,第二 个字在第二个BANK存放,…,直到第M个字在第M个BANK存放。然后第M+1个字又在第一个 BANK存放,…,依次类推);每个存储块分成上存储区和下存储区并支持同时进行两个向量 访存操作。
[0054] 在具体应用实例中,向量矩阵寄存器文件由MXM个存储单元组成,每个存储单元 的位宽一般为4、8、12、16、32,该阵列在逻辑上可^看成由1个行向量寄存器¥3〇-¥1?|?-1或1 个列向量CVRo-CVRm-I寄存器组成。每个行向量寄存器包含M个元素(存储单元化i, O-Ei ,M-I (i =0,1,2……M-I ),每个列向量寄存器包含M个元素 Eq,i-Em-I,i( i = 0,1,2……M-I)。矩阵 寄存器在读写使能、读写地址和行列选择信号的控制下完成行列向量的读出和写入。
[0055] 在具体应用实例中,步骤S3和步骤S6中条件操作的具体操作方法是:假设向量处 理器当前执行向量指令Inst,同时有条件寄存器R0,R0= {R〇i,R日2,. . .,R日M-i},分别对应阳0 ~阳M-I。若R日i = = 1,则阳i执行指令Inst,否则阳i执行空操作。
[0056] 在具体应用实例中,步骤S3和步骤S6中选择最终结果的操作包含W下步骤:
[0化7] Sioo:假设每个阳对应的边界的Pi的计算候选结果由RO~Rk-I组成,运些结果组 成一个完整的或者不完整的二叉树。对于任意一个PE,pi的最终结果一定存在于RO~Rk-I 中。把RO~Rk-I根据PE的个数展开可写式
根据去块效应滤波算法 中相应的判决条件获得条件操作的条件矩鸦
其中
[0化引
[0059] S200:根据条件矩阵,通过k次向量条件MOV操作,可得Pi的最终结果Pi。即,Pi = I: Ri ? Ci。
[0060] S300:重复步骤SlOO、S200,直到p2,Pl,pO,qO,ql,q2的结果选择完毕。
[0061] 如图2所示,为本发明在一个具体应用实例中垂直和水平滤波边界示意图。其中, abcdef曲对应的虚线是本块的滤波边界。在H. 264中,图2中的图像块为16 X 16像素,每一个 虚线框中的像素块为4 X 4个像素。每一次滤波所设及到的像素包括滤波边界两边的4个像 素(p3,p2,pl,p0)和(q0,ql,q2,q3)。
[0062] 结合图3, WH. 264标准中的环路去块效应滤波算法为例,本发明在具体实例中包 括W下步骤:
[0063] (1)输入数据:H. 264中每个16 X 16的宏块,如图2所示,都要进行去块效应滤波。16 X 16的宏块被划分为16个4X4的子块,每个4X4的子块的边界都是滤波边界,即图2所示的 abcdef曲边界。
[0064] 如图4所示,向量存储体由M= 16个块(BANK_0~BANK_15)组成,且与向量处理单元 的阳_0~阳_15-一对应,16个BANK统一编址,按BANK交叉存放,可W进行数据共享,为16个 PE提供高带宽的数据访问;每个BANK按两组多体交叉组织形式支持多端口访问(多端口包 括两个向量访存操作端口,还包括DMA端口和标量访存端口),即分成上下两个存储区,可同 时支持两个向量访存操作。
[0065] 在本实施例中,16X16的宏块数据在向量存储体中的存放位置如图5所示。每一行 的16个待滤波数据可一次加载到局部寄存器中参与运算;最后滤波的结果可一次Store- 行数据到向量存储器中,然后通过DMA搬运到外部存储器中。
[0066] (2)计算(p3,p2,pl ,p0,q0,ql ,q2,q3)的滤波结果:16个阳一次可W计算16个行边 界或者列边界,运种向量操作模式大大缩减了滤波所需要的时间,仅4次计算就可完成一个 16 X 16的宏块的所有行边界或列边界的滤波。
[0067] 在本实施例中,(p3,p2,Pl,PO,qO,ql,q2,q3)的滤波结果可能的取值方式有(用大 写的?2^1,?0^0,?1,?2表示):
[0068] P0=Min(Max(0,p0+d),255)
[0069] PO = (P 化巧 pl+2*p0+巧 q0+ql+4)〉〉3
[0070] Pl = (p 化 pl+p0+q0+2)〉〉2
[0071] Pl=pl+Min(Max(-CO,(p 化(p0+q0)〉〉l-(pl?l))〉〉l),C0)
[0072] P2 = (2*p3+:3p 化 pl+p0+q0+4)〉〉3
[0073] Q0=Min(Max(0,q0-d),255)
[0074] QO = (q 化巧 ql+2*q0+巧 p0+pl+4)〉〉3
[00 巧]Ql=ql+Min(Max(-CO,(p 化(p0+q0)〉〉l-(pl?l))〉〉l),C0)
[0076] Ql = (q 化 ql+q〇+p〇+2)〉〉2
[0077] Q2 = (2*q3+3q 化 ql+q0+p0+4)〉〉3
[007引 d=Min(Max(-C,(((q0-pO)?^(pl-ql)+4)〉〉3)),C)
[0079] 其中,变量C和CO都是环路去块效应滤波的既定参数。
[0080] 在本实施例中,p3和q3在滤波操作中不被更改,而(口2,口1,口0,9〇,91,92)也可能不 被更改。
[0081] (3)计算判决条件:
[0082] 根据滤波控制参数W及被滤波的源数据之间的关系,计算滤波判决条件。每一个 判决条件决定一个条件寄存器的取值为真或者假。
[0083] 在本实施例中,滤波判决条件包括:滤波强度、相邻像素之间的差异、相邻像素之 间的差异的口限值等。
[0084] (4)筛选最终结果:
[0085] 根据步骤(3)的条件,对每一个可能的滤波结果执行一次条件MOV操作,最终将得 到正确的滤波结果。
[0086] (5)存储滤波结果:
[0087] 如果是行滤波,则把滤波结果存储到矩阵寄存器文件中;否则直接存储到向量存 储体中,用DMA等外部数据传输引擎保存到用户空间。
[0088] (6)如果滤波还未完成,则继续步骤(2)~(5)直到所有滤波边界均完成滤波位置。
[0089] 参见图6,为本发明在具体应用实例中矩阵寄存器的存储单元阵列结构示意图。矩 阵寄存器的存储单元阵列一般由N*N个存储单元组成,N通常位2的幕数。每个存储单元的位 宽为W,W-般为4、8、12、16、32。该阵列在逻辑上可W看成N个行向量寄存器VRo-VRN-域N个 列向量CVRo-CVRn-I寄存器组成,每个行向量寄存器包含N个元素(存储单元化i,o-Ei,N-i(i = 0,1,2……N-DdWVRo为例,该行向量寄存器包括存储单元Eo,0-Eo,N-1。该存储单元阵列 按列划分为N个N*W位的存储单元列,每列由N个同列的元素组成。运N个存储单元列与N个列 向量寄存器CVRo-CVRn-I-一对应,用于实现相应列向量寄存器的存取功能。W CVRn-功例, 该列向量寄存器包括所有行向量寄存器VRo-VRn-I的最后一个元素 Ei,N-Ki = O, 1,2……N-Do
[0090] W上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例, 凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的 普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护 范围。
【主权项】
1. 一种面向向量处理器的去块滤波向量化实现方法,其特征在于,步骤为: S1:数据准备;输入η Xm的被滤波视频数据块到向量存储体中,并进行系向量化; S2:水平滤波操作;选择当前需要滤波的水平边界,每个PE从向量存储体中读取需要滤 波的图像数据(口3,口2,口1,口0,9〇,91,92,93);使用图像数据(口3,口2,口1,口0,9〇,91,92,93)和 常量计算判决条件,并存储在向量条件寄存器中;根据去块效应滤波算法的规则计算(P3, p2,pl,p0,q0,ql,q2,q3)的所有结果,分别存入局部向量寄存器中; S3:结果存储;根据步骤S2的结果为每个PE选择出(p3,p2,pi,pO,qO,ql,q2,q3)的最终 结果以及p3和q3的值(P3 42',ρ1' ,ρΟ' ^2',q3),存入矩阵寄存器文件; S4:重复步骤S2和步骤S3,直到水平方向所有边界滤波完毕; S5:垂直滤波;选择当前需要滤波的边界,每个PE从矩阵寄存器文件中读取需要滤波的 图像数据(p3,p2,p 1,pO,qO,ql,q2,q3),使用矩阵寄存器文件中经过了水平滤波的数据作 为原始数据,选择垂直方向的图像数据化3,?2,?1,?0,(1〇,(11,(12,(13)和常量计算判决条件, 并存储在向量条件寄存器中;根据去块效应滤波算法的规则计算(p3,p2,pl,p0,q0,ql,q2, q3)的所有结果,分别存入局部向量寄存器中; S6:结果存储;根据步骤S5的结果为每个PE选择出(p3,p2,pi,p0,qO,ql,q2,q3)的最终 结果以及p3和q3的值(P3 42',ρ1' ,ρΟ' ^2',q3),直接存入向量存储体; S7:重复步骤5和步骤6,直到垂直方向所有边界滤波完毕。2. 根据权利要求1所述的面向向量处理器的去块滤波向量化实现方法,其特征在于,所 述步骤S3和步骤S6中选择最终结果的操作包含以下步骤: S100:假设每个PE对应的边界的pi的计算候选结果由R0~Rk-Ι组成,这些结果组成一 个完整的或者不完整的二叉树;对于任意一个PE,pi的最终结果一定存在于R0~Rk-Ι中;把 R0~Rk-Ι根据PE的个数展开可写为;根据去块效应滤波算法中相应 的判决条件获得条件操作的条件矩阵S200:根据条件矩阵,通过k次向量条件MOV操作,可得pi的最终结果Pi ; 即,Pi = Σ Ri · Ci; S300:重复步骤S100、S200,直到p2,pi,pO,qO,ql,q2的结果选择完毕。3. 根据权利要求1所述的面向向量处理器的去块滤波向量化实现方法,其特征在于,所 述步骤S3和步骤S6中条件操作的具体操作方法是:假设向量处理器当前执行向量指令 Inst,同时有条件寄存器R0,RO = {RQ1,RQ2,…,Rom-1},分别对应PEo~PEm-1;若R〇i = = 1,则 PEi执行指令Inst,否则PEi执行空操作。4. 根据权利要求1~3中任意一项所述的面向向量处理器的去块滤波向量化实现方法, 其特征在于,所述向量存储体包括Μ个存储块,所述Μ个存储块与Μ个向量PE依次一一对应;Μ 个存储块统一编址,按BANK交叉存放;即,第一个字在第一个BANK存放,第二个字在第二个 BANK存放,…,直到第Μ个字在第Μ个BANK存放;然后第M+1个字又在第一个BANK存放,…,依 次类推;每个存储块分成上存储区和下存储区并支持同时进行两个向量访存操作。5. 根据权利要求1~3中任意一项所述的面向向量处理器的去块滤波向量化实现方法, 其特征在于,所述向量矩阵寄存器文件由MXM个存储单元组成,每个存储单元的位宽一般 为4、8、12、16、32,该阵列在逻辑上为由1个行向量寄存器¥1?()-¥1^-1或1个列向量(^1? 0- CVRm-x寄存器组成;每个行向量寄存器包含Μ个元素 Ei, 〇-Ei ,Μ-i,其中i = 0,1,2……M-1,每个 列向量寄存器包含Μ个元素 E〇, i-Em-i,其中i = 0,l,2……M_1;矩阵寄存器在读写使能、读 写地址和行列选择信号的控制下完成行列向量的读出和写入。
【文档编号】H04N19/117GK105828071SQ201610194300
【公开日】2016年8月3日
【申请日】2016年3月31日
【发明人】陈胜刚, 万江华, 刘胜, 王耀华, 陈小文, 刘仲, 陈海燕
【申请人】中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1