新闻来源:Eurogamer
本文由Xbox-skyer坛友WiiKey提供翻译 http://www.xbox-skyer.com/showthread.php?t=433860

离次时代主机发售只有两个月的时间了,在游戏还没有发售的现在想必很多人都已经对于哪台主机更厉害有自己的想法。单单靠比较图像和内存带宽规格可以看出 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 很明显能够保证系统内足够的带宽。

名称:  91.jpg查看次数: 343文件大小:  123.8 KB

 


在我们拿到最终硬件之前,现在只能看看 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 功能也是。”

下面是斯坦福大学的 HOT CHIP 25 会议上微软的更深层地的展示〖点击显示〗
 





零售机上 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 负载更加重要。”

微软团队还特别强调 150 MHz 的 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 除了移动数据外还能干更多的事情。



结束

我们就这样谈了一个多小时。整个讨论都完全是基于技术层面的,差点都忘了十一月发售的 Xbox One 对于他俩本身也很重要。于是我们问他们:“看着开发了数年的主机从生产线上出来是什么感觉?” Baker 说:“感觉很好,我们还有其他的事情要做,经常和架构团队一起合作。”

Goosen 最后说了一句:“对我来说最大的奖赏就是玩游戏,看看他们到底如何出色,这就是为什么我们这么辛苦的工作,作为一个从事图像的工程师来说,看到那些像素在屏幕上很高兴。”