請問Haswell集顯效能提升的問題 - 3C

Ethan avatar
By Ethan
at 2012-05-09T00:52

Table of Contents

※ 引述《ericfriendex (艾力克斯朋友)》之銘言:
: → Khadgar:Virtual MVP不是會有把某些frame skip的狀況嗎 04/26 02:31
: → Khadgar:仔細想想就知道那根本形同作弊 04/26 02:31
: → Khadgar:跟那些加速器的差別只是他只Skip少一些而已... 04/26 02:33
: → Khadgar:話說的好聽,說如果兩個frame沒有明顯改變就不re-render 04/26 02:33
: → Khadgar:這種"看起來智慧式的"東西最容易出問題 04/26 02:34

現在對於這個作弊事件只有兩個"旁證",但是這兩個目前還算不上直接證據.
這兩個證據是.....

1.奇數和偶數frame,相隔時間很短,但是這不只是Virtu,還有SLI和Crossfire
都會發生的,這個現象叫作micro-stuttering,很多網站都有解釋.Tom's hardware,
Anandtech,3D甚麼的....網路搜尋一下可以作個基本了解

但等等底下會解釋為甚麼大家都會發生micro-stuttering.

以FPS的觀點來看,micro-stuttering則會上下跳動

* * * * * *
/ \ / \ / \ / \ / \ / \ 雙GPU
* * * * * * *
----------------------- 單GPU


2.藉由API攔截,發現call "draw a frame"的命令數只有一半
不過我看不懂法文所以除了看截圖判斷,沒辦法重現他的測試方式......
所以我不確定這是否是很強的證據

因為Lucid Virtu就算是個黑盒子 他也一定是

使用前 使用後

| |
[ X } [ A ]
| / \
[B] [C]
\ /
[ D ]
|

這樣的拆法,那麼原本攔截API的方法,要確定攔截到A或者是D,而如果攔截到B或者是C.
那麼本來數量就會只有一半了......


"為甚麼會發生micro-stuttering,以及,SLI/Crossfire/Virtu等多GPU系統的共通問題"

多重GPU系統下,必須要作的事情是把工作分攤到不同的gpu上.基本上會採用的方法有

1.AFR (Alternate Frame Rendering)

AFR就是把每個frame,依序分配給不同的GPU

原先是:

111111111 22222222 3333333 44444444
111111111 22222222 3333333 44444444
111111111 --> 22222222 --> 3333333 --> 44444444
111111111 22222222 3333333 44444444

AFR就分配成:

AAAAAAAAA BBBBBBBB AAAAAAA BBBBBBBB
AAAAAAAAA BBBBBBBB AAAAAAA BBBBBBBB
AAAAAAAAA --> BBBBBBBB --> AAAAAAA --> BBBBBBBB
AAAAAAAAA BBBBBBBB AAAAAAA BBBBBBBB

AFR的好處是相鄰的FRAME計算量都差不多,所以有最好的負載平衡.
賽豬公的時候分數會很好看,可是micro-stuttering的問題就是AFR造成的
目前各種系統,2GPU的幾乎都預設用AFR,3/4GPU就未必是

2.SFR

同一個Frame切割成上下兩半或者左右兩半,然後交給各個GPU執行
基本上像是:

AAAAAAAAA AAAAAAAA AAAAAAA AAAAAAAA
AAAAAAAAA AAAAAAAA AAAAAAA AAAAAAAA
BBBBBBBBB --> BBBBBBBB --> BBBBBBB --> BBBBBBBB
BBBBBBBBB BBBBBBBB BBBBBBB BBBBBBBB

這樣會有甚麼問題呢?由於任何遊戲的上下半部的計算量都不均等.
所以實際上他有很嚴重的負載不平衡,很容易拖慢FPS,driver中會因應
計算量大小而調整分配畫面的比率.

SFR有沒有好處?喔,有...除了不發生micro-stuttering之外,畫面上半段
和畫面下半段所用的貼圖通常不太一樣.所以AFR會爆貼圖記憶體量的,SFR
節約一點貼圖.怎麼說呢?當你計算畫面上半段,就不需要載入地面的貼圖,
計算畫面下半段 就不需要載入天空的貼圖這意思

但SFR在賽豬公上非常吃虧,所以除非特定遊戲不然預設多半不是SFR

