原文地址:Should Have Gone to Bandwidth Savers
原作者:jakublamik
打造高效和高性能的系统级芯片 (SoC) 正成为一项日益复杂的任务。对带宽密集型应用程序的需求日益增长,意味着系统组件需要在每一代应用程序中都提高效率,从而能应对这些应用程序引发的额外带宽消耗。而这体现在所有市场中:随着高端移动计算平台追求更出色的性能和更高的能效,面向主流市场的 SoC 仍然需要提供优质的功能集和性能密度,同时还要降低制造成本和缩短上市时间!
如果仔细观察用户与消费电子设备之间典型的交互,就会发现他们往往将重点放在文本、音频、照片、影像、动画和视频上,换言之就是多媒体体验。而重要的是,媒体密集型用例要求大量数据传输和更高级的用户体验,对系统带宽增长的要求也就更高。但是,带宽消耗越多,功耗也越高。
那么,是哪些具体的用例和功能要求正在推动带宽呈近乎指数级的增长呢?
·屏幕尺寸和分辨率在具有各种外形和性能的情况下已迅速增大。采用高清屏幕分辨率的移动设备的数量正在迅猛增长,平板电脑目前通常采用的是2.5K 屏幕。这一趋势没有任何减缓的迹象。
·媒体系统每秒显示的帧数必须要提高。同时,显示屏刷新率也要提供更加夺目的用户体验。实际上,60FPS 成为必备选择已有一段时间,一些高端用例现在已上升到 120FPS。
·计算每一场景所需的计算吞吐量已经增加。高端游戏和用例要求通过更加复杂的计算来呈现每一个最终像素。在每像素级别上提高运算吞吐量意味着需要传输和处理更多的数据。
总而言之,要提供的像素在增加,速度也要加快,同时每一帧上计算各个像素所需的工作量也在加重。所有这一切不仅要求更高的计算性能,还需要更多的带宽。除非 SoC 设计师在设计媒体系统时事先考虑到这一点,否则在提供高质量用户体验时将消耗更多的功率。
那么,我们该如何应对呢?典型的媒体系统由多个 IP 组件组成,其中的每一个组件在功能和特征上都略有不同。媒体处理流水线的各级由单独的块负责,它们(如 Sean 的博客中所述)都具有输入、中间数据和输出,所有这些都包括在总功耗预算内。
更进一步来看,典型的媒体流水线包含 GPU、视频处理器和显示处理器之间的多种交互,需要在这些组件之间传递一定量的数据。乐观地说,这意味着有大量的机会可以优化这些交互,提供能够通过高效协作节约带宽的组件。正因如此,ARM 开发了一系列带宽减少技术:在移动设备的功率容量和热能限制中容纳更为复杂的媒体。
我们首先来看看已运用在 Mali GPU 上的优化如何能运用到其他媒体组件上。全新用例要求使用创新的方法。如今,我们越来越多地要求以无线方式将平板电脑、移动电话和其他消费电子设备上的音频和视频呈现到数字电视等大屏幕设备上。发送端和接收端设备都必须利用 H.264 等算法压缩视频流。在典型的用例中,显示处理器并不是将帧缓冲写入屏幕内存中,而是将它发送到视频解码器,然后再将压缩后的帧通过 WiFi 网络发送出去。
运动搜索消除 (Motion Search Elimination) 将 Mali GPU 在去年引入的事务消除 (Transaction Elimination) 理念(如下文所述)扩展到显示和视频处理器。它们各自维护每个图块的签名。当显示处理器写出帧缓冲时,视频处理器可以在签名吻合时免除对图块的运动搜索。为什么这如此重要呢?因为运动估算是视频流水线中代价昂贵的一部分,跳过对选定图块的搜索将缩短 Wi-Fi 传输的延迟,减少带宽消耗,从而降低整个 SoC 的功耗。
Transaction Elimination智能消除 (TE) 是 ARM Mali Midgard GPU 架构的一项关键带宽节约功能,可以在写出帧缓冲时大幅节省能耗。简而言之,在启用 TE 时,GPU 将对比当前帧缓冲与之前渲染的一帧,仅对改动过的特定部分进行局部更新。
这样,每帧需要传输到外部内存的的数据量就会大大减少。TE 可以供各应用程序用于 GPU 支持的所有帧缓冲格式,无论帧缓冲的精度要求为何。即便是第一人称射击类游戏和视频流效率也很高。由于在用户界面和休闲游戏等许多其他常用图形应用程序中,两个连续帧之间的帧缓冲大部分保持不变,因此 TE 带来的帧缓冲带宽节约最高可达 99%。
那么,我们还可以做些什么来最大程度地减少通过 GPU 处理的数据量?智能合成是另一种可以在帧合成期间读入纹理时减少带宽的技术,正如 Plout 在其博文中所述,它在上文介绍的事务消除基础上开发而来。
通过在最终帧合成之前对帧进行分析,智能合成判断是否能合理地仅渲染帧的给定部分,或者重新利用前面渲染和合成的部分。如果能够重新利用帧的一部分,那么它就不必从内存中重新读取或者重新进行合成,因而能更多地节省计算资源。
现在,我们来更仔细地看看 GPU、视频处理器和显示处理器之间的交互。其中一个带宽最密集的用例是视频后处理。在许多用例中,GPU 在将视频流用作 2D 或 3D 场景中的纹理时需要读取视频并应用特效。在这样的情形中,ARM 帧缓冲压缩 (AFBC) 这种具备精细随机访问能力的无损图像压缩协议和格式能够最大程度地减少 Soc 内 IP 块之间的数据传输量,将系统级别的总体带宽和功耗最多降低 50%。
在 SoC 中使用 AFBC 时,视频处理器只需以压缩格式写出视频流,GPU 则读取它们并且仅在片上内存中解压缩它们。完全相同的优化将应用到用于屏幕的输出缓冲。无论是 GPU 还是视频处理器生成最终的帧缓冲,它们都会被压缩,因此显示处理器将以 AFBC 格式读取它们并且仅在移到显示内存中时进行解压缩。Ola 发表的博文 Mali-V500 视频处理器:利用 AFBC 降低内存带宽,对 AFBC 进行了更为深入的介绍。
那么 GPU 与高端游戏或用户界面等图形应用程序之间的交互怎样?这是对纹理资源要求的内存量进行优化的绝佳机会。自适应可扩展纹理压缩 (ASTC) 技术由 ARM 和 AMD 联合开发并赠予 Khronos,已作为 Open GL® 和 OpenGL® ES 图形 API 的官方扩展加以采用。在缩减内存带宽、降低能耗,同时又维持图像质量上,ASTC 跨出了一大步。
ASTC 规格包含两个配置:LDR 和 Full,这两者都在 Mali-T62X GPU 及以上版本中受到支持,详细的介绍可参见 Tom Olson 和 Stacy Smith 发表的博文。
最后,我们来探索优化系统带宽的另一大机会。现代游戏运用了各种后处理特效,纹理常常与帧缓冲相结合。这意味着内存要通过外部总线写出并多次读回,从而获得高级图形效果。这种延迟渲染需要传输大量外部数据,消耗许多功率。但 Mali GPU 是基于图块的渲染架构,利用片上内存逐个图块执行片段着色,只有在一个图块的所有内容都完成处理后该图块的数据才会写回到外部内存中。
这是运用延迟渲染的绝佳机会,不必通过外部总线写出数据。ARM 推出了两种先进的 OpenGL ES 扩展,开发人员能够在移动设备的带宽和功耗预算内获得游戏机级别的特效:着色器帧缓冲提取和着色器像素本地存储。如需这些扩展的详细信息,请参见 Jan-Harald 的博文。
利用本文中所说的技术,我们已经用尽缩小系统带宽的所有机会了吗?好消息是 … 当然没有用尽!在 ARM,我们痴迷于积极寻找新的优化领域,让移动媒体系统变得更加节能。在每一代产品中,我们的芯片合作伙伴、OEM 和最终消费者都在帮助我们发现提出各种挑战和要求的新用例。这样,新的机会将不断涌现,为我们的创新引擎注入动力,让我们设计出更有成效的 SoC。
对上面概述的技术有疑问吗?在下面的评论框中告诉我们吧。