作者:Arm 终端事业部消费计算市场高级经理 Poulomi Dasgupta
随着每一代新产品的推出,Arm CPU 都会实现代际性能提升,并引入架构改进,以满足不断演进的计算工作负载的需求。本文将重点介绍三个用例,以展示 Armv9 CPU 的架构特性在实际场景中产生的影响,特别是在 HDR 视频解码(加速 10%)、图像处理(加速 20%)、主要移动端应用中的功能 LibYUV(加速 26%)。
好消息是,本文中讨论的一些 Arm SVE2 优化现已可供开发者获取使用,有望提升热门媒体应用的用户体验,进一步改善人们沟通、工作和娱乐的方式。
应用开发者和 OEM 厂商面临的挑战
首先,从移动端应用开发者当前面临的挑战来看,目前市场上有超过 200 万个安卓应用[1]在争夺用户的青睐。这些应用要想保持竞争力,就必须迅速将创新成果推广到各种移动设备上。倘若依赖于功能固定的硬件,会面临产品上市时间和可移植性等方面的挑战。
与出色的用户体验相关的指标,包括应用启动时间、UI 流畅度、每秒词元 (token) 数和每秒帧数 (FPS) 稳定性等都需要切实满足用户期望。因此,OEM 厂商需要在性能提升与更广泛的用户需求(如延长电池续航时间、减少数据使用量和设备成本)之间取得平衡。其中任一方面存在不足,都可能导致用户不满意,否定升级移动设备的价值。
在 Armv9 CPU 上开发软件可以解决 OEM 厂商和开发者所面临的挑战。
Armv9 CPU 中 SVE2 的实际用例
让我们来看三个案例研究,证明软件优化可以加速实际工作负载。首先,以下是 SVE2 的一个子集和可加速移动设备上关键工作负载的 Armv9 CPU 中的新矢量指令:
16 位点积和 8 位矩阵乘法,可加速 HDR 视频播放和视频会议。
图像处理直方图指令。
聚合读取和分散存入,用于摄像头传感器数据的解交织处理。
复数指令,用于加速视频编解码器中的快速傅里叶变换。
使用这些矢量指令可使优化的软件使用更少的 CPU 周期,带来两大好处。第一,CPU 周期减少使得能耗降低,增加电池续航时间;第二,提高应用性能。
案例 1
SVE2 使视频解码速度提高 10%
观看多媒体内容是移动设备上最常见的工作负载之一,也是移动端网络较大的流量来源。因此,厂商不断追求更高效的编解码器,希望在节省网络带宽的同时,支持出色的图像质量。
HDR 技术由于色彩准确度更高,可呈现更加逼真的细节,即使是在非常暗或非常亮的场景中也是如此。它使用 10 位而非 8 位来表示每个色彩通道。AV1 和 VP9 以及其他现代编解码器,且都支持 HDR 视频。
AV1 是一种较新的格式,可提供更好的压缩效果,而 VP9 则在各种浏览器和设备中具有更广泛的兼容性。一些热门应用都使用 AV1 和 VP9 格式来播放视频。
SVE2 优化使 HDR 视频解码速度提高了约 10%,VP9 解码速度提高了 8%,AV1 解码速度提高了 10%。这使得 CPU 周期减少约 10%,电量消耗也相应减少,让用户在移动设备上播放点播视频时能够获得更长的电池续航时间。如此一来,无论是观看快拍、短片还是长视频,都将变得更加顺畅!
对 libdav1d(Av1 解码器)和 libvpx(Vp9 解码器)的优化代码已经上传,开发者现可获取使用。
案例 2
SVE2 使 LibYUV 速度提高了 26%
值得一提的是,我们每个人都在不知不觉中使用了 LibYUV。
LibYUV 是一个开源库,用于 RGB 和 YUV 之间的色彩空间转换、摄像头传感器数据缩放,以及摄像头滤镜和旋转。在经由视频解码器使用之前,它会对来自摄像头传感器的数据进行处理。在很多情况下,视频解码器中的数据会先通过 LibYUV 进行处理,然后再发送去显示。
SVE2 优化使 LibYUV 速度提高了 26%(Armv9 CPU 上多个内核的几何平均值)。LibYUV 中大约有 100 个内核已使用 SVE2 进行了优化,其他内核的优化工作正在进行中。部分工作已完成上传,可在 https://chromium.googlesource.com/libyuv/libyuv/ 上查看。
LibYUV 作为 Chromium 的一部分进行分发。Chromium 是一个开源浏览器项目,为 Chrome 及主要手机厂商的定制浏览器(包括小米浏览器和三星浏览器等)奠定了基础。它还被集成到 AOSP 和 Android Jetpack 中。由于 LibYUV 对移动设备至关重要,它有望对整体移动端体验产生深远的影响,例如带来更好的视频会议体验、更顺畅的竖屏和横屏模式切换,以及更好的视频消费体验,并且大大延长电池续航时间。
案例 3
SVE2 使计算摄影速度提高 20%
Halide 是一种专门用于图像处理领域的语言,用于 Adobe Photoshop 等应用,一些 OEM 厂商也将它用于摄像头管线。
SVE2 指令(例如聚合读取和分散存入指令)和 TBL(可编程查表,用于矢量化小型查询表)加速了 Halide 中的一些关键计算机视觉流程。iToFDepth(用于感知深度)、双边网格(用于边缘感知色调映射)和局部拉普拉斯(用于滤镜)等计算密集型算法在采用 SVE2 后,性能提升了近 20%。
使用 SVE2 来优化软件可以实时应用一些摄影效果,为入门级移动设备开辟了新的可能性,用户无需专用硬件即可获得更高质量的照片。
Arm 已针对 SVE2 代码生成优化了 Halide 后端。好消息是,一些补丁已经上线,其他补丁也正在开发中。
图:Halide-SVE2 和 Halide-Neon CPU 周期数对比
如何更好地使用 SVE2?
SVE2 引入了几个新指令,非常适合加速关键的实际工作负载和应用。我们将在后续的技术文章中更详细地讨论如何使用 Armv9 CPU 实现一些性能提升,请持续关注“Arm 社区”微信公众号,敬请期待!
Arm 致力于为生态系统找到良好的平衡点,更好地兼顾开发者支持和性能提升。一些针对 SVE2 进行优化的开源库和内核已经上线,未来还会有更多资源。
Armv9 CPU 的最新进展将使开发者能够更快实现创新,为各类移动设备的最终消费者带来更好的用户体验。还等什么,赶紧采用 SVE2 开始你的开发项目,实现创新吧!
全部0条评论
快来发表一下你的评论吧 !