A9VG电玩部落论坛

 找回密码
 注册
搜索
查看: 10710|回复: 88

(个人翻译)揭开SSD与载入时间的神秘面纱——SSD是怎么与游戏有关的

[复制链接]

终结者

老油条

精华
1
帖子
9433
威望
1 点
积分
10031 点
种子
574 点
注册时间
2015-9-16
最后登录
2024-4-19
 楼主| 发表于 2020-3-21 19:58  ·  浙江 | 显示全部楼层 |阅读模式
揭开SSD与载入时间的神秘面纱
SSD and loading times demystified

原文:psorcerer(neogaf);原文地址
翻译:亚里斯猫德(a9vg);
文科出身,尽最大可能进行翻译。为照顾中文读者,加上时间有限水平有限,对文中的一些语句进行了修改并且没有严格按照原文翻译。欢迎挑错。有问题可以去neogaf与作者交流,作者很乐意回答各种问题。

-----------------------正文----------------------------
为什么SSD如此重要?它如何带来改变?人们对于这两个问题有着许许多多的困惑。现在,让我来尝试解释这其中的主要概念。
等等,你的文章太长,我懒得看。
那我一句话总结一下:高速SSD是一个能够改变游戏形态的要素,这个世代将有好戏可以看

好了,言归正传。
问题:没有SSD我们现在照样都是好好的,为什么我们竟至于需要SSD?
回答:不,现在并不好。没有SSD是非常令人头大的——除了地图较小多人游戏或者格斗游戏。

让我们来谈谈几个数据。尽管许许多多游戏并没有向我们公布它们的内存池以及素材池,但还是有游戏公布了。让我们以杀戮地带:暗影坠落Demo为例(原文链接):

材质:30%;1400M
CPU工作集:15%;700M
GPU工作集:25%;1200M
流池(streaming pool):10%;500M
声音:10%;450M
Meshes:10%;450M
动画/粒子:1%;45M

这里我们关注的是“流池”对应的数据(不过我们也会讨论其他数据)。我们可以看到有大约500M的数据随着demo的不断运行而飞快载入到内存中。对这样一个流过程来说,它是以一块大小为1600M的数据作为总样本。PS4的硬盘载入速度分别<50M/秒(按照压缩数据来算)以及<20M/秒(按照非压缩数据来算)。由此,要以流的方式载入1600M数据需要超过30秒的时间。

这样的速度看起来并不是什么大问题,而且事实上对demo来说它确实不是什么大问题。但是,对游戏来说呢?整个游戏大概有40GB大,PS4的可用内存为6.5GB,我们不可能把整个游戏一股脑儿全载入到内存中,这做不到。于是,我们需要选择下面其中一种方案。或者我们可以用流的方式把数据载进来,或者我们在新区域之间做一个载入画面。

让我们先讨论最简单的方法——做载入画面。我们有6.5G的内存,那么根据上面的表格,常驻性数据大概要占掉2GB(GPU工作集+CPU工作集)。我们剩下有4.5GB的空间,也就是说我们要利用到它们的话,那么每次需要载入数据的大小为4.5GB。在最好的情况下,这就需要90秒,时间长得让人讨厌。如果你不是以顺序读取的方式来载入数据,那么你还需要在硬盘中进行检索,如此一来所花的时间就要更长。注意,你不能使用超过4.5G的素材,不然你需要做另外一个载入画面。如果,你设计的游戏关卡是动态的,那么事情将会变得更糟:玩家留了某个道具放在上一个区域中?那么载入时间会增加(因为道具并没有游戏世界中,因此游戏需要先把世界载入完毕,然后再去从硬盘中检索该项道具/道具组)。上古卷轴天际很多人都玩过,我们进入每间房子之前都要看到载入画面。这就是实际的情况。所以,做载入画面是简单方便的办法,而且如果你的游戏并不是那种线性的、静态的、以主题公园的方式展现吸引力的游戏,那么这样的办法将会非常的快速。

那么,如果用流的方式呢?好。让我们留出一块500M大小的内存(同样以杀戮地带的DEMO为例),这块内存是用来以流的方式从硬盘中接受数据。如此,按照50MB/秒的速度,我们每10秒就能填满这个内存区域。就这样,每10秒我们在内存中就有了一块全新数据的数据。让我们做几个数学题(以杀戮地带Demo为例)。在1分钟内开发者能够展现多少新数据(new shit)给玩家?很简单,6*500=3G。1分钟内玩家每次要见到多少老数据(old shit)?一样简单,1400+450+450+45=2.5G左右。在屏幕上,1分钟内新数据与老数据的大小比四舍五入下来为50/50,五五开。这些数据里你放什么呢?重复使用的怪?素材?材质?NPC?看开放商想选什么了。反正是50/50。

