一种基于可重构技术的h.264去块滤波算法的实现方法

文档序号:7804726阅读:232来源:国知局
专利名称:一种基于可重构技术的h.264去块滤波算法的实现方法
技术领域
本发明属于嵌入式信息技术领域,应用于面向媒体应用的高性能嵌入式可重构阵列片上系统SoC(system on chip)芯片设计中H. 264解码算法的优化,为一种基于可重构技术的H. 264去块滤波算法的实现方法。
背景技术
可重构计算是一种将软件的灵活性和硬件的高效性结合在一起的计算体系结构, 其在性能、功耗和灵活性等关键指标之间具有很好的平衡,填补了通用计算和专用计算之间的空白。基于可重构阵列的媒体处理技术不仅解决当前图形、图像和视频编解码计算的关键技术,也将在未来的图形、图像和视频编解码计算中起着举足轻重的作用。可重构媒体处理软硬件架构的特点在于1)制造后芯片的可重构能力;2)能实现很大程度的算法到计算引擎的空间映射;3)算法的控制流与数据流的分离;4)可重构计算引擎多采用PE阵列的结构实现,具有动态配置的特性,能实现算法、指令、数据多个层次上的并行度。去块滤波器是H. 264编解码器中至关重要的一部分,其运算的复杂度、数据量的庞大、算法的特殊性对于趋向通用性的可重构处理器都是一种挑战。

发明内容
本发明要解决的问题是现有H. 264解码算法中去块滤波算法数据量大、运算复杂,对H. 264编解码器的性能和灵活产生影响。本发明的技术效果为一种基于可重构技术的H. 264去块滤波算法的实现方法, 通过可重构系统实现,所述可重构系统包括嵌入式主控处理器ARM、异构熵解码器EnD、处理器阵列UPA和两个可重构处理阵列RPU,异构熵解码器EnD支持H. 264, AVS,MPEG-2三种标准的熵解码,处理器阵列UPA由16个ARM7组成,每个可重构处理阵列RPU由4个8x8的运算单元阵列组成,所述实现方法的步骤为对去块滤波算法进行软硬件划分和并行性分析,确定整个算法实现的数据流通路和控制流通路;然后将算法优化,进行源码转换,使其转换成能够由可重构阵列来实现的形式;最后将算法转换成数据流图的形式,生成RPU的配置信息,完成映射。去块滤波运算由两步完成,第一步计算边界强度BS值,第二步是具体的滤波操作,BS值的计算由可重构处理器中End模块中的BS Calc模块完成,滤波操作由RPU进行处理,滤波基于宏块级,首先对垂直边界进行水平滤波,再对水平边界进行垂直滤波;处理器阵列RUP接受BS Calc模块输出的BS值,动态生成可重构运算单元的部分配置信息。由RPU完成每个宏块的具体滤波算法时,每处理一个宏块时,一并将其左上角的 4*4的数据一起读入,根据数据读取和存放方式的不同,将每一帧图像中的宏块分为以下三种类型进行处理a)第一类宏块一帧最左侧的宏块,16x16的数据来自EM,宏块上侧虹20 的数据和左侧16x4的数据来自片外存储器,整个宏块运算完后,将左侧20x16的数据输出到片外存储器,右侧20x4的数据输出到片内MB中;b)第二类宏块一帧中间的宏块,16*16的数据来自EM,宏块上侧虹16的数据来自片外存储器,左侧20x4的数据来自可重构处理单元内部存储器,整个宏块运算完后,将左侧20x16的数据输出到片外存储器,右侧20x4的数据输出到片内存储器中;C)第三类宏块一帧最右侧的宏块,16x16的数据来自片内存储器,宏块上侧虹16 的数据来自片外存储器,左侧20x4的数据来自可重构处理单元内部存储器,整个宏块运算完后,将20x20的数据全部输出到片外存储器。对一个宏块的外部边界来说,滤波模式有三种强滤波、弱滤波、不滤波;对内部边界来说,滤波模式有两种弱滤波、不滤波;将不滤波和弱滤波这两种模式并成一种模式,并根据滤波模式的不同,将宏块划分为8种类型,分别为亮度宏块4种,色度宏块4种。每个可重构运算单元有4个8*8的运算阵列,由可重构阵列0和可重构阵列1共同完成16*16的亮度滤波,同时由可重构阵列2和可重构阵列3完成8*8的色度的滤波;滤波时,都是先完成竖直方向的滤波,然后将宏块进行转置操作,将中间数据存放在四个可重构阵列都可以访问的存储器中,然后再完成水平方向上的滤波;在可重构运算单元完成一行宏快的去块滤波操作时,向嵌入式主控处理器ARM发出中断,由嵌入式主控处理器ARM完成本行宏块的图像扩展操作。本发明突破传统的模式,针对H. 264解码算法中去块滤波算法数据量大、运算规整等特点,考虑到可重构系统指令并发执行、中间结果可循环利用、运算模块独立可配置及资源结构分布式可调度等优点,采用可重构技术来实现去块滤波算法,如何进行算法优化, 如何充分利用和组织可重构处理器的各组成单元,如何规划整个算法的数据通路,达到性能和灵活性两者的平衡,是实现去块滤波算法的关键。本发明采用一种新型的方式实现 H. 264去块滤波算法,满足H. 264算法1080p HiP的实时解码需求。有益效果(1)本发明提出了针对特定的一款粗粒度可重构处理器的去块滤波算法的实现方案,其先进性在于有效地对算法进行优化并对硬件模块进行任务划分,充分利用了可重构阵列的优势,并最终通过实验结果肯定了该方案的可行性。(2)本发明的基于可重构技术的H. 264去块滤波算法实现方法,充分利用可重构系统具有很多可用的独立可配置的运算模块,每个运算模块可以独立地完成不同的计算任务,使得其可在一个时间步内执行大量的计算操作,适合大量并行性计算任务的优势,通过把去块滤波算法映射到可重构阵列上的方式,由可重构运算单元对去块滤波算法进行加速,比传统的软件实现方法运算效率更高;(3)本发明的基于可重构技术实现的H. 264去块滤波算法方法,可应用于H. 264编解码算法中,性能可满足其高清和标清的要求,同时该方法对别的视频编解码算法中的类似算法有参考指导作用;


