挑战CPU的VPU──3Dlabs P10

硬件周刊

历时两年的开发历程,3Dlabs的新产品──P10终于推出了。不远的将来,不管是3Dlabs品牌的专业图形卡,还是创新(Creative)的主流游戏用显卡,都将构建在P10系列VPU(视觉处理器)的基础上。
  当年3Dlabs率先推出的3D显示硬件,成为了PC行业3D技术的里程牌,从3Dlabs的多边形处理架构到近年来风行全球的曲面模型,五彩缤纷的3D世界最终迎来了3D功能的集大成者──P10。TSMC(台积电)的0.15微米工艺、860脚的HSBGA封装,集成了7600万CMOS管,256位的DDR显示内存(最多可以使用256MB),完全支持DirectX 8.1/9的Vertex Shader(顶点着色引擎)和Pixel Shader(像素着色引擎)……难以尽数的3D能力都只不过是完全可编程的浮点/整数内核的外在表现罢了,所以3Dlabs给P10及后续产品取了个VPU的新名称。

VPU惊世骇俗

现在P10完全抛弃了NVIDIA和ATi仍在坚持使用的硬件连线的3D核心,转而完全采用可编程的运算单元构成,一方面大大节省了硅片面积(即使如此7600万个晶体管还是创造了非内存IC的复杂程度的新纪录),另一方面由超过200组SIMD(单指令多数据)处理单元构成的P10核心,具有1T OPs/s(每秒1万亿次操作)和170G Flops的浮点速度。怎样自由地使用这些运算能力就全看程序员的意愿了──所以我们再讨论每秒多少Pixel或者Texel这样的“传统”数据变得毫无意义。但从这里就能看出3Dlabs的实力:P10同CPU竞争,替代Intel的SSE/SSE2、AMD的3D Now/专业3D Now和PowerPC的AltiVec这样一类CPU中的SIMD单元,无疑是胜券在握。为了显露P10的划时代意义,3Dlabs不屑于使用部分可编程的3D芯片的GPU名称,创造出了VPU这个新名词来同CPU对比。
  利用VPU的可编程性和灵活性,P10可以硬件完成传统3D芯片无法加速的各种特殊算法,就是代替CPU甚至“渲染工厂”的角色,甚至可以快速完成CG电影中的那些复杂的动画──这同NVIDIA未来的硬件Renderman(属于Scanliner扫描线渲染算法)功能类似,P10甚至有可能实现另外两种基本渲染算法:Raytrace(光线跟踪)和Radiosity(辐射度),这正是3D行业20年来的终极目标,同时也将改变人们对3D硬件的传统看法。(图1)

图1
图1

完全可编程

为了清楚地比较现行最强大的GeForce 4与P10之间的差距,我们来从Vertex Shader和Pixel Shader这些传统的观念来讨论。
  P10的Vertex部分具有16个并行的32位浮点处理器,GeForce 4的双Vertex Shader各由4个浮点处理器组成,因此P10相当于具有四Vertex Shader,而且运用起来更有组合上的灵活性,速度就不只是GeForce 4的两倍了。而且P10符合Vertex Shader 2.0的标准,也就是支持DirectX 9。
  P10的Pixel部分是完全可编程的,比ATi、NVIDIA用的1.3、1.4版Pixel Shader先进得多,分为坐标生成和色彩变换两部分:坐标生成使用了64个浮点处理器,而色彩变换使用了64个整数处理器。P10符合DirectX 9标准但并不是完全支持,因为DirectX 9要求色彩变换也全部使用浮点处理器。从P10的Pixel和Vertex部分的对比我们可以发现,在3D处理流程中还是渲染部分比重较大,这同3Dlabs的面向CG的定位是分不开的。
  还有P10完全可编程的反锯齿方式也是非常引人注目:OpenGL绘图专用的Line AA自然是少不了,DirectX 9的各种多重取样模式也是完全支持,最高可以达到8×模式(64点取样),比现在NVIDIA和ATI使用的最高4×模式(16点取样)高了不止一个等级。

多线程3D

为了让P10强大的内核更充分地被使用,3Dlabs在主流3D芯片中首创了多线程命令处理器,用来处理大量来自CPU的指令。
  为什么是多线程呢?因为未来的3D显示子系统需要同时处理大量的工作,例如在微软的Longhorn计划中。命令处理器将这些工作排序,然后分配给超并行结构的P10内核同时处理。既然P10内部的多个并行的子VPU可以通过多线程命令处理器,被应用程序看作一个虚拟的VPU使用,多片P10自然也可以通过这种接口连接起来,作为一体使用从而成倍提高性能。同时多个VPU或子VPU也可以被拆分开来各自独立使用,从而驱动多个显示设备。

虚拟显存和DAC

表面上看P10唯一的与众不同之处就是256位的显存接口,实际上有了BGA封装的内存,在显示卡上布通256位的数据显示完全可行的,只不过现在3Dlabs率先这样做罢了。256位的接口带宽是128位的两倍,20GB/s的数据传输率是再自然不过的了,只要使用目前最好的650MHz DDR显存就能轻易超过这个标准。
  为了让P10的内存效率进一步提高,3Dlabs还引入了虚拟内存的概念。早在Permedia 3的设计中,就已经有了数据分级存储的概念,那时是将显存和系统内存整合起来按照优先顺序使用;现在P10是将片上缓存、显存、系统内存甚至硬盘上的虚拟内存有机地结合起来,成为完整的虚拟显存。如果把芯片上缓存看作CPU的L1 Cache,显示内存就成了L2 Cache。L2 Cache的重要性有目共睹,将显示数据存在系统内存中,大容量、高速度的显存就成了超高速缓存,足以缓冲难以想象的主内存容量。

OpenGL 2.0和DirectX 9

3Dlabs现在已经提供了P10的工程样品,同时也能够提供原型的OpenGL 2.0和DirectX 9驱动。3Dlabs驱动的稳定性、兼容性有口皆碑,唯一的缺点是在游戏用的DirectX驱动上更新比较慢,还往往需要修补在OpenGL硬件上运行DirectX出现的bug。
  3Dlabs这两年一直在着手制定OpenGL 2.0的全新标准,主要的目的是希望重整OpenGL 1.x的混乱局面──太多的扩展指令导致复杂性高和兼容性差,因此OpenGL 2.0使用可编程特性来代替复杂的扩展集。对于专业应用来说,速度、质量、稳定和功能是同等重要,缺一不可的。P10就是OpenGL 2.0标准的第一次硬件实现。

结语

基于P10的显示卡将在今年第三季度上市,VPU将被用于一系列的产品上:在工作站市场,将首先推出人们负担得起的高性能OpenGL绘图卡,包括128MB DDR的Oxygen2 7600零售价为899美元,64MB DDR的Oxygen2 5400零售价为599美元;对游戏发烧友,将于圣诞节前上市领先业界的3D产品;对于绘图和视频编辑用户,将提供充足的Photoshop和Premiere硬件加速。
  未来的P10究竟能做些什么,我们现在讨论还为时尚早,有些应用一定要等到软硬件全部齐备时才会出现。但是如果创新能够推出价格合理、驱动常常更新的主流产品,这无疑是更加“长寿”、也更加值得投资3D的产品。
  今年的圣诞消费季节,将是NV30、R300、Parhelia 512和P10的战场。