不过,PS4有着6.5G的内存,我们到现在就用了4.5G,那么剩下的2G内存到哪里去了呢?
这是一个好问题!
答案是,它用在了装老数据上。因为如果我们把流缓冲池做成1.5GB,这没毛用,因为50M/秒的速度把它限死了。

当6.5G内存用满的时候,我们在1分钟内得到的数据是6GB老数据对比3GB新数据。也就是2:1的比例。老数据占的比例要来得高。

但是,如果是10分钟呢?
好的,好的。让我们来看看!
按10分钟来算,我们现在能够得到30G新数据对比6GB老数据
没错,我的朋友,上世代游戏就是这样开发的

作为玩家,你是被慢慢引入到新场景中的;或者,开发者使用了一些小伎俩,比如说开门动画。记不记得神秘海域中的那些“让我们花15秒来把那该死的门给打开”桥段?这就是因为玩家进入新区域的时候需要载入新数据,载入新内容需要时间,而硬盘又无法载入那么快。

那么,我们是不是要谈到SSD了呢?
没这么快,SSD我们到后面在谈,先谈谈别的。

与4K的关系
如果目标为4K,那么“GPU工作集”的空间将至少变成原来的4倍。所以GPU将使用1200*4=4.8G内存。CPU工作集的占用空间同样也会增加(我相信玩家想要更好的脚本以及更好的物理表现),不过可能只变成原来的两倍多点,所以700*2=1.5G左右。现在,持久(persistent)内存将会超过6GB,我们姑且说它要占6.5G。因此对于PS5来说,我们大概有8GB内存可用;对XSX来说,我们大概有5GB的内存可用。

等等!为什么PS5突然间有这么多内存可用?
这很简单。XSX的内存被分成了两个池(逻辑上被分成两个池,物理上是同一个):10G与3.5G。GPU工作集肯定是使用10G的那个池(因为该内存集必然需要高带宽)。所以10-4.8=5.2大概是5G,XSX可用的5G是这么来的。对XSX来说,CPU工作集将使用3.5G那个池,这样的话如果扣掉上面提到的1.5G,那么我们将会有2GB来做别的事情。我们也许会载入一些低访问频率的数据到那里,比如说以流的方式装入mesh或者别的。不过如果要在每一帧中使用这样的数据会很难:如果我们太过频繁地访问这些数据,这将使得整个系统带宽降到336GB/秒(译者注:原文为336MB/秒,应为笔误)
这是微软称10G的那个内存池是“适宜GPU”的原因。

那么PS5怎么样?PS5应该也留出一部分内存给系统,那么它大概就有14G可以用!
不好意思,答案不是这样。PS5有一个5.5GB/秒的SSD。它通常能在0.27秒的时间内载入2G数据。它的写入数据会低一点,但不会低于5.5G/秒。PS5可以做到的一点是当玩家在玩游戏的时候它可以把系统镜像写到硬盘上去——如果索尼不选择这样做的话,我会非常意外。因此,对PS5来说,它几乎可以能够利用整个16G的内存。2G的系统镜像能够在1秒以内载入到内存中(2G的游戏数据写入SSD需要0.6秒,从SSD中载入系统需要0.3秒)。不难看出这样一来并没有必要让系统常驻在内存中。不过,我们还是不要把话说得太满,姑且说PS5总的可用内存为14.5G

呃,难道微软不能这么做么?
是的,微软也能这么做。在XSX上这么做的话虽然速度没那么惊艳,不过我认为它再怎么样也不会超过3秒。那为什么微软没选择这样做呢?也许是因为微软需要操作系统在背后一直运作以便运行它提供的所有服务。也正是这一原因,我这里还是按照14.5G而不是16G来计算PS5的可用内存。不过补一句,我很难理解为什么要安排2.5G给系统——所有的背景服务可以运行在很小的一个内存里,而UI这样的东西可以在需要的时候再载入进来。

