“屏幕 RAM”的传说

jopen 12年前
     <div id="news_body">     <p style="text-align:center;"><a><img title="lcd" alt="“屏幕 RAM”的传说" src="https://simg.open-open.com/show/1cdca63563e69ff025593272a9e1ddf2.jpg" width="550" height="342" /></a></p>     <p>        最近,我从推特上看到了小米提出的新概念——<strong>屏幕 RAM</strong>。对此概念有些疑惑。于是,根据各种论坛的线索,我大致归纳了“屏幕 RAM”的几个特点:</p>     <ul>      <li>这是一种缓存机制,使得 GPU 只需要运算 delta 值。在没有此机制的屏幕上绘图要求 GPU 不断的工作,产生图形</li>      <li>这种机制可以得到性能的提升,原因是 GPU 不需要 concentrace on 不断的渲染相同的图像</li>      <li>这种机制可以节约电量</li>      <li>这种机制主要应用在高端手机上</li>      <li>这种机制的成本是 80 元人民币,约合 $15</li>     </ul>     <p>        暂且抛开这种机制在一边,我们先看一看 LCD 的显示原理。</p>     <p>        不管是 TTF 还是较早的 STN 屏幕,其都是由一个一个的亚像素(彩色显示器)/栅格(灰度显示器)组成的。给液晶分子加上一个电压,液晶分子将改变其光透射特性,这就激发颜色的改变 (对于彩色显示器),或者透光度的改变(对于黑白显示器)。外加电场消失时,透光度恢复。不管是什么技术,它们的基本原理大抵如此。</p>     <p style="text-align:center;"><a><img title="console-27" alt="“屏幕 RAM”的传说" src="https://simg.open-open.com/show/86778ac165ba49e47b8e8c1fcbd662f3.gif" width="505" height="451" /></a></p>     <p>        如果有一些嵌入式开发经验,可能将 LCD 看作一组寄存器的概念更能接受————实际上,我们无法对 LCD 直接进行操作,我们操作的对象是 LCD 控制器,控制器控制各个像素/栅格的状态,这也是为了节省宝贵的 IO 端口。可以将 LCD 作为一组寄存器操作的 LCD 面板叫做 “智能 LCD 面板“。这种面板自带的控制器中含有 <strong>FrameBuffer (帧缓存)</strong> 甚至渲染引擎。我们在嵌入式开发中常用的 1602 屏幕就自带了显示引擎、字库以及帧缓存。而有一些其他的屏幕,例如 S3C2440 开发板中常用的某些 LCD 屏幕就没有自己的帧缓存、显示引擎,这种屏幕叫做”哑面板“。哑面板需要外置的 LCD 控制器,而智能面板不需要额外的 LCD 控制器。</p>     <p>        帧缓存这个名词听起来有一点点绕口,其实它更通俗的名字叫做”显存“。显示引擎预先渲染一些内容,并将其保存在显存中,如果显存太小,则显示控 制器将不断的运行,有可能导致的是因为运算能力较差造成延迟和掉帧的现象。另一方面,带有 LCD 控制器的面板可以接受高级指令,也不需要外界(这里的系统定义为 LCD)的额外控制就可以保持显示内容。显然,这种 LCD 因为内置了显示引擎而造成成本的增加。然而,哑面板虽然成本低,但需要外界不断的刷新内容而保持屏幕的正常显示,这无疑将增加外界的计算压力。</p>     <p>        这里,我们也许会觉得,这与上面提出的机制的特点相当吻合。确实如此吗?不尽然。</p>     <p>        现代计算机中的一个重要组成部分叫做显示适配器,俗称显卡。手机等嵌入式设备也不例外,但是由于其空间受限制,一般更倾向于 SoC 设计(片上系统,俗称“手机主芯片”,主流是 ARM 体系)。内置 LCD 控制器的智能 LCD 似乎很适合,但是我们知道,2008年之后的手机市场已经开始了性能竞赛——例如我现在使用的 iPhone 4S 的主频是 800MHz——作为对比,2009 年我购买的 HTC Dream 的主频是 384MHz,2007 年我购买的 Motorola Rokr E6 则是 313MHz 的主频。</p>     <p>        与此同时,图形处理器,作为片内的一部分,它的进步也是随着中央处理器的进步而进步的。LCD 控制器的内置”显卡“毫无疑问相比于英伟达等专业厂商的显卡是很弱的。尽管哑面板没有帧缓存,要求不断的刷新屏幕,并使用了更多的总线带宽(显示器的带宽 总是很大的),但是——无论如何,这些工作都是需要做的,不管是液晶面板做了,还是面板外进行的。</p>     <p>        <a href="/misc/goto?guid=4958319572078056399" target="_blank">小米手机</a>的 GPU,是 Adreno 220。查阅了此款 GPU 的资料,得知这是 SoC 内置 SRAM FrameBuffer 的解决方案。当然了,苹果的 A5 处理器一样是这种架构的 SoC ,也内置了 FrameBuffer。另一方面,根据魅族公布的资料,<a href="/misc/goto?guid=4958319573017099973" target="_blank">魅族 MX </a>的 GPU 也是 SoC 实现的 Cortex-A9 + Mali-400MP GPU。这款片上同样集成了一定数量的内存作为帧缓存使用,根据 ARM 的介绍,其最大支持的帧缓存大小为单帧 4096×4096。</p>     <p>        即使说到这里,可能还是有一些读者不理解他们有什么太大的差距,在这里,我再说明一下它们之间的联系:</p>     <ul>      <li>为了让液晶面板现实出文字和图像,必须配合一块特殊的控制器;</li>      <li>控制器的位置可以放在多个地方;</li>      <li>对于很多智能手机而言,在 SoC 和显示面板上都具有控制器。</li>     </ul>     <p>        由于填充 Framebuffer 的过程必须由内置的 GPU 完成,则显示器将显示来自 Framebuffer 的内容。既然两种手机都显示来自 Framebuffer 的内容,那么不管他们选择什么样的液晶面板,都会达到一样的效果,那就是帧缓存在液晶屏幕之外。</p>     <p>        作为初步结论,我认为,”屏幕 RAM”应该是指的<strong>液晶面板内的帧缓存</strong>。在当前的运行模式下,其存在的意义 不大,在硬件抽象层之上,操作系统是不需要关心这种实现的。尽管哑面板有着种种缺点,但因为目前的设计,实际上智能面板的“智能部分”已经由更加智能的智 能手机片内的 GPU 所完成。因此,单独提出这个概念并没有太多技术上的说服力。”屏幕 RAM”就成为了一个营销概念。</p>     <div id="come_from">      来自:      <a id="link_source2" href="/misc/goto?guid=4958319573806133268" target="_blank">ifanr 爱范儿</a>     </div>     <p></p>    </div>