在数字媒体消费日益增长的今天,视频流的流畅性和质量成为了用户关注的焦点。无论是观看电影、音乐视频还是参与视频会议,都希望获得无缝且高质量的视觉体验。为了提升用户体验,诸如 YouTube、Netflix 和 Amazon 等流媒体平台不断努力,以提供最高质量的视频流服务。2015年初,Intel 组建了一支由资深工程师组成的团队,专注于在 Intel® Atom™ 平台上优化 VP9 视频编码的性能。
VP9 是一种由 Google 开发的免版税的开放视频格式,与需要许可的高效视频编码(HEVC)相比,VP9 更具优势。它被用于 YouTube、其他视频服务以及部分智能电视上的 4K 分辨率内容,并支持 Chrome、Chromium、Firefox 和 Opera 等浏览器的 HTML5 播放。VP9 通过使用不同大小的像素块对视频内容进行编码和解码,利用复杂的算法系统地压缩原始数据,以便通过互联网流媒体进行广播。VP9 能够处理从 64x64 到 4x4 的不同块大小,以实现从开阔的蓝天到亲人脸部细节的高效重建。
VP9 编码和解码视频内容时使用不同大小的像素块。它通过一个复杂的算法系统地压缩原始数据,以便通过互联网流媒体进行广播。VP9 能够处理从 64x64 到 4x4 的不同块大小,以实现从开阔的蓝天到亲人脸部细节的高效重建。此外,VP9 包含 10 种不同的预测模型,以高效地在解码过程中重建图像,并具有一系列增强流媒体视频内容可靠性的特性。这对于高清视频至关重要。一个全高清图像大约有 200 万像素,可能包含数百万种颜色,构成单个帧,而一部电影则由数十万帧组成。Google 已经宣布计划在 YouTube 上使用 VP9 进行 4K 内容的播放。Google Play 商店也可能在其流媒体视频服务中使用 VP9。
团队的第一个目标是定义测试案例。VP9 与各种类型的流媒体视频相关,但注意到,通常视频会议的帧与帧之间的变化比 YouTube 视频要小。决定从更简单的视频会议案例开始。计划是验证视频会议中的关键优化,然后将其测试应用于更复杂的视频使用情况。
团队包括一名首席工程师和一名架构师,使用 CPU 模拟器来识别现有代码中的热点。采用了迭代优化方法——使用内部工具和微架构知识识别可能的问题,编写并测量新解决方案的性能,并回到代码审查。特别是在 WebM/libvpx 优化过程中,遇到了大量前端相关问题,在下面进一步描述。这些问题容易发现和修复,可能会为应用程序提供显著的性能提升。
在 Silvermont 微架构上发现的一个性能问题是过度使用 pshufb 指令。根据优化手册,pshufb 需要 MSROM 的解码器辅助,并且有 5 周期的吞吐量和延迟。MSROM 查找会在前端造成延迟,并限制每个周期解码的指令数量。在许多情况下,MSROM 查找的惩罚可能是可以的(当后端无法以更高的速率消耗和执行 uops 时),但如果此类指令的数量很高,性能可能会受到影响,因为 IDQ 中没有 uops。
总体结果非常出色。团队在 64 位模式下提高了用户级性能高达 16%(每秒 6.2 帧),在 32 位模式下提高了约 12%(每秒 1.65 帧)。这次测试包括了对 32 位和 64 位 GCC 和 Intel® 编译器的评估,并得出结论,Intel 编译器为 Intel® Atom™ 处理器提供了最佳的优化。当将这种改进乘以数百万观众和数千个视频时,这是非常显著的。Google 的 WebM 团队也认为这种性能提升非常显著。Google 的工程经理 Frank Gilligan 对团队的成功做出了回应:“太棒了。看起来不错。迫不及待地想尝试一下。”针对未来的 Intel Atom 平台,代号为 Goldmont 和 Tremont,VP9 优化带来了额外的收益。