x264 的 RISC-V 生态构建与优化探索

嵌入式技术

1411人已加入

描述

x264 编码器是一种广泛使用的开源视频编码库,专门用于实现 H.264/MPEG-4 AVC 编码标准。其架构设计与技术实现深刻反映了视频编码软件在多硬件平台适配中的共性逻辑,也成为衡量不同架构性能优化水平的重要标杆。
 
2025 年 7 月 18 日,在第五届(2025)RISC-V 中国峰会的软件与生态系统分论坛上,字节跳动软件工程师钱佳炎分享了关于 x264 在 RISC-V 生态系统中的构建和优化经验。​
他首先介绍了当前视频解码器领域的发展状况,并指出尽管 FFmpeg 等工具取得了进展,但与之相关的软件生态系统仍存在较大差距。字节跳动服务器团队致力于推动内部服务器领域的 RISC-V 生态发展,尤其是针对抖音这样的高需求应用,以 x264 为起点进行探索。
 
从计算模式来看,x264 底层算子多是对图像块中 4×4 到 16×16 不等的小矩阵进行操作。由于 CPU 对不连续内存请求的处理特性,在传统 X86、ARM 等架构中,ARM 在编码器领域性能更优,而 X86 稍显逊色。钱佳炎团队的重点便是针对 RISC-V 架构,优化这些底层算子的实现。
 
在传统 X86 和 ARM CPU 上更适合高并发窄向量实现,而在一些 RISC-V CPU 实现中采用宽向量两发射顺序设计可能导致性能下降。通过 RVV(RISC-V 向量扩展)实现对 x264 的优化后,字节跳动团队采用相对加速比来衡量优化效果。在 SpaceMIT K1 平台上的测试表明,大部分实现方向正确,但 RVV 指令与 NEON 相比仍有差距。
 
目前,x264 在 RISC-V 架构上的优化面临诸多指令集瓶颈:​
·in-register transpose 操作:缺乏与 ARM 对标、复杂度为 nlogn 的指令组合。​
·absolute difference 计算:需四条指令实现,效率有待提升。​
·Signed saturate and Narrow to Unsigned 处理:因 RISC-V 的设计特点,从标量转为向量时需额外指令清零,增加了操作步骤。

针对这些问题,字节跳动团队积极推动指令集优化:在 RISE 提出问题并收集反馈,联合社区专家在 Vector Sig 详细讨论差距,将其纳入 2025 年重点工作;同时提出 Zvabd 等相关提议,推动指令集扩展流程。
 
当前 RISC-V 社区对新扩展的要求偏实用主义,强调对应用集的明确价值收益,在指令功能、向量变体及数据类型上追求最小化,虽与 ARM 完备的指令集有差距,但足以解决 x264 和 x265 相关编码器的问题。
 
最后,钱佳炎提出了对软件生态系统未来发展的思考,包括加快补齐指令集差距、解决 vlen 碎片化问题等。他呼吁更多的中国开发者参与到 RISC-V 社区及指令集的讨论中,并期待厂商能提供更高性能的 CPU 支持。
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • 热点推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分