# “屏幕 RAM”的传说

- 作者：Difan Zhang
- 发布时间：2011-12-20 14:00
- 分类：产品、特稿
- 原文：https://www.ifanr.com/65002

[![](https://s3.ifanr.com/wp-content/uploads/2011/12/lcd.jpg "lcd")](https://s3.ifanr.com/wp-content/uploads/2011/12/lcd.jpg)

最近，我从推特上看到了小米提出的新概念——**屏幕 RAM**。对此概念有些疑惑。于是，根据各种论坛的线索，我大致归纳了“屏幕RAM”的几个特点：

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

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

不管是 TTF 还是较早的 STN 屏幕，其都是由一个一个的亚像素（彩色显示器）/栅格（灰度显示器）组成的。给液晶分子加上一个电压，液晶分子将改变其光透射特性，这就激发颜色的改变（对于彩色显示器），或者透光度的改变（对于黑白显示器）。外加电场消失时，透光度恢复。不管是什么技术，它们的基本原理大抵如此。

[![](https://s3.ifanr.com/wp-content/uploads/2011/12/console-271.gif "console-27")](https://s3.ifanr.com/wp-content/uploads/2011/12/console-271.gif)

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

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

这里，我们也许会觉得，这与上面提出的机制的特点相当吻合。确实如此吗？不尽然。

现代计算机中的一个重要组成部分叫做显示适配器，俗称显卡。手机等嵌入式设备也不例外，但是由于其空间受限制，一般更倾向于 SoC 设计（片上系统，俗称“手机主芯片”，主流是 ARM 体系）。内置 LCD 控制器的智能 LCD 似乎很适合，但是我们知道，2008年之后的手机市场已经开始了性能竞赛——例如我现在使用的 iPhone 4S 的主频是 800MHz——作为对比，2009 年我购买的 HTC Dream 的主频是 384MHz，2007 年我购买的 Motorola Rokr E6 则是 313MHz 的主频。

与此同时，图形处理器，作为片内的一部分，它的进步也是随着中央处理器的进步而进步的。LCD 控制器的内置”显卡“毫无疑问相比于英伟达等专业厂商的显卡是很弱的。尽管哑面板没有帧缓存，要求不断的刷新屏幕，并使用了更多的总线带宽（显示器的带宽总是很大的），但是——无论如何，这些工作都是需要做的，不管是液晶面板做了，还是面板外进行的。

[小米手机](http://www.ifanr.com/tags/xiaomi)的 GPU，是 Adreno 220。查阅了此款 GPU 的资料，得知这是 SoC 内置 SRAM FrameBuffer 的解决方案。当然了，苹果的 A5 处理器一样是这种架构的 SoC ，也内置了 FrameBuffer。另一方面，根据魅族公布的资料，[魅族 MX ](http://www.ifanr.com/64702)的 GPU 也是 SoC 实现的 Cortex-A9 + Mali-400MP GPU。这款片上同样集成了一定数量的内存作为帧缓存使用，根据 ARM 的介绍，其最大支持的帧缓存大小为单帧 4096×4096。

即使说到这里，可能还是有一些读者不理解他们有什么太大的差距，在这里，我再说明一下它们之间的联系：

- 为了让液晶面板现实出文字和图像，必须配合一块特殊的控制器；
- 控制器的位置可以放在多个地方；
- 对于很多智能手机而言，在 SoC 和显示面板上都具有控制器。

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

作为初步结论，我认为，”屏幕 RAM”应该是指的**液晶面板内的帧缓存**。在当前的运行模式下，其存在的意义不大，在硬件抽象层之上，操作系统是不需要关心这种实现的。尽管哑面板有着种种缺点，但因为目前的设计，实际上智能面板的“智能部分”已经由更加智能的智能手机片内的 GPU 所完成。因此，单独提出这个概念并没有太多技术上的说服力。”屏幕 RAM”就成为了一个营销概念。
