赵 静,蒋 林,朱 筠,谢晓燕,杨 坤,崔馨月
(1.西安邮电大学 电子工程学院,陕西 西安 710121;2.西安科技大学 安全科学与工程学院,陕西 西安 710600;3.西安邮电大学 计算机学院,陕西 西安 710121)
为适应不同高级应用场景下的视频编码需求,新一代高效视频编码(high efficiency video coding,HEVC)标准引入了诸多新技术,来提高编码效率[1]。但是,分辨率和压缩性能的提升伴随着计算复杂性和编码时间的急剧增加,这对高清视频的实时处理提出了巨大的挑战,在保证视频图像质量的前提下如何节省编码时间成为学者们的研究热点[2,3]。
硬件解决方案因其高性能、低功耗等优点成为实现HEVC编码器的主流趋势,主要包括3 种类型:第1 种是中央处理器(CPU)/图像处理器(graphic processing unit,GPU)架构[4],将部分高计算强度负载转移到GPU上,但其大多数难以实现细粒度的并行,无法满足逐渐严苛的编码时间需求;第2种是在专用集成电路和现场可编程门阵列(field programmable gate array,FPGA)中实现[5,6],虽然可以解决计算效率低的问题,但应用发生变化时,需要重新设计电路,灵活性较差;第3种是基于可重构阵列处理器的解决方案[7],FPGA是一种细粒度的可重构器件,虽然在设计时不可避免地受到可用资源和频率的限制,但可重构阵列处理器可以根据视频图像不同的需求,对处理单元逻辑功能和连接方式进行灵活配置,具有较好的灵活性和扩展性。
面对海量像素数据、高复杂度视频编码算法和苛刻的实时性要求,除了具有性能优越的硬件配置之外,基于硬件资源协调分配的并行优化算法设计也很重要。文献[6]的优化算法极大地提高了吞吐量,然而,高复杂性的优化算法引入了13%的编码开销,优化代价较大。文献[7~9]重点针对编码器内的单个算法进行优化,实现编码速度或图像质量的提升。但这些大多数都是针对局部算法的优化,性能提升效果有限。
本文引入软件流水线思想,提出一种基于可重构阵列处理器的HEVC算法流水线并行实现方案。将所有编码块级的子任务组织成流水线的形式,将其并行映射在不同处理单元簇上,并进行全局的流水线并行化设计,使得编码块可以同时被处理,从而减少硬件的等待时间。该方法在不引入其他额外硬件开销、不降低视频图像质量的同时,实现编码效率提升66%。
项目组前期研发的可重构阵列处理器结构如图1 所示[10,11]。每个处理单元组(processing element group,PEG)由4 ×4的轻核处理单元(processing element,PE)阵列、存储单元和高速交换开关构成。全局控制器利用H-tree传输网络向PE阵列下发配置信息,对计算资源进行管理和控制。数据输入存储器(data input memory,DIM)和数据输出存储器(data output memory,DOM)用来存放待编码视频图像的原始数据和处理结果。
可重构阵列处理器中丰富的计算资源为视频编码提供了强大的算力,可重构配置的计算系统使用灵活的高速计算结构来执行并行处理,以适应视频算法的多样性,有效提高HEVC编码器计算效率。
HEVC映射方案包含帧内环路和帧间环路,每个算法映射在不同的PEG上,如图2 所示。帧内预测算法从DIM中读取原始数据,将计算得到的残差值作为输出传递给离散余弦变换(discrete cosine transform,DCT)算法,并将最优预测值传递给求和模块,去块(deblocking,DB)滤波算法将编码块处理结果存入DOM。帧间环路主要包含整数运动估计(integer motion estimation,IME)、运动补偿(motion compensation,MC)、DCT算法、求和模块和DB算法。
图2 HEVC映射方案
各编码算法具有不同的数据流特性,结合可重构阵列处理器分析不同算法的并行加速方案如下:
1)帧内预测算法:各种预测模式的计算过程相互独立,将其映射在不同的PE上,采取多种预测模式并行处理的加速方案。
2)DCT算法:主要包含变换、量化、反量化和反变换这4个步骤,每个步骤映射在不同的PE 上,则至少需要4 个PE来共同完成。1个PEG共有16个PE,因此,将输入数据流划分为4组,采取4路并行的方式。
3)DB滤波算法:DB 滤波算法需将像素块划分为2 部分,分别进行滤波操作,且滤波过程中无数据依赖关系,采取2路并行的方式可以使得这2部分像素同时进行处理。
4)MC算法:各像素点的插值计算过程相互独立,因此,将输入数据分发到不同PE中,同一时间进行多个像素点的插值计算。
5)IME算法:IME中进行4个参考块的SAD值计算,其计算过程相互独立,可以采取4路并行的方式加速计算。
在非流水线编码方式下,只有将该编码块的处理结果存入DOM并产生复位信号后,才可以开始处理下一编码块。因此,每个PEG有超过1/2的时间处于等待状态,没有充分发挥PEG可独立并行运行的优势,存在硬件资源浪费问题,过长的等待时间也极大限制了HEVC效率。
软件流水线技术将编码块处理过程划分为不同的阶段,每个阶段对应不同的执行单元,各执行单元并行工作的方式增大子任务的吞吐量,从而缩短完成总任务所需要的时间。基于可重构阵列处理器的HEVC视频编码器具有分簇执行的特点,即不同算法对应不同的PEG,具备流水线并行化的基本条件。假设编码一帧图像是总任务,则每个编码块的处理过程可以看作是不同的子任务。
帧内和帧间环路的流水级设计如表1 所示。HEVC编码器在每个流水线周期均读取一个新的编码块并开始它的处理流程。流水线周期,即编码块沿流水线移动的时间间隔,取决于运行时间最长的算法。当流水线处于满载状态时,PE利用率最高,相较于之前同一时间周期内只能处理1个编码块,流水线编码器的帧内环路可以同时处理4个编码块;帧间环路可以同时处理5个编码块。
表1 HEVC的流水段划分
流水线的正常工作要求各执行单元必须具有自动循环处理子任务的能力,即每个算法模块完成一个编码块处理结果的传输之后,程序自动跳转到头部重新开始执行,进行下一个编码块的处理。
以DCT算法为例,其在PE 阵列上的并行映射结果如图3 所示,PE00 将编码块的像素分为4 组并分别发送到PE10、PE20和PE30,每组4 个横向PE 间采用邻接互联的数据传递方式完成处理流程,最后由PE03将处理结果传输给下一个模块。此时,PE03在其本地存储器的510 号地址存储1个数字作为结束标志,该簇中的其他PE运行结束后循环检测该标志,若能检测到则跳转到程序首行,开始下一编码块的处理;若没有检测到则继续等待,直到检测成功。
图3 DCT算法在PEG11 上的并行映射
HEVC流水线的调度过程如图4 所示,当前PEG 在向下一级算法所在的PEG传递处理结果前,需要确保其处于空闲状态。算法运行结束时在特定的地址空间存储一个数字作为握手信号,其他算法通过检测该握手信号是否存在来判断该算法的运行状态。当握手成功时,代表算法处于空闲状态,此时可以向其PE传输数据。各流水段算法在首次执行时,其对应的处理元簇必定为空闲状态,故不需要检测握手信号,可直接开始执行。
图4 流水线调度过程
由于环路的数据流向在帧内预测算法处存在分支,而同一PEG内存储空间不能在同一流水线周期内重复使用,否则最后存入的数据会覆盖掉先前存储的数据,从而导致流水线在求和模块产生数据冲突。
为了解决这个问题,采用轮询存储方法,将可能产生冲突的数据按标签分开存储,不同的标签对应不同的编码块和存储位置,编码块循环存储在不同的空间。在帧内环路中,求和模块处于流水线的第三级,因此,该算法所在的PEG01内最多可能存储3 个编码块的最优预测数据,所以设置3个标签,从而避免了流水线设计引起的数据冲突。
为了检验本文提出方案的正确性和可行性,基于可重构阵列处理器进行仿真验证。首先,使用仿真软件将测试数据转换为二进制的形式存入DIM 中,并将指令通过平台专用的翻译器转换为阵列处理器可以识别的二进制指令,存入对应PE阵列的指令存储器中,完成初始化工作。然后使用基于标准的验证软件进行仿真验证,Xilinx 公司的ISE14.7 开发环境进行综合,选用BEE4 系列开发板XC6VLX550T进行FPGA 测试[12]。实验表明,编码器的工作频率为153.6 MHz,电路规模为164553Flip—flops,测试结果如图5所示,其中,图5(a)~(c)为帧内环路的测试结果,图5(d)~(f)为帧间环路的测试结果,均具有良好的可视效果。
图5 测试结果
为了验证所提方案适用于各种不同类型的视频图像,选取不同类别的标准测试序列进行编码测试,表2 为改进前后方案的性能比较。加速比S为改进前后执行时间的比率,衡量并行化的性能效果,计算如式(1)所示,T1和Tn分别为流水线并行前和并行后的处理器运行时间
表2 改进前后性能对比
结果显示,流水线并行方案的平均加速比约2.92,图像的编码时间比改进之前平均减少了66%,节省了大量的编码时间,编码器性能得到明显提升。
本文基于可重构阵列处理器的HEVC编码器充分利用了编码单元内细粒度并行性和可重构特性,同时引入流水线设计,获得了较高的加速比。文献[13]通过设计模式决策的并行架构实现编码器加速,虽然硬件开销很小,但其编码时间相比本文较长。图6为本文方案与文献[13]的方案对不同分辨率视频图像的处理时间,灰色折线代表的是加速比。可以看出,本文方案相对于文献[13]获得了普遍的加速,对高清视频图像的处理时间节约了18%,运行时间整体较短,并且受分辨率影响较小。
图6 处理速度的比较
峰值信噪比(peak signal to noise ratio,PSNR)和结构相似性(structural similarity,SSIM)是2 种常用的评估视频图像质量的指标。选取5组测试序列,在全I帧配置下进行测试,结果如表3所示,平均SSIM值为0.994 1;与HM16.8 相比,PSNR值平均增加了0.021 9 dB,基本保持不变。结果表明,本文方案在编码时间得到提高的同时,视频图像质量也得到了保证。
表3 与HM16.8 的视频图像质量对比
本文分析HEVC算法的数据相关性,结合可重构阵列处理器的工作特性,对不同处理元簇上的编码算法进行自动循环设计,并基于握手机制设计流水线调度方式,实现了HEVC流水线并行化映射。此外,采用轮询存储方法避免了图像重建模块的数据冲突。该方案在FPGA平台上的工作频率可达153.6 MHz,对比改进前方案的执行时间减少了约66%。在保证视频图像质量不降低和不消耗更多硬件资源的前提下,实现了视频编码速度的提升。