XBOX ONE性能到底如何来看开发人员怎么说

2014-09-19 21:06:13 来源:TGBUS 作者:未知 编辑:FoxJR 浏览:loading

  离次时代主机发售只有两个月的时间了,在游戏还没有发售的现在想必很多人都已经对于哪台主机更厉害有自己的想法。单单靠比较图像和内存带宽规格可以看出PS4完胜Xbox One,直接甩掉几条街,让人觉得把两台主机摆一块比较各自优点就是一个笑话。两台主机核心都使用同样的AMD技术,PS4的内存和GPU更强,但是事情就是简简单单看起来这样么?

  自打有不知名的人说PS4要比他的对手Xbox One强大很多,微软就一直想把事情说明白了。上周二Digital Foundry在电话会议上和两位Xbox One项目的主要技术人员聊了聊,这两位工程师都一直想有这么一个机会来在深层的技术层面把事情摊开了说说。谈话刚开始不久,这次谈话的主题就确定了:平衡。

Xbox One 的设计原则

  微软的一位技术人员Andrew Goosen说:“设计一台平衡的主机要考虑软硬件的所有方面,只有把两者结合得平衡才能得到完美的表现。非常高兴能有这次机会和你说说设计问题。现在外面有很多错误的消息,很多人都没有真正明白,我们对自己的设计很有信心。我们认为我们设计的主机非常平衡,性能非常好。我们开发出的东西除了单单处理 GPU 的算术逻辑,还能处理其他的东西。另外我们注意其他的一些设计方面和需求,例如延迟、帧数稳定性、游戏防止被操作系统干扰等。你会看到在系统设计中到处都贯彻着这个主题。

游民星空

  硬件架构团队经理Nick Baker补充:“Andrew说的很好,我们的确想做出一台高性能、高效率的游戏机。新的主机要和现代的起居室风格相容,只有我们把主机做成了一个多媒体硬件,而这个多媒体硬件就是你家的娱乐中心。”

Xbox One的内存方案

  我们已经看到Xbox One界面和媒体功能都非常强大,但是重中之重还是游戏,毕竟它是台游戏机。关于 Xbox One主要有两个争论的地方。第一个是硬件没有PS4强大,内存和GPU相比之下较弱。两台主机的系统都有8GB的内存,索尼选择了速度更快的、峰值带宽176GB/s 的但是高延迟的 GDDR5,而微软选择了峰值带宽只有68GB/s但是延迟小的DDR3,相比之下差多了。但是这可以通过ESRAM(增强静态随机存储器)来弥补,带宽峰值可以达到204GB/s。理论上来说虽然两台主机分配资源的方法是影响主机的一个因素,但是Xbox One 很明显能够保证系统内足够的带宽。

  在我们拿到最终硬件之前,现在只能看看WIRED得到的内部样机的照片。挑事儿的人可能就抓住GPU 这个话题:微软不会再添加额外的处理单元了。Xbox One的主要系统都在右边的那个芯片上,周围是2.13 GHz 频率的DDR3模组。

  内存管理就是这两台主机的明显区别。那么可能有人就说这只要讨论一下GDDR5是不是最好的就行了,微软为什么不选择GDDR5?财大气粗的微软明显可以承担使用GDDR5的费用,为什么不?是不是从一开始 GDDR5的高带宽就不在微软的考虑范围内?如果真是这样为什么呢?

  Nick Baker 回应:“的确是这样,为了要使内存容量、功耗等达到最好的性能组合,GDDR5的确有些地方不适合。而ESRAM就可以有很小的功耗就可能达到很高的带宽。你可以减小外部内存的带宽,这样就可以节省很多功耗,而且现在内存相对便宜,可以增加数量。其实背后就是这么一个道理,如果想要大的内存容量,大带宽的同时还想有较低的功耗,基本上方法很少”

