1998年初,3Dfx推出了它们的第二代3D图形卡产品Voodoo 2。Voodoo 2具有90Mps的像素填充率,支持Z-Buffering、Anti-Aliasing、单周期双纹理等当时最先进的3D特性,其性能大幅超越其上一代产品,更是将其他对手更是远远甩在了身后。
1.好事成双——从Voodoo到NV40
第1页:好事成双——从Voodoo到NV40
1998年初,3Dfx推出了它们的第二代3D图形卡产品Voodoo 2。Voodoo 2具有90Mps的像素填充率,支持Z-Buffering、Anti-Aliasing、单周期双纹理等当时最先进的3D特性,其性能大幅超越其上一代产品,更是将其他对手更是远远甩在了身后。但是最令人兴奋的不仅仅是Voodoo 2的性能,而是Voodoo所特有的,具有划时代意义的“SLI交错互连技术”。Voodoo 2的这项技术,可以让两块Voodoo 2显卡并行运行,连接起来进行并行运作,就能够获得近乎翻倍的3D效能。
3Dfx后来被NVIDIA所收购,相关技术也归它所有,但NVIDIA并没有考虑将这项技术付诸实用,因为在过去几年间,它在图形市场叱咤风云遥遥领先,从TNT2时代一直延续到GeForce 4时代,NVIDIA都是事实上的领先者。但ATi的强劲崛起开始对NVIDIA形成强大的挑战,在开放授权、允许三方厂商生产ATi产品之后,ATi占据的市场份额越来越大,直至现在与NVIDIA平分天下,而这两家图形厂商在产品方面的争夺也是此起彼伏,异常激烈,但水平都在伯仲之间,谁也无法声称有绝对的性能优势。在这样的背景下,引入并行技术就不难理解了—NVIDIA渴望被称为拥有最强产品的图形霸主。
SLI的全称是Scalable Link Interface,它是通过一种特殊的接口连接方式,在一块支持双PCI Express X 16的主板上,同时使用两块同型号的PCIE显卡。以增强NVIDIA在工作站产品中的竞争力在未来的产品线中,SLI将成为新的至高点。那么,SLI是一项什么样的技术?它与过去的多GPU技术有何差异?SLI能否在市场上获得佳绩?要回答这些问题,我们有必要对SLI进行全面的分析介绍,同时也将回顾多GPU技术的发展历史。
我们知道,CPU的并行运作是通过指令并行执行获得的,但对显卡来说情况有所区别。显卡最终生成的是所渲染的3D画面,这项工作包含大量的指令,而如何将工作均等分配就成为问题,3Dfx选择了按画面帧线进行渲染的方式。SLI技术将一幅渲染的画面分为一条条扫描帧线(Scanline),若Voodoo 2采用双显卡运行模式,那么就由一个显卡负责渲染画面的奇数帧线部分,另一块显卡渲染偶数帧线,然后将同时渲染完毕的帧线进行合并后写入到帧缓冲中,接下来显示器就可以显示出一个完整的渲染画面。不难看出,SLI技术让渲染工作被平均分担,每块显卡只需要完成1/2的工作量。理论上说,渲染效率自然也可以提高1倍,这就是双显卡并行大幅提升效能的奥秘所在。SLI在技术上极为成功,而发烧友们对Voodoo 2也抱有莫大的热情。在当时,你如果希望在1024×768的“高分辨率”下流畅地玩3D游戏,唯一的解决方案就是使用两块Voodoo 2显卡并让它们工作在SLI模式下。
2.NVIDIA SLI交错互连技术解析
第2页:NVIDIA SLI交错互连技术解析
在Voodoo 2之后的Voodoo 3,3Dfx没有效仿这个SLI双显卡技术,但在Voodoo 4/5/6时代,3Dfx重新恢复了SLI,但应用的形式已有所区别。Voodoo 2倡导双显卡并行运作,两块显卡插在PCI槽里再用专用的线缆连接起来,但这并非必需的,单个Voodoo 2显卡也可以独自工作,只是速度较慢而已。2000年春,3Dfx推出VSA100图形芯片,当时NVIDIA已经压过3Dfx成为领先者,为了夺回自己的领导地位,3Dfx让SLI技术重装上阵。VSA100可支持单芯片、双芯片和四芯片并行运作,单芯片版本就是Voodoo 4,双芯片显卡为Voodoo 5 5500,而四芯片显卡则是著名的Voodoo 5 6000。此时,SLI技术演变为单显卡多图形芯片的形式,不需占用两个插槽,但内部的工作机制并没有发生多大的变化,依然是通过划分渲染帧的方式各自执行,然后在帧缓冲中统一合成。出于众所周知的原因,这些显卡都没获得广泛认可,3Dfx也从衰落走向死亡。2001年初,NVIDIA收购了3Dfx,SLI技术也随之成为了历史,尽管NVIDIA掌握了3Dfx的所有技术,但它并没有将之发扬光大,而是继续按照自己的道路走下去,收购3Dfx的目的也许只是消灭一个竞争对手而已。
在这之后,我们看到了NVIDIA顺利一统江湖,接着就是ATi逐渐发起挑战,GeForce和Radeon是人们最常挂在嘴边的名词,至于3Dfx和它的SLI已经逐渐被人淡忘了,即便偶尔有人谈起,也多是说那是一个策略糟糕的企业和一项昂贵不切实际的技术。在显卡的历史中,除了Voodoo 2之外没有哪一项多显卡、多芯片技术曾获得成功,虽然ATi尝试过,新生的XGI也勇闯该领域,然而事实证明这个方案并不受用户们的欢迎。不过,谁也没有想到NVIDIA重新拾起3Dfx的SLI技术。2004年6月29日,NVIDIA大张旗鼓发布了“SLI Multi-GPU技术”,并将该技术引入最新发布的GeForce 6800和Quadro FX4000系列显卡上。沿用“SLI”这个名称或多或少让人联想到3Dfx,NVIDIA想要的也许正是这个效果,它更希望被用户认为是3Dfx技术的一脉相承。但如果我们深入分析,便会发现它与3Dfx的SLI技术没有多少相同的地方,基本上就是一套NVIDIA新搞出来的多显卡方案。
SLI技术是实现了两款显卡同时出现在一块主板上,构成一套SLI双显卡并行系统,这一技术的应用更大程度的满足了用户对高品质画质的需求。
这一接口出现在显卡的端部,卡上的接口类似于PCI Express ×1,通过这一接口实现两块NV显卡的连接,实现SLI的并行运作。同时NV官方表示,选择PCB卡连接可充分保证信号通讯的质量与速度,显卡间的数据传输采用数字形式进行,这样可有效防止因信号干扰而导致画面不同步的弊端。Voodoo 2所采用的技术是模拟传输方式,数字信号先被转换为模拟信号后才进行合成,因为干扰的影响,在某些时候会出现数据不匹配的问题,导致合成后的画面往往难以同步或出现其他问题,这也是Voodoo 2 SLI技术的主要缺陷。而改用数字信号传输,显然就不存在这个问题,显卡处理完的帧数据被集合起来合成,然后才转为模拟信号输出,从而确保画面的完整性。
NVIDIA将SLI控制功能直接的集成到在显卡的GPU芯片内部,从上图的芯片的逻辑图中可以很容易的看到,在显示核心的左侧左侧偏下的位置有一个很小的区域专门负责SLI运作,该区域所掌管的职能包括两块显卡的连接、通讯,渲染任务的指派以及画面的合成等等。由于指令的传输工作相对简单,在芯片的FCBGA封装中也只有极少几根针脚用于SLI模式。但由于别的GPU并没有集成这一控制逻辑,所以别的显卡并不支持这一技术,但由于特殊的原理的所以SLI技术并不支持AGP总线,SLI技术只可运行在PCI-E模式下,对主板提出了新的要求。同时NVIDIA官方还透露,SLI最多可以支持高达8块的GPU并行运行,但是对于目前的市场来看,8块GPU的并行运作并没有什么实际的意义。
对于SLI技术,两款显卡并不是对等的,在运行工用中,一块显卡做为主卡,另一款做为副卡,其中副卡只是接收来自主卡的任务进行相关处理,然后将结果传关回主卡,同时不要声名的是在传送数据的两个途径,两块显卡都是通过PCI-E接口与主板相连接,而这两块显卡之间还要有一个通讯的PCB卡(即SLI桥接卡),其中,连接两块显卡的PCB卡用于任务指派指令以及后期处理结果的传送,这部分的数据量不会很大,所以PCB卡所使用的接口和自身结构都较为简单。但是,显卡在渲染过程中必须调用大量的数据,这部分数据只能通过PCI-E接口从系统中获取。换言之,在SLI系统中有两部分不同的数据流向,一部分为主卡将任务指令通过PCB连接卡传送给副卡,副卡将渲染完毕的结果数据返回给主卡合成,另一部分为处理过程中从PCI-E接口得到的原始数据。
SLI技术采用帧线方式划分任务,想把一幅画完全的渲染出来,一副画面将被渲被分成奇数渲染帧和偶数渲染帧两个部分,然后交给两块显卡分别渲染,完毕之后再统一合成。虽然NVIDIA继续沿用了“Scalable Link Interface”的名号,但在工作的方式上已有了本质性的改变。在NVIDIA的SLI系统中,一幅渲染的画面被划分为上下两个部分,主显卡完成上部分画面,副显卡则完成下半部分的画面,然后副显卡将渲染完毕的画面传输给主显卡,主显卡再将它与自己渲染的上半部分画面合成为一幅完整的画面。这样,一个完整的SLI并行渲染任务就完成了。同理相推,如果有四块显卡并行运作,那么画面会被分成四个部分分别渲染,4个GPU并行也是如此。
奇偶帧数分配也有一些弊端,首先,主显卡或是主GPU必须承担额外的控制、任务分配、画面合成及输出等工作,用于渲染的运算资源较少,但它必须完成与副卡一样多的任务,显然的副卡的工作效率要比主卡快,副卡率先的将自己的任务处理完,把结果数据回传后便处于等待状态,直到主卡将它的任务处理完毕之后才可以继续进行任务入出指派,同时,同一幅画不同区域的复杂并不相同,所需的运算也不一样,如果使用Voodoo 2的帧线划分方式那也没什么,但是NVIDIA的SLI采用划分上下画面的方式,如果在一些常见的游戏中画面上半部分几乎是静态的,而下半部分就非常复杂,需要处理的数据量很大,如果单纯将画面作均等的划分也不科学。
为此NVIDIA另外开发了一套动态负载平衡技术来解决这一情况,画面的上下划分并不是按照固定的一半一半方式,而是根据画面的复杂情况进行划分,这样的分配并不是为了保证工作量在两块卡间的绝对平均分配,而是要将两块显卡完成渲染任务的时间保持一致,以此达到效能的最优化。同时考虑到主显卡需要承担额外的控制任务,同于实际渲染运算的资源较少,动态负载平衡算法就可以根据这一前提,将任务量适合多给副卡,让其分担来减少主卡的负担,这样动态负载平衡算法并不是集成在GPU芯片内部,而是在驱动程序中整合,NVIDIA可以方便对其进行修改,以达到更好的性能。

网友评论