3. SFR/AFR混血

用於超過2個GPU的場合.通常用在4 GPU的場合,可以分為AFR in SFR或者是
SFR in AFR這兩種.簡單說原理和前面AFR/SFR一樣,差別在先分割畫面成兩塊
還是先分奇偶frame...反正最後結果就類似

AAAAAAAAA BBBBBBBB AAAAAAA BBBBBBBB
AAAAAAAAA BBBBBBBB AAAAAAA BBBBBBBB
CCCCCCCCC --> DDDDDDDD --> CCCCCCC --> DDDDDDDD
CCCCCCCCC DDDDDDDD CCCCCCC DDDDDDDD

4.區塊分割,Tile Based(有正式命名嘛?)

比較類似SFR,但不是以一條線分割開來,而是把畫面切成非常多個區塊,這些區塊
分給兩個GPU計算

AABBAABBA AABBAABB AABBAABB AABBAABB
AABBAABBA AABBAABB AABBAABB AABBAABB
BBAABBAAB --> BBAABBAA --> BBAABBAA--> BBAABBAA
BBAABBAAB BBAABBAA BBAABBAA BBAABBAA

這是ATI的獨門方法.優點在負載平衡會比SFR好,也沒有AFR的micro-stuttering
缺點.當然也不會節約多少顯示記憶體啦.

5.由兩張顯示卡分別計算fsaa的MULTI-sample,再組合起來
可以稱為SLI-AA or Crossfire-AA

因為SFAA是在同一個pixel內取多個sample點計算 再把顏色混合起來,
所以這多個sample點會分給兩個gpu計算.

大概是這樣吧

|--------------------|
| | PIXEL放大版本
| 1 2 3 |
| | 假定沒開FSAA,那麼取樣點就是O,開了就會是四週的
| O | sub-sample 1~6不等,那麼就平均分配給這些gpu計算
| | 不同的sub-sample...不過實際的位置不是在我畫的地方
| 4 5 6 |
| |
----------------------

不過SLI-AA or Crossfire-AA大多數是用來提高最大的AA支援數量,極少用在
提昇效能方面

6.SLI-multiview

nVidia Quadro的獨家方法.說起來沒甚麼...就是SLI的時候兩個gpu的螢幕都可以輸出,
畫面範圍在哪個gpu上就由誰計算.只有cad程式比較有意義.


7.每個物件分開給不同的GPU畫

Lucid 的獨家技術 有展示過 有沒有拿來用就不知道了

基本上同一個畫面可能背景給GPU 1畫,前面人給GPU2畫之類


然後,為甚麼AFR會造成micro-stuttering??
基本上單一gpu的時候,fps相對很穩定,前面的圖重新看一次,就如同

* * * * * *
/ \ / \ / \ / \ / \ / \ 雙GPU
* * * * * * *
----------------------- 單GPU

不幸一點的時候會發生

* * * * * *
/ \ / \ / \ / \ / \ / \ 雙GPU
--------------------------- 單GPU
* * * * * * *
雙GPU的最低FPS還低於單GPU.


改用時間軸而且拉長來看,上面的圖則會變成是:

單GPU

1--------2-------3-------4-------5
雙GPU
1--2-----3--4----5--6-----7--8-----9--10

為什麼這樣喔?因為AFR下,第二個gpu要把整個framebuffer...


雙GPU AFR的理想


GPU2
------2----------4-----------6------------8-------
GPU1
1-----------3-----------5------------7------------9
合成後
1-----2-----3----4------5----6-------7----8-------9


實際上

GPU2
-------22-----------44-----------66-----------88-------
GPU1 / cmd leg \ copy回來的延遲
1-----------3-----------5------------7------------9
合成後
1-------2---3--------4--5---------6--7---------8--9


由於繪圖指令分給第二個GPU的時候可能會比較慢.加上GPU2畫好之後.
還要把frame複製回gpu1 (在上圖中以22,44,66,88表示這過程)
所以合成後,2-3間比較短,3-4間卻很長.如果計算每個frame之間的
時間差,會發現有一半的時間差只比單gpu的時候好一點.這個現象即為
micro-stuttering.

那這個會對玩遊戲有甚麼影響呢?
基本上....單gpu的時候假如通常兩個frame都相隔20ms,但是雙gpu的時候
兩個frame有一半相隔18ms,一半相隔6ms,那麼FPS賽豬公,雖然雙GPU的fps會是
單gpu的170%,