集成系统带宽的争论

  Baker非常想纠正大家的一个错误观点:微软团队的设计不能同时访问ESRAM以及DDR3内存池。批评家们说Xbox团队只是把可用的内存带宽都简单算术加在一起来让自己的图表看起来内存很多,但是事实上根本达不到。

  Baker 告诉我们:“你可以认为ESRAM和DDR3组成了八个内存控制器,其中四个64位外部内存控制器控制DDR3,另外四个256位内部内存控制器控制ESRAM。这些控制器都通过横跨电路来连接,所以可以直接同时访问ESRAM和DDR3。”

  关于ESRAM的争论让设计团队很吃惊。有人还说在Xbox One上不好进行开发,还不如自己的上一代 Xbox 360。众所周知Xbox 360 一直对开发者非常友好。Andrew Goosen 说到:“这些说法让我很吃惊,特别是把ESRAM看成是eDRAM的进化产物的时候。没有谁会问开发者是否可以在Xbox 360上同时获取eDRAM 和系统内存的带宽,因为本身设计的就是这样。在系统内存和eDRAM 中的渲染目标缓存、色彩缓存、深度缓存和模版缓存共同作用的时候,我们必须把系统内存中所有的顶点缓存和材质都搁置在一边。Xbox One上我们也使用同样的原理让ESRAM工作。这是Xbox 360的完美进化,能够让我们突破原来eDRAM上很多局限。”

  “Xbox 360是最容易进行开发的平台,eDRAM对于开发者们不是很难,但是有时候开发者会说:天啊,如果整个渲染目标都不在eDRAM上该多好。所以我们在Xbox One上修复这这点,我们可以在ESRAM和 DDR3之间游刃有余,ESRAM完全整合到了地址列表,开发者可以自由调配。在我看来这是很大的进步,在 Xbox 360基础上很大的进步。我自己都非常吃惊”

ESRAM和DDR3内存池的结合度

  目前ESRAM和DDR3内存池的结合度要比之前很多人想的都要灵活。很多人认为32MB ESRAM是渲染目标的限制,那么开发者们真能像Goosen说的那样灵活地进行开发么?

  “当然可以。举个例子来说,如果你在做一个赛车游戏,天空的渲染上有一些透支,那么你就可以把这些资源分配到DDR3去做,来提高ESRAM的优化。除此之外还采用了一些自定义格式来更加优化 ESRAM。”

  “在GPU上我们增加了一些压缩的渲染目标格式,比如像6e4(6bit来表示尾数,4bit来表示指数)和7e3 HDR浮点格式,这两个格式在Xbox 360上非常流行,利用这些格式可以让一个需要每元件16bit浮点的 64bpp 目标渲染在32bit就可以完成,我们在让ESRAM效率最大化和优化上做了很多事情。”

Xbox One的附加处理器和音频块

  微软在最近的Hot Chip 25会议上关于Xbox One处理器的展示表明现在板载了15个处理器。对此我们很好奇。

  Nick Baker 说:“在系统芯片上有很多平行引擎,有些就像CPU 核心或者数字信号处理核心。这 15 个处理器有8个处理音频、4个移动引擎 (Move Engine)、1个视频编码、1个视频解码、1个用来视频排序和调整大小。”

  “音频块非常独特,由微软团队独立设计。音频块由四个tensilica数字信号处理核心和多个可编程处理引擎组成。我们把他们分成了一个核心用来控制、两个用来音频矢量编码,剩下一个用来通用数字信号处理。同时我们在上面使用了采样率转换、滤波、混音、均衡、动态域补偿和XMA音频模块。目的就是为了同时处理512个游戏语音以及Kinect的语音预处理。”

  那么在跨平台游戏上这样的硬件有什么优化效果呢?Andrew Goosen 回答:“说白了设计了这么多就是为了把很多工作都推到系统上,而不是让游戏开发者本身去花心思解决。我们始终都记得这些都是为了游戏本身。”“我们把语音识别模式放在了系统预留里,而在其他平台上开发者们必须把相应的功能变成代码后连接起来,这个过程是要付费的。我们的 Kinect 以及大部分用户界面特性都免费提供给开发者,游戏 DVR 功能也是。”

