字节跳动:x264 RISC-V生态构建、挑战与优化

7月18日,在第五届RISC-V中国峰会的“软件与生态系统分论坛”上,字节跳动软件工程师钱佳炎带来《x264 RISC-V生态构建和优化》的主题分享,分享了团队在x264编码器适配RISC-V架构过程中的实践、指令集瓶颈及生态挑战,为RISC-V视频编解码生态发展提供了参考。

钱佳炎指出,当前RISC-V在视频编解码领域的支持仍处于起步阶段,主要集中在h264、dav1d等解码器,与成熟架构存在明显差距。以FFmpeg为例,RISC-V相关文件数量仅占8.5%,远低于ARM/NEON(40.7%)和x86/AVX/SSE(50.8%)。

作为字节跳动服务器团队的重点工作,x264生态构建旨在推动RISC-V在视频编码场景的落地,具体目标包括:适配RISC-V的CPU检测机制,通过RVV手写汇编实现x264底层算子,最终实现性能对标其他架构。x264的软件结构中,编码器核心流程采用C语言编写,底层算子则需针对不同架构进行特定优化,RISC-V优化的核心在于补充这部分手写汇编实现。

据钱佳炎介绍,x264的底层算子多涉及两帧图像中4x4至16x16像素块的相关运算,传统x86/ARM CPU更适配高并发的窄向量实现。针对这一特征,团队基于RVV实现了相关算子,例如通过stride load填满向量寄存器,利用SEW=32/64读取多行u8数据,并通过寄存器组配合拓宽计算减少前端指令数,同时采用VLA(向量长度自适应)设计支持vlen≥128的硬件。

由于缺乏高性能RISC-V CPU,团队采用相对向量加速比评估优化效果。在SpaceMIT K1平台(vlen=256,dlen=128)上的测试显示,RVV实现的加速比虽与ARM N2的NEON实现存在差距,但验证了优化方向的正确性。

针对RVV指令集瓶颈与优化推进,钱佳炎表示,在实践中,团队发现RVV在x264场景下存在几大瓶颈:

1. 寄存器内转置(in-register transpose):NEON可通过trn1/trn2指令组合以nlogn复杂度完成,而RVV需依赖segment load/store、LMUL=n的vrgather等指令模拟,效率较低。

2. 绝对值差计算(absolute difference):NEON有专用指令,RVV需通过vmaxu、vminu、vsub等多条指令组合实现,操作繁琐。

3. 有符号饱和窄化至无符号(Signed saturate and Narrow to Unsigned):需通过vmax与vnclipu两条指令配合,并调整SEW,增加指令开销。

4. 标量到向量的零扩展移动(zero-extend move from scalar to vector):vmv.x.s指令在SEW

针对这些问题,团队联合社区推动指令集优化,旨在简化绝对值差计算等操作。社区对新扩展的要求包括价值明确、有应用收益、功能最小化等。

从x264看RISC-V软件生态的挑战

钱佳炎认为,当前RISC-V软件生态面临多重挑战:

最后,他呼吁更多中国开发者参与RISC-V社区及指令集讨论,并期待厂商提供更高性能的CPU,共同推动软件生态成熟。

展开阅读全文

更新时间:2025-07-19

标签:科技   字节   生态   向量   指令   算子   团队   寄存器   软件   架构   速比   底层

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020- All Rights Reserved. Powered By bs178.com 闽ICP备11008920号
闽公网安备35020302034844号

Top