AGP PCIE

AGP PCIE为什幺需要AGP? 刚开始的时候,AGP的高频宽被用来将3D物体的纹理数据传送给3D加速卡 。一些3D加速卡仅仅是把AGP当作更快的PCI汇流排来使用,另外一些3D加速晶片则用到了“AGP纹理”,也就是说把大纹理储存在系统主存中,需要时直接从那里而不是本地显存里调用 。当然,这在今天仍然是AGP的用途之一,但是对AGP4X的需求则是来自3D渲染过程的另一个环节——複杂3D物体的三角形数据 。在一个3D场景进行转换和光照处理之前,场景中所包含的物体应当被确定,物体的细节越清晰,需要传输的三维像素就越多 。比如NVidia的GeForce,作为第一个集成了转换与光照引擎的3D加速晶片,能够处理的三角形数量是惊人的,但是在这一切开始之前,所需要的数据必须被传送给它,毫无疑问,这就只有通过AGP来进行 。评测AGP 这个事实在对AGP进行测试时同样需要考虑到 。几年以前的AGP测试仅仅是通过显示需要大量纹理的3D场景,试图用大量的纹理数据流来使AGP接口达到饱和,这样的测试几乎没有显示出AGP1X和2X之间到底有什幺区别,它们当然同样也不能体现出AGP4X带来的性能提升 。这就是为什幺我们需要用另外的方法来使AGP接口饱和 。目前测试AGP性能的最好方法无疑是通过显示包含大量极其複杂的3D物体的场景,来让AGP传送极其大量的三角形数据 。在后面你们将看到测试结果 。无论如何,现在的3D游戏所用到的多边形还远没有达到AGP4X的极限,所以我们不得不再次等待“将来的话题” 。眼下真正用到极其複杂的3D物体的软体主要是专业的OpenGL软体,所以用它们来做测试应该是再合适不过的了 。有关AGP的其他方面 在以前的文章里面,我曾经提到100MHz的记忆体汇流排是AGP和其他一些记忆体相关的系统所必需的 。在今天,这样的需求有增无减,只有当系统有了足够的记忆体频宽AGP的超高频宽才会得到充分利用 。记忆体永远是要被许多系统设备同时共享的:CPU、PCI汇流排、DMA设备,还有AGP 。在大多数情况下,记忆体是AGP设备的数据来源,所以如果AGP用到了它的全部频宽,记忆体就至少应当能够提供同样高的频宽 。这样的话,相应于AGP4X的1066MB/s频宽,记忆体就至少要是PC133的才行:64位的数据宽度和133MHz的工作频率提供的频宽恰恰是1066MB/s 。但是AGP不可能独占记忆体频宽,它必须和其他设备共享,于是只有当系统使用了RDRAM或DDR-SDRAM时AGP4X才能完全发挥 。Intel的820晶片组支持的单条PC800 RDRAM通道提供了1.6GB/s的频宽,相当于PC200 DDR-SDRAM,PC266 DDR-SDRAM则提供了2.1GB/s的频宽,而Intel 840晶片组上的双PC800 RDRAM通道最终将提供3.2GB/s的频宽 。当软体开始利用AGP4X时,上述平台的表现将会优于目前的PC100或PC133平台 。快写——GeForce独一无二的特性 NVidia的GeForce256 3D图形加速晶片的特性之一就是它对“快写”模式的独一无二的支持 。这个概念意味着直接从CPU到图形晶片之间的数据传输,显然与“AGP纹理”之类的概念无关 。运用极其複杂的3D物体的3D软体需要CPU把极其大量的三角形数据传送给图形晶片,这里“快写”模式的运用就避免了数据从CPU到记忆体再从记忆体到图形晶片这样一个缓慢曲折的过程 。“快写”的概念就是把CPU和图形晶片直接联繫起来 。关于“快写”的更多细节请看NVidia的白皮书 。目前这项技术只有在Intel的820和840晶片组上才能实现,其他的支持AGP4X的晶片组比如VIA的Apollo Pro 133和Apollo KX133没有得到GeForce驱动的支持 。在下面的章节里,你们将会发现这其实是一件好事,因为支持“快写”的驱动似乎还存在一些问题,而这些问题导致了820和840系统性能的明显下降 。AGP和Windows NT 在描述了AGP硬体方面的一些特性之后,我们还应当明白AGP同样需要软体的支持 。正如前面已经提到过的,AGP为图形晶片提供了快速访问主记忆体的通道以满足各种需要,AGP纹理即是其中之一 。对此作业系统必须加以支持并且应当能够在适当的时候把记忆体资源分配给显示驱动调用 。图形地址重映射表(GART—— graphics address remapping table)就是这些记忆体资源的清单而GART驱动就是负责这一切的软体 。今天,所有的AGP显示卡都已经在针对Windows9x的驱动中包含了Intel平台上的名为“vgart.vxd”GART驱动,而其他的晶片组厂商就不得不为相应的主机板提供他们自己的GART驱动软体 。比如Athlon系统,在没有安装驱动时就根本认不出AGP显示卡,只有安装了相应的驱动,对于AMD750晶片组是“amdmp.sys”,VIA Apollo KX-133则是“viagart.vxd”,才能正常地工作 。至于微软的Windows NT作业系统则根本没有打算提供AGP支持 。在迄今为止所有的NT补丁包里面都没有包含GART驱动,以至于图形晶片厂商不得不独立提供NT下的AGP支持,这种支持也许会包含在显示卡的NT驱动里面,也许不会,你只有通过一些特殊的侦测软体或者在NT下进行测试才能判断出来 。目前我只对NVidia的晶片进行了NT下的测试,发现TNT、TNT2和GeForce都具有AGP支持,但仅仅是在Intel平台上 。基于其他晶片组的平台只能通过所谓的“PCI66”模式获得一些补偿,这种模式提供了略低于AGP1X的频宽 。目前最新的但不是正式的例外只有VIA的Athlon晶片组KX-133,即使在NT下它也能使GeForce256晶片运行AGP4X 。这一点希望能够在即将发布的Windows2000中得到纠正 。AGP标準分为AGP1.0(AGP 1X和AGP 2X),AGP2.0(AGP 4X),AGP3.0(AGP 8X) 。1996年7月AGP 1.0 图形标準问世,分为1X和2X两种模式,数据传输频宽分别达到了266MB/s和533MB/s 。这种图形接口规範是在66MHz PCI2.1规範基础上经过扩充和加强而形成的,其工作频率为66MHz,工作电压为3.3v,在一段时间内基本满足了显示设备与系统交换数据的需要 。这种规範中的AGP频宽很小,现在已经被淘汰了,只有在前几年的老主机板上还见得到 。近几年显示晶片的发展实在是太快了,图形卡单位时间内所能处理的数据呈几何级数成倍增长,AGP 1.0 图形标準越来越难以满足技术的进步了,由此AGP 2.0便应运而生了 。1998年5月份,AGP 2.0 规範正式发布,工作频率依然是66MHz,但工作电压降低到了1.5v,并且增加了4x模式,这样它的数据传输频宽达到了1066MB/sec,数据传输能力大大地增强了 。AGP Pro接口与AGP 2.0同时推出,这是一种为了满足显示设备功耗日益加大的现实而研发的图形接口标準,套用该技术的图形接口主要的特点是比AGP 4x略长一些,其加长部分可容纳更多的电源引脚,使得这种接口可以驱动功耗更大(25-110w)或者处理能力更强大的AGP显示卡 。这种标準其实是专为高端图形工作站而设计的,完全兼容AGP 4x规範,使得AGP 4x的显示卡也可以插在这种插槽中正常使用 。AGP Pro在原有AGP插槽的两侧进行延伸,提供额外的电能 。它是用来增强,而不是取代现有AGP插槽的功能 。根据所能提供能量的不同,可以把AGP Pro细分为AGP Pro110和AGP Pro50 。在某些高档台式机主机板上也能见到AGP Pro插槽 。2000年8月,Intel推出AGP3.0规範,工作电压降到0.8V,并增加了8X模式,这样它的数据传输频宽达到了2133MB/sec,数据传输能力相对于AGP 4X成倍增长,能较好的满足当前显示设备的频宽需求 。Accelerated Graphics Port的缩写,即“加速图形连线埠”,是英特尔开发的新一代局部图形汇流排技术 。AGP技术的两个核心内容是:一、使用PC的主记忆体作为显存的扩展延伸,这样就大大增加了显存的潜在容量;二、使用更高的汇流排频率66MHz、133HZ甚至266MHz,极大地提高数据传输率 。AGP汇流排是一种专用的显示汇流排,并且将显示卡从POI:上独立出去,使得PCI音效卡、SCSI设备、网路设备、I/S设备等的工作效率随之得到提高 。从AGP中受益最大的是以3D游戏为主的一些3D程式 。其发展已经经历了AGP 1×,AGP 2×,AGP 4×,AGP 8×几个阶段 。PCI-Express是最新的汇流排和接口标準,它原来的名称为“3GIO”,是由英特尔提出的,很明显英特尔的意思是它代表着下一代I/O接口标準 。交由PCI-SIG(PCI特殊兴趣组织)认证发布后才改名为“PCI-Express” 。这个新标準将全面取代现行的PCI和AGP,最终实现汇流排标準的统一 。它的主要优势就是数据传输速率高,目前最高可达到10GB/s以上,而且还有相当大的发展潜力 。PCI Express也有多种规格,从PCI Express 1X到PCI Express 16X,能满足现在和将来一定时间内出现的低速设备和高速设备的需求 。能支持PCI Express的主要是英特尔的i915和i925系列晶片组 。当然要实现全面取代PCI和AGP也需要一个相当长的过程,就象当初PCI取代ISA一样,都会有个过渡的过程 。PCI Express(以下简称PCI-E)採用了目前业内流行的点对点串列连线,比起PCI以及更早期的计算机汇流排的共享并行架构,每个设备都有自己的专用连线,不需要向整个汇流排请求频宽,而且可以把数据传输率提高到一个很高的频率,达到PCI所不能提供的高频宽 。相对于传统PCI汇流排在单一时间周期内只能实现单向传输,PCI-E的双单工连线能提供更高的传输速率和质量,它们之间的差异跟半双工和全双工类似 。PCI-E的接口根据汇流排位宽不同而有所差异,包括X1、X4、X8以及X16,而X2模式将用于内部接口而非插槽模式 。PCI-E规格从1条通道连线到32条通道连线,有非常强的伸缩性,以满足不同系统设备对数据传输频宽不同的需求 。此外,较短的PCI-E卡可以插入较长的PCI-E插槽中使用,PCI-E接口还能够支持热拔插,这也是个不小的飞跃 。PCI-E X1的250MB/秒传输速度已经可以满足主流声效晶片、网卡晶片和存储设备对数据传输频宽的需求,但是远远无法满足图形晶片对数据传输频宽的需求 。因此,用于取代AGP接口的PCI-E接口位宽为X16,能够提供5GB/s的频宽,即便有编码上的损耗但仍能够提供约为4GB/s左右的实际频宽,远远超过AGP 8X的2.1GB/s的频宽 。儘管PCI-E技术规格允许实现X1(250MB/秒),X2,X4,X8,X12,X16和X32通道规格,但是依目前形式来看,PCI-E X1和PCI-E X16已成为PCI-E主流规格,同时很多晶片组厂商在南桥晶片当中添加对PCI-E X1的支持,在北桥晶片当中添加对PCI-E X16的支持 。除去提供极高数据传输频宽之外,PCI-E因为採用串列数据包方式传递数据,所以PCI-E接口每个针脚可以获得比传统I/O标準更多的频宽,这样就可以降低PCI-E设备生产成本和体积 。另外,PCI-E也支持高阶电源管理,支持热插拔,支持数据同步传输,为优先传输数据进行频宽最佳化。AGP vs PCI——理论上的较量 AGP和PCI根本上的区别在于AGP是一个“连线埠”,这意味着它只能接驳一个终端而这个终端又必须是图形加速卡 。PCI则是一条汇流排,它可以连线许多不同种类的终端,可以是显示卡,也可以是网卡或者SCSI卡,还有音效卡,等等等等 。所有这些不同的终端都必须共享这条PCI汇流排和它的频宽,而AGP则为图形加速卡提供了直接通向晶片组的专线,从那里它又可以通向CPU、系统记忆体或者PCI汇流排 。普通的PCI汇流排数据宽度为32位(bit),以33MHz的速度运行,这样它能提供的最大频宽就是4byte/sX33MHz=133MB/s 。儘管新的PCI64/66规範提供了64位的数据宽度和66MHz的工作频率,频宽相应达到了533MB/s,但它面向的是需要极高数据频宽的I/O控制器,比如IEEE1394或者千兆位的网卡,目前几乎没有得到任何支持 。AGP同样是32位的数据宽度,但它的工作频率从66MHz开始,这样,按常规方法利用每个时钟周期的下降沿传输数据的AGP1X规範就能提供266MB/s的频宽,而AGP2X,通过同时利用时钟周期的上升和下降沿传输数据,可以达到533MB/s的频宽,最新的AGP4X更是把频宽提高到了1066MB/s 。