零售机上 ESRAM 带宽如何翻倍

  对于ESRAM的带宽如何从最开始的102GB/s 到现在的204GB/s,很多人都报有怀疑的态度。起先我们是在4月份一个开发者的博客上讨论这个事情的。批评家们说这数字根本到不了。那到底这么大的带宽提升怎么来的呢?Baker 解释:“当我们开始设计的时候,我们首先制定了一个规格。在部署细节之前,必须给开发者一个概况来让他们进行初步的规划和设计。在送交成产前的虚拟运算阶段,我们设计的 ESRAM 的最小带宽是102GB/s。后来由于GPU的速度的提升上升到了109GB/s。在最后的细节设计阶段,我们发现我们可以让带宽更高。

  这个阶段最大的启发就是ESRAM可以同时进行读写,这让我们很高兴。外界有些人仅仅基于泄露的白皮书上信息就认为这根本不可能。有两个8MB的通道,每个通道的 8MB 容量并不是内存块简单地依次排列在一起,而是分散成为8个模块,这就是为什么可以同时进行读写。”

  “当然可以同时进行读写,整个 ESRAM 由多个独立的块组成,你可以同时访问。如果多次访问同一区域,你不必加大带宽,这就是为什么在实际测试中得到的带宽值为140-150GB/s,而不是204GB/s。ESRAM 不是四块8M 内存简单地排在一起。其工作起来很复杂,取决于你如何同时进行访问。他们会引导你访问主内存。你根本就不用为了增加读写带宽来增加主内存的读写带宽。”

  Goosens 还说:“如果你只是进行读取操作,那么带宽封顶是109GB/s,如果单独进行写操作也一样。如果要克服这点你必须读写混合,听起来挺局限,但是当你看看ESRAM 的工作方式就不会这么想了,ESRAM 的渲染目标和深度缓存本身在工作时就会有混合的读修改的写操作,深度缓存也是。这些都是天然存在在 ESRAM 身上,所以利用同时读写的优势很容易。”

  说到现在微软的解释很直白了,理论上Xbox One具有的200GB/s 实时带宽超越了PS4 的176GB/s 带宽输出。剩下的问题就是只有32MB容量但是更快的ESRAM的通道资源对开发者们意味着什么。微软的看法是游戏开发者们对Xbox 360主机的eDRAM 已经有很丰富的经验,ESRAM只是它的进化而已。

GPU 计算单元

  内存带宽只是一个方面,但是图像处理能力完全是另外一回事。PS4 的板载GPU 计算单元看起来更加强大,让PS4的整体规格都提升了很多。在说微软的次时代主机明显的GPU弱势之前,Andrew Goosen第一次确认:Xbox One和PS4的图像技术都源自AMD Sea Island(海岛)显卡家族。

  “像其他主机一样,我们都是基于Sea Island 显卡,我们在这方面的很多部分都进行了很多改变。大家会可能谈到计算单元数量的问题,就好:嘿,我们再加多点计算单元,再加多点计算浮点数,这样我们就能赢了!我对此的看法是:当你买一个显卡的时候,你会看显卡的规格还是运行一些基准程序来看看实际表现?”

  “现在我们还没有什么游戏发售,当你看到实际的游戏的时候你会说:这没什么分别嘛。游戏就是测试的标杆。我们在 Xbox One 上进行了很多平衡性的测试。平衡性对于游戏主机的表现非常重要。谁都不想让一个技术的瓶颈成为降低整个主机性能的短板。”

