挑战SLI——ATi CrossFire技术揭秘

特别策划

虽然ATi和NVIDIA这两家的RADEON X800和GeForce 6800的性能已经让人另眼相看,不过它们在一些高要求的游戏中的表现仍不能让人完全满意。在一些游戏中的最高级设置完全是为下一代显卡所准备的。除了期待下一代的显卡,目前有办法解决这个问题吗?现在,显卡设计者们找到了一个令人满意的解决方案:将两块显卡装到一个系统中,这样可以获得惊人的图形渲染性能!这就是Multi-GPU(多显示核心)技术。

早在1997年,3dfx就推出了称为SLI的Multi-GPU技术,随后ATi也推出了类似的Rage Fury MAXX解决方案,无奈受高成本的限制,产品并没有真正出现在主流消费类显卡市场上。这种情况在2004年有所改变——NVIDIA在2004年6月29日这天重新推出SLI技术!不过,重获新生的SLI技术已经和当初的Voodoo SLI技术有着天渊之别,它所带来的强劲性能也很快俘获超级游戏玩家的心。

当然,ATi并没有向NVIDIA臣服,现在它也推出了自家的Multi-GPU技术——CrossFire!那CrossFire(中文译为交叉火力)技术到底有什么过人之处,可以挑战NVIDIA的SLI呢?

1.独特的双卡连接方式

与NVIDIA的SLI不同的是,Crossfire采用专用主卡搭配普通显卡的方式、似乎并不需要在RADEON X800系列图形处理器内部整合任何特殊的逻辑装置就可以实现对multi-GPU模式的支持。在支持CrossFire的显卡中,所有主显卡(X850 CrossFire或X800 CrossFire)均拥有一个HD-DMS和DVI界面,用户可以使用一个特制的Dongle连接主卡的HD-DMS和从卡的DVI接口然后再通过Dongle附带的DVI接口(可转接D-Sub)输出到显示器上。事实上,Radeon X800/X850显卡会将渲染所得的相关数据从DVI输出接口发送到CrossFire主卡的输入端口上,然后通过一个特殊的合成引擎将两款显卡渲染的图形数据混合起来实现最终成像效果。而SLI系统需要两块完全一样支持SLI的显卡,信号通过集成电路连接器传送。

CrossFire技术最大一个亮点就是支持不同类型的ATi显卡同时工作。这一点显得很重要,因为各型号的ATi RADEON X800显卡和X850显卡,特别是X800在市场上是随处都可以购得。但CrossFire技术也存在一个缺点,那就是必须配备一款CrossFire版本显卡来作为主卡,才能组建成CrossFire合成引擎。原则上,ATi推荐组建CrossFire显卡系统时采用相应的RADEON X800或X850显卡。当然,RADEON X850 CrossFire与RADEON X800显卡或RADEON X800 CrossFire与RADEON X850显卡都应该能很好地工作,这正是ATi的解决方案非常明显的优势。而SLI系统的组成必须有两块完全一样的显卡,而且必须是相同的显卡BIOS,两块显卡的时序同步是非常重要的问题。

需要说明的是,当使用不同级别的显卡来组建CrossFire系统时,拥有更多像素管线GPU中多出的部分像素管线将被停用(比如,当我们采用一块RADEON X850 PRO和一块RADEON X850 CrossFire显卡来组建CrossFire系统时,催化剂驱动程序会从两张显卡的BIOS中读取Board ID信息,若不相同,驱动程序发出指令关闭RADEON X850 CrossFire显卡多出的4条像素管线而以12条像素管线来进行渲染)。一般情况下,两款显卡仍将继续以它们各自的默认频率工作,但如果两款显卡的频率相差太悬殊,CrossFire系统还会自动降低高频率显卡的工作频率以便让两卡的渲染工作同步。

23-e1-1.jpg
ATi的交叉火力系统

ATi CrossFire系统的基石就是可以将两块显卡渲染数据合成最终输出图像的合成引擎,它可以改进图像显示质量或提升渲染速度。ATi的合成引擎属于更具专业性的解决方案,它拥有更高的弹性及附加功能。合成引擎由三款芯片组成:一款是第三方厂商提供的FPGA(Field-Programmable Gate Array,可编程阵列)芯片、TMDS传输器和RAMDAC芯片,其中由FPGA芯片负责完成将两款GPU渲染图像合并的工作。目前ATi并没有透露到底采用什么类型的FPGA芯片。