可是體感的結果,雙gpu只比單gpu最快快10%.因為是以最糟糕的兩個差距
(18ms:20ms)來算的.

而且實際上.由於這個是交互出現的間隔,所以frame之間以18-6-18-6-....
的間隔,視覺上也可能比20-20-20-20....還慘.因為 (1)人眼會注意到最差的地方
(2) 3D Game的時候,物體的移動量都是以兩個相隔的frame差多少時間去算的,
可是micro-stuttering的誤差,會造成應用程式誤判你每個frame的移動量,以這個例子.
他會當作要以12-12-12-12(ms)去計算移動量.

那麼每個frame的移動量:

18- 6-18- 6-18 -6 .........
12-12-12-12-12-12
快 慢
50 50
% %

每個單數frame計算的移動量多了50%,偶數的frame少了50%,本來平順的3D遊戲
的移動就會變成在抖啊抖的.........冏


總之,AFR不但讓你的眼睛體感沒有比單GPU好上多少,操作體感
更有可能退化到不如單GPU,所以採用雙 GPU SLI/Crossfire的要有認知,
如果能改最好避免這種只有賽豬公有用的AFR,不過AMD driver沒得改,nVidia
以前可以強制SFR現在不行.但是3 GPU/4GPU 通常就不採用純AFR了(理論上可以
實際上弄下去會更慘),所以micro-stuttering的現象會減輕.

而且,我也很認真的相信,真的要享受遊戲,多GPU絕對不是個好方案
一般來說雙GPU建議專業使用比如程式開發者要了解雙GPU有甚麼慘劇,
或者你電腦有產值可以藉由顯示卡或者是GPGPU程式產生產值再說.

3~4 GPU嘛.....以這東西的實用性應該是GPU廠商付錢請我們測試,
才不需要由使用者花錢來用好嗎(應該沒有廠商會鳥你XD)

--
Tags: 3C

All Comments

