
Game Console主要有兩個大的部分組成,一個是Graphics IP,一個是整個遊戲系統的搭建。
圖形API
Graphics IP需要符合相關的程式設計規範要求,通常的程式設計介面有DirectX,OpenGL等。DirectX有多個元件,我們這指的是圖形學相關的Direct3D的部分。下面簡單列舉了DirectX中圖形部分的發展歷程。
-
DirectX 1(1995年)二維(2D)影像加速。
-
DirectX 2(1996年) 二維圖形增加動態效果,採用平滑模擬和RGB模擬兩種方式對三維圖形進行加速。 -
DirectX 3(1997年) 實現較為簡單的3D效果。 -
DirectX 5(1997年) 霧化效果、alpha混合、紋理壓縮。 -
DirectX 6(1998年) 增加雙線性過濾、三線性過濾等最佳化3D影像質量的技術。 -
DirectX 7(1999年) 加入了座標轉換和光源渲染。 -
DirectX 8(2000年) 引入pixel shader和vertex shader,可程式設計渲染單元。 -
DirectX 9(2002年) Shader model 2.0/3.0,強化了可程式設計部分設計。 -
DirectX 10(2007年) Shader model 4.0, 定義了Unified shader,Geometry shader。 -
DirectX 11(2009年) 引入tessellation/multi-threading/direct compute/shader model 5.0。 -
DirectX 12(2014年) 更底層的API,硬體抽象,提高多執行緒效率等改進。
Direct3D12的圖形管線結構圖

Figure 1 DirectX 12 管線結構圖[1]
上圖是DirectX的邏輯管線結構圖,包含了整個過程中的輸入和輸出的resource view,root signature data,紫色和藍色的部分是主要的流程stage,其中硬體架構實現上分為shader和fixed-function兩種處理型別。其中shader主要在可程式設計單元執行,而fixed-function主要是採用固定管線pipeline設計。
-
Input assembler(fixed function unit)負責讀取索引和vertex資料。
-
Vertex shader 輸入為vertex,輸出為vertex,主要負責頂點渲染。 -
Hull shader 輸入為patch primitive,輸出為patch control points和patch constant。 -
Tessellator(fixed function unit) 曲面細分單元。為線段和三角形創造新的頂點和連線。 -
Domain shader 拿到HS渲染過的control points和patch constant,以及曲面細分後的位置資訊,將他們變成頂點。 -
Stream out(fixed function unit) 將Geometry的輸出的primitive寫入記憶體buffer。 -
Geometry shader 輸入是各種primitive和鄰接資訊,輸出不同的primitive。 -
Rasterizer(fixed function unit) 光柵化單元,將primitive轉換為pixel或者sample的過程。 -
Pixel shader 負責畫素渲染,輸入為插值後的頂點資料,輸出為畫素顏色。 -
Output merger(fixed function unit) ROP(render output unit),負責depth-testing,frame buffer blending
從2001年第一代Xbox算起,今年微軟Xbox系列主機已經過了20個年頭,一共發表過4代主要的機型,其主要機型的硬體效能引數如下:

Xbox系列主機硬體引數表[2][3]
Xbox
Xbox是微軟進入TV遊戲主機領域的第一款產品,由Bill Gates親自領導打造,Xbox的研發代號為“Midway”,二戰期間,美軍曾在中途島戰役中一舉擊沉日軍4艘航空母艦,從而扭轉了太平洋戰爭的局勢。代號暗示了微軟與當時強大的日本遊戲主機產業對抗的決心。此時的TV遊戲主機領域,日本人擁有強大的產業,Sony的第一代PlayStation銷量超過1億臺,然而6年未更新的主機效能嚴重落後PC硬體的發展,微軟想搶在Sony前面釋出新一代主機,搶佔先機。
微軟不惜血本的定義了Xbox的硬體效能,Xbox是那個世代最好的主機硬體,之後微軟不斷投入,導致虧損超過40億美元。在爭奪第三方軟體廠商方面,微軟也不惜採用補貼開發資金和包攬廣告費等非常規手段。遊戲主機市場變成了微軟、索尼、任天堂三足鼎立之勢。
Xbox 360
Xbox 360的推出比PS3整整早了一年。當時的半導體發展速度甚至超越了摩爾定律,2005年,Intel公司已經推出了雙核3.6GHz的PentiumD 9xx系列處理器,因此,Xbox360的處理器頻率直接比前代Xbox翻了4倍以上。此外,圖形API的發展也突飛猛進,DirectX8.0中引入vertex shader和pixel shader使得3D渲染使得遊戲顯示效果大幅提升,3D遊戲爆發式增加。但急於搶佔市場先機的微軟未把握好產品質量,產品推出之後1年,三紅事件集中爆發(主機電源按鈕指示燈亮起3個紅燈),微軟並未公佈三紅的原因,但大多數情況系統處於高負載狀態,三紅事件使得遊戲玩家體驗不佳,微軟信譽受損。
Xbox One
在經歷了Xbox360的三紅事件後,微軟將系統的穩定性放在了重要位置,決定採用半定製的方式和AMD開發新一代的Xbox產品,Xbox One的SOC使用了AMD的處理器核心和graphics IP為基礎搭建。因此在遊戲開發方面,Xbox One也可以利用已有的PC軟體棧進行遊戲設計。不過定製晶片也導致了Xbox One的高成本,高達499美元的發售價格比PS4貴了整整100美元。後續微軟還推出了兩款改良機型Xbox One S(2016.8)和Xbox One X(2017.11),以增強圖形效能和支援4K/60fps。
Xbox Series X
從Xbox one到Series X的3年裡,工藝從28nm進化到7nm,頻率並沒有多大的提高,但是電晶體密度的增加使得儲存和運算都進行的大幅提升,圖形處理技術也有了不少突破,包括DLSS,Ray-tracing等新的渲染方式加入。和AMD合作多年後,微軟也組建了自己晶片的研發團隊,但是大部分的IP還是由AMD提供,包括核心的顯示處理和CPU部分。CPU使用的Zen2是由AMD的明星架構師Jim keller領導開發的Zen的第二代產品。GPU也是基於定製的AMD RDNA2的架構。
Game console的圖形效能主要取決於CPU、Graphics IP和獨立視訊記憶體的效能,遊戲console的SOC在幾乎和PC相同的功耗下,需要提供更好的遊戲效能,更小的機箱尺寸,更小更靜音的風扇設計,因此需要更多創新的設計來保證系統工作的穩定性。這裡我們以Xbox Series X為例,分析一個game console的系統組成。
下面是Xbox Series X的SOC結構框圖。