23-e1-2.jpg
主卡上所整合的CrossFire合成引擎负责两块显卡的图形整理、合并工作

不过,CrossFire最值得注意的地方是它所提供的渲染模式!

2.四种渲染模式

相对于SLI所支持的两种渲染模式,ATi CrossFire可以提供多达4种渲染模式:SuperTiling、Scissor、Alternate Frame Rendering及Super AA四种模式,而SLI只有两种。

(1)SuperTiling(瓦片分离)渲染模式

23-e1-3.jpg
瓦片分离渲染模式

在瓦片分离渲染模式中,在渲染引擎大量处理信息之前CrossFire系统会把图像分割成32×32像素方块,类似于国际象棋棋盘方格,其中一半由主CrossFire显卡负责运算渲染,另一半由其它GPU负责处理,然后根据实际的显示结果,让双显卡同时逐格渲染处理。这样系统可以更有效的配平两块显卡的工作任务。

ATi宣称这种类似棋盘的渲染方式可以提供更好的负载平衡,因为这种渲染模式不需要对驱动程序智能化设计来提供平衡负载管理,而且瓦片的尺寸相当小,这样可以将复杂的图形部分平均分配给不同显卡来处理。这就好比我们吃东西,小块的食物都容易下咽、消化!

SuperTiling模式是性能最高的模式,不过它仅仅支持Direct3D应用程序,而且要求两块显卡拥有相同的frame buffers才可以体验这种效果。

(2)Scissor(页框分离)渲染模式

此渲染模式就是将图像一分为二分配给两块显卡/GPU来处理,而传统multi-GPU技术一般也是采用这种渲染方式。

不过,传统multi-GPU技术多半采用任务均分的方式,两块显卡完成的渲染任务量完全均等,如 XGI Volari Duo系列产品也是采用类似的设计,但这种任务均等分派的设计并不科学:首先,主显卡或主GPU必须承担额外的控制、任务分配、画面合成和输出等工作,用于渲染的运算资源较少,但它必须完成与从卡一样多的任务。结果自然是,从卡先将任务完成,把结果数据回传后便处于等待状态,直到主卡将本批次任务处理完毕之后才可以继续进行任务指派;第二,同一幅画面不同区域的复杂度并不相同,所需的运算量也不一样,比如在常见的赛车游戏中,画面上半部分几乎是静态的,而下半部分就非常复杂,需要处理的数据量很大,如果单纯将画面作均等的划分这时计算两块显卡的工作量反而成了最大的难题。

23-e1-4.jpg
页框分离渲染模式

现在,这个缺点在CrossFire系统中已经得到解决:CrossFire系统会自动对两块显卡的资源进行分配,将图像按一定比例(如6:4或7:3)将工作量分配给两款显卡来渲染,这样可以平衡一下两块显卡的渲染负担。当然,针对每个程序,工作量分配的百分比是不一样,而且这一切都要在计算之前事先确定,在运算时不会发生动态调整。

Scissor模式支持Direct3D和OpenGL应用程序,而根据ATi的资料来看,这种渲染模式对整个系统的几何渲染性能并不会有任何帮助。

(3)Alternate Frame Rendering(交替帧渲染,AFR)模式

此种渲染模式最早出现在ATi Fury MAXX显卡上。在AFR模式中,CrossFire系统的主卡负责3D场景的初始渲染、任务分配和显示输出等工作,从卡接收来自主卡的命令后,立即按照要求自动执行相应的图形渲染工作,而在渲染过程中两块显卡负责的任务是完全对等的:主卡渲染第一帧,从卡则渲染第二帧,接着主卡渲染第三帧,从卡渲染第四帧……依此类推,最后处理的数据由CrossFire引擎合成输出。

当游戏中交替帧渲染不能够启用的时候,垂直分开一帧画面将它交给两块显卡处理是替代方式。不过单帧的渲染被分配到两块显卡上进行并不是很容易的事情,几何渲染管线并不容易将工作分离,尤其是当场景中的所有物体会影响到渲染管线的数据时。从ATi的资料来看,在处理scaling时使用AFR模式相当有效,同时AFR模式可以支持OpenGL和Direct3D应用程序。