George avatar
By George
at 2012-05-12T21:56
簡單易懂 推
Jacob avatar
By Jacob
at 2012-05-14T22:59
以前沒試過重點標色的方法 應該要改這樣比較好閱讀?
Jake avatar
By Jake
at 2012-05-15T03:04
快出來拜神
Erin avatar
By Erin
at 2012-05-19T06:39
還是單GPU比較實在。
Quintina avatar
By Quintina
at 2012-05-21T13:51
有神快拜!!! 這次的好像有點懂 又好像不太懂...
Christine avatar
By Christine
at 2012-05-25T07:50
Qrz 這篇比以前找到的英文討論容易懂點
Caitlin avatar
By Caitlin
at 2012-05-29T03:52
就是這樣 喵
Oscar avatar
By Oscar
at 2012-05-30T08:17
請教一下,NV新的 Adaptive VSync 有可能是解答嗎?
Daph Bay avatar
By Daph Bay
at 2012-06-01T16:31
Bennie avatar
By Bennie
at 2012-06-02T16:05
寫得太好了 以後買單卡就好!
Hazel avatar
By Hazel
at 2012-06-03T19:48
專業
Todd Johnson avatar
By Todd Johnson
at 2012-06-04T02:27
簡單易懂 推
Robert avatar
By Robert
at 2012-06-06T15:34
有神快拜....<(_ _)>
Iris avatar
By Iris
at 2012-06-11T15:16
我以前寫的東西都比今天這篇基礎更簡單啦.怎麼大家比較
Madame avatar
By Madame
at 2012-06-16T06:57
看的懂
Lily avatar
By Lily
at 2012-06-20T23:21
越吃越重鹹 (拖走
Andrew avatar
By Andrew
at 2012-06-22T10:53
推一個
Hedy avatar
By Hedy
at 2012-06-24T09:54
有神快拜
Andrew avatar
By Andrew
at 2012-06-28T03:53
有神快拜....<(_ _)>
Rachel avatar
By Rachel
at 2012-06-29T09:21
神抱歉 這次看到一半就END了 推
George avatar
By George
at 2012-06-29T11:41
功力太差~ 看不到兩句就推文了~
John avatar
By John
at 2012-07-03T10:32
看不懂end... 果然是神的境界啊
Linda avatar
By Linda
at 2012-07-08T06:01
推推~~深入淺出~
Enid avatar
By Enid
at 2012-07-09T16:36
嗯嗯 沒錯 就是這樣~
Faithe avatar
By Faithe
at 2012-07-12T09:21
有神快推
Ula avatar
By Ula
at 2012-07-17T01:57
恩...跟我想的差不多
Andy avatar
By Andy
at 2012-07-21T21:39
我剛跟牛魔王一起出來看上帝...
Isla avatar
By Isla
at 2012-07-24T03:24
推一個
Erin avatar
By Erin
at 2012-07-26T12:58
lol
Brianna avatar
By Brianna
at 2012-07-30T23:17
推 長知識
Tom avatar
By Tom
at 2012-08-03T16:51
好文推
Jake avatar
By Jake
at 2012-08-05T01:03
難得有篇看得懂的 快推!!
Ida avatar
By Ida
at 2012-08-06T08:59
快推 不然人家以為我們不懂
Ethan avatar
By Ethan
at 2012-08-09T17:44
看到一半就想到回頭看ID....快拜 <(_ _)>
Anonymous avatar
By Anonymous
at 2012-08-10T16:48
這次稍微看得懂給推
Cara avatar
By Cara
at 2012-08-14T08:14
push
Jacky avatar
By Jacky
at 2012-08-19T02:23
這篇淺顯易懂 了解
Jacky avatar
By Jacky
at 2012-08-21T03:37
好神~~ 雖然看不太懂~!! 還是希望能多有些這種文~XD
Yuri avatar
By Yuri
at 2012-08-24T08:53
神都放棄雙GPU了 大家快醒悟吧
Yuri avatar
By Yuri
at 2012-08-27T13:27
有神開示
Noah avatar
By Noah
at 2012-08-28T10:54
<(_ _)> 不過是lag不是leg呀
Xanthe avatar
By Xanthe
at 2012-08-30T13:57
樓上抓到神的失誤 給大功一隻XDD
Kyle avatar
By Kyle
at 2012-08-31T04:14
打完有看到 但不想留下修改記錄 XD

隨身硬碟or一般硬碟?

Puput avatar
By Puput
at 2012-05-08T17:56
最近想把電腦硬碟整頓一下 目前電腦是250g+320g兩顆服役 平常應該是沒有常常要攜帶很大的資料走動 目前不知道該選購隨身硬碟 還是買顆普通2.5-3.5and#34;硬碟+sata轉usb線 做備份就好呢? (一樣也是可攜吧 只是比較大台) 或是買個500g硬碟 然後把服役中的其中一顆作為備份硬 ...

內顯中的第二把交椅,HD6530D挑戰英雄聯盟

Olivia avatar
By Olivia
at 2012-05-07T22:25
短短好讀版:http://goo.gl/KTxRg 之前做過A6-3670K的測試,可以了解到AMD的APU處理器的精隨在於搭載在上面的GPU核心,不過內顯讓人詬病的原因在於以往的核心純粹只適合文書使用,沒有辦法拿來玩一些網路遊戲。 不過在製程進步的現代,AMD與INTEL皆致力於提升內建顯示核心的效能, ...

少了線材,多了方便,革新中的海盜船TX650

Carol avatar
By Carol
at 2012-05-07T22:21
短短好讀版:http://goo.gl/t126I 海盜船這個品牌在台灣消費者的心目中屬於高單價,精品類的產品,舉凡記憶體與各項產品的單價其實都不算便宜,但是都有一個通用點,他們都擁有不錯的評價。 這一次要開的是海盜船長的收藏品,但經過一番革新的TX650的改款,TX650M。 直接先看包裝,採用全彩盒 ...

復仇者浩克正夯!那就來MSI R7870 HAWK

Hazel avatar
By Hazel
at 2012-05-07T21:56
好弱的神圖文好讀版! http://www.xfastest.com/thread-76060-1-1.html ============================================== 今年初開始AMD一連串的28nm顯示卡產品線陸續的推成出新,最早是由老大哥7970 打頭陣,在拜賜科技 ...

dts/mkv如何同時播放

David avatar
By David
at 2012-05-07T21:13
我有個影片是mkv 裡面已經有三個聲道 但是英文版的卻被獨立出來成為dts單檔 我要如何影音同時播出呢??? 感謝 - ...