现在,我们是不是可以讨论SSD对游戏带来什么了?
是的。
让我们回到上面的数据。
对XSX来说,它剩下的5G自由内存我们可以把它分成两个部分:存放常驻内容以及存放流内容。为什么要分为两个部分?因为通常情况下你不能在对帧进行渲染的时候把内容载入到帧当中去。GPU的速度太快太快了,如果你一次次去问GPU“你现在是在读取具体哪一个内存区域”,那么它一回答这种问题就会变慢。但是,你能把数据载入到两部分内存的其中一个部分,当另一个部分正在被渲染的时候?
是的。你可以自由地使内存的“常驻”部分和“流”部分相互切换,如果它的速度够快的话。不论如何,我们在1秒钟之内新数据旧数据的比是50/50!2.5G的常驻内容池与2.5G的流池,XSX仅仅需要1秒钟就能完全重新载入流部分。那么在1分钟里我们可以有60:1的新数据/旧数据比?太好了!

那么PS5怎么说?它是不是比XSX快一倍,然后就这样而已?
不完全是。对PS5来说,除开CPU工作集、GPU工作集占用后剩下的那整个8G内存我们可以都作为“流池”。等等,我记得你前面曾经说过,“当帧在被渲染的时候,我们不能同时载入”。你好像说过这个。这是一个好问题。对于XSX来说,情况是这样的。但是PS5拥有GPU缓存擦除器(GPU cache scrubbers)。当GPU正在对帧进行渲染的时候,GPU中的这一部分硅晶能够被用来快速重新载入素材。GPU缓存擦除器对于GPU正在读取的数据以及数据的位置有着完全的访问权(这些内容都在GPU缓存中,因此前面那玩意叫做“缓存擦除器”)。GPU缓存擦除器同时不会把整个缓存都无效化(如果是这样它依然会导致GPU“停摆”),而是确切地就把那部分改变的数据重新载入(我希望你仔细听了赛尔尼那部分演讲)。

但是它的自由内存容量并不那么具有重要性,我们在每一帧中依然有着2:1的旧/新比例,因为PS5的SSD仅仅是XSX的两倍?
是,但又不是。
PS5的SSD速度只是XSX的两倍(尽管最大速度要高很多,PS5是22G/秒,XSX是6G/秒)
但问题在于,GPU能够从8GB的游戏数据中进行渲染,而XSX仅仅只能从2.5GB的游戏数据中进行渲染,我相信你还记得我说的——XSX无法从“流”池的数据中进行渲染,当后者在载入的时候。
所以在任何一个给定的场景中,潜在地讲,PS5在细节/材质/素材上是XSX的2倍到3倍。
是的,XSX的渲染速度更快,帧数更好或者更高的帧缓冲分辨率(后两者不能兼得,perf difference太低)
但是就场景来说,XSX的场景在细节上要弱,并且包含的美工更少。

天啦,微软就不会做些什么吗?
当然他们会,而且他们也做了!
XSX的优势在哪里?更强的ALU算力(浮点运算),更强的光追算力更强的CPU
微软会做的:更依赖于机能优势而不是美工;更多的程序方面的工作,更多的ALU用来物理模拟(毕竟,光追以及光照都算物理模拟)。
更多的计算着色器(compute shader)以及复杂着色器(complex shader)

结果将会如何?
很简单。
PS5:依赖于更多的美工,在系统中使更多的数据进栈。就这一方面而言PS5的潜在表现将可能是XSX的两倍。
XSX:依赖于更多的帧内运算,程序方面的工作。就这一方面而言XSX的潜在表现将可能比PS5高30%。

谁会赢:不知道。每个方案都有自己的长处和短处。
这世代将会是一个很有趣的世代。比上世代要有趣的多,这是确定无疑的。

花絮性内容1:
每秒60:1的新/旧数据比能够给玩家带来什么?
大家有没有想过为什么没有一个开放世界试图去刻画整个大城市——像真实的大城市一样,有各种街区,公寓大楼以及其他等等?
因为如果谁真这么做的话,那特么将会是沙雕之极。
玩家不管进入哪个房间看到的结构和家具都几乎是一样的。NPC也是一样的,干着一样的活。
在有了次时代SSD后,城市中的公寓大楼能够由整个非持久性的内存空间来得到渲染。
并且当你从一扇门走到另一扇们的时候游戏可以载入新的大楼。
好好想想吧。1秒5.5G。在每扇大门后面都有一个新世界等着你,跟上次你去过的世界完全不一样。

