搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > GPUer > Arm帧缓存压缩技术(AFBC)

Arm帧缓存压缩技术(AFBC)

GPUer 2018-06-30

在移动互联大行其道,而电池技术尚未有革命性突破的今天,使得功耗这个话题越来越重要,任何移动设备厂商都把她作为一个重要的技术指标。所谓“平生不见陈近南,便称英雄也枉然”,那么今天我们来聊一聊对功耗有重大意义的Arm帧缓存压缩技术(Arm Frame Buffer Compression)在图形处理器(GPU)中的应用。


为什么要有AFBC


首先我们来做一道简单的数学题:有个小朋友正在手机上看世界杯,假设手机分辨率是1080p,视频也是1080p,帧率是60 (即每秒钟有60帧),那么他手机上的GPU需要向显示屏输出多少颜色数据呢?

  • 颜色缓存(Color buffer):1920 * 1080 * 4 * 60 = 474 MB/S

乘以4是因为一般每一个显示屏上的像素点有RGBA 4个通道。是不是很吓人,这么大的数据量是不是会消耗掉很多电呢?要是能把这个数据量减少一半,是不是就不需要带着充电宝了呢?


什么是AFBC

        

简单来说,AFBC是Arm提出的一种数据压缩技术:

·       无损压缩

·       支持随机访问(最小4x4块级)

·       几乎零面积成本

·       支持RGB, YUV格式压缩,YUV格式压缩率约50%

·       对应用程序透明


那么AFBC到底用在哪呢?下面我来介绍一下AFBC的常见应用场景,看完之后你就会了解到你手机里的AFBC(如果GPU是Mali的话)是怎么工作的了。 

                           

我们来简单的分析一下数据流向:

1.     你正在看世界杯,世界杯的视频数据在VP处理完毕后,会进行AFBC压缩,然后通过数据总线传给GPU。

2.     或者你正在玩王者荣耀,王者荣耀并不会做AFBC压缩,因为她根本不知道AFBC是何方神圣,但是GPU驱动会把相关的数据压缩成AFBC数据,然后在GPU内部进行处理。

3.     上述两步的数据到了GPU后,都变成了AFBC压缩的数据,经过GPU处理后,最后通过数据总线传给DP进行解压并显示。

聪明的小伙伴已经发现了,在我们刚开始算的那道数学题中,474 MB/S只是上图中3上的数据带宽,那么1和2中是不是也有类似的数据流量呢?答案是显而易见的。


使用了AFBC的结果


好了,下面来看一下用了AFBC后我们内存带宽的变化(引用arm developer网站一张图)。

·       蓝色曲线:没有使用AFBC。

·       绿色曲线:内部数据使用了AFBC (降低~40%)。

·       红色曲线:输出以及内部数据使用了AFBC(降低~70%)。

 

从图中可以看出,使用了AFBC之后,内存带宽大大降低了,但是内存带宽降低了到底能省多少电呢?这个取决于你手机系统的设计,没有统一的数学公式,但是一般来讲,1 GB/S的内存带宽大约耗电为150mW,所以我们来算一下那位看世界杯的小朋友使用AFBC后能省多少电:

474* 2 (VP->GPU, GPU->DP) * 70% / 1024 * 150 mW = 97 mW

省了不少了吧?事实上能省的电比这多得多,因为系统中还有很多数据也是会用到AFBC的。


AFBC的不足


·       AFBC并不是固定压缩率的算法,所以在内存分配的大小上并不能省,反而会略有增加。

·       如果应用程序需要频繁的用CPU去读AFBC压缩的数据,那么就需要不停的把数据解压缩,这样带来了额外的开销。

·       如果在某些内存使用量很少的应用程序中使用AFBC,那么压缩解压缩带来的开销将大于省下的内存带宽,得不偿失。


结束语


扫地僧云:“本寺七十二绝技,每一项功夫都能伤人要害、取人性命,凌厉狠辣,大干天和,是以每一项绝技,均须有相应的慈悲佛法为之化解”。通过Arm工程师们的佛法,我相信AFBC必将获得更广泛的应用。


好了,今天就到这里,下次再见!


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《Arm帧缓存压缩技术(AFBC)》的版权归原作者「GPUer」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读