图1为本发明所采用的粗粒度可重构处理器的架构。图2为去块滤波算法中16*16的亮度宏块的滤波方式。图3为宏块进行去块滤波算法时的数据来源。
图4为去块滤波算法中基于数据来源的宏块分类。图5为实现去块滤波算法的可重构处理单元任务划分。图6为去块滤波时边界像素点的位置。图7为BS = 4时色度滤波在可重构阵列上映射的DR;图。图8为4种亮度模式和4种色度模式所需要的时间。
具体实施例方式本发明方法针对H. 264解码算法中的去块滤波算法,去除变换及量化给图像带来的方块效应,使得块边缘光滑,提高视觉效果,同时滤波后的宏快用于帧间预测和运动补偿可以得到更小的残差数据;该方法应用于粗粒度可重构处理器系统中,包括如下步骤首先,需要对算法进行软硬件划分和并行性分析,以确定整个算法实现的数据流通路和控制流通路;然后需要将算法优化,进行源码转换,使其转换成能够由可重构阵列来实现的形式,主要是考虑控制流的实现方式;最后,将算法转换成数据流图的形式,生成可重构处理单元的配置信息,以完成映射。下面结合附图对本发明做进一步说明本发明所针对的系统是以ARM(—款处理器名称)为主处理器,可重构阵列作为协处理器等组成的可重构系统,可重构系统架构如图1所示,主要由以下组成部分组成1)嵌入式主控处理器ARM 7,其数据和指令存储于USkB片上ESRAM中;2) EMI (External Memory hterface),负责连接外部 16M SSRAM ;3) IntCtl (Interrupt Controller),负责各个设备到主控ARM的中断申请;4) DMA(Direct Memory Access);5)两个粗颗粒度可重构阵列 RPU(Reconfigurable Processing Unit),每个 RPU 由4个8x8的运算单元阵列组成,是主要的运算模块;6) AHB2AHB,AHB扩展总线接口,实现内部总线和外部总线的互访;7) UPA (U Processor Array),RISC 处理器阵列,由 16 个 ARM7 组成;8) EnD (Entropy Decoder),异构熵解码器,支持 H. 264, AVS, MPEG-2 三种标准的熵解码;其中核心部分为1)熵解码器EnD 考虑到性能的需求,一些控制密集型的运算需要设计特定的硬件加速单元来处理,在本发明所采用的可重构系统中,将熵解码部分,宏块运动矢量计算, BS值计算,反量化和反扫描这几部分的运算全部采用硬件逻辑实现,组成一个扩展的熵解码器 Entropy Decoder (EnD),并支持 H. 264,AVS,MPEG-2 三种标准。2)处理器阵列UPA 动态配置可重构阵列的开销很大,依靠专用的硬线逻辑来生成配置信息会大大限制可重构系统的应用范围,因此在可重构系统中增加一些小的RISC 处理器,专用于生成可重构阵列的配置信息,因此,UPA的任务就是将EnD输出的宏块解码控制信息,也称为原始配置包,打包成配置包,然后输出到可重构处理阵列中。3)可重构处理阵列(RPU)是可重构系统的计算部件,也是核心部件,用于处理视频解码算法中的计算密集型部分,包括整数变换和量化,帧间预测,帧内预测,去块滤波算法。在运行过程中,RPU可以根据需要进行动态配置,实现不同的功能。
本发明具体实现步骤如下1)算法分析在滤波方块效应时,需要先判断该边界是图像真实边界还是方块效应所形成的 “伪边界”,对真实边界不进行滤波,对伪边界要根据周围图像块的性质和编码方法采用不同强度的滤波。边界强度BS决定去方块滤波器选择的滤波参数,控制去除方块效应的程度,其值为4时表示要用特定最强的滤波模式,其值为0表示不需要对边界进行滤波,其值为1 3时表示采用弱滤波模式,BS值影响滤波器对样点的最大修正程度。BS的取值由边界性质决定。滤波是基于宏块级的。对宏块的滤波,首先对垂直边界进行水平滤波,再对水平边界进行垂直滤波。例如,对16x16的亮度宏块滤波,如图2所示,先滤波宏块最左边的边界, 如图中a所示,然后依次从左到右宏块内三个垂直边界,如图中b到d所示,然后对水平边界先滤波宏块顶部边界,如图中e所示,然后依次从上到下宏块内三个水平边界,从图中f 到h所示。色度滤波次序类似,对8*8的色度宏块,在每个方向上,先滤波宏块外部边界再滤波一个内部边界。2)去块滤波算法在可重构系统上实现将H. 264中的去块滤波算法映射到可重构处理器上,由以下几个步骤组成首先, 需要对算法进行软硬件划分和并行性分析,以确定整个算法实现的数据流通路和控制流通路;然后需要将算法优化,进行源码转换,使其转换成能够由可重构阵列来实现的形式,主要是考虑控制流的实现方式;最后,我们需要将算法转换成数据流图的形式,生成可重构运算单元的配置信息,以完成映射。去块滤波算法由两步完成,第一步计算BS值,第二步是具体的滤波操作。BS值的计算包含大量的分支跳转,属于控制密集型运算,由可重构处理器中专用硬件模块计算完成。滤波操作属于计算密集型运算,由可重构运算单元进行处理以提高处理效率。在可重构处理器上完成滤波运算由以下几个关键技术组成i)基于数据流的宏块的分类滤波时,按顺序对一帧中的宏块一个接着一个地进行处理。完成去块滤波操作,需要考虑计算数据的读取和存放问题。以亮度点的滤波过程为例,对当前宏块进行滤波时, 需要用到上部宏块的底部4行像素点,左侧宏块最右侧的4列像素点,如图3所示上部宏块的4x16的数据存储在外部存储器中;左侧宏块的16*4的数据来源有两种情况存储在 RPUl内部的Macro Buffer中或随着上一个宏块的数据一并输出到片外;当前宏块16x16的数据存储在EM中,为RPUO进行完预测和量化后输出到EM中的结果;基于数据读取规整性的考虑,我们在处理一个宏块时,一并将其左上角的4*4的数据一起读入。根据数据读取和存放方式的不同,我们将每一帧中的宏块分为三类进行处理,如图4所示a)第一类宏块一帧最左侧的宏块,16x16的数据来自EM,宏块上侧虹20的数据和左侧16x4的数据来自片外存储器,整个宏块运算完后,将左侧20x16的数据输出到片外存储器,右侧20x4的数据输出到片内MB中;b)第二类宏块一帧中间的宏块,16*16的数据来自EM,宏块上侧虹16的数据来自片外存储器,左侧20x4的数据来自可重构处理单元内部存储器,整个宏块运算完后,将
6左侧20x16的数据输出到片外存储器,右侧20x4的数据输出到片内存储器中;c)第三类宏块一帧最右侧的宏块,16x16的数据来自片内存储器,宏块上侧虹16 的数据来自片外存储器,左侧20x4的数据来自可重构处理单元内部存储器,整个宏块运算完后,将20x20的数据全部输出到片外存储器。ii)基于不同滤波模式的宏块的分类对一个宏块的外部边界来说,滤波模式有三种强滤波、弱滤波、不滤波;对内部边界来说,滤波模式有两种弱滤波、不滤波。此外,还分水平滤波和垂直滤波两种,按照这种划分,一个16*16的亮度宏块有1条外部边界,3条内部边界,因此可以分为2^3= 48种,区别这些宏块需要复杂的分支运算,消耗大量的时间,影响整体的性能。因此,我们在源码的基础上进行算法优化,将不滤波和弱滤波这两种模式并成一种模式,整合到同一张 DFG图中,通过设置标志位将控制流转化成数据流,这样,亮度宏块就变成了 2*2*1*1*1 = 4 种,同理色度宏块也变成了 4种模式,在不改变算法的基础上,减少了复杂度。iii)滤波算法在可重构处理单元上的划分要最大限度地提高性能,需要让算法达到很高的并行性,首先需要考虑硬件架构中,每个可重构处理单元RPU中有4个8*8可重构运算阵列,对于处理大量的循环运算有独特的优势;其次我们需要仔细分析算法中数据的依赖关系,必要的时候可以改变算法内部执行的顺序,对于去块效应滤波的算法,可以得知虽然邻近边的数据存在相关性,但是对不同行进行列滤波时,其数据不存在相关性,同样对不同列进行行滤波时,数据也不存在相关性,进行列运算时,可以对多行进行循环运算,并将行运算得到的结果进行转置,后面的操作列与行的完全类似。基于以上两点考虑,要最大限度地提高性能,让算法达到很高的并行性,我们采用以下的划分方式,如图5所示由可重构阵列0和可重构阵列1共同完成16*16的亮度滤波,同时由可重构阵列 2和可重构阵列3完成8*8的色度滤波。滤波时,都是先完成竖直方向的滤波,然后将宏块进行转置操作,将中间数据存放在四个可重构阵列都可以访问的存储器中,然后再完成水平方向上的滤波。在可重构阵列完成一行宏块的去块滤波操作时,会向主控核发出中断,由主控核完成本行宏块的图像扩展操作。vi)滤波算法在可重构阵列上的映射由于色度滤波相对简单,其强滤波(BS = 4)和弱滤波(BS < 4)时,都只需要1套可重构阵列的配置信息即可完成。亮度的滤波过程要复杂很多,其强滤波需要3套可重构阵列的配置信息,弱滤波需要2套可重构阵列的配置信息。我们以色度强滤波为例来具体说明在可重构阵列上如何实现去块滤波操作。滤波输入数据为滤波边界像素点值po,pi, p2,q0, ql,q2,如图6所示,以及alpha,beta值,这两个值为通过查表计算得到的常量值,输出数据为滤波后的边界像素点值Ρ(Τ和q(T。BS = 4时色度滤波在可重构阵列上映射的DR;图如图7所示。实验结果我们所采用的平台是基于可重构系统的RTL的仿真模型,工作频率为200MHz。为了能够处理实时的IOSOp的码流,每秒至少需要处理30帧的数据根以下公式得出fps = frequence/ (Total·*!1 腿)在工作频率为200MHz,总的宏块数为(1920*1080) / (16*16) = 8100的情况下,我们必须将每个宏块的处理时间限制在816个周期内,图8为4种亮度模式和4种色度模式所需要的时间,因为是并行运算,所以取时间最长的为一个宏块的最坏情况,小于816个周期,因此能够满足性能需求。由于滤波算法仅使用了可重构处理器中的一个可重构处理单元,H.沈4中的其他算法,如运动补偿和整数反变换可以在另外一个可重构处理单元中实现。两个可重构处理单元通过流水的方式进行处理,可以将解码一个宏块的周期控制在816 个周期内,从而完成对H. 264算法IOSOp的实时解码。 本发明实现了 H. 264中的核心算法——去块滤波算法在可重构处理器上的映射。 由可重构阵列和RISC处理器组合成的粗粒度可重构处理器,既可以通过重构硬件结构适应不同算法,又拥有丰富的并行计算资源,适合处理数据密集的多媒体算法。去块滤波算法是H. 264中至关重要的直接影响其性能的一个子算法。本发明提出了一些关键的方法和技术来挖掘算法并行性,实现去块滤波算法在可重构架构上的映射和优化,实验结果表明,实现一个宏块的滤波最坏情况下需要消耗了 704个周期,该性能可以满足H. 264算法IOSOp 的实时解码需求。
权利要求
1.一种基于可重构技术的H. 264去块滤波算法的实现方法,其特征是通过可重构系统实现,所述可重构系统包括嵌入式主控处理器ARM、异构熵解码器EnD、处理器阵列UPA和两个可重构处理阵列RPU,异构熵解码器EnD支持H. 264, AVS, MPEG-2三种标准的熵解码, 处理器阵列UPA由16个ARM7组成,每个可重构处理阵列RPU由4个8x8的运算单元阵列组成,所述实现方法的步骤为对去块滤波算法进行软硬件划分和并行性分析,确定整个算法实现的数据流通路和控制流通路;然后将算法优化,进行源码转换,使其转换成能够由可重构阵列来实现的形式;最后将算法转换成数据流图的形式,生成RPU的配置信息,完成映射。
2.根据权利要求1所述的一种基于可重构技术的H.264去块滤波算法的实现方法,其特征是去块滤波运算由两步完成,第一步计算边界强度BS值,第二步是具体的滤波操作, BS值的计算由可重构处理器中End模块中的BS Calc模块完成,滤波操作由RPU进行处理, 滤波基于宏块级,首先对垂直边界进行水平滤波,再对水平边界进行垂直滤波;处理器阵列 RUP接受BS Calc模块输出的BS值,动态生成可重构运算单元的部分配置信息。
3.根据权利要求2所述的一种基于可重构技术的H.264去块滤波算法的实现方法,其特征是由RPU完成每个宏块的具体滤波算法时,每处理一个宏块时,一并将其左上角的4*4 的数据一起读入,根据数据读取和存放方式的不同,将每一帧图像中的宏块分为以下三种类型进行处理a)第一类宏块一帧最左侧的宏块,16x16的数据来自EM,宏块上侧虹20的数据和左侧16x4的数据来自片外存储器,整个宏块运算完后,将左侧20x16的数据输出到片外存储器,右侧20x4的数据输出到片内MB中;b)第二类宏块一帧中间的宏块,16*16的数据来自EM,宏块上侧虹16的数据来自片外存储器,左侧20x4的数据来自可重构处理单元内部存储器,整个宏块运算完后,将左侧 20x16的数据输出到片外存储器,右侧20x4的数据输出到片内存储器中;c)第三类宏块一帧最右侧的宏块,16x16的数据来自片内存储器,宏块上侧虹16的数据来自片外存储器,左侧20x4的数据来自可重构处理单元内部存储器,整个宏块运算完后,将20x20的数据全部输出到片外存储器。
4.根据权利要求3所述的一种基于可重构技术的H.264去块滤波算法的实现方法,其特征是对一个宏块的外部边界来说,滤波模式有三种强滤波、弱滤波、不滤波;对内部边界来说,滤波模式有两种弱滤波、不滤波;将不滤波和弱滤波这两种模式并成一种模式, 并根据滤波模式的不同,将宏块划分为8种类型,分别为亮度宏块4种,色度宏块4种。
5.根据权利要求3所述的一种基于可重构技术的H.264去块滤波算法的实现方法,其特征是每个可重构运算单元有4个8*8的运算阵列,由可重构阵列0和可重构阵列1共同完成16*16的亮度滤波,同时由可重构阵列2和可重构阵列3完成8*8的色度的滤波;滤波时,都是先完成竖直方向的滤波,然后将宏块进行转置操作,将中间数据存放在四个可重构阵列都可以访问的存储器中,然后再完成水平方向上的滤波;在可重构运算单元完成一行宏快的去块滤波操作时,向嵌入式主控处理器ARM发出中断,由嵌入式主控处理器ARM完成本行宏块的图像扩展操作。
全文摘要
一种基于可重构技术的H.264去块滤波算法的实现方法,针对H.264解码算法中的去块滤波算法,对去块滤波算法进行软硬件划分和并行性分析,以确定整个算法实现的数据流通路和控制流通路;然后将算法优化,进行源码转换,使其转换成能够由可重构阵列来实现的形式;最后将算法转换成数据流图的形式,生成RPU的配置信息,完成映射。本发明去除变换及量化给图像带来的方块效应,使得块边缘光滑,提高视觉效果,同时滤波后的宏块用于帧间预测和运动补偿可以得到更小的残差数据,适合大量并行性计算任务的优势,可应用于粗粒度可重构处理器系统中。
文档编号H04N7/26GK102572430SQ20111044929
公开日2012年7月11日 申请日期2011年12月29日 优先权日2011年12月29日
发明者曹鹏, 杨军, 王学香, 范烨秋, 齐志 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1