天 一
賣場中,一位裝機技術員侃侃而談:“NVIDIA最新的GTX275顯卡核心只有240個流處理器,ATI的HD4890顯卡核心卻有800個流處理器,你要最高性能的顯卡,當然要選HD4890顯卡。”Tommy一臉迷惑,心下懷疑:“真的是這樣嗎?為什么有人說GTX275比HD4890性能好呢?”
AMD-ATI顯卡(以下簡稱A卡)和NVIDIA顯卡(以下簡稱N卡)在流處理器數量上的巨大差異給Tomy造成的困惑相信許多讀者也會有。其實,這個情況和不同廠商、相近性能的cPu的二級緩存數量存在差異的情況相類似(詳見本刊2009年1月刊菜鳥訓練營欄目文章),簡單來說就是“不同架構的GPU,流處理器的作用不盡相同,不能直接比較數量。”深入的解釋請看下文說明。
什么是流處理器
早在微軟推出的Directx 7當中就曾經提出過一個概念——T&L(中文名稱是坐標轉換和光源),它可以看作是流處理器的鼻祖。隨著顯卡核心芯片技術的發展,在DlrectX8中由微軟首次提出了shader的概念,并且將shader分為VerteXshader(頂點著色器,又稱VS單元)和Pixel shader(像素著色器,又稱Ps單元)。
一幅游戲畫面是怎樣顯示的呢?其中,3D物體的幾何形狀、光亮和陰影的控制是由VerteX shader來實現的,而Pixel shader是對像素資料進行操作運算的指令程序,其中包括了像素的色彩,深度坐標等資料。在GeForce8之前,Pixel Shader和Vertex shader這兩個參數非常重要,這兩個部分的多少完全決定了顯卡的性能表現,N卡和A卡雙方都為了提升Pixel shader和Vertex shader的數量而想盡一切辦法。
但是,在Directx 10這一代顯卡中,業界提出了一個新的概念——統一渲染架構,就是把原有的VS單元和PS單元統一起來,統稱為shader運算單元,這也就是我們所說的流處理器(stream Processor)。因此,上述任務就由流處理器統一執行了。既然流處理器是來自于VS單元和PS單元的統一渲染架構,那么,流處理器的作用與VS單元+PS單元的合作用就是基本相同的,只是添加了全新的處理單元——Geometry shader(幾何渲染器,又稱Gs單元)。
名稱的玄機
同一架構的顯卡,流處理器的個數自然是越多越好,相信讀者也在各大網站了解到這樣的信息——“同價位的產品中,N卡的流處理器數量要少于A卡”。比如本文開頭的裝機技術員提到ATI Radeon HD4890顯卡比NvlDlA GeForce GTX275顯卡的流處理器數量多,這是正確的,但是性能卻是前者稍遜于后者。這是為什么呢?
其實,在“流處理器”的名稱上,A卡和N卡存在細微的差別,N卡的流處理器全稱為:stream Proces—sin-g,而A卡的流處理器全稱為Stream Processing Units。一詞之差卻讓兩者的性能差距有著天壤之別。而且因為A卡和N卡的GDU架構存在根本性的差異,所以流處理器的工作方式和用途也有所差異,故不能直接比較流處理器的數量。這就可以解決本文開頭的顧客Tommy的疑問了,A卡的GPU流處理器數量多很多,但性能不一定就好。下面我們來分析A卡和N卡的GPU架構及流處理器的工作方式,看看有什么不同。
在DireccX 9時代末期,AT噫識到像素渲染的重要性,就通過1:3的架構,提高了像素著色器的數量。到了Dlrectx 10時代,ATI還是通過這種方式來提高重要的像素渲染性能。從Rv770的核心架構圖中可以看出,現在在ATI的GPU中,流處理器(Stream Processing)和流處理單元(stream Processing Units)的比例就是1:5,也就是說,ATI的每個“Stream Processing”都包含有5個“streamProcessing units”。RV770的流處理且群擴充至10組,因此數量也有了2.5倍的增長,達到160個(160×5=800個流處理單元)。所以A卡所稱的“流處理器”實際上一般是指流處理單元。
NVlDlA方面,GeForce GTx 200核心架構分為四個層。最上面一層包括幾何著色器(Geometry shader),頂點著色器(Vertex Shader)和像素著色器(Pixel Shader)。中間一層包括了10組TPcs(計算處理器群集),每組TPc里面又包含了3組sMs(流處理器組),每組sM里面就包含了8個流處理器單元或計算單元。這樣一來,GeForce GTX 200顯卡就一共包含了240個流處理器單元或計算單元。
兩種架構,優劣各異
在進入統一渲染架構時代后,提高shader運行頻率與效率是NVIDIA主導的設計思路,而AMD則維持龐大的流處理器數量。兩種思路各有優劣。
1N的優勢和A的劣勢
N卡的GPu中每個流處理器都具有完整的ALU功能,在發出一條操作指令時每個流處理器都能充分工作。而A卡的GDU中每個流處理器的5個流處理單元都是固定的,不能拆開重組,如果在處理純4D指令的時候,每個流處理器只能處理一條4D指令,有一個流處理器單元閑置,但卻無法加入其他組合來共同工作。
簡單地說,一個指令任務派發下來的時候,N卡的GDu只需要1個“人”獨立工作即可完成,而A卡的GPU則需要5個“人”結組工作才能完成。ATI的人數雖然多,但這5個“人”中有可能會有4個“人”閑置,因為這4個“人”不具有獨立完整的ALU功能,不能執行函數運算,浮點運算和Multipy運算。
2N的劣勢和A的優勢
ATI的設計也有其顯著的特點——浮點運算能力強大。也就是說,如果單純比拼顯示核心在浮點運算上的能力的話,ATI更強。要知道在目前GPGPU項目應用比較多的科學計算方面,理論上ATI的顯示核心會更強大,未來更能適應GPU和CPU融合的趨勢。