1. VVC帧内预测的硬件加速挑战
视频编码技术在过去几十年里经历了飞速发展,从早期的H.261到如今的VVC(Versatile Video Coding),每一代标准的推出都带来了显著的压缩效率提升。作为H.265/HEVC的继任者,VVC在相同视觉质量下能够实现高达44%的比特率节省,但代价是计算复杂度的大幅增加——在某些情况下甚至达到HEVC的十倍之多。
在VVC编码器的各个模块中,帧内预测(Intra Prediction)无疑是计算最为密集的环节之一。与帧间预测不同,帧内预测仅利用当前帧内已编码区域的信息来预测当前块的内容,这对于I帧编码和随机访问场景至关重要。VVC的帧内预测包含93种方向性模式(directional modes),每种模式都需要通过插值滤波器计算预测值,涉及大量参考样本与固定系数之间的乘法运算。
1.1 帧内预测的计算瓶颈
VVC的帧内预测计算可以抽象为以下公式:
p(x)(y) = Clip(((Σ(f[k][i]*r[x+i0+i])+32) >> 6)其中,f[k][i]代表插值滤波器系数,r[x+i0+i]是参考样本值。对于每个4×4的预测块,这需要执行16次上述计算,每次计算涉及4个乘法操作(对应4抽头滤波器)。考虑到VVC支持从4×4到64×64的多种块大小,以及需要对所有93种模式进行测试以选择最优预测,计算量呈爆炸式增长。
传统实现中,这些乘法操作会直接映射到硬件乘法器单元。但在ASIC设计中,乘法器会占用大量芯片面积并消耗可观功耗。以一个典型的65nm工艺节点为例,一个32位乘法器的面积可能相当于500-1000个2输入NAND门,而功耗更是比简单逻辑门高出数个数量级。
1.2 MCM技术的潜力与局限
多常数乘法(Multiple Constant Multiplication, MCM)技术为解决这一问题提供了可能。MCM的核心思想是:当其中一个乘数为固定常数时,乘法操作可以通过一系列加法、移位和取反操作来实现。例如,乘以常数13可以分解为(x<<3) + (x<<2) + x,这只需要两次移位和两次加法。
在VVC帧内预测场景中,插值滤波器系数是预先定义的常数(VVC标准中定义了57个不同的系数),因此非常适合采用MCM技术。通过精心设计的MCM块,可以显著减少硬件资源占用。然而,57个不同系数意味着需要设计57套独立的MCM逻辑,这仍然会导致较大的电路面积。
提示:在FPGA实现中,由于现代FPGA都内置了专用乘法器单元(DSP块),直接使用硬件乘法器往往更为高效。因此MCM技术主要适用于ASIC设计场景。
2. 基于系数平均的近似计算方法
2.1 核心创新思路
本文提出的创新方法基于一个关键观察:相邻方向的插值滤波器系数往往具有相似性。通过将一组连续的系数替换为它们的平均值,可以显著减少需要处理的独立系数数量,从而简化MCM块的设计。
具体实现上,我们定义了一个参数n,表示进行平均的系数数量。例如:
- 当n=2时,每两个相邻系数被替换为它们的平均值
- 当n=4时,每四个相邻系数被替换为它们的平均值
- 以此类推,直到n=32(即所有57个系数被替换为32个代表值)
这种近似处理仅在率失真代价(RD-cost)计算阶段使用,最终的比特流生成仍采用精确预测。这种分离处理确保了编码器与标准解码器的兼容性,因为解码器必须严格按照VVC标准实现。
2.2 数学形式化描述
设原始系数集合为C = {c1, c2, ..., c57},对于给定的n值,近似后的系数集合C'计算如下:
C' = {avg(c1..cn), avg(cn+1..c2n), ..., avg(c(k-1)*n+1..c57)}其中k = ceil(57/n),avg表示算术平均运算。图1展示了n取不同值时,第三列部分系数的近似结果。
图1:不同n值下的系数平均效果(以第三列部分系数为例)
2.3 硬件架构设计
基于这一思想,我们设计了六种不同的硬件架构:
- 精确MCM架构:使用全部57个系数,无近似处理
- 近似MCM架构:n=2,4,8,16,32五种变体
- 传统乘法器架构:作为基准对比
每种MCM架构包含四个MCM块(对应4抽头滤波器的四个位置),每个块计算参考样本与相应列所有系数的乘积。例如,MCM块2计算r[2]与系数16、51、19、27的乘积(前两个来自fC滤波器,后两个来自fG滤波器)。
关键优化技术包括:
- 共享计算:当不同模式需要相同乘积时,复用计算结果
- 零/一跳过:乘以0直接输出0,乘以1直接输出输入
- 并行处理:支持同时计算多个样本的预测值
3. 硬件实现细节
3.1 MCM块生成流程
我们采用Spiral软件工具自动生成优化的MCM块Verilog代码。Spiral实现了先进的算法,能够找到给定常数集的最优加法-移位组合。生成流程如下:
- 提取VVC标准定义的所有插值滤波器系数
- 根据n值进行系数平均,得到简化后的系数集
- 使用Hcub启发式算法为每个系数生成计算序列
- 识别并合并不同系数间的公共子表达式
- 输出优化后的Verilog描述
3.2 并行处理架构
为提升吞吐量,我们设计了支持并行样本预测的架构变体。核心思想是:当多个预测样本共享相同的参考样本时,可以复用MCM块的计算结果。例如,在预测4个相邻样本时,它们可能共用部分参考样本,这些样本的MCM计算结果可以被多个预测单元共享。
图2展示了并行处理架构的概念:
图2:支持并行样本预测的MCM架构
这种设计特别适合VVC的大尺寸编码单元(如64×64),因为大块内相邻样本的预测往往依赖相同的参考样本。
4. 实验结果与分析
4.1 编码效率影响
我们在10个标准测试视频序列上评估了近似方法对编码效率的影响,使用BD-Rate作为度量指标。BD-Rate表示在相同视觉质量下,近似方法相比精确方法所需的额外比特率。
表1总结了不同n值下的平均BD-Rate增长:
| 近似级别(n) | 平均BD-Rate增长(%) | 最大BD-Rate增长(%) |
|---|---|---|
| 2 | 0.37 | 1.2 |
| 4 | 0.56 | 1.8 |
| 8 | 1.07 | 2.9 |
| 16 | 1.33 | 3.7 |
| 32 | 2.68 | 4.3 |
结果显示,即使在使用最激进的近似(n=32)时,平均BD-Rate增长也控制在2.68%以内,这在许多实时应用中是可以接受的折衷。
4.2 硬件资源节省
使用Cadence Genus工具在65nm工艺下进行综合,结果如表2所示:
| 架构类型 | 单元面积(门等效) | 总面积(512单元) | 总功耗(mW) |
|---|---|---|---|
| 传统乘法器 | 650 | 332,800 | 384 |
| 精确MCM | 1,748 | 894,976 | 818 |
| MCM(n=16) | 520 | 266,240 | 402 |
| MCM(n=32) | 290 | 148,480 | 257 |
关键发现:
- 传统乘法器面积小于精确MCM,这与预期不符,说明对于大量不同系数,MCM的优势被抵消
- 近似MCM显著减少资源占用,n=32时面积减少44%
- 功耗趋势与面积类似,n=32时降低33%
4.3 并行架构优势
表3对比了不同并行度下的面积节省:
| 并行度 | MCM(n=8)面积 | 传统乘法器面积 | 节省比例 |
|---|---|---|---|
| 1 | 304,800 | 288,000 | -5.8% |
| 4 | 289,116 | 284,192 | 1.7% |
| 8 | 279,876 | 280,512 | 0.2% |
| 16 | 276,088 | 278,960 | 1.0% |
| 32 | 276,032 | 277,816 | 0.6% |
虽然整体节省幅度不大,但MCM架构在高度并行时展现出优势,特别是在n=8配置下,最大可节省1784个门等效面积。
5. 实际应用建议
基于实验结果,我们给出以下设计建议:
- 能效优先场景:采用n=32近似,可节省44%面积和33%功耗,代价是2.68% BD-Rate增长
- 质量优先场景:采用n=8近似,仅1.07% BD-Rate增长,同时仍有22%面积节省
- 并行度选择:对于1080p@30fps实时编码,建议采用8-16并行度,在80MHz时钟下可满足时序要求
- 系数存储优化:近似方法减少了需要存储的系数数量,可以节省ROM面积
特别值得注意的是,低分辨率视频(<1080p)受近似影响更大,建议这类应用采用更保守的近似参数(n≤8)。
6. 扩展与优化方向
在实际芯片设计中,还可以考虑以下优化:
- 混合近似策略:对高频重要系数使用更精确的近似(小n),对低频系数使用更激进的近似
- 动态可配置n值:根据视频内容特性动态调整近似程度
- 结合其他近似计算技术:如降低内部计算精度、简化clip操作等
- 工艺适配:在更先进工艺节点(如28nm以下)评估,因为乘法器与MCM的面积/功耗比可能变化
我们在测试中发现,Campfire和RitualDance等视频序列对近似很不敏感,这提示可能可以开发基于内容的自适应近似策略,进一步优化编码效率与硬件成本的平衡。