万卷书   首页 > 电脑书籍 > 硬件文章 > 伟大的Kyro II显示芯片的魔力
 
 毫无疑问,内存带宽是目前的主流图形芯片所面临的最主要的问题。当前这一代产品都在担心海量的信息蜂拥而至,把传统的显卡内存总线迅速堵死。ATI 首先提出了一个解决方案,HyperZ 技术,现已证明,该项技术可以使图形系统的性能提升 40% 以上。虽然说,一开始 HyperZ 只应用在高端 Radeon DDR 显卡上,但用不了多久,各个价位的后续 Radeon 产品必将全部使用 HyperZ 技术。 最近,NVIDIA 在节省带宽方面也有类似的行动,在他们最新的 GeForce3 显卡中,提出了他们的 Lightspeed 内存体系,我们想,很快就能在他们的低端产品中看到这项技术。在几个月前,3dfx 旗下的 Gigapixel 承诺,他们有项技术可以大幅度减少内存带宽的需求。现在,NIVDIA 收购了 3dfx,该技术必然也随之落进了 NVIDIA 的手掌心。

  这些节省带宽的技术,从本质上来说,就是尽量优化,避免内存总线成为最大的瓶颈。就连可以把速度提升 40% 的 HyperZ 技术也不足以令显示卡的实际填充率达到或者接近其理论上的最大填充率(也就是只考虑图形芯片的处理能力的填充率)。很明显,未来的产品要么优化工作进一步改善,要么内存技术的发展使速度更快,这样才能保持显卡性能的持续发展。

  与此同时,用传统的渲染方法,节省带宽的技术的实现又受到了限制。常常连非常轻微的内存带宽消耗的减少,对工程师在设计和实现时都是异常困难的。基于这个原因,显示卡业界有很多人预测,改变目前这种传统的渲染方法对节省内存带宽来说是极其重要的。

  从传统渲染方法跳出来的排头兵就是 Imagination Technology 公司。几年前,Imagination 就预见了主流显示卡都将面临内存带宽的问题。经过持续不断的探索,现在,STMicroelectronics 发布了 Imagination 基于分片渲染技术的最新的杀手锏 Kyro II,以相对较低的价格提供高端显卡的性能。让我们来看一看采用分片渲染技术的最新一代产品是否能够超过传统渲染技术的顶级平台。

  直接渲染模式的现实问题

  Imagination Technology 致力于分片渲染市场已经有些时日了。在卖出的以 PowerVR 命名的芯片中,由 Imagination 制作的第一块真正的分片渲染系统是 PowerVR Series 2 芯片。The PowerVR Series 2 最重大的意义在于它摈弃了已经在 3D 图形领域存在了四十年以上的传统的直接渲染模式。

  在直接渲染模式中,显示卡按照程序设定逐个渲染每一个多边形,而不需要知道它到底位于场景中的什么位置。按照相对应的四组数据(X,Y,Z 和颜色值),场景中的每一个多边形都将被渲染、画上阴影、贴图。然后,用一个 Z-缓冲来核对这个多边形相对场景中其它多边形的位置。如果当前这个多边形的 Z-值比存储在 Z-缓冲中的其它的多边形的 Z-值大,那么就把这个多边形存储到帧缓冲中去。如果 Z-缓冲判定,这个多边形在其他多边形的背后,这个已经完全渲染和贴图的多边形就是不可见的而扔在一边。

  由于对 Z-缓冲的核查发生在像素生成阴影和贴图之后,许多在最终场景中永不可见的像素也得到了完全渲染。这种方法中,对那些永不可见的、永远不用的像素的处理,称为透支。这在直接渲染模式中,几乎在每个场景中都会出现。在目前的许多 3D 游戏中,透支比例都在 2 到 4 之间,平均约为 3。也就是说,每渲染三个像素,实际上只有一个有用,另外两个都是白白浪费了的。

  现在大家就清楚了,这种渲染方法效率极为低下。既然大量的渲染后的像素都要扔掉,按照直接渲染模式工作的显示卡的很大一部分工作都是徒劳无益的。导致的结果,是显示卡不得不忍受内存带宽限制之苦,实际上却有大量永远不用的垃圾数据盘踞在内存总线上。

分片渲染:PowerVR 的解决方案   PowerVR 的方法,正如我们前面所提到的,是和传统的 3D 场景构造中的直接渲染方法有着显著差别的分片渲染法。分片渲染法试图消除 3D 流水线上任何多余的处理工作,从而大幅度减少目前正困扰显示卡工业和他们的直接渲染法的内存带宽限制的问题。

  直接渲染法在处理一个多边形时不知道这个多边形在场景中的位置,而分片渲染法首先就把多边形分组归类,放到显示列表中。这些显示列表把场景切分成许多小块,也就是我们说的分片,每一块都独立进行渲染。

  进行小块渲染的第一个好处是所有的操作都可以在芯片内部完成,不需要访问外部内存。这样,在进行 Z-运算时就不需要通过内存总线访问 Z-缓冲。自然就消除了直接渲染法中经常出现的读写 Z-缓冲的开销。

  分小片而不是整个场景一起渲染,还一个好处是那些不可见的像素可以在渲染之前就抛开。既然每一小片的显示列表中都包含了其中所有多边形的相关信息,隐藏面的消除工作就完全可以在纹理贴图之前进行。这样,在内存总线上传播的信息量几可以大幅度减少,因为那些不可见的表面的纹理不需要进行处理了。芯片上的片缓冲实际上就扮演了每一个独立片的帧缓冲的角色。这样,把各片混合合成时就不另外需要读写内存的开销。

  既然分片渲染法有这么多好处,有一点就很奇怪了,为什么这么多图形处理器都不利用这种方法呢?很重要的原因,是生产一个采用分片渲染法的产品有大量的工作要做。比起直接渲染法,设计分片渲染器是一种完全不同的芯片设计思路。即使是经验丰富的 Imagination 在他们早期的分片渲染芯片中还是遇到了很多难题。幸运的是,历经一些错误和考验之后,他们拿出了采用分片渲染的 Kyro II 芯片。

  似乎显卡界的三大巨头(3dfx,NVIDIA,ATI)也有他们自己的隐藏面消除法,但不是采用分片渲染技术。这些围绕 Z-缓冲作文章的优化方法,是否能够减轻带宽负担还是一个未知数。如果你问 NVIDIA 或者 ATI,他们会声称,优化是一种可行的办法。另一方面,Imagination 说,比起分片渲染体系所节省的带宽,优化是没有出路的。

  尽管分片渲染系统拥有诸多优势,这种方法最近还是受到了抨击。其中最引人注目的,是 Epic Games 的首席程序设计师 Tim Sweeney 最近提到,在一个分片渲染系统中要实现 T&L 子系统几乎是不可能的。

  我们就这个问题咨询了 Kyro II 芯片的生产者 STMicroelectroncis,他们明确的答复,分片渲染系统不可能支持 T&L 的说明是不完全准确的。另外,STMicroelectronics 的员工也私下说过,他们和 Tim 会过面,暗示他们已经用一个带 T&L 的分片渲染系统的范例证明了 Tim 的说法是不正确的。但是,要记住,Kyro II 仍然缺乏对 T&L 的支持。

WanJuanShu