HEVC算法优化与芯片实现评估
1.多目标参数优化
- 基于FPGA或ASIC平台实现HEVC编码器需要经过算法设计和优化,架构定制,工程实现,系统集成和验证。这个过程需要权衡率-失真-硬件复杂度性能,其中算法定制和系统架构需要协同设计,其核心任务是进行适合并行流水硬件实现的算法映射,定制和优化,这期间要同时考虑码率和失真,硬件资源的消耗,吞吐效率,外存访存带宽等多目标参数,因此,这是一个多目标参数优化的问题。
2. 多模块联合关联优化
- 在HEVC编码标准中只是规定了码流结构,其他的包括运动估计,码率控制,编码模式选择等,我们可以根据多目标性能的要求进行定制和优化,进行适合的硬件算法映射和优化。这些可以优化每个子模块之间都存在着很复杂的关联,如我在分析RDOQ代码过程中,同时分析了码率控制和率失真优化模型,量化控制是码率控制和率失真优化的关键,而率失真R-D模型是量化建立的基础,根据DCT变换的系数分布得到合适R-Q和D-Q模型,进而估计出率失真代价,这是一个多阶段的决策问题,利用动态规划的方法从阶段最优可以得到全局最优,在这样的思想指导下,可以把相互关联的复杂优化问题按照一定的决策顺序分解,对各个模块独立进行优化,从而达到整体最优,因此,这又是一个多模块联合关联优化的问题。
3. 硬件多目标性能
- 编码器的硬件设计映射,应考虑多目标性能。率-失真性能是第一个重要的目标性能和硬件设计考虑因素;硬件资源和片上RAM其次;数据吞吐量(工作频率)决定着整个硬件系统的数据处理能力;外存带宽与系统时钟频率以及存储器接口I/O位宽有关;而系统功耗和面积也是架构设计重要考虑因素;硬件效率和存储访问效率反映了架构设计的性能;同时规则的数据流和控制流也是很重要的,在一定程度上能降低验证的风险,提高系统架构的性能。
4. HEVC视频编码器的VLSI系统架构
- 针对HEVC视频编码器的VLSI系统架构,我们预制定自顶向下的层次化设计,包括模块架构,存储架构,互连架构。模块架构包括几个计算密集或者是相对独立的算法模块组成,为高效处理多数据任务,采用几个专用模块组成,一定的流式数据粒度在流水线相邻流水间进行传递。存储架构采用分级缓存的存储架构,实现高效的数据流控制,对于数据量大的数据,存储在外存SDRAM;片上缓存用于存储临时数据,实现数据复用;在模块架构内部采用寄存器阵列实现数据复用,缓解数据交换的带宽压力,这个过程中,根据算法和架构设计,设计优秀的数据组织方式。互连架构控制着相邻模块间以及模块与存储架构之间的数据通信,设计时考虑互连架构的灵活性和效率。数据组织,数据流控制和缓存结构是存储架构和互连架构设计的关键因素,分级存储架构不同层次的数据组织方式不同,这依赖于我们的HEVC 算法和硬件架构,存储架构对数据组织至关重要,数据组织和数据流高度相关。这也是多目标优化的关键,因此主要考虑高效复用的数据流和规则的控制流。
5. 硬件适合度的度量方法和评估模型
- 通过上面分析,我们可以知道HEVC视频编码器的硬件设计时一个多模块,多算法选择,多目标参数组合约束的问题。为了这些目标之间权衡和优化,需要建立起相关的度量方法和评估模型。软件编码中我们可以采用运行时间和时钟数度量衡量复杂度,而在硬件编码中,我们认为硬件复杂度可以用系统的动态功耗和静态硬件成本描述,动态功耗成本描述实时视频硬件编码器在工作时表现出来的复杂度,静态硬件成本描述硬件资源消耗,在一定程度上可以描述芯片的价格。静态硬件成本E和三个参数有关:逻辑门数量lg,SRAM消耗性能sr,外存接口总线位宽bwd;动态功耗P除了这三个参数外,还和流水周期thr,SRAM访问esr,外存访问emem等有关,因此可以得到E=f(lg,sr,bwd),P=f((lg,sr,bwd,thr,esr,emem)。(暂不考虑CMOS工艺影响,并认为静态功耗为0,建立起来一个简单线性评估模型)
- 适合芯片流水实现的视频编码算法具备率失真性能好,复杂度低,访存量低,控制流规则等特征。进一步简化上述的度量方法和评估模型,我们根据编码算法度量硬件实现适合程度系数,考虑从计算,控制,访存三个方面评估算法的复杂度,分析算法的汇编指令代码,统计各类相关指令调用次数。统计计算类指令调用次数度量计算复杂度,统计判断类指令调用次数度量控制复杂度,统计数据读写指令调用次数度量访存复杂度,总体复杂度可以用三者之和来衡量。