近期,ARM® 在 Computex 公布了全新 Mali-V500 视频 IP 解决方案,并且我们在该设备中引入了大量新技术。在此,我将就引入诸多技术特性中的一项展开讨论:ARM 帧缓冲压缩(AFBC)。
一部中价位 智能手机,如果没有内置摄像头、不具备 YouTube 即时访问、视频录制与播放功能,就会毫无疑问地被视为一个矛盾体。随着手机分辨率从 480p 增加到 1080p,平板电脑向 4k 及更高分辨率增长,工程师们正在竭力征服不断攀升的系统数据量,以满足消费者对用于各类设备的高品质图形和显示器的持续需求。与此同时,系统级芯片SoC (特别是用于移动设备的 SoC)受限于严苛的散热、功耗和面积限制,使得 OEM 和开发人员在试图满足此类客户需求时面临极为复杂的境况。 在数字视频中,我们将内容压缩 ,以便节约存储和 传输带宽。 从早期的 MPEG-1 开始,视频编解码器 就一直依赖短暂的数据冗余,通过已解码帧来预测当前帧。运动矢量 字段指出,相比前一帧,当前帧是如何移动的。从先前的已解码帧获取和过滤像素块的过程被称作运动补偿,这需要有大量的内存来存储参考帧。例如,存储四个 4K 分辨率的帧需要 48MB 内存,并且要将如此大的数据量存储在片上存储器中显然是不可行的,因此必须将参考帧存储在耗电的片外外部存储器(例如 LPDDR2 )中。 在视频编解码器中,读写此类参考帧需要占用极大的内存带宽,因此,高效的 压缩方案 有可能减少带宽并因此显著降低系统功率。
多年来,ARM 一直在数据压缩领域占据着行业领导地位。ASTC 就是一个例子,这是由我们开发并被公认为行业标准的压缩方法(这是一个用于图形的 有损纹理压缩 方法)。为解决上述视频难题,ARM 开发了 ARM 帧缓冲压缩 (AFBC) 格式,该格式能够提供快速、实时的无损压缩与解压缩,最大限度地减少 SoC 内不同 IP 块之间的数据传输量。这减少了整个系统的带宽,并将相应功耗降低至多达50% 。与众多其他压缩格式相比, AFBC 还有一个额外的好处:能够提供低至 4x4 像素块级别的随机访问。 视频编解码器通常定义为位精确。要符合标准,视频解码器必须生成与黄金参考解码器完全相同的解码帧序列(每一位都必须相同)。需要说明的是,由于它要用于控制误差传播,因此,看似如此过于精确还不能取悦挑剔的视频发烧友。运动补偿处理使用之前已解码的帧来预测当前帧。如果容许错误,例如,通过使用有损压缩来存储参考帧,这些错误实际上会留在系统中,并以不受控制的方式累积。出于这个原因,针对参考帧采用类似 AFBC 的无损压缩算法绝对是有必要的。 压缩算法还必须提供随机访问。鉴于运动矢量字段是任意的,因此,运动补偿处理必须能够访问任意位置的像素。标准无损压缩格式(如 PNG)不提供随机访问,因而对于参考帧压缩毫无用处。 AFBC 可跨 SoC 内几乎整个多媒体 IP 范围进行实施。支持 AFBC 的显示控制器或支持 AFBC 的GPU(如下一代 MaliTM GPU)可直接读取由支持 AFBC 的视频解码器(如 Mali-V500)产生的压缩帧。由于在整个处理链中,一直以压缩格式存储帧,因此,使用这种通用格式显然可以进一步节约带宽。
以下图表显示了解码 4K H.264 视频流时,AFBC 提供的视频解码器内存带宽的节约情况。蓝色曲线表示未使用 AFBC 时的带宽(仅供参考)。绿色曲线表示仅将 AFBC 用于内部参考帧压缩时 Mali-V500 的带宽,而红色曲线则表示再将 AFBC 压缩用于输出帧时的带宽(搭配启用 AFBC 的显示处理器)。
正如您看到的那样,带宽有了明显下降。与此相关的功耗节约完全取决于 SoC 的设计和使用的内存系统,但在移动系统中,带宽消耗的功率通常可达到 150mW 每 GB/s,因此,这项节约是很值得的。 毫无疑问,减少系统内存带宽只是 ARM 整体功耗节约策略的一个要素—我们还有许多其他或轻或重的工作,所有这些加起来就构成了我们的低功耗解决方案。但是,AFBC 的引入是降低 SoC 整体功耗的主要因素。
AFBC 现已对所有 Mali 视频引擎、未来的 Mali GPU 可用,且可作为显示处理器的可授权 IP解决方案。有关更多信息,请访问产品站点。