3

游戏性能优化杂谈(十五)

 3 years ago
source link: https://zhuanlan.zhihu.com/p/367053028
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

游戏性能优化杂谈(十五)

今天《原神》PS5版本的加载速度似乎成为了一个小小的话题。

很多人都会提到PS5的SSD当然这并没有错。但是事实上事情并没有那么简单。

PS5的SSD能够为游戏的资源文件读取稳定提供大约5GB/s的“裸”读取速度。这不是峰值速度,是真正可以长期稳定达到的速度,甚至是在数年的自然折旧之后。但是PS5的内存是16GB,所以即便保持这个速度读取,要完全置换内存也需要大约3秒钟的时间。何况,游戏资源一般是分散在成千上万的文件当中,加载游戏资源的过程其实是一个不断定位文件并读取的过程。对于文件系统本身的遍历和处理也是相当耗时的。所以很难一直保持在5GB/s。

当带宽不够的时候,解决的一种办法就是压缩。压缩是一种用算力换带宽的做法。资源在压缩之后,尺寸会变小。但是在使用之前需要首先解压,这会消耗额外的算力。

特别是对于5GB/s的数据进行解压,所需的算力是极为惊人的。我不知道别人是否有看到过,至少我是目前从未在PC上看到过有哪款解压缩软件,可以对5GB/s的压缩数据进行实时解压。

所以,这并不是一些人口中所说的,只要我换个PCIE4.0的SSD盘,就可以,那么简单的事情。

可以预见,在不久的将来,读取速度超过6GB/s的SSD会逐渐进入消费级市场。这也是为什么PS5预留了外置SSD接口的原因。但是仅仅靠SSD,是无法达到这样的加载速度的。(当然,随着技术的发展,当SSD本身的速度能够高达10GB/s甚至更高,那么采用不对数据进行压缩的方法,是可以实现类似效果的。但是那个时候同样压缩会更快)

根据测算,要实时解压5GB/s的压缩数据,所需的算力,可能接近PS5 CPU的总算力。而且,5GB/s的读入,解压之后往往意味着10GB/s或者更高的写出,这会极大地消耗CPU的数据带宽。在算力和带宽都被极度消耗的情况下,游戏的渲染、物理仿真、逻辑推演还如何执行呢?

这就是为什么必须要将这部分的计算工作和带宽,从CPU当中剥离出去的原因。PS5采用的是专用的“协处理器”,而最新的N卡则是将这些工作转交给了GPU(当中的专用模块)。

这一切看起来似乎很完美。但是其实事情依然没有那么简单。传统的渲染流程是CPU调度数据进内存,进行必要的处理之后,喂给GPU,由GPU渲染出最终画面。但是当数据由第三方(协处理器)或者GPU直接读入时,则需要一整套的机制完成和CPU以及GPU之间的同步。也就是之前是2个人合作做一件事情,现在变成了3个人,那么很多做事情的方法本身就需要发生改变。

所以这并不是一个仅仅靠升级SSD就能够实现的事情。它涉及到软硬件方方面面的改造,甚至是对于游戏运行时本身理解的改变。据我所知,在除了部分索尼第一方工作室之外,米忽悠的对应即便在全球范围来看都是相当快速和深入的,甚至领先于Unity官方的对应,令人非常印象深刻。

顺便说一句,《原神》PS5版本现在展现出的加载时间,是含有网络通信时间的。也就是真正的数据加载时间,其实更短。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK