Win10任務管理器中的"專用GPU內存"是怎麼回事?「共享GPU內存」又是什麼?
來自專欄 UEFI和BIOS探秘
Win10在任務管理器中增加了GPU相關的內容,不但可以看出各個程序的GPU佔用率,還可以監視GPU的整體使用情況。這引起了不少同學的注意,也讓遊戲玩家比較在意的GPU內存佔用率暴露了出來。這不,有人邀請我回答下面這個問題:
下圖中專用GPU內存和共享GPU內存是啥,從哪裡得來的?
哇塞,有兩個GTX 1080T的顯卡和高達32G的內存!土豪,我們交個朋友吧!其實我猜這位朋友應該是用這台機器來做機器學習的,否則一定是位骨灰級遊戲發燒友。
其實這些信息並不是才有,在我的Win7系統中就已經存在,不過隱藏比較深罷了,我們可以通過下面的步驟找到它:
- 桌面上點右鍵,選擇屏幕解析度:
- 選擇「高級設置」:
- 在適配器欄找到它:
東西不是新東西,問題依舊是好問題。我們今天就來引申一下,回答如下幾個大家可能關心的問題:
1. 什麼是專有GPU內存?什麼是共享GPU內存?什麼事GPU內存?
2. 它們是哪裡來的,怎麼調整?
3. 不知道大家有沒有注意到,題主的GPU內存達到16GB,有什麼副作用?
專有GPU內存
所謂專有GPU內存分為兩種情況:獨顯和集顯。
獨顯是指單獨的GPU PCIe卡,在它上面有單獨的GDDR內存,而這裡的專有GPU內存就是指該GPU顯卡上自帶的內存,它只能夠被GPU使用,而且帶寬很高,延遲很小。
集顯情況就比較複雜了,我們這裡排除AMD GPU集成進Intel CPU那種另類CPU(可做獨顯看待),僅以Intel集顯為例。這裡的專有GPU內存是指BIOS在系統內存上挖掉的專門給集顯GPU用的系統內存。我在這篇文章中有所介紹:
老狼:神秘消失的內存去哪了?簡單的來說,就是BIOS把一部分內存在內存初始化後保留下來給GPU專用,叫做Stolen Memory。它的大小從16M到1024M不等,不同代集顯可以支持的保留內存內存各不相同,譬如我的HD4000,它支持的顯存最大256M,也不是內存土豪想要多大就能多大的。
另外我可以負責任的說,網上一些修改註冊表增加它的最大值是沒有用的。那麼這個值在哪裡改動呢?聰明的你看到這篇文章出現在這個專欄中就一定猜出來了,是的,是在BIOS里。位置各個主板不大一樣,這裡舉兩個例子:
需要特別指出的是這裡的「Share」Memory讓很多人產生了誤解,網上很多人都以為這個地方是調節下面要介紹的"共享"GPU內存的。這個說法是錯誤的,這裡的值最終會反應到集顯的專有GPU內存項。
共享GPU內存
這裡內存是操作系統Windows從系統內存中划出來,優先給GPU使用。題主有32G內存,而共享內存有16G,有兩個GPU,是不是系統內存都被佔用了呢?實際上,這個16G是兩個GPU公用的,而不是每個都有16G。
但是還是有問題,題主真金白銀買的32G內存,居然有一半都被劃給GPU用了,是不是意味著題主的內存只剩下16G給其他應用程序使用呢?這個問題現在被問到的很多,網上有很多朋友都覺得可惜,尤其是那些不怎麼打遊戲的朋友,覺得專有GPU內存完全夠用了,都在琢磨怎麼降低這個共享內存。
這個問題實際上是多慮了,這個共享內存不僅僅是多GPU共享,而且是GPU和其他應用共享,只不過GPU優先順序高些罷了。而且Windows也盡量會使用專有GPU內存,而共享GPU內存完全可以在其它應用程序大量消耗內存後歸他們使用。而且這個值無法設置,由Windows根據系統內存大小自行設定。
這裡需要指出的是共享內存的帶寬和時延受限於PCIe的關係,比專有內存低了很多,這也是Windows會優先使用專有GPU內存的一個重要原因。
GPU內存/總共可用GPU內存
這個問題太簡單了,它是上面兩項的和。對題主來說就是11GB+16GB=27GB,對於我寒酸的電腦來說,就是:1632MB+64MB= 1696MB。
結論
很多事情雖然看起來十分淺顯,但如果我們仔細檢視問題的方方面面,其實還是有許多有趣的知識值得我們去發現。
歡迎大家關注本專欄和用微信掃描下方二維碼加入微信公眾號"UEFIBlog",在那裡有最新的文章。同時歡迎大家給本專欄和公眾號投稿!
推薦閱讀: