A Tale of Screen RAM

Thu 15 December 2011

考完托福,从 @kDolphin 那里看到了小米提出的新概念----屏幕 RAM。作为一个对嵌入式一知半解,也玩过单片机的化学计算机好人修电脑系学生,我对此概念十分不解----莫非来美国大农村呆了一年就这么赶不上科技的潮流了?

于是,根据小米等各种论坛的线索,我大致归纳了"屏幕RAM"的几个特点:

  • 这是一种缓存机制,使得 GPU 只需要运算 delta 值。在没有此机制的屏幕上绘图要求 GPU 不断的工作,产生图形
  • 这种机制可以得到性能的提升,原因是 GPU 不需要 concentrace on 不断的渲染相同的图像
  • 这种机制可以节约电量
  • 这种机制主要应用在高端手机上
  • 这种机制的成本是 80 元人民币,约合 $15

暂且抛开这种机制在一边,我们看一看 LCD 的显示原理。

不管是 TTF 还是较早的 STN 屏幕,其都是由一个一个的亚像素(彩色显示器)/栅格(灰度显示器)组成的。给液晶分子加上一个电压,液晶分子将改变其光透射特性,这可能 result in 颜色的改变(对于彩色显示器),或者透光度的改变(对于黑白显示器)。外加电场消失时,透光度恢复。不管是什么技术,他们的基本原理都是这样的。

如果有一些嵌入式开发经验,可能将 LCD 看作一组寄存器的概念更能接受----实际上,我们无法对 LCD 直接进行操作,我们操作的对象是 LCD 控制器,控制器控制各个像素/栅格的状态,这也是为了节省宝贵的 IO 端口。可以将 LCD 作为一组寄存器操作的 LCD 面板叫做 "智能 LCD 面板"。这种面板自带的控制器中含有 FrameBuffer (帧缓存) 甚至渲染引擎。我们在嵌入式开发中常用的 1602 屏幕就自带了显示引擎、字库以及帧缓存。而有一些其他的屏幕,例如 S3C2440 开发板中常用的某些 LCD 屏幕就没有自己的帧缓存、显示引擎,这种屏幕叫做"哑面板"。哑面板需要外置的 LCD 控制器,而智能面板不需要额外的 LCD 控制器。

帧缓存这个名词听起来有一点点绕口,其实它更通俗的名字叫做"显存"。显示引擎预先渲染一些内容,并将其保存在显存中,如果显存太小,则显示控制器将不断的运行,有可能导致的是因为运算能力较差产生 lag。另一方面,带有 LCD 控制器的面板可以接受高级指令,也不需要外界(这里的系统定义为 LCD)的额外控制(除了时钟源)就可以保持显示内容。显然,这种 LCD 因为内置了显示引擎而造成成本的增加。然而,哑面板虽然成本低,但需要外界不断的刷新内容而保持屏幕的正常显示,这无疑将增加外界的计算压力。

这里,作为读者,你可能会自然的想到,这与上面小米的 assertion match exactly. 那么,小米说的是实话么?其实,不尽然。

我们都知道,现代计算机中的一个重要组成部分叫做显示适配器,俗称显卡。手机等嵌入式设备也不例外,但是由于其空间受限制,一般更倾向于 SoC 设计。内置 LCD 控制器的智能 LCD 似乎很适合,但是我们知道,2008年之后的手机市场已经开始很荒谬的开始了性能竞争----例如我现在使用的 iPhone 4S 的主频是 800MHz----作为对比,2009 年我购买的 HTC Dream 的主频是 384MHz,2007 年我购买的 Motorola Rokr E6 则是 313MHz 的主频。当然,上面是废话。LCD 控制器的内置"显卡"毫无疑问相比于英伟达等专业厂商的显卡是很弱的。尽管哑面板没有帧缓存,要求不断的刷新屏幕,并使用了更多的总线带宽(显示器的带宽总是很大的),但是----无论如何,这些工作都是需要做的,不管是液晶面板做了,还是面板外进行的。

小米手机的 GPU,根据公共可得的数据,是 Adreno 220。我查阅了此款 GPU 的资料,得知这是一款 SoC 的 GPU 方案,内置 SRAM FrameBuffer。当然了,苹果的 A5 处理器一样是 SoC 设计,也内置了 FrameBuffer。另一方面,根据魅族公布的资料,魅族 MX 的 GPU 也是 SoC 实现的 Cortex-A9 + Mali-400MP GPU。这款片上同样集成了一定数量的内存作为帧缓存使用,根据 ARM 的介绍,其最大支持的帧缓存大小为单帧4096x4096。

即使说到这里,可能还是有一些读者不理解他们有什么太大的差距,在这里,我直接给出结论以及推导结论的 reasoning 过程:

Whereas the goal of displaying graphics should be archived, there must be some particular chipset computing for the LCD display panel

The computation can either be on the LCD controller with a smart panel or on the host with a dump panel;

Both phones have a built-in Graphical Processing Unit which fills the framebuffer, embedded in the chipset;

Thus, both phone functions in the exactly the same way with different chipsets.

由于填充 framebuffer 的过程必须由内置的 GPU 完成,则显示器将显示来自 framebuffer 的内容。既然两种手机都显示来自 framebuffer 的内容,那么不管他们选择什么样的液晶面板,都会达到一样的效果,那就是帧缓存在液晶屏幕之外。

作为初步结论,我认为,屏幕RAM应该是指的液晶面板内的 FrameBuffer。在当前的运行模式下,其存在的意义不大,在硬件抽象层之上,操作系统是不需要关心这种实现的。尽管哑面板有着种种缺点,但因为目前的设计,实际上智能面板的"智能部分"已经由更加智能的智能手机片内的 GPU 所完成。因此,小米抛出的"帧缓存"是比较没有讨论意义的。

从另一个方面上看,小米的争论其实也是无效的争论。倘若小米的论据和结论都是有效的,这对于一个正常的企业是不可忍受的----种种迹象表明魅族并不是一个打一枪就走人的公司,其更多的是很负责任的公司,从各种细节就可以看出。我只购买过一个魅族 M6 音乐播放器,非常耐用,而且服务不错。80 元的成本,相比 3000 元的定价来说,如果不是利润已经被压缩到不可以接受的地步,正常的企业是不会为此而生产有严重缺陷的产品的。

Comments