Re: [情報] Windows 10將會使用新的DirectStorage API

作者: s25g5d4 (function(){})()   2020-09-04 14:08:22
來自微軟的部落格文章
https://devblogs.microsoft.com/directx/directstorage-is-coming-to-pc/
TL;DR:
1. 透過平行化與批次處理減少 IO 請求,進而減少多餘的請求成本
(提高 throughput)
2. 減少 IO 請求完成通知,避免浪費寶貴的 CPU/GPU time 在上面
3. 跳過非必要 IO 請求步驟以減少請求成本
4. 可能會有新的壓縮 / 解壓縮技術
5. 僅適用 NVMe,因為 NVMe 有特別的資料佇列
6. 明年推出預覽版
首段廢話我就不翻了
## 儲存科技進化與現代遊戲 IO 特徵
近年來 SSD 與 PCIe 科技的進步,或更精確的說 NVMe 科技,令個人電腦儲存裝置頻寬
遠超過舊時硬碟科技。比起過往的數十 MB/s,現代儲存裝置,例如即將到來的 Xbox
Series X 主機所採用之客製 NVMe,可以在一秒內傳輸數 GB 的資料。
電腦遊戲的運作機制也更進步了。現代遊戲載入所需的資料比起過往都來得多,載入的方
式也比以前更聰明。為了載入更大量的資料已填滿記憶體,這些讀取最佳化技巧是必要的
。現代遊戲將貼圖材質等遊戲資源分拆成小部分,過去曾採用的多量少次讀取機制,已被
當代主流的少量多次機制取代,僅載入繪製畫面所需的資源。這種方法可以帶來更佳的記
憶體使用效率,及更好的場景繪製,但也會產生更多的 IO 請求。
不幸的是,現代儲存介面並沒有針對如此高的 IO 數量最佳化,造成瓶頸而無法用光
NVMe 裝置所有的高頻寬,限制了現代遊戲的發展。即使採用再高級的遊戲主機與 NVMe
裝置,僅使用現有的介面也無法滿足所有 IO 管線而浪費了寶貴的頻寬。
這是為什麼我們將 DirectStorage 帶來個人電腦上。這項新技術便是針對現代越來越進
步的儲存科技與遊戲 IO 而來。DirectStorage 將會支援滿足特定條件的系統與 NVMe 裝
置,並將遊戲體驗提升至更高的境界。但即使你的系統不支援 DirectStorage,這並不會
令你無法進行遊戲。
## DirectStorage 將會如何改變我的遊戲體驗?
新介面將會帶來兩點主要特性:減少過往令人惱火的載入時間,並提升遊戲細節與廣度。
雖然兩項特性看起來天差地遠,兩者皆是受益於 DirectStorage 帶來的 IO 系統升級。
不管是角色服裝的貼圖材質,或是遠景的高山,皆與從儲存裝置載入資料至顯示卡息息相
關。前者可以在場景轉換間的載入時間讀取,而後者則是在開放世界遊戲中隨著角色人物
移動,隨著遠景變成近景而動態載入。
在上述兩種場景中,舊世代遊戲僅有 50 MB/s 左右的速度以載入連續不中斷的遊戲資源
,僅可達每秒百次、每次 64KB 的 IO 請求。若放到現今頻寬動輒數 GB 每秒的 NVMe 裝
置上,要完全用完可用頻寬,將會使 IO 數量爆增至每秒數萬次。以 Series X 的
2.4GB/s 儲存裝置來說,一樣使用 64KB 區塊大小,若要用完頻寬,必須處理每秒超過
35000 次的 IO 請求。
現有的介面令應用程式必須手動處理從發起、等待到結束的過程,且一次一個請求。每次
請求成本雖然不太大,對跑在慢速儲存裝置上的舊有遊戲來說不是問題,但當規模放大到
數萬次每秒時,過多的請求成本成為當代遊戲對 NVMe 裝置頻寬的使用瓶頸。
除了上述限制,這些儲存在裝置上的遊戲資源還處於壓縮狀態。當處理器或顯示卡需要這
些資源時,這些資源必須先被解壓縮才能使用。執行中的電腦遊戲可以從磁碟取得任意數
量的資料,但需要更有效率的解壓縮方法並傳輸到顯示卡以繪製畫面。DirectStore 可以
讓遊戲採用當代最新,及未來可能發展的解壓縮技術。
當一款遊戲需要載入並解壓縮數千區塊資料以繪製下個畫面時,現有每次一個請求的模型
是沒有效率的。DirectStorage 技術介面將改善上述問題,並最大化吞吐量以餵滿整個
NVMe 裝置所有 IO 管線,並直送至顯示卡。
DirectStorage 將採用下述方法:減少每個 NVMe 請求的成本、批次處理平行 IO 請求以
最佳化資料傳輸至顯示卡的效率、賦予遊戲更細微的控制粒度以掌控 IO 請求完成通知,
避免每次收到一點資料就必須響應通知。
透過這些方式,開發者將能夠以數倍於過往的超高效率處理 IO 請求,最終得以最小化遊
戲載入時間,帶給玩家隨著角色移動同時載入更大、更細緻的虛擬世界。
## 為什麼是 NVMe?
NVMe 裝置除了擁有極高的頻寬,獨有的硬體資料存取管線(NVMe 佇列)更特別適合遊戲
運作方式。為了從儲存裝置取得資料,作業系統向裝置送出請求,而請求的資料將透過此
佇列傳輸至應用程式中。每個 NVMe 裝置具有多個佇列,且每個佇列可以同時儲存多個請
求資料。這個模型完美符合現代遊戲載入資料的平行化、批次處理運作方式。
DirectStorage 作業模式本質上即是給予開發者直接控制這些高度最佳化裝置的能力。
在此之上,現有介面造成從應用程式發起請求、到儲存裝置處理完畢之間,多了不少多餘
的步驟,而產生不必要的請求成本。這些多餘的步驟包含了 IO 操作中間的各種資料變換
。但是,這些步驟不見得在每一個請求、每一個 NVMe 裝置、每個遊戲主機中都是必要的
。透過支援的 NVMe 裝置與配置正確的主機,DirectStorage 可以自動偵測並跳過這些非
必要的檢查與操作,使每個 IO 請求成本降低。
上述這些理由便是為何 NVMe 儲存科技是 DirectStorage 與新世代高效能遊戲 IO 最適
合的選擇。
## 什麼時候可以取得更近一步的細節?
每個的 DirectX 家族功能,微軟都會與最好的遊戲工業廠商探討並立下標準,讓遊戲開
發者得以取用,最終帶到玩家的遊戲主機中。
我們已經開始 DirectStorage 的開發程序,並與我們的產業夥伴合作以完成設計介面與
伴隨的組件。我們的目標是明年將 DirectStorage 開發者預覽版交至遊戲開發者手中。
作者: justin091136 (justin091136)   2020-09-04 14:12:00
學長安安 ><

Links booklink

Contact Us: admin [ a t ] ucptt.com