ESRAM的带宽如何计算的

  次时代主机内存带宽这些日子谁都在讨论,GDDR5的吞吐量大家都知道,ESRAM是一个完全不同的东西,特别是在微软大幅度修改了Xbox One主机带宽之后,看来有必要让技术团队来展示一下计算的结果。Nick Baker对于带宽计算是这么说的:

  ESRAM有四个内存控制器,每个通道都是256bit,这样总共在每个方向就是1024bit。1024bit 来进行写操作能给你最大109GB/s的带宽,读操作的通道是独立分开的,峰值也可以达到109GB/s。那么用计算外部内存的方法来计算ESRAM 的带宽是多少呢?DDR3 上用接口比特数乘以速度就可以得到为68GB/s,那么这种计算方法用在ESRAM上就可以得到218GB/s。但是就像主内存一样,很少能够长时间保持这个峰值,基本上每个外部内存接口可以达到最大值70-80%的效率。

  在Hot Chip会议上说到的204GB/s 的带宽是由于考虑到了已知的ESRAM的逻辑限制。你不能每个周期都在保持写操作。Cycle有时候不能被写操作利用,从而在连续写操作中形成一个气泡。每8个周期中的一个就是一个气泡,由于这个原因就就计算出ESRAM 的峰值为204GB/s。在实际的应用可以达到140-150GB/s的带宽。

  这些都是实际代码运算的结果,不是估计或者虚拟出来的。实际代码运算的时候就能够达到那个带宽。外部内存可能达到50-55GB/s的带宽,加起来整个内部和主内存之间就能够有200GB/s左右的带宽。

  140-150GB/s 的带宽是ESRAM的一个实际带宽,然后可以直接把DDR3的带宽进行相加么?当然可以,这都是经过测量的。

调整Xbox One的平衡性和性能

  微软其实知道还有一些性能的提升空间,但是现在就开始生产了。Goosen 把这个称作为“时刻在调整的系统”。在制作的游戏可以用来决定如何利用这些可用的提升空间。平衡性对于实际效果表现非常重要。这点在 Xbox One 的身上体现得很好。Nick 的团队做出了一个我们可以检测平衡性并进行相对的调整的系统。

  Goosen 说:“几年前我们就完成了所有的分析和模拟运算,那时候我们还根本看不见可以进行用来优化的游戏的影子,现在我们还在不停的问自己是否做出了正确的关于平衡性的决定,于是现在提升GPU的时钟就是一个调整平衡性的结果。”

  Nick 说:“我们知道我们还有提升的空间,但是在有真正的游戏之前我们不知道该做什么,该提升GPU 多少?改提升CPU多少?在主机发售之前能意识到我们还有提升的空间是很自豪的事,通常情况下应该都在讨论如何降频,我们得到了这么一次机会可以找到我们想进行优化的地方并优化它,对于首发游戏来说能利用这些已知的提升空间进行优化太美妙不过了,Xbox One的硬件上其实还有额外的计算单元。这个冗余的硬件(零售机上两个计算单元没有使用)可以让我们来调整计算频率和时钟频率支架的关系。”

  Goosen 说:“每台Xbox One的开发机都有14个计算单元,其中两个在零售机上保留了,但是我们可以进行一些测试,如果14个都都使用那么比用12个好么?如果提升 GPU 的始终频率的话我们会得到什么样的效果?在一些游戏上深度进行测试了之后,我们发现使用14个计算单元的效果没有把时钟频率提升6.6好。”

  如果在表面简单算一下可能不是这样,但是我们经过最近的分析发现 AMD 的计算单元能力不是线性增长的,有效果递减效应。

  “谁都知道使用14个计算单元将会有将近17% 的性能提升,但是在一些实际的游戏的效果来看,还是提升时钟频率比较好。如果你的设计平衡性不好,通道中有很多瓶颈会让你达不到预期的效果。”

  “提升频率影响整个GPU,增加计算单元会提升着色器和算术逻辑单元的能力。调整了时钟后,我们不仅提升了算术逻辑单元的恩呢管理,还增加了顶点速率,增加了色素率和ESRAM的带宽。除此之外还增加了一些瓶颈区域的性能,例如通道内的绘制调用,GPR池中读取 GPR的能力等。GPU非常复杂,通道中会有数不清的区域会成为你的瓶颈。”

