專家披Nvidia PhysX「放水」內幕:CPU竟只能運行於單線程和x87指令集模式下

eLove

榮譽會員
已加入
4/5/08
訊息
1,394
互動分數
8
點數
38
英文原址:http://www.techreport.com/discussions.x/19216
中文翻譯:http://www.cnbeta.com/articles/115753.htm
測試原文:http://realworldtech.com/page.cfm?ArticleID=RWT070510142143&p=1

Nvidia公司一直把PhysX遊戲引擎當作宣傳GPU計算能力強於CPU的噱頭,而且幾年來多款遊戲也確實采用了這種GPU加速技術,
這類遊戲開啟PhysX之後確實物理特效華麗不少,不過如果沒有打開GPU硬件加速,只用CPU來計算物理特效,那麼遊戲的流暢度就會大打折扣
不過,我們曾指出,有些這樣的遊戲在用CPU處理物理特效時只使用了單線程技術,而物理特效本身是可以很方便地使用類似多線程的技術來處理的,
實際上在打開GPU硬加速時情況便是如此,因此遊戲廠商此舉很有故意放著處理器的多核條件不用的作弊之嫌


更糟糕的是,RealWorld Technologies網站的作者David Kanter最近的研究讓這些遊戲廠商的作弊嫌疑又加重了幾分
他使用Intel的VTune進程查看工具分析了多款支持PhysX特效的遊戲,結果發現當這些遊戲使用CPU處理物理特效時,
大部分的代碼使用的仍然是老舊的x87浮點算數指令,而不是早已深入人心,並且效率高得多的SSE擴展指令

他在自己的文章中寫道:

x87已經在故紙堆裏埋了好些年了,Intel/AMD這5年來都一直在勸說開發者使用更快的SSE擴展指令集來編寫程序。
在目前市面上的處理器裏,SSE指令的完成同樣任務的速度很輕松就能達到x87指令的1.5-2倍。
而這些PhysX引擎還在使用x87指令,這顯然對CPU非常不利也不夠公平,
讓我們對GPU在處理PhysX引擎時是否真如官方宣傳的那麼高效率也打上了一個問號。


Kanter還進一步分析稱,這些遊戲廠商在應用CPU的SSE指令方面幾乎不存在任何技術上的困難,
雖然x87指令的精度和兼容性會稍微好些,但是在遊戲中根本不需要考慮這些問題,從開發難度上講,
使用SSE甚至還有可能會減輕開發者的負擔,他表示:「單就CPU運行PhysX引擎方面講,
要使用SSE 指令集一點也不費事(坦率說還有可能比用x87指令開發更省事些)。」

也就是說,即使在PhysX引擎只支持CPU單線程處理的條件下,其實其執行性能本該也還有很大的提升空間。

把缺乏多線程支持與還在使用x87指令的情況綜合起來考慮,我們認為Nvidia公司的PhysX引擎用最好聽的話來講就是優化得太差,
講的難聽點就是有意為之。當然PhysX引擎的主動權握在Nvidia手上,他們可以愛怎麼玩就怎麼玩。
但是這種過火的行為也可能會帶來一些惡果,Kanter在文中這樣總結道:

....Nvidia可以愛怎麼玩就怎麼玩,不過這種行為對開發者和消費者而言毫無益處,
而且也會讓人們對他們口中成天掛著的什麼GPU比CPU 性能更好的鬼話產生很大的懷疑。


PhysX Logo曾經是那些支持Nvidia顯卡遊戲的一大賣點,不過現在看來這個Logo似乎又有了新的一層含義,
那就是讓所有非Nvidia的其它硬件設備跑得更慢。


Experimental Setup
3.2GHz Nehalem (Bloomfield)
Nvidia GTX 280 GPU
3GB of memory (3 DIMMs)
Windows 7 (64-bit)
nvcuda.dll version 8.17.11.9621
PhysX version 09.09.1112

To test PhysX, we used the Cryostasis tech demo and also the Dark Basic PhysX Soft Body Demo
and analyzed the execution using Intel’s VTune.

Chart 1 – Process level view of PhysX applications
PhysX-2.png


Chart 2 – Thread level view of PhysX applications
PhysX-3.png


Chart 3 – Module level view of Cryostasis
PhysX-4.png


Chart 4 – Module level view of SoftBodies.exe
PhysX-5.png
 

Jason929

進階會員
已加入
3/11/10
訊息
203
互動分數
0
點數
16
是不是如果遊戲開發者使用SSE指令集來開發遊戲,PhysX就變成英雄無用武之地?=.=
 

raizzeyui

高級會員
已加入
10/7/09
訊息
645
互動分數
0
點數
0
没有关系,physx能动就好。管它什么指令,不介意XD
 

jack26704678

榮譽會員
已加入
5/17/10
訊息
2,325
互動分數
0
點數
36
年齡
35
PhysX 是 NV 的 他爽就好:PPP:

反過來 ATI 如果 也可以創造 自己的獨門賣點 那也是很不一樣的:MMM:
 

TAS

"人"生淫家...
已加入
3/16/09
訊息
4,078
互動分數
32
點數
48
黃SIR還是讓N社快給INTEL收去好了...
;em44;
 

terry955219

高級會員
已加入
2/24/09
訊息
681
互動分數
2
點數
18
簡單來說就是那先支持PhysX的遊戲都是用X87架構去開發有點像商業利益關西
讓現在的使用SSE指令集的CPU無法順利有效率的進行浮點運算
非要使用NV的PhysX引擎有點像以前微軟榜定IE這樣
所以支持PhysX的遊戲如果使用非NV的PhysX引擎顯示卡
反而會有拖慢的情況
 

terry955219

高級會員
已加入
2/24/09
訊息
681
互動分數
2
點數
18
是不是如果遊戲開發者使用SSE指令集來開發遊戲,PhysX就變成英雄無用武之地?=.=

剛好相反喔......
是那先支持PhysX的遊戲都使用X87指令集來綁定NV的顯示卡
所以SSE指令集就變得英雄無用武之地
 

eLove

榮譽會員
已加入
4/5/08
訊息
1,394
互動分數
8
點數
38
補充一下根據PhysXInfo.com的統計,目前(2010/07/03)只有18款遊戲支援PPU加速、24款遊戲支援GPU加速
絕大部分的遊戲掛著"PhysX",實際上是以CPU來執行物理運算 ... ;em44;

i46960_PhysXPPUGPU.png
 

kgame

さとりん
已加入
1/27/10
訊息
2,301
互動分數
0
點數
36
年齡
32
網站
kgame.tw
說難聽點
NV故意劣化PhysX在CPU上的運作效率
這樣才能成為NV卡的賣點之一
 
▌延伸閱讀