花絮性内容2:
但是,但是我把我的PS4硬盘从HDD换成SSD了啊,什么都没变!是我的使用方法不对吗?????
你看,是这样的~让我们回到杀戮地带的例子。
我们有500M的流缓冲,在HDD上10秒钟我们可以将它载满新内容。
现在如果我们换成500M/秒的SSD,那么我们能够用1秒钟就能装满它。
但是,你要知道,游戏并没有围绕这样的载入状况来设计。
游戏被设计为它要在下一个10秒后才回去要求并且使用那些数据,而不是马上就使用它们。
所以不管你的SSD速度有多快,它什么都改变不了。
而且对有些游戏的设计来说,你换上SSD反而可能使情况变糟。
为什么呢?因为你使用了500M/秒的内存带宽,你使用了这样的带宽载入的是10秒后才会被游戏用到的数据,于是白白浪费了这点带宽,它本来是可以给GPU用的!

但是,我不懂呀。我怎么才知道游戏是面向SSD设计的?
很简单,如果用HDD没法玩,那这样的游戏就是面向SSD的。
什么叫做没法玩呢,比如说你碰到的游戏帧数是1帧,0.2帧等等,完全是幻灯片(注:这个词好久没听到过了)
如果游戏表现成这样,那么它是为SSD准备的游戏。

求败者

啊啊啊

精华
0
帖子
19829
威望
0 点
积分
20535 点
种子
867 点
注册时间
2011-9-18
最后登录
2024-4-19
发表于 2020-3-21 20:00  ·  北京 来自手机 | 显示全部楼层
辛苦…回了慢慢再看
该用户已被禁言

精华
0
帖子
12460
威望
0 点
积分
12683 点
种子
70 点
注册时间
2010-12-1
最后登录
2023-12-8
发表于 2020-3-21 20:11  ·  浙江 | 显示全部楼层
感谢是感谢

但是我连正常的硬件说明都看不懂,其实是我懒得看
看这个更蛋疼了

要学术交流的上吧

精华
0
帖子
835
威望
0 点
积分
852 点
种子
15 点
注册时间
2014-2-16
最后登录
2020-7-18
发表于 2020-3-21 20:12  ·  广东 | 显示全部楼层
先打卡再学习,刚好扩充下SSD未来可能性的思路
该用户已被禁言

精华
0
帖子
336
威望
0 点
积分
359 点
种子
5 点
注册时间
2019-3-27
最后登录
2020-4-1
发表于 2020-3-21 20:23  ·  上海 | 显示全部楼层
别扯那么多有的没的,我只想知道读盘比盒子快多少秒?如果盒子读盘10秒,换这个只是8秒吹到天上也就这样了。

精华
0
帖子
4704
威望
0 点
积分
5595 点
种子
1331 点
注册时间
2006-7-11
最后登录
2021-1-27
发表于 2020-3-21 20:40  ·  未知 | 显示全部楼层
希望第三方能跟进,也是创造游戏的未来。
该用户已被禁言

精华
0
帖子
5327
威望
0 点
积分
5227 点
种子
11 点
注册时间
2011-1-20
最后登录
2020-9-5
发表于 2020-3-21 20:41  ·  山东 | 显示全部楼层
如果xsx用的是hdd或者sata3固态,索尼用高速ssd还值得吹一吹,但是xsx用的是pcie3的ssd啊,能有多大的差距?52cu和36cu差距却是显而易见的。
该用户已被禁言

精华
0
帖子
5327
威望
0 点
积分
5227 点
种子
11 点
注册时间
2011-1-20
最后登录
2020-9-5
发表于 2020-3-21 20:42  ·  山东 | 显示全部楼层
不过有一点我是认同的,随着游戏机都内置ssd,游戏开发会对ssd做更多的优化,使得ssd的优势更加明显这倒是真的。

精华
0
帖子
1114
威望
0 点
积分
1205 点
种子
54 点
注册时间
2014-12-1
最后登录
2024-2-29
发表于 2020-3-21 20:49  ·  江苏 | 显示全部楼层
意思是ps5的一方又能像ps3领先三方一截
运算不足,美工来凑,美工好的制作商有优势,比如顽皮狗,加载速度不成问题,多加载一点美工资源问题也不大

精华
0
帖子
12
威望
0 点
积分
12 点
种子
5 点
注册时间
2020-3-5
最后登录
2020-11-1
发表于 2020-3-21 20:57  ·  湖北 | 显示全部楼层
终于等到这样的文章了。当时马克塞尼说,对于游戏开发来说,现在最大瓶颈是硬盘,我就一直在等一篇解释其中原理的文章了。现在越发期待次时代的游戏会带来怎样的游戏变化了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2024-4-19 13:40 , Processed in 0.229317 second(s), 24 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部