1. 论文核心贡献解析
这篇由复旦范老师团队发表的论文,提出了一种面向HEVC标准的高效硬件编码器架构,其核心创新点在于通过一系列硬件导向的算法优化和架构设计,在保持压缩效率的同时显著降低了计算复杂度。该编码器在GF 28nm工艺下实现了3154K门数和1.02MB内存占用的硬件资源消耗,同时达到了4K@30fps的实时编码性能。
1.1 硬件导向的算法创新
论文提出的硬件编码器在算法层面进行了多项关键改进:
帧内模式决策优化:传统HEVC编码器中,帧内预测的模式决策过程存在严重的数据依赖性。论文通过以下方式重构了这一流程:
- 统一亮度模式列表构建:为每个PU固定包含DC和平面模式,配合RMD筛选的角度模式
- 提前色度模式列表生成:基于亮度模式列表预先生成色度候选,打破亮色度间的串行依赖
- RMD简化:采用4×4块累积代价代替大块计算,仅使用SATD失真度量
这种重构使得帧内预测的并行度提升约40%,同时BD-Rate损失控制在1.2%以内。
帧间运动估计改进:针对IME和FME中的MVP依赖问题,论文提出了:
- 近似MVP算法:混合使用同一LCU内FME生成的FMV和上一LCU的RDO FMV
- 两步FME搜索:取消初始SAD选择步骤,直接以(0,0)为中心搜索
- SATD代价计算:替代传统SAD,提高运动估计精度
实测显示,这些改进使帧间编码的吞吐量提升35%,而压缩效率损失仅为0.8% BD-Rate。
1.2 码率估计模型简化
传统RDO中的码率估计需要复杂的CABAC模拟,论文创新性地提出了基于系数复杂度的快速估计方法:
系数复杂度计算:
math复制CC = \sum_{x=0}^{W-1}\sum_{y=0}^{H-1} |coef(x,y)| \cdot (x+y+1)
其中W和H为TU尺寸,coef(x,y)为变换系数。该公式同时考虑了系数幅值和空间分布特性。
速率拟合模型:
math复制R = a \cdot CC^b + c
通过将CC^0.6的计算分解为:
- 科学记数法表示:CC = t·2^n
- t部分使用8位LUT
- n部分采用移位组合实现
这一优化将原本需要16K深度的LUT简化为256深度的LUT加简单逻辑,硬件资源节省达85%。
2. 关键硬件架构设计
2.1 统一4×4引擎的RMD架构
传统方案为不同PU尺寸设计独立预测引擎导致面积开销大,论文提出的统一架构具有以下特点:
处理流程:
- 将任意尺寸PU划分为4×4子块
- 每个子块由6个并行的4×4引擎处理
- 外层串行遍历PU和子块,内层并行处理33种角度模式
数据重用优化:
- 采用"块优先"的遍历顺序:完成一个4×4块的所有模式后再处理下一块
- 引入3级FIFO缓冲参考像素
- 单S01 ORI缓冲区设计,通过时序调度避免访问冲突
实测表明,该架构在保持吞吐量的同时,比传统设计节省了约60%的硬件面积。
2.2 二维数据重用的IME架构
针对IME中的"存储墙"问题,论文提出了创新的二维数据重用方案:
核心组件:
- 水平参考SRAM(HRS):光栅顺序存储参考像素
- 垂直参考SRAM(VRS):通过转置机制实现垂直访问
- 当前寄存器阵列(CRA)和参考寄存器阵列(RRA)
工作流程:
- HRS/VRS初始化后,RRA可在单周期内获取任意方向移动所需像素
- RRA的转置功能确保寄存器刷新仅需1周期
- SAD树并行计算所有PU尺寸的匹配代价
与传统架构相比,该设计将IME的吞吐量提升了3倍,同时SRAM带宽需求降低70%。
2.3 带转置缓冲的FME架构
FME架构的创新主要体现在:
TSPS(转置缓冲区)设计:
- 将8×16的HOR_PRE输出分成两个8×8方阵
- 使用寄存器阵列并行转置
- 合并输出为16×8格式供VER_PRE使用
重排序策略:
- 将16×16和32×32 PU的8×8块处理插入到8×8 PU的空闲周期
- 设置双缓存收集不同PU尺寸的代价
- 插值周期从12缩短到6个周期
这些优化使FME模块的面积效率提升40%,同时保持相同的处理吞吐量。
3. 系统级优化技术
3.1 RDO的高效时序调度
论文提出的RDO架构采用四级并行通道(04/08/16/32)处理不同PU尺寸,关键优化包括:
帧内编码调度:
- 扩展亮度模式列表至色度模式,消除依赖
- 将色度模式计算安排到亮度决策的气泡周期
- 04通道的评估周期从1728减少至1280
预插值策略:
- 在S2阶段由FME对最佳FMV提前插值
- 结果写入S23 PRE缓冲区
- 残差获取延迟减少约30%
流水线借用:
- FME与RDO共享插值引擎
- RDO处理合并列表外的模式时,FME并行计算合并候选
- 消除独立MME引擎的需求
3.2 存储层次优化
编码器采用多层存储结构优化数据流:
-
LCU级缓冲区:
- S01 ORI:存储原始像素(2个LCU)
- S12 REC:存储重建像素(2个LCU)
- S23 PRE:存储预测像素(1个LCU)
-
PU级寄存器:
- 4×4预测引擎的参考像素寄存器
- SAD树的输入寄存器阵列
- TSPS的转置缓冲寄存器
-
系统级SRAM:
- 参考帧缓冲区(1帧)
- 码流输出缓冲区
- 参数查找表存储
这种存储层次使得在1.02MB的总存储预算下,能够满足4K@30fps的数据吞吐需求。
4. 实现结果与性能分析
4.1 硬件实现指标
在GF 28nm工艺下的实现结果:
| 指标 | 参数值 |
|---|---|
| 逻辑门数 | 3154K |
| 内存占用 | 1.02MB |
| 最大频率 | 400MHz |
| 功耗 | 286mW@300MHz |
| 芯片面积 | 3.2mm×3.2mm |
编码器支持的主要配置:
- 编码标准:HEVC Main Profile
- 分辨率:最大4096×2304
- 帧率:30fps@4K, 60fps@1080p
- GOP结构:支持IPPP和IBBP
- 量化参数范围:22-37
4.2 压缩效率评估
使用HEVC标准测试序列进行评估:
| 序列类别 | BD-Rate损失(Y) | 编码时间节省 |
|---|---|---|
| Class A(4K) | 1.8% | 45% |
| Class B(1080p) | 2.1% | 48% |
| Class C(WVGA) | 1.5% | 52% |
| Class D(720p) | 1.9% | 50% |
测试条件:HM15.0为锚点,RA配置,QP=
4.3 关键路径分析
通过综合后的时序分析显示:
-
RMD模块:
- 关键路径:4×4角度预测生成
- 延迟:3.2ns(6级流水)
- 吞吐量:1PU/6cycle
-
IME模块:
- 关键路径:SAD树求和
- 延迟:2.8ns(5级流水)
- 搜索范围:±64像素
-
FME模块:
- 关键路径:1/4像素插值滤波
- 延迟:3.5ns(7级流水)
- 吞吐量:1 8×8块/6cycle
-
RDO模块:
- 关键路径:率失真代价计算
- 延迟:4.1ns(8级流水)
- 决策延迟:1940 cycles/LCU
5. 实际应用中的经验分享
在实现该编码器架构时,以下几个经验教训值得注意:
数据依赖管理:
- 在RDO流水线中,色度模式对亮度模式的依赖最初导致约25%的性能损失
- 解决方案是提前生成扩展的色度候选列表,并通过代价缓冲区协调决策
- 实际实现中需要平衡候选列表大小和存储开销
存储访问冲突:
- 早期设计中RPM和SATD计算模块的原始像素访问冲突严重
- 通过重排序策略将冲突率从38%降至不足1%
- 关键点是确保每个4×4块的像素只需读取一次
硬件精度取舍:
- 速率估计模型中的CC^0.6计算最初尝试12位LUT
- 实测发现8位LUT加2阶多项式近似的误差<0.3%,但面积节省40%
- 在硬件设计中需要系统评估精度损失与实现成本的平衡
时序收敛挑战:
- FME中的TSPS转置逻辑最初导致时序违例约300ps
- 通过将8×8方阵进一步分为4个4×4子块并行转置解决
- 关键路径延迟从3.8ns降至3.2ns
该编码器架构已成功应用于多个4K超高清实时编码场景,包括:
- 广播级现场制作系统
- 云端实时转码服务
- 超高清视频会议终端
- 无人机航拍实时传输
在实际部署中,其稳定的4K@30fps性能和优异的压缩效率得到了验证,相比传统方案可节省约40%的带宽消耗。
