游戲跑分新視角:細看一秒內(nèi)幀數(shù)變化
同樣的,三款單卡看起來還比較正常,總體來說比較問題,而且突發(fā)幀數(shù)量并不多。
從GTX 560 Ti SLI身上就已經(jīng)開始顯現(xiàn)出較大波動,總體上遵循一高一低的趨勢,下面的多卡系統(tǒng)莫不如此。
已經(jīng)不止一次的聽到關于多卡系統(tǒng)的Micro-stuttering(下文會具體解釋)問題了,這次算是一個集中的反映。需要清楚的是,我們這里看到的很像是多卡系統(tǒng)工作方式的一個人工還原。
不管是AMD還是NVIDIA,在CrossFire/SLI多卡系統(tǒng)中都將AFR(Alternate Frame Rendering,交替幀渲染)作為首要渲染模式。顧名思義,比如在雙卡系統(tǒng)中,AFR就是將偶數(shù)幀交給GPU1渲染,而奇數(shù)幀則安排給GPU2渲染;或者說把第 n 幀畫面指派給 GPU1渲染,把 n+1幀指派給 GPU2 渲染,使幀數(shù)渲染交替進行,從而充分利用多卡系統(tǒng)的并行幾何處能力。(三卡或四卡的原理一樣,渲染交替進行。) 雖然,CrossFire/SLI同樣支持其它一些負載平衡渲染模式,比如SFR(Split Frame Rendering,分割幀渲染),但效率方面并不如AFR。
雖然這些基本原理非常簡單,但要在多卡系統(tǒng)中做到負載平衡卻相當不易。首先,每一個獨立的幀從渲染原理上來看就是一個需要高度平行的任務,需要高度平行的天性使得幀與幀之間的平行也相當拿捏,所以保持幀間的同步很是困難,更不用說多卡之間的負載平衡了。(比如GPU1已經(jīng)完成了1幀渲染,需要進行第3幀渲染,而此時GPU2的渲染還在進行,那么GPU1就需要等待。當然,實際的平衡負載問題要復雜的多,需要平衡算法來解決。)
另外,因為不管多卡系統(tǒng)中有幾款顯卡,只有主卡才能與顯示器連接,所以其他顯卡渲染的幀只能通過傳輸?shù)街骺ㄟM行輸出。而無論是CrossFire還是SLI接口,這種數(shù)據(jù)傳輸都會耗費時間。除了幀數(shù)據(jù),其它的一些緩存數(shù)據(jù)也需要經(jīng)常在顯卡之間進行傳輸,尤其是一些高級渲染技術(shù)(比如render-to-texture,渲染到紋理)使用的情況下。而這些數(shù)據(jù)通常會使用PCI-E接口,同樣會造成延遲。
上面的圖表很好的說明了多卡系統(tǒng)之間負載平衡還遠遠未達到完美,需要解決的問題還有很多。不過現(xiàn)在,我們可以先從一些多卡系統(tǒng)的天生缺陷說起。
很明顯,繼續(xù)使用平均FPS去評估多卡系統(tǒng)的性能表現(xiàn)肯定是不靠譜的。因為從平均FPS很難看出高延遲幀,而這些高延遲幀卻恰恰是獲得連貫游戲畫面的關鍵因素。我的感覺是,在提供連貫的游戲體驗方面,幀延遲在20ms和50ms之間交替進行并不如一直穩(wěn)定在50ms。
因為,從人類的視覺系統(tǒng)特別善于捕捉不規(guī)則的場景,也就是說一快一慢的畫面會讓人感覺相當不爽。事實上嗎,這種體驗我已遇到多次。這也就是為何很多人抱怨Micro-stuttering的原因。
當然,這些只是冰山一角。問題的復雜性要遠比這些圖表展現(xiàn)的高的多。關于這個問題我們接下來會進一步闡釋,但現(xiàn)在,我還是想把這些數(shù)據(jù)繼續(xù)放大,看看還有那些問題。
關注我們
