前年的Computex展上,AMD曾經演示過一段畫面demo,對比Radeon RX 5700系列和英偉達的Geforce 2080 Ti,宣稱畫面與性能大勝。當時這個演示是引起了不小的爭議的,該場景表達的是帶寬對于游戲的影響。但實際上,在現實世界的游戲作品中,幾乎不存在這種類型的負載。事實真的如此嗎?
當時的這段演示,可能已經在預示“存儲”的未來,對于游戲行業接下來持續數十年的影響了。
似乎在當代PC領域,配SSD固態硬盤是個日常——都什么年代了,還談SSD固態硬盤是HDD機械硬盤的未來?PC游戲自然也應該在“享用”SSD帶來的速度優勢吧?
但在次世代游戲主機領域,高速SSD的采用算是個新鮮事,或者說至少以前SSD在游戲主機領域并不太受待見——索尼PS5和微軟Xbox Series X終于“不約而同”地用上了SSD,而且是NVMe SSD。因為事實上,對傳統生態的游戲主機而言,硬盤速度或許真的沒那么重要,容量才是關鍵。對于單游戲動輒10GB+的容量,以及游戲主機需考慮成本問題的現狀而言,開發者們總在想方設法降低硬盤性能對于實際游戲體驗的影響。
從最直接的角度來思考,換個SSD似乎也不是什么大不了的事情,不就讀寫快點兒嗎?快又能快到哪兒去?游戲里屏幕上需加載和待加載的元素,不都是放在RAM里面的嗎?換個SSD,游戲體驗就大不同了?
或許SSD在游戲主機上采用的開始,乃是改寫游戲行業歷史的序章。本文就從較淺層的技術角度來談談,SSD對于游戲界究竟產生了多大的影響。
換用SSD的PS和Xbox
從紙面數字來看,微軟Xbox Series X用了總容量1TB的NVMe SSD固態硬盤,順序讀取速度為2.4GB/s。這對SSD而言算不上什么驚艷數字;雖然已經比機械硬盤快10-20倍了,但在PC平臺也就是個入門水平。而索尼PS5的SSD總容量825GB,順序讀取速度5.5GB/s(PS4是50-100MB/s),接口PCIe 4.0 x4,通道數是12個——這就有點兒高端的意思了。
不過換用SSD究竟有什么用呢?5.5GB/s的順序讀取,在RAM速度面前,起碼有幾十倍甚至上百倍的差距。硬盤和內存介質仍然不是一個世界的東西,PS5不照樣配備16GB GDDR6嗎?
先來看看微軟這邊,微軟在Xbox存儲相關的技術表達上,引入了一種“Xbox Velocity Architecture”架構。這個市場宣傳詞,在微軟的定義下包含了4個組成部分,分別是SSD固態硬盤本身、壓縮引擎、用于訪問存儲的軟件API,以及名為Sampler Feedback Streaming的硬件特性(一種GPU特性,可提高紋理利用效率:哪些數據可以從RAM中移除,并判斷下一步要加載哪些數據到RAM)。
就Xbox Velocity Architecture的這幾個構成而言,很難看出什么爆炸性突破,至少就微軟公布的信息來看是如此。
虛幻5引擎演示的圖形計算畫面
索尼PS5相對復雜,去年索尼在介紹PS5時,花了1/3的時間專門介紹PS5的存儲系統。這表明SSD在PS5之上的分量不輕。去年EPIC在虛幻5引擎的技術演示中強調,演示中那些令人嘆為觀止的效果都需依賴PS5的高速SSD。雖說這其中多少有索尼和EPIC底層合作的成分在,但技術本身不應被輕易否定。有關PS5的SSD及相關的存儲架構,后文會詳述。
SSD的高帶寬,和數據壓縮
從直覺來看,換用SSD的最大價值,應該在于啟動游戲、加載場景會更快。這的確是這代游戲主機的提升所在。下面這張圖來自tom's GUIDE的PS5評測文章,是PS5與PS4兩代機型的不同游戲加載時間對比:
來源:tom's GUIDE
部分游戲的差異在這里還是相當顯著的。像《蜘蛛俠:邁爾斯·莫拉萊斯》這樣的游戲,“在home頁面選擇游戲,到角色出現在大街上開始打怪,幾乎是0時間差”。Android Authority在PS5體驗文章中提到,“所有PS5游戲的加載頁過渡時間都在10秒以下,更多的是在3-4秒”,甚至因為加載頁面時間過短,連頁面上的那些文字提示都看不全,“不過這也是值得的”。
索尼宣稱,2GB數據加載時間只需要0.27秒——在PS4時代,1GB數據從硬盤加載完成需要20秒。但如果只是游戲啟動、場景過渡加載時間變短,那么SSD實在沒什么可大書特書的。畢竟這本來就是SSD相比HDD的優勢,更不用說什么“革新”游戲行業。
GPU在數據吞吐方面的努力上一直沒停過。當代GPU越來越多的開始引入一些專用單元,比如Turing架構針對光線追蹤特別引入了RT核心與Tensor核心。在存儲架構方面,當代GPU普遍都有專門的數據壓縮單元。
數據壓縮的價值在于,將數據體積壓縮得更小之后(典型的比如紋理數據),再傳輸到內存或者cache之上,減少數據傳輸量,因此也就增大了帶寬。不過一般來說,數據解壓過程是需要CPU進行的,軟解的效率并不高。
Xbox Series X和PS5都在數據壓縮和解壓方面做了文章。SoC的I/O模塊部分都有專門的數據解壓縮硬件單元。實際上先前的游戲主機就有這樣的特性,只不過存儲介質不是以SSD的方式存在的。微軟著眼于紋理數據壓縮,因為紋理數據占到游戲數據讀取與解壓最大的比例,紋理壓縮算法名為BCPack。索尼除了Zlib之外,采用一種名為Kraken的格式。
索尼宣稱,其解壓縮硬件能夠將SSD之上5.5GB/s的數據流,解壓縮為8-9GB/s的數據。在壓縮效率最理想的情況下,理論最高輸出率是22GB/s。這個量級很大程度上也是基于其NVMe SSD。這樣的專用硬件,極大緩解了CPU的壓力。索尼宣稱,這種專用解壓單元,在解壓能力上相當于9個Zen 2處理器。
越來越多專用單元的出現,也是通用計算領域向前發展的一種共識了。而且索尼自PS3時代的CELL處理器開始,就有一個堅持:數據傳輸的高帶寬、低延遲,比處理器本身的算力重要。近代GPU的發展路徑里,這的確也是英偉達與AMD的共識;而從系統層面,將其擴展到外存,又是這一理念的延伸。
所以這有什么用?
說來說去,難道還是游戲啟動和場景加載更快而已嗎?PC界早就證明了,提升硬盤的速度并不會對游戲性能和體驗造成什么實質上的提升。畢竟從直覺上來看,存儲不能提升游戲畫質和幀率。一般游戲,玩家看到或即將看到的畫面資源都是放在RAM中的。
實際情況是,基于PC世界木桶短板原則,游戲開發者極大程度受制于PC大環境的平均配置,而想盡辦法從游戲開發層面,試圖向玩家隱藏存儲系統的短板。
但游戲主機有著相對單一的開發目標,硬件限制、開發環境都大致穩定。在主要游戲主機開始采用SSD之后,開發者們(或者生態)就該思考如何充分利用明顯更快速的存儲硬件了。所以前文也提到了微軟Xbox Velocity Architecture的新API。
索尼在這代主機上,雖然純看算力及RAM層面的效率是不及Xbox Series X的,但它針對SSD存儲的變革決心卻相當之大。PS5平臺之下新的I/O API,可讓開發者去利用新的SSD及存儲架構。
在新的開發生態中,文件名、路徑的概念不再,取而代之的是一種基于ID的系統——以最快的速度告訴系統從哪里去找數據。開發者只需要指定ID,開始位置、結束位置;整個IO流程一步完成,不需要應用去操心內存數據解壓、重新安置的問題。毫秒級延遲后,就能在單幀處理時間內請求獲取到數據——早年的HDD,這個流程需要耗時最多250ms。
去年3月份,PS5系統架構師Mark Cerny舉過一個例子。“某個敵人在游戲中死去時,會最后叫出聲,這種數據需要有高優先級來獲取。但可能因為流水線中其他的游戲與操作請求,數據仍要等250ms才能拿到。”“而死亡、哀嚎,是需要同步發生的。在PS4,同類問題就要求把大量數據都必須放到RAM上。”雖然個人覺得這個例子可能并不恰當,不過高速SSD的存在,某種程度轉移了RAM的負擔。
這種“轉移”可能體現在多個方面。比如說開放世界游戲,通常這種游戲需要限制玩家的移動速度,或者游戲環境沒有那么細致。因為RAM資源是有限的,游戲只能過著緊巴巴的日子,必要的資源才放進去。要是玩家移動太快、畫面太細致,資源都來不及加載。但在有了高速SSD(和對應的I/O架構)之后,開發者就得到了極大程度的自由。
這個自由當然不是說用SSD來替代RAM,而是體現在working set上——即每次有多少內存是真正當下就使用的(即現在就顯示在游戲畫面中的)。在高速SSD的加持下,游戲就沒那么迫切的要求去預取(prefetch)數據。
比如一個游戲中,相同房間內某個對象的貼圖,如果現在并不在游戲畫面內(不顯示在屏幕上,而是在屏幕之外),那么或許將其放到SSD上(而不是RAM上)問題也沒那么大,等到玩家視角開始向該對象的方向移動時,再加載也不遲。過去HDD時代是不能這么做的,通常整個房間、甚至相鄰房間的數據都必須放在RAM里,否則游戲體驗就是悲劇。
有了SSD,一部分RAM就能釋放出來,這些RAM可用于存放更高品質的資源,屏幕上顯示的當前畫面也能夠更好。或者應該是“變革”的核心所在。Mark Cerny提到,游戲只需要大約提前1秒做預取工作(而不是PS4時代的30秒),這是高帶寬、低延遲SSD能夠帶來的重要價值。
Mark Cerny原話說:“玩家在游戲中轉個身,SSD如果足夠快,快到立馬就可加載紋理如何?如果轉身0.5秒,也就是加載4GB的壓縮數據。”這可能是虛幻5引擎演示基于PS5的某種依據,也會成為革新游戲主機平臺游戲開發的開始。
SSD給游戲機帶來的其他變化
以前的很多游戲,開發者為了解決慢速存儲的限制問題,通常會采用很多策略。比如說場景間過渡,搞個樓層間電梯:玩家在乘坐電梯的時候,實際上就是數據在忙碌加載的過程;再比如在某些過渡場景,限制玩家視野(比如搞個狹窄的山洞或通道)。將來,這些可能都不再需要了。
前面這些至少對于游戲玩家而言,是能夠看得見、摸得著(可能摸不著)的革新,包括游戲啟動、畫面加載時間顯著縮短,游戲畫面可以更細致,對玩家的限制更少,甚至可能帶來更多的玩法。比如說開放世界中,更快的競速游戲體驗;或者從天文星球級別,可將畫面無縫、快速放大至分子級別;以及更多現在我們暫時沒想到的游戲方式。
高速SSD及周邊存儲與I/O架構還帶來了一些相對隱性的價值。比如說游戲體積可以做得更小。游戲主機的HDD時代,開發者為了減小硬盤尋道時間帶來的影響,某一個場景顯示所需的數據,通常都會存儲在連續的硬盤塊區域上,這樣就能減少數據尋道操作了。
不過某些對象可能會在不同的場景里反復出現,那么這些對象就會重復存儲在各種連續的硬盤塊區域。除了貼圖,也包括聲音、模型等——這叫duplication。比如城市場景中的垃圾袋,可能1.6MB空間占用,如果一個城市里600個街區都有這么個垃圾袋,那就比較悲劇了。游戲在硬盤中所占的空間就會很大。某些游戲開發者對此當然有緩解方案,比如《蜘蛛俠》,不過是以RAM用量為代價的。
高速SSD存在以后,duplication就很大程度上不怎么需要了。SSD帶來的同類價值還有比如說,HDD存在“碎片化”問題,早年Windows就有“整理硬盤碎片”這種功能;在SSD之下,開發者不需要在意數據的物理空間問題,游戲不需要在更新過后進行這種操作。還有包括游戲保存操作,可快速完成游戲進度的大批量數據的存儲,關機前也不用等待了。
只是以上這些“隱性”提升,PC游戲玩家應該早就享受到了,所以它們實在算不上“革命”性,對游戲體驗的影響也都不大。
推及整個游戲行業
索尼和微軟在游戲主機與平臺的締造理念上差別還是比較大的。微軟更多在想的是與PC平臺劃一,而索尼則期望引導開發者走他們設想中的路子。起碼在這代游戲機上,索尼對存儲系統投入的精力是顯著大于微軟的,也希望開發者未來能夠充分利用高速SSD。
這種思路對于整個游戲行業,包括PC游戲,開發方式的轉變會是顯著的。雖然微軟沒有過多透露Xbox Series X的存儲系統相關信息,但微軟有計劃將DirectStorage API帶到Windows平臺。
另一方面,AMD作為跨游戲主機和PC兩個平臺的芯片制造商,也切切實實影響到了未來這兩個平臺的游戲相關硬件技術走向——SSD在游戲上發揮作用與AMD也有很大關系,這一點將在本文的擴展閱讀中提到。如此一來,SSD本身可能才真正開始逐步惠及整個游戲市場,而不只是一些不痛不癢的小變化。更多充分利用SSD特性的開發成果也才會出現。
當然游戲主機換用高速讀取SSD也帶來了一些問題。其中最大的問題恐怕在于,825GB的容量有些捉急,實際可用空間667GiB左右。當游戲以百GB級別存在時,這點容量實在不夠看。索尼去年雖有提到可支持擴展三方SSD,不過現有PC級別的M.2 PCIe 4.0固態硬盤是真的不便宜,而且還必須夠上PS5原硬盤5.5GB/s的規格。索尼似乎到現在也沒有公布支持擴容的第三方SSD究竟有哪些。
與此同時,從索尼的介紹來看,與其高速SSD相關的存儲I/O架構還挺復雜,起碼其定制化程度尤甚。比如說為了減少延遲,索尼針對SSD的I/O命令,搞了一套6種優先級的定制化特性,而NVMe標準本身的優先級特性沒這么多。索尼的定制I/O單元雖然可以處理這個問題,但需要額外的開銷。
不過總得來說,這些在開發變遷的過程中,始終都算是小問題。無論如何,未來主機游戲,乃至PC游戲的走向大約都將因SSD產生真正的變化,這是以前PC廣泛應用SSD未能達到的。有關PS5的I/O架構,歡迎點擊查看原文,閱讀本文的網頁完整版了解更多。