GPU的计算能力和CPU 的重要性

  Goosen 说自己相信泄露的索尼文档证实了微软的观点:“索尼在这方面和我们的意见是一直的,他们说他们的系统有14个计算单元很平衡。他们也用了这么一个词:平衡。平衡对于实际效果非常重要。他们多出来的4个计算单元对额外的 GPGPU 非常有益。我们却用了完全不同的方法。实验表明我们在计算单元上也有提升的空间:为了达到平衡性,我们使用了所需更多的计算单元。Xbox One上的游戏随着计算单元优化会越来越出色。”

  微软的异步 GPU 计算和索尼的有些不同,以后会谈到这个。他们认为CPU和GPU在访问内存的时候都需要延迟足够小,而不是主要注意力都放在计算能力本身。Goosen 拿 Kinect 的骨骼追踪系统来作为例子来说明这点:“那个模型不需要很多算术逻辑单元,但是和内存获取的延迟有关,内存系统对一些特定的 GPGPU负载更加重要。”

  微软团队还特别强调150MHz 的CPU时钟提升达到的效果比大多数人想的多得多:“导致我们帧数下降的主要来源是CPU,而不是GPU,有些游戏掉帧很严重因为他们的核心线程和CPU关系很紧密。(DDR3?)。通过提升了时钟效率解决了这个问题,稳定了帧数。”

  这就解释了为什么很多自制的硬件块(数据移动引擎)设计用来释放CPU的时间。这才是真正的问题,而这个问题通过增加时钟速度和功能模块之间的组合得到解决,这个功能模块就是Xbox One处理器内嵌的额外的处理器。

  “运行中有很多CPU卸载在进行,我们有了SHAPE(和标准设计相关的更加有效率的命令处理器)和时钟速度提升,这就保证了我们在帧数上还有提升的空间。“ Goosen 说。

  “想象一下你已经在ESRAM渲染到了深度缓存,现在你要切换到另外一个深度缓存。你可能想把已经完成的材质拉到DDR里以备后用,因为不会对这个材质有很多读操作,放在DDR里更加合理。你可以使用数据移动引擎(DMA)来和GPU相呼应地异步移动这些东西,GPU不会在这件事情上花费任何时间。这就是 DMA的作用。于是GPU就可以马上继续去渲染下一个目标,而不是移动那些数据。”

其他的定制硬件也被设计用来提升图像处理能力

  “我们在GPU和硬件上都化了很大的功夫来保证更加稳定的帧数。我们有两个独立的层给游戏使用,其中一个可以是 3D 的内容,另外一个可以是界面。计数器比起 Xbox 360 来说更好,可以允许逐帧修改参数。”

  动态分辨率位移不是什么新东西了,现在在很多本世代的游戏都可以看到,例如索尼的游戏 WipEout HD。“CPU问题会导致帧数的小错误...GPU 负载似乎每帧更加协调,不会出现CPU上出现的大峰值。” Goosen 说。“现在的游戏都利用动态分辨率位移来避免帧数问题。当图像接触到边缘的时候有时会超出帧数的份额,这样图像就会在分辨率上开始动态位移回去,3D内容压缩了,但是同时还能保证游戏界面在一个真正的分辨率上。这样看起来就不会有什么图像错误。就我来看,作为一个游戏玩机啊,我宁愿有一个稳定的帧数,即使有一些像素的压缩也不要紧,但是绝对不想看到帧数上的问题。”

  “为了找到功率和效率的平衡点,修正后的功能单元功耗更好。我们在那里进行了数据压缩,采用了 LZ 压缩解压缩方式,还有动态 JPEG 解码来帮助 Kinect。”这样DME除了移动数据外还能干更多的事情。

用手机访问
下载APP
appicon 下载
扫一扫,手机浏览
code
休闲娱乐
综合热点资讯
单机游戏下载
精彩专栏