针对以上三种渲染模式,催化剂驱动程序的AI功能启用后会自动根据应用程序选择相应的渲染模式。如果催化剂驱动AI(启用时)能识别出应用程序,那么将会启用AFR模式。当催化剂驱动AI不能识别应用程序,或AI被停用时,CrossFire系统默认渲染模式一般是SuperTiling模式或Scissor模式:其中显卡拥有16条像素渲染管线、运行Direct3D应用程序时将采用SuperTiling模式渲染,而其它的硬件配置(比如GPU拥有12条或8条像素管线)则采用Scissor模式渲染。

23-e1-5.jpg
交替帧渲染,AFR模式

(4)Super AA(超级全屏抗锯齿)模式

23-e1-6.jpg
超级全屏抗锯齿模式

CrossFire技术除了在提升显示系统3D性能外,也在图像显示质量方式上费了一番心思——引入了Super AA(超级全屏抗锯齿)模式。

在Super AA渲染模式中,两块RADEON显卡在工作时独立使用不同的FSAA(全屏抗锯齿)采样来对图像进行处理器,然后由CrossFire引擎将两款显卡所处理的数据合并来输出高画质的图像。需要说明的是,在这种模式下,对整个图像的渲染工作不是一分为二来分配给两款显卡,而是每一块显卡都要完整渲染一次,即每块显卡在这里的工作量都和单显卡渲染模式时是一样的,只不过最后合成引擎会把两块显卡分别渲染的画面合成起来作为最终的显示画面。在这种模式下,由于图形的每个像素点都被渲染二次,因此可以大大提升图像显示画质:比如一块显卡用6×FSAA采样,另一块用4×FSAA采样,那么输出图像的总采样率将是10×。从资料来看,Super AA将提供8×、10×、12×甚至14×FSAA的采样,可以大大改进图像质量。

实际上在切换到8×或12× FSAA的时候,每片显卡固定工作在4×或6×FASS的状态下,而10×和14×模式是混合模式,由于驱动自动分配渲染:这两种模式下ATi使用多重采样(简称MSAA)及超级采样(简称SSAA)来提供更好的图像质量,这也是ATi首次在RADEON X800系列产品上使用超级采样抗锯齿技术。实际上Super AA的10×采样也就是8×MSAA+2×SSAA的模式,14×采样则是12×MSAA+2×SSAA组合。之所以采用这样的组合方式,是因为SSAA支持半像素定位,这样可以更好地提高渲染的精度,保证画面的质量。从长远来看,ATi所提供的14×FSAA模式是双显卡处理领域的一大迈进,显然CrossFire带给我们的不光有速度上的提升。

3.支持5屏输出功能

3与NVIDIA的SLI策略不同的是,CrossFire平台更注重多显示器输出:Crossfire系统最多可支持5个显示屏输出。

这可不是在开玩笑,如果使用CrossFire平台的话,两块显卡每一个都可以支持双头显示输出,加上ATi主板上集成的显示芯片,就组成5屏显示输出系统,而且拥有不同模式,的确非常惊人。而SLI在多屏输出方面则存在缺陷:如果启用了NVIDIA的SLI,你的第二显示器就无法工作,用户只能在SLI、多屏显示方面作出取舍!

23-e1-7.jpg
CrossFire系统最多可支持5个显示屏输出

4.结语

像SLI技术一样,Crossfire技术也需要专用主板来支持。目前ATi已经发布了相对应的芯片组:包括AMD及Intel平台的Radeon Xpress 200 CrossFire Edition。ATi宣称,目前主板跟部分CrossFire主卡已经开放给合作厂商生产,预计2005年7月将会有产品推出,但根据ATi合作伙伴表示,目前ATi开放的CrossFire主卡是X800等级,至于X850系列,则仍需要由ATi原厂提供。

很明显的,CrossFire架构是冲着NVIDIA的SLI平台而来的,同时也针对SLI的一些不便之处进行了改进,如不需要桥接器,并且最重要的是CrossFire不使用同型号的显卡也可运行。面对ATi的反击,NVIDIA表示:“目前ATi的CrossFire技术还没有正式可以用来跟我们SLI对照的量产产品,所以我们不便于表示意见,但会持续观察……”

这样的回答,实在不像以往充满自信的NVIDIA,看来ATi这次发布的新技术,着实给NVIDIA带来了不少的压力!