作者VictorTom (鬼翼&娃娃魚)
站內PC_Shopping
標題Re: [請益] cpu跟顯示卡要如何了解是否互相餵飽
時間Wed Jan 21 01:39:48 2009
※ 引述《VCCS (壓控電流源 (啥?))》之銘言:
: 好像沒有業界強者出來,我自己先google幾個貼上來
: 有解釋API、DirectX、驅動程式之間的關係,至於正不正確...不要問我 XD
: http://www.ns-bbs.com/teach/list.asp?id=63
: API(Application Programming Interface)
: 應用程序介面。API是應用程式用來請求和執行本應該由電腦作業系統執行的低階調整功能
: 。API可以看做是程式和3D圖像之間的交互方式,3D設計人員利用API介面編輯程式,對圖
: 形處理晶片發出命令,執行多種效果運算,構造出理想中的圖形效果。現在流行的顯示
: API是OpenGL和DirectX。
稍微補充一下小弟的看法, 其實API用的範圍很廣, 不限於3D....
另外, GL與DX是有它的API, 但它們最主要是一整套函式庫....
因為是函式庫, 才需要API接口給程設師, 所以說流行的API是GL和DX怪怪的....
應該說目前主流的3D函式庫是DX和GL, 其中DX最顯著的不同是多了一層runtime....
(當然你要說DX是MS獨大主導之類的也OK啦, 不過小弟目前重點不是放在這裡)
許多雜事MS都透過這層runtime處理完才會給Gfx驅動程式收到....
這也是為什麼有時候新遊戲會跟你說要安裝DirectX x.x版....
至於DX的架構延革請上MS網站吧, 小弟其實跟DX一點都不熟XD
: DirectX
: 微軟作業系統平台下的遊戲程式開發介面,即所謂的Game API for windows。一般來說Dir
: ectX是由一系列硬件驅動程式(如顯示卡、音效卡等驅動程式)組成的,其主要的部分包
: 括Direct Draw、Direct Input、Direct Play和Direct Sound,分別針對顯示、輸入系統、
: 網路通訊和音效等各方面。DirectX最大的優點是提供了高效率的驅動程式而使遊戲設計
: 的程式介面得以統一,讓程式可以做到與硬體無關(Hardware Independency)。
: 這裡有更詳細的directx與驅動程式介紹
: http://zh.wikipedia.org/w/index.php?title=
: %E9%A9%85%E5%8B%95%E7%A8%8B%E5%BC%8F&variant=zh-tw
: http://zh.wikipedia.org/w/index.php?title=DirectX&variant=zh-tw
: 上面兩個太複雜,這邊還有個簡單易懂的解釋
: http://www.mobile01.com/topicdetail.php?f=298&t=399440&last=3587903
: 業界急需一個共通的中介標準,於是微軟制定了第一代DirectX,這是一種「應用程式介面
: 」(API,Application Programming Interface)夾在軟硬體之間,雖然多了第三者會減
: 損效能,但換來的方便性是絕對值得的
: 雖然顯示卡一定得支援DirectX,但實際GPU晶片線路要怎麼設計則是各家廠商的創意,就
: 像x86 CPU不能直接執行x86指令,得透過內部的解碼器轉換,GPU也不能直接執行DirectX
: 的指令,中間還得透過驅動程式,這也是為什麼顯示卡的驅動程式超級重要,因為它得解
: 譯DirectX的指令,轉換成GPU看得懂的機器語言(Machine Code),驅動程式會直接影響
: 顯示卡的效能和功能。
順便引述您的前一篇回文一起回好了....
: 1.GPU不能單獨存在,只差顯卡你電腦能開機嗎? (廢話)
: 2.GPU需要聽從CPU指揮 (這好像也是廢話 囧)
: CPU不僅要從事遊戲的邏輯運算、物理運算,還要從事API轉換(如directx轉成GPU指令)
: 以及顯卡驅動在kernel、user mode之間轉換等等....
: 簡化的講,顯示卡不吃你遊戲的指令,而是吃CPU翻譯過後的指令
: 怎麼翻譯?那就靠驅動程式了
: 因此才有板上ATi迷激賞的,Catalyst每換一版驅動效能大增
: 或是NV迷不屑的,你看果然ATi以前驅動多爛阿....
CPU要從事的工作有遊戲本身的處理: AI, 介面, 操作, 或沒GPU加速的物理; 太多了.
CPU也有一部份是做DX API的處理: DX runtime, 還有API<->driver資料的傳遞....
CPU再來要做的就是driver相關的: API傳來的資料, driver對SW/HW的多工管理....
將runtime傳進來的MS指令轉換成真實GPU指令, 協助resource的管理....
當然還有更多因為GPU的特性/bug/其他理由會由CPU協助GPU來工作等....
最後(可能還有其他啦, 一時想不到): 就是OS本身的需要....
GPU要做的工作動態的像是shader執行(這裡已經是CPU翻好的GPU可以運行的指令了)
傳統VS的TnL, PS的texturing/blending的計算, 甚至GS/GPGPU等指令的執行....
固定性質的工作像是rasterization(三角形頂點轉像素平面), Z(深度)等test....
還有像texel的sample/fetch, filter; 族繁不及備載(其實是一時想不出來了)
以GPU來說, VS/GS/PS這些process除了被cull/clip或者test fail丟掉的以外....
基本上AP送了多少Vertex/Pixel出來, GPU就要去做多少的事情....
當然GPU HW與3D pipeline的設計會嘗試減少不必要的工作就是了....
反過來以CPU來說, 現今DX/driver的設計會嘗試讓能給GPU做的就別煩CPU....
(畢竟現在CPU與GPU processor unit的數量差異極大....
而System Mem<->Video Memory資料的傳遞也是非常消耗時間的)
還有, CPU處理過一次就能解決的, 就不要浪費時間做第二次, 有幾點小弟知道的....
1.比如DX10的例子, StreamOut讓VS/GS的結果直接保留在VideoMemory裡....
讓下一輪的draw可以直接當作新的Vertex data來用, 減少由CPU處理的必要....
又例如instance, 讓你事先指定rendering的素材匹配, 減少CPU切換state的動作....
2.以AP下的shader code來說, runtime翻成MS指令後沒必要就不用翻譯第二次....
(這點小弟比較沒把握, 因為小弟比較在搞的GL沒有runtime, 總之請搭配下一行)
因此, driver發現是同樣的MS指令, 就不用重做翻譯成GPU指令的動作....
3.Driver的優化, 這就看各家driver team的本事了, 當然多少與HW能力有關就是了....
這一部份甚至牽涉到您說過的user mode與kernel mode driver與OS的溝通頻率....
不過換驅動"部份"遊戲效能大增的情形, 算是另一種優化, 這個後面再談....
4.許多遊戲的loading time, 常常就是在做shader翻譯, texture load等工作....
這邊做過了不必要就不用再作; 有一個和VRam相關的問題是, 如果VRam太小....
OS可能就要管理PageIn/Out的swap動作, 這無庸至疑的可能造成效能低下....
而CPU從事遊戲本身的工作小弟的認知是有很多事是可以偷懶或給限定時間的....
比如AI, 我可以固定分time slice給每一單位AI思考時間, 過了就跳過它....
或者依CPU的閒置情形/運算能力有不同種類複雜度的規劃方式....
這邊因為偏離主題, 小弟也不是那麼清楚, 所以就別野人獻曝了:)
: 大大你用"匹配"這個字眼,我認為比不上用"餵飽"傳神
: 賽車引擎用"匹配"的輪胎,因為引擎沒有管到輪胎
: 但藤原拓海與86是單純"匹配",還是他有本事"餵飽"了86 XD
: 還有推文講的GTA4,因為太吃CPU了,是愛妻"匹配"不了GTX 280
: 還是愛妻也餵不飽GTX 280,所以GTX 280還有點餓?
: 哪個傳神呢? (迷之聲:糟糕起來了)
至於匹配或者餵飽, 小弟以為sdcheck板友已經很簡單而傳神的表達其含義了....
在這邊就簡單提一下小弟所知道的早期的GPU到現在的GPU+CPU的工作情形....
早期的Gfx內, VS與PS unit的數量是固定的, 而通常PS的數量比VS的還大得多....
因為三個三角形的頂點(vertex), 可以生出三百的像素(pixel)出來....
然而, 假設今天有個遊戲VS的負載比較重, 導致PS許多unit閒在那等VS吐資料....
(當然VS不會直接吐資料給PS, 中間至少經過rasterizer, 意思到就好了)
這樣的case就算我PS unit很多, 遊戲的performance也很難好, 而且很難救....
(你當然可以設計有更多VS unit的HW, 不過遊戲這麼多, 能每款出一張卡嗎^^||)
於是Unified Shader(統一著色器或泫染器)架構的優勢就突顯出來了....
如果Gfx發現VS loading比較重, 就把較多unit給VS, 反之亦然....
而更優秀的HW/SW還能依遊戲情形自動調整成合適的比例, 不然就用driver硬調....
上面廢話了這麼多跟CPU的關聯是??今天整個OS上執行遊戲需要driver輔助....
將需要執行的工作交給CPU與GPU去做, 但是卻不是什麼遊戲loading都一樣重....
就像上一段GPU的例子, 也許有的CPU重一點, 有的GPU重一點, 很難統一認定....
不然就像板友說的, 你都買最貴的CPU+GPU, 就不用想匹配或餵飽的問題了....
也因為是case by case, 所以每每A家N家新的driver release出來以後....
就能對什麼game或benchmark(可能哪一關)有多少%的效能成長; 所以說benchmark~~
這就是為什麼我們常說benchmark未必能忠實反應遊戲上的表現....
1.因為那幾套benchmark早就被優化, 甚至是偷雞作弊到爛了(在不易查覺的程度吧)
2.隨著新遊戲新引擎新技術的引進, 既有的benchmark未必能反應所需的特效....
(不過小弟還是認同benchmark對Gfx基本的評測能力, 尤其新組電腦的時候~~
或者你發現為什麼相似配備相同遊戲你跑起來FPS遠比人家遜很多....)
3.因為每一套遊戲都可能有各自的SW bound或HW bound, 這需要經過一些tool的分析~~
甚至是Gfx HW自己design的一些counter來讓driver team知道現在效能瓶頸在哪....
(更進一步的, 下一代, 或者下一個改良版HW, HW的design可以在哪做強化)
其中, 鑑於GPU平行處理的能力, 所以會有什麼物理特效給GPU做啦....
甚至是Video的encode/decode等工作拿來給GPU做的(硬體編解碼??)
不過, 高等級的遊戲常常在3D運算/顯示的部份就把GPU搾乾了....
是否有把物理特效拿進來的餘裕就是另外一個問題了....
(至於要不要CF/SLI, 不管要不要獨立一個算物理, 就是荷包與爽度的問題了)
最後, 遊戲寫的好不好, 能不能有效的運用DX/GL與GPU去工作....
同時減少CPU運算不及造成的衝擊(或者對多核CPU做最佳化)就是遊戲設計者的工作....
(包含非遊戲的AP像PhotoShop/Flash要不要利用GPU平行化/最佳化以增進效能等)
所以小弟原先才會推要看遊戲/OS/HW/Driver整合起來看....
才有這個不管想叫匹配還是餵不餵得飽的問題....
當然我想扣掉板友說過的極端的組合, 比如E1xxx卻裝了GTX295這樣....
搞不好你CPU本身做什麼都慢了, 說不定光防毒軟體就吃光你CPU loading了勒....
補充一個, 早期的IGP(內顯)有的可能為了省gate count, 而沒有HW TnL....
那它的VS會用CPU算, 這個CPU對GPU就有相當程度的影響....
或者基於某些理由(HW不支援某些feature等)全程用CPU算....
雖然~~這一類的GPU效能可能也高不到哪裡去就是了....@_@"
: 就這樣,我是餵飽派的 XD
就這樣, 小弟我什麼都不會, 只是今天工作還有固定要運動的行程都不順利....
所以夢到了上來騙騙看P幣這樣, 有謬誤或不足得還請各位先進指教....<(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.174.98
1F:推 vic81324:專業推 01/21 01:41
2F:推 ricky7899:未看先推 這一篇文章值 1000 銀 01/21 01:42
3F:推 kdbb:這一篇文章值 1000 銀 @@~ 01/21 01:43
4F:→ fsaa3dfx:怎麼看多少錢啊 XD 我有時候都按不出來 01/21 01:45
5F:→ levine21:大寫Q 01/21 01:46
6F:→ fsaa3dfx:先打好或者用複製貼上錢是不是比較少呢 01/21 01:47
7F:推 levine21:複製貼上 編輯時間短的話錢會比較少 01/21 01:48
8F:→ levine21:文章的價錢在於字數多寡 還有時間長短 好像有公式 01/21 01:48
9F:→ fsaa3dfx:在 PTT 裡面編輯比較不安全,有時候沒按好就送出去了 XD 01/21 01:49
10F:→ VictorTom:雄雄忘記有斷線風險了XD 就說要來騙P幣嘛....XDDD 01/21 01:54
11F:推 onelife:怕斷線則可以在別處打完,再用批幣能吃嗎之類的來貼 01/21 01:56
12F:推 highway4625:GL另外一個問題在於整合...各家使用的不盡相同 01/21 02:10
13F:→ highway4625:吃的飽不飽 可以在引擎上加上1行 就會讓結果逆轉(默) 01/21 02:11
14F:→ VictorTom:GL的extension是它最強的彈性, 也是整合上最大的阻力吧. 01/21 02:21
15F:→ VictorTom:各家都想加自己的, 最好是對手沒辦法做的....~_~ 01/21 02:21
16F:→ highway4625:所以我才說 只要加上1行 結果就會大逆轉 01/21 02:24
17F:推 VCCS:7推 01/21 19:54