手机内存带宽和分辨率

纠结这个问题比较久,目前这个结果还有待确定,先记录下自己的目前的记录,如果有问题,欢迎跟我反馈。

由于手机soc上分布着几个关键元件,CPU,GPU等,CPU和GPU共享内存带宽,而屏幕显示分辨率和内存带宽又有一定的关系,

内存带宽:频率 * 位宽 / 8 * 通道数 * 倍增系数 ,如小米6的LPDDR4X,如下图

1866 * 2 * 64 / 8 * 2 = 60 GB/S

分辨率,一定分辨率下至少需要多少内存带宽呢?以1920*1080为例子

1920 * 1080 (两百万像素)* 4(字节,R8G8B8A8) * 2(framebuffer) * 60(帧)  = 0.99 GB/S,这里有很大疑惑,网传100万像素需要4GB/S的内存带宽,但是我这里算的并不是,如果*8,那就有可能了,难道是单位不统一?

小米6的内存是LPDDR4X 1866MHZ,32bit 双通道

所以内存带宽是,1866 * 32 / 8 * 2 * 2 = 29.8 GB/s 

https://www.nxp.com/docs/en/application-note/AN3606.pdf

这里也有参考文档

今天看到另外一个计算overdraw和内存带宽分辨率的文章感觉很好,转一下

https://zhuanlan.zhihu.com/p/31146776

以手机游戏的最低分辨率1280x720计算,一个屏幕缓冲区加上深度缓冲检测(为了遮挡不能关),每个像素需要6byte,然后以60帧/s的帧率要求,乘起来的结果是:

绘制一屏幕数据(1 overdraw),需要的带宽至少是331776000bytes,也就是0.316Gbytes。

不过,由于透明物体需要和原屏幕像素进行混合,所以还需要回读一次屏幕缓冲区的数据,会增加接近一倍,0.527Gbytes。

如果我们游戏的特效峰值overdraw达到了10(测一下的话,会发现全屏特效特别容易到达高值,乱做单特效都能直接到5),也就是10个屏幕的话,那就是5.27Gbytes。

而在一些老机器上,诸如三星S3,总内存带宽其实也就8G而已……

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章