為什麼需要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。