A system on a chip (SoC es-oh-SEE or sock) is an integrated circuit (also known as a "chip") that integrates all or most components of a computer or other electronic system. These components almost always include a central processing unit (CPU), memory, input/output ports and secondary storage, often alongside other components such as radio modems and a graphics processing unit (GPU) – all on a single substrate or microchip. It may contain digital, analog, mixed-signal, and often radio frequency signal processing functions (otherwise it is considered only an application processor) - Wikipedia.
SoC通过把整个(或大部分)系统功能集成到一个芯片上,实现全系统的PPA优化,提升效率,降低成本、功耗和系统尺寸。手机AP就是典型的SoC,已经发展到很高的技术水平,而苹果M1的出现,又让SoC得到更多关注。游戏主机芯片也是一类很有特色的SoC,之前讨论不多,本文将以Xbox主机为例分析一下其SoC需求挑战和实现方式。
结合游戏主机SoC的特色,本文首先从图形API出发,介绍图形API的管线结构和发展历史;接下来,介绍20世纪90年代后至今的微软公司几代Game Console主机的硬件架构和历史;最后,以Xbox Series X为例,介绍了游戏主机的Graphics IP和SOC系统实现。
从图形API到图形架构
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
Xbox系列历代主机硬件参数
从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系统(Xbox Series X)
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案例,非常值得分析和讨论。
参考文献
[1]https://docs.microsoft.com/en-us/windows/win32/direct3d12/pipelines-and-shaders-with-directx-12
[2]https://en.m.wikipedia.org/wiki/Xbox
[3]《游戏机实用技术》500vol.
[4]PaulPaternoster, Andy Maki, Andres Hernandez, Mark Grossman, Michael Lau,David Sutherland, Aditya Mathad, ISSCC2021, XBOX Series X: ANext-Generation Gaming Console SoC
关于壁仞科技研究院
壁仞科技研究院作为壁仞科技的前沿研究部门,旨在研究新型智能计算系统的关键技术,重点关注新型架构,先进编译技术和设计方法学,并将逐渐拓展研究方向,探索未来智能系统的各种可能。壁仞科技研究院秉持开放的原则,将积极投入各类产学研合作并参与开源社区的建设,为相关领域的技术进步做出自己的贡献。
扫码关注我们
继续阅读
阅读原文