Figure 2 Xbox Series X SOC架構圖[4]
CPU部分包括2個zen2 core組,每個組裡面4個core,每個core有512KB的L2 cache,每個組有4MB的L3 cache,每個core裡面有2個256b的SIMD浮點處理單元。
GPU基於AMD RDNA架構定製,一共12Tflops的浮點處理能力,支援可變速率渲染,光線追蹤,部分駐存紋理,一共2個shader engine,每個shader engine裡面2個shader assembly block,每個shader assembly block裡面7個workgroup processor(WGP),一共有28個work-group processor。裡面還包含了一些專用圖形fixed-pipeline單元,color/depth,Raster,Prim,shaderInput,Geometry,以及一些系統模組,如command processor,GDS,DMA,display。Graphics IP裡面採用了4級的儲存結構,L0$ – L1$ – L2$ – GDDR。另外,每個shader engine中有一個WGP(灰色)用於harvest來最佳化產品的yield。

Figure 3 Xbox Series X 圖形處理IP架構圖[4]
互聯和IO部分,Xbox Series X使用了3個Hub分別用於媒體、系統、IO處理,L2 cache和GDDR之間採用了scalable data fabric,一共20個channel。I/O則採用了8lane的PCIE4和HDMI2.1。
片外GDDR6記憶體一共16GB,其中10GB提供560GB/s的頻寬,其中6GB提供336GB/S的頻寬。
多媒體部分,支援4個顯示器輸出,影片編解碼器提供4K/8K的AVC,HEVC/VP9 HDR 解碼,AVC/HDR編碼。另外還有一個聲音處理器單元。
安全部分,片上有一個hardware security processor負責整體的安全方案,mediastreaming platform(MSP)負責遊戲的加解密版權和壓縮方案。
總體上,Xbox Series X 提供了Xbox One X 2倍的GPU效能,2.4倍的GPU perf/w, 3倍的CPU效能,1.7倍的記憶體頻寬,2倍的IO頻寬。

Figure 4 Xbox Series X 塔形機箱內部構造圖[4]
Xbox Series X的機箱比傳統的遊戲機箱小了20%,為了滿足功耗和散熱需求,Xbox工程師進行了多種策略來處理散熱問題,上圖是整體塔形機箱的設計,按機箱的擺放方向,最上層是光碟機和PSU電源模組,下面是南橋的PCB,再下面是中央底座,下方是SOC的PCB,風扇處於南橋和SOC PCB之間,最下面是heat sink。SOC的PCB也分成了2面,上下層分佈不同的晶片便於分開散熱。
另外,SOC晶片功耗管理設計方面,Xbox Series X也有很多創新的設計:
-
PSM (power supply monitor)使用片上的電壓monitor來穩定電壓。
-
DLDO (digital low dropout regulator) 每個CPU core提供不同的工作電壓。 -
Fine Grained DVFS (dynamic voltage frequency scaling) 最佳化voltage和frequency的曲線,在同樣的頻率下能夠使用更小的電壓。 -
CLDO (chip low dropout regulator) 每個chip使用不同的的電壓,減少CPUL2/L3的power消耗。 -
DC-BTC (direct current – boot time calibration) 對DC電壓調節器的耐受和老化進行標定來減少電壓。 -
Process re-centering 調整半導體制程工藝(Vt,ldsat)來最佳化功耗和效能。 -
Vmin search 使得每個chip高負載場景下有不同的電壓最小值。 -
Power states 為不同的工作場景設定多個GPU/CPU/fabric/memory的power state,從而節約功耗。 -
Configurable GPU WGP setting 提供不同場景下yield和power之間的tradeoff
微軟花費了數百億美金進入TV遊戲產業,從軟硬體出發,打造了4代game console後,已經站穩腳根。打造一臺跨越數年生命週期,效能穩定優秀,並且軟體容易開發,移植相對容易的game console主機是一件很不容易的事情。核心SoC在遊戲主機中起到的關鍵的作用,也是非常典型的定製SoC案例,非常值得分析和討論。

壁仞科技研究院作為壁仞科技的前沿研究部門,旨在研究新型智慧計算系統的關鍵技術,重點關注新型架構,先進編譯技術和設計方法學,並將逐漸拓展研究方向,探索未來智慧系統的各種可能。壁仞科技研究院秉持開放的原則,將積極投入各類產學研合作並參與開源社群的建設,為相關領域的技術進步做出自己的貢獻。


關鍵詞
系統
架構
效能
主機
微軟