论文部分内容阅读
数字视频,是信息时代中获取信息的重要途径,它广泛应用于视频会议、远程医疗、远程教学、网络视频点播、高清数字电视广播、数字电影以及数字视频存储等领域。视频压缩编码是数字视频应用的核心,计算量大、算法复杂,是典型的计算密集型应用。随着视频逐渐向高清发展,视频压缩编码对计算性能的需求越来越高,已经达到每秒万亿次级。现有的运行于通用处理器上的串行结构编码器已经不能满足高性能视频编码的需求,而专用硬件实现的编码器又具有灵活性差、开发周期长、成本高等缺点。因此在高性能视频压缩编码领域,可编程处理器上基于并行计算模型的编码器成为新的研究方向。流计算模型是近年来新兴的一种并行计算模型,已经在包括视频编码在内的媒体处理、信号处理、科学计算等密集计算应用的加速领域获得了成功。流计算模型通过对计算密集性、多级并行性、多层次局域性的充分挖掘,使视频编码应用获得显著的性能提升。然而,在视频向高清甚至未来超高清的发展过程中,视频图像分辨率的增大、编码实时性和压缩率要求的提高、视频编码本身固有的特征都向基于流计算模型的视频编码提出了一系列新的问题,包括流计算视频编码的扩展性问题、编码过程中广泛存在的相关性问题和高分辨率视频编码的计算性能问题等等。在此背景下,本文选择了“基于流计算模型的视频编码关键技术研究”作为博士研究课题。针对基于流计算模型的视频编码所面临的扩展性、相关性和计算性能问题,本文在视频编码的并行计算流框架、高效并行流算法、相关性约束消除、流化视频编码器的高效执行等四个方面,完成了以下创新性研究工作:1、提出一种基于流计算模型的具有扩展性的视频编码框架——视频编码的可扩展流框架VSSF。VSSF旨在解决视频编码器面临的并行粒度扩展、并行度扩展、图像规模扩展和编码模块扩展等四个方面的问题。VSSF以流计算模型为基础,将视频编码中的计算和访存解耦合,计算部分封装在多个独立的计算核心引擎中,以数据带的形式进行访存。VSSF通过向片外存回数据的方式割裂了不同计算核心引擎之间在并行实现方式上的联系,从而支持并行粒度扩展;VSSF具有灵活的数据组织机制,通过修改数据带的组织方式支持并行度扩展;VSSF的设计与视频图像分辨率无关,因此可以通过修改每个计算核心引擎所处理数据带的数目来支持图像规模扩展;VSSF是一种开放性的并行框架,各个计算核心引擎之间属于松散耦合关系,从而支持视频编码模块扩展。2、提出一种基于流的计算量低、计算和访存规则的帧间预测算法——多分辨率多窗口帧间预测MRMW。针对帧间预测计算量大、计算不规则的问题,本文提出多分辨率多窗口帧间预测算法MRMW,同时满足计算量降低和计算规则两个方面的需求。MRMW通过将帧间预测划分为降分辨率全搜索、多窗口精化搜索、运动补偿等三个独立的搜索步骤,降低了帧间预测中非规则问题的影响。MRMW通过在多个不同级别分辨率的图像中搜索候选运动矢量的方法有效降低计算量。MRMW的多窗口精化搜索则能够获得更加精确的运动矢量。另外,针对多窗口的选择问题,本文基于运动矢量预测原理提出双向相关运动矢量选择法,综合利用当前宏块周围各方向相邻宏块的相关性,使预测更为准确。3、提出相关性约束对并行限制的消除方法,解决视频编码中各种相关性问题。针对视频编码模块中存在的数据相关、控制相关、码流存储的优先约束等多种相关性问题,分别提出解决方案来消除它们对基于流计算的SIMD并行的限制:针对码流存储过程中的优先约束,创新性地提出了基于数据并行的CAVLC方法,割裂了计算与访存紧密耦合引起的串行路径,使具有典型串行特征的CAVLC打破了优先约束的限制,实现了并行的CAVLC。针对帧内预测的块间数据相关,基于对相关关系的分析,采用分阶段块级并行方法,提高帧内预测并行度和数据吞吐率。针对去块滤波中的多层次双向数据相关问题,提出分组并行法,实现细粒度的数据并行。4、提出一种通过提高异构核协同效率来加速视频编码执行的方法——软硬结合的异构核协同方法。针对流化视频编码核心程序在经典流体系结构中执行性能低的问题,提出了软硬结合的异构核协同方法。该方法避免了单纯使用软件方法进行异构核协同导致效率低下问题,在硬件结构、软件模块、指令集和编译等多个层次上进行设计和扩展,共同完成标量处理核和流处理核间的协同工作:在硬件结构层次设计了异构核协同单元,负责完成对性能需求较高的协同任务;在软件层次设计了软件协同模块,并提供相对应的编译扩展支持,负责灵活性较高而复杂的协同任务。实验结果表明,软硬结合的异构核协同方法使异构核间的协同性能提升2个量级,而在硬件开销方面只增加整个流处理器芯片面积的2%左右。本文还在流处理器、GPU、多核CPU和DSP等多个并行计算平台上实现了H.264 VSSF编码器。使用高清视频序列HD-VideoBench测试的结果显示,VSSF编码器对1920x1080视频的H.264编码在上述平台获得了十分显著的性能提升,并且在流处理器上达到了实时编码的性能需求。