《6.x264RISC-V生态构建和优化.pdf》由会员分享,可在线阅读,更多相关《6.x264RISC-V生态构建和优化.pdf(18页珍藏版)》请在三个皮匠报告上搜索。
1、x x264264 RISCRISC-V V生态构建和优化生态构建和优化钱佳炎字节跳动服务器团队目录目录1.1.背景背景2.2.x264x264生态构建生态构建3.3.RVVRVV指令集瓶颈和优化指令集瓶颈和优化4.4.从从x264x264看看RISC-VRISC-V软件生态的挑战软件生态的挑战背景背景视频编解码生态现状:对RISC-V的支持刚刚起步,且集中在h264,dav1d等解码器领域以FFmpeg的架构相关文件数量为例,生态差距较大,但也在快速发展:架构文件数量inFFmpeg百分比RISC-V618.5%ARM/NEON29340.7%x86/AVX/SSE36550.8%我们的工作
2、:团队致力于推动面向字节业务的RISCV软件生态快速发展视频编解码是字节数据中心的重要场景之一,其中x264/x265编码器是优化重点目录目录1.1.背景背景2.2.x264x264生态构建生态构建3.3.RVVRVV指令集瓶颈和优化指令集瓶颈和优化4.4.从从x264x264看看RISC-VRISC-V软件生态的挑战软件生态的挑战x264x264生态构建生态构建生态构建目标:1.CPUDetect适配RISCV2.完成x264底层算子的RVV手写汇编实现3.性能对标其他ISAx264x264生态构建生态构建x264典型计算pattern:在两帧图像中各取一个固定大小的像素块(4x416x16
3、),做相关运算在传统x86/armCPU上,x264更适配高并发的窄向量x264x264生态构建生态构建x264典型RVV实现案例:利用strideload填满向量寄存器通过SEW=32/64读一行的多个u8依赖硬件支持非对齐访问registergroup配合widening计算显著的减少前端指令数VLA实现,支持任意vlen=128潜在问题:访存-计算无法交替执行隐藏时延对大vlen硬件性能不一定最优除非指令性能依赖vl而不是依赖LMULx264x264生态构建生态构建由于缺乏高性能RISC-VCPU,采用相对相对的向量加速比替代绝绝对对性能来评估实现效果测试平台:SpaceMITK1vle
4、n=256dlen=128ARMN22x128neonhttps:/code.videolan.org/BD-qjy/x264-riscv-dev指令集瓶颈!指令集瓶颈!目录目录1.1.背景背景2.2.x264x264生态构建生态构建3.3.RVVRVV指令集瓶颈和优化指令集瓶颈和优化4.4.从从x264x264看看RISC-VRISC-V软件生态的挑战软件生态的挑战RVVRVV指令集瓶颈指令集瓶颈1.1.in-registertransposein-registertranspose2.absolutedifference2.SignedsaturateandNarrowtoUnsigned
5、3.zero-extendmovefromscalartovector0123456789101112131415048121591326101437115NEON:trn1/trn2指令组合,nlogn的复杂度RVV:segmentload/storeLMUL=n的vrgathervnsrl模拟zipelseRVVRVV指令集瓶颈指令集瓶颈1.in-registertranspose2.2.absolutedifferenceabsolutedifference2.SignedsaturateandNarrowtoUnsigned3.zero-extendmovefromscalartove
6、ctor.macrouabdd0,s0,s1,t0vmaxu.vvd0,s0,s1vminu.vvt0,s0,s1vsub.vvd0,d0,t0.endm.macrouabald0,s0,s1,t0,t1vmaxu.vvt1,s0,s1vminu.vvt0,s0,s1vsub.vvt0,t1,t0vwaddu.wvd0,d0,t0.endmC=abs(A B)C+=abs(A B)RVVRVV指令集瓶颈指令集瓶颈1.in-registertranspose2.absolutedifference3.3.SignedsaturateandNarrowtoU