什麼是Windows 10硬件加速GPU計劃?它有多大的用處?
在Windows 10 Version 2004中,開發團隊給系統新增了一個名為“硬件加速GPU計劃”的選項,它隱藏在“顯示設置-圖形設置”中,作為一個實驗性的選項提供。對於這個選項,微軟官方在之前並沒有做太多的解釋,我們也就是道聽途說認為它可以減低顯示延遲什麼什麼的。
在上個月末,終於有官方人員對這個選項進行了完整的解釋,本文就根據官方的這篇博文,講講這個全新的硬件加速GPU計劃選項的具體工作原理和作用,並整合了多家媒體的測試數據,看看它起的作用大小。
![](https://i0.wp.com/static.cnbetacdn.com/thumb/article/2020/0704/9b82997314e2356.png?w=640&ssl=1)
“硬件加速GPU計劃”
官方把Hardware-accelerated GPU scheduling這個詞翻譯成了硬件加速GPU計劃,實際上在這裡scheduling翻成“調度”能夠讓更多人明白它的意思,這也是比較有微軟風味的翻譯了。
回歸正題,要說到GPU調度管理,我們就先要了解一下WDDM GPU調度器是什麼。
WDDM GPU調度器與命令緩衝隊列
從NT 6開始,微軟給Windows引入了一套新的顯示驅動模型,也就是我們現在所熟知的Windows Display Driver Model,簡稱WDDM。在WDDM出現之前,應用程序可以直接把任務提交到GPU,當時系統只有一個全局的任務隊列,嚴格按照先到先執行的原則進行任務的調度。鑑於當時用到GPU的場景基本上就是全屏遊戲或者專業用途的渲染什麼的,這種方案也沒出什麼問題,被沿用了很多年。
到了應用程序開始普遍利用GPU加速的年代,比如說Windows要直接用GPU加速整個UI界面的渲染了,那麼再用這個全局任務隊列就會有問題,比如渲染系統界面的任務前面排了一個其他程序提交的任務,那麼GPU會先處理掉那個任務再回頭來處理系統的需求,這會造成整個系統UI的卡頓。為了妥善地安排GPU工作的優先級,勢必需要一個新的任務調度器,由它負責安排GPU任務的工作優先級。
那麼WDDM就引入了那麼一個任務調度器,它以高優先級線程的形式一直運行在CPU上,負責協調、優先處理和調度各種應用程序提交的工作。從Vista上面的WDDM 1.0到Windows 10 Version 2004的WDDM 2.7,官方一直都在加強這個調度器的功能。但這種管理方式存在有一定的限制,主要體現在提交會有額外開銷和任務達到GPU有一定的延遲時間,不過這些限制在實際中都被傳統圖形應用的渲染緩衝隊列給掩蓋了。緩衝用來存放提前準備好的渲染命令等等內容,在GPU渲染當前幀的時候,CPU已經在準備下一幀、下下幀乃至之後的更多幀數了。這種方式能夠保證CPU與GPU之間的良好執行並行性,也可降低整體的性能開銷,是現在很常見的GPU調用方式。同時為了降低頻率提交渲染命令帶來的額外性能開銷,一般應用程序會提前準備好多幀的內容一起發送到隊列中。這裡產生了問題,緩衝的幀數越多,用戶能夠感受到的延遲越高。
題外話,NVIDIA和AMD兩家在去年都已經在驅動層面提供了對緩衝隊列深度的控制,通過降低緩衝隊列的幀數來實現降低延遲這一目的。
但如果想減少緩衝隊列的深度來降低延遲,又會造成提交開銷增加,影響到性能。這兩者之間是一個權衡關係,程序可能以更高的頻率每次提交更少的幀數來降低延遲,又可能以較低的頻率每次提交更多的幀數來減少額外的調度、提交開銷。所以,微軟決定修改其顯示驅動模型的基礎架構,引入了“硬件加速GPU計劃”。
把任務調度交給專用硬件
Windows 10 Version 2004中引入的新選項就是允許系統將絕大多數的調度任務交由GPU專有的硬件調度器去做,Windows將繼續控製程序調用GPU的優先級,但高頻任務將會交由GPU的調度處理器進行管理,它負責各種GPU引擎的量子管理和上下文切換。
在NVIDIA的官方說法中,新的選項就是允許GPU直接管理它自有的內存,也就是顯存,在此之前,顯存是交給系統來管理的。
要啟用這個新調度方式有兩個先決條件,一個是需要硬件支持:它需要GPU自身有專有的處理調度任務的硬件模塊,另一個是驅動支持:系統需要一個符合WDDM 2.7標準的顯示驅動。當你的驅動和硬件都支持時,系統設置裡才會出現這一選項。另外,引入新的調度方式對驅動模型有一個重大且根本性的改變,在某些時候、某些場景下它可能會產生不可知的效果,因此微軟將其作為一個實驗性的選項,默認情況下是關閉掉的。目前開發團隊還在比較兩種調度器之間的性能差異,同時也在監控新調度器的可靠性,未來這個選項可能會在支持的硬件上變為默認開啟狀態。
目前支持這一特性的GPU有NVIDIA的Pascal GPU和Turing GPU、AMD的RDNA GPU,Intel那邊的情況不明。
實際測試:對高端平台影響不大
好了,說了那麼多,我們還是來看看這項功能在實際中的表現吧,我們找來了Tom’s Hardware和Wccftech兩家媒體的測試數據(以下圖片來自於Tom’s Hardware和Wccftech)。
![](https://i0.wp.com/static.cnbetacdn.com/article/2020/0704/9ce72834b7ee241.jpg?w=640&ssl=1)
![](https://i0.wp.com/static.cnbetacdn.com/article/2020/0704/6fc657ac0319d76.jpg?w=640&ssl=1)
![](https://i0.wp.com/static.cnbetacdn.com/article/2020/0704/8782fffb3f0bffa.jpg?w=640&ssl=1)
![](https://i0.wp.com/static.cnbetacdn.com/article/2020/0704/ee57cbc404999f3.jpg?w=640&ssl=1)
![](https://i0.wp.com/static.cnbetacdn.com/article/2020/0704/9a2b054c42a9f2e.jpg?w=640&ssl=1)
Tom’s Hardware這邊使用了三套測試平台,分別是Core i9-9900K+RTX 2080 Ti、Ryzen 9 3900X+RTX 2080 Ti和Core i9-9900K+GTX 1050。從五款遊戲的測試結果來看,基本上沒有用戶可感知的區別。
![](https://i0.wp.com/static.cnbetacdn.com/thumb/article/2020/0704/feae68ba87edee7.png?w=640&ssl=1)
![](https://i0.wp.com/static.cnbetacdn.com/thumb/article/2020/0704/eaaa5c9b160be06.png?w=640&ssl=1)
![](https://i0.wp.com/static.cnbetacdn.com/thumb/article/2020/0704/34e626da93b4f23.png?w=640&ssl=1)
Wccftech選擇了Core i9-9900K+RTX 2080 Ti/GTX 1650 SUPER這樣兩套平台,在RTX 2080 Ti上面啟用硬件調度的性能變化並不明顯,但是在GTX 1650 SUPER這樣一張主流級顯卡上面則是出現了明顯的提升。其原因,如果按照NVIDIA方面的說法來解釋,那就是由GPU直接管理顯存在效率上帶來了一定的提升。也許,這項功能會為很多主流級平台帶來可觀的免費性能增幅,而對高端平台來說,影響是微乎其微的。
總結:仍需時日完善的好技術
所以,“硬件加速GPU計劃”實質上是一項對Windows圖形架構影響較大的新技術,它需要新硬件和新驅動的支持才能夠實現,能夠為平台帶來一定的性能提升。但目前它仍然處於測試狀態,GPU廠對它的支持仍然算是剛剛可以用的狀態,還需要官方進一步的優化和完善它。這也是微軟為次世代圖形應用對系統做出的改變,為了盡可能的降低延遲,讓系統跟上時代的發展。它是一項好技術,但仍然還有很長的一段路要走。