今天刷帖子的時候看到一個博主的一篇關於黑神話悟空優化的文章,文章中提到了更新完NVidia驅動以後一定要去nvidia geforce experience軟件裏"激活"一下驅動,細細想來有點好笑,所以這篇文章就應運而生了,我們今天來討論兩個問題,什麼是顯卡“驅動”,以及,顯卡驅動需要激活嗎?
所謂“驅動”,即Videocard drive,是用來驅動顯卡的程序,能夠使操作系統與計算機中的硬件(即GPU顯卡)進行通信,也就是硬件的接口函數。在軟件工程中,可以使用接口封裝和簡化設計,也就是我們常說的API,顯卡也是一樣,說的再直白一些,就是顯示打印接口,將GPU計算出的圖像打印到顯示器上的過程。
首先我們需要了解GPU的工作原理。CPU 即中央處理單元,是一種硬件組件,它是服務器的核心計算單元,負責處理操作系統和應用程序運行所需的各類計算任務。圖形處理單元(GPU),是一種與 CPU 類似,但更專業的硬件組件。與普通 CPU 相比,它可以更高效地處理並行運行的複雜數學運算。GPU 擁有大量的算術邏輯單元(ALU)進行並行處理,因此 GPU 可以獲取大量相同的指令並高速進行推送。
這倒不是說GPU更好,事實上GPU更像是一大羣流水線上的普通工人,只適合做大量的簡單運算,更復雜的運算搞不了。但是簡單的事情做得非常快,比CPU要快得多,所以適合做圖像渲染,假設在實時渲染中,一幀1080*720P的圖片大概有777600個像素點。如果按照最基本的24幀/秒的幀率計算,1秒鐘就要求計算機處理18662400個,即:1866.24萬個像素點。這種情況下GPU的流式多處理器可以認爲是一個個獨立的任務處理單元,可以認爲一顆GPU包含了幾千個個CPU同時計算,大大提升了計算效率。
那麼操作系統底層是如何訪問顯卡的呢?可以把顯卡想象成另外一臺機器。上電之後,它從計算機特定的內存(顯存)地址去取址,然後執行計算指令,最後將圖像數據再寫入特定內存供計算機讀取。遊戲程序通過圖形API(DX、GL、WEBGL)發出drawcall指令,指令會被推送到驅動程序,驅動會檢查指令的合法性,然後會把指令放到GPU可以讀取的Pushbuffer中。經過一段時間或者顯式調用flush指令後,驅動程序把Pushbuffer的內容發送給GPU,GPU通過主機接口(Host Interface)接受這些命令,並通過前端(Front End)處理這些命令。
然後,GPU在圖元分配器(Primitive Distributor)中開始工作分配,經過複雜的數據處理,完成顏色的計算還有深度值的計算,然後將數據移交給ROP(render output unit,渲染輸入單元)。
至於爲什麼要更新驅動程序,每個驅動程序都是針對特定的硬件設備或芯片組設計的。例如,顯卡驅動針對不同型號的顯卡,如 NVIDIA 的 GeForce 系列和 AMD 的 Radeon 系列,它們各自擁有獨特的架構,這些不同品牌和型號的顯卡在圖形處理能力、像素填充率、紋理單元數量等方面差異很大,因此需要專門優化的驅動來充分發揮其性能。
同時,針對一些大型遊戲,驅動廠商也會進行專門的優化,通過分析遊戲的圖形引擎和渲染需求,調整驅動中的圖形渲染算法和資源分配策略,可以在特定遊戲中提高幀率穩定性,減少遊戲中的卡頓和延遲。
可以舉個很常用的抽象例子(該問題來自知乎),XX遊戲在開發的過程中,工作人員不知道怎麼想的,把一座山上所有的草模型,用了n個三角形模型來實現,玩家每當走到這座山時,幀數就會飛快下降。
本來這種問題應該是遊戲開發商解決的,但是遊戲開發商不管那些個,先把遊戲發佈出來了。顯卡廠商就得分析這個遊戲,到某個地方,顯卡進行了多少萬次相同的運算,所以才卡,一看,這啥破模型啊,明明能不計算這麼多次啊。然後就更新顯卡驅動裏的某個算法,遇到這種情況,就集中處理,而不是傻乎乎的每個三角形、每個面都計算一次,寫成新的驅動文件,發佈出去。玩家更新了之後再到這些地方就不卡了。
那麼最後一個問題,顯卡驅動安裝後需要"激活"嗎?答案是不需要,安裝顯卡驅動的過程本身就包含了使驅動程序在系統中生效的步驟。當安裝完成後,驅動程序就已經與操作系統和顯卡硬件建立了連接,而GeForce Experience 軟件中對遊戲的優化選項,是指該軟件依據用戶電腦的硬件配置(包括 GPU、CPU、顯示器等),利用 NVIDIA 收集的雲數據,來爲遊戲自動進行圖形設置優化,本質來說和你在程序界面裏調整畫質是一樣的。
參考(參考鏈接的網址怎麼發不出來):
從底層向上理解GPU(GPU驅動初始化核心解讀)
計算機底層是如何訪問顯卡的?
深入GPU硬件架構及運行機制
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com