RPCS3 Inside Look:深入研究硬件和性能扩展

2020-08-23 06:35:13

嘿大家好!今天我们将讨论一些与您在进度报告中习惯的内容略有不同的内容。我们将深入讨论某些硬件和软件配置如何显著影响您在RPCS3中的性能。

有几个方面可能会使RPCS3的性能达不到应有的水平,内存速度就是其中之一。在我们的示例中,RPCS3将以几种方式强调内存性能:

单元仿真:SPU通过DMA访问主存储器。这是一次仅凭一己之力就能效仿所有人的残忍行为。

RSX内存操作分为两大类:上传和下载。上载操作包括将纹理、着色器和着色器数据(顶点缓冲区和其他寄存器配置表)从主机CPU传输到主机GPU。此过程通常由GPU驱动程序进行优化,以异步进行,并且大量使用批处理。它的带宽很大,因为数据集相当大,传输必须通过PCI-E。我们做了很多工作来隐藏这个问题,而且在大多数情况下它工作得很好,但是如果您的内存太慢,或者如果您被困在较旧的PCI-E版本上,传输延迟可能会对性能产生巨大的影响,特别是在需要GPU同步的情况下。

下载操作例如包括将纹理和任意数据从主机GPU传输到主机CPU。这对性能有非常严重的影响,因为我们不能真正隐藏传输操作的内存延迟。大多数情况下,Cell会在没有警告的情况下访问相关内存,这意味着我们必须停止所有操作,直到GPU处理完我们需要的信息,然后在CPU线程被阻塞的情况下,我们通过PCI-E读回所有这些数据。正是出于这个原因,我们在默认情况下禁用了“缓冲区选项”:为了减少这种硬停止的惩罚,因为大多数游戏可能会践踏较旧的GPU驻留数据,而不需要稍后重新读取它,在这种情况下,我们可以假装该内存块什么都不存在。这意味着在GPU使用率达到或接近RPCS3的情况下运行RPCS3也是不可取的,因为您的GPU不会足够快地响应这些随机的同步请求。然而,在这方面可以做很多优化,有一个非常好的预测器,可以高精度地猜测一个内存块是否很快就会被CPU访问,并在它发生之前开始对GPU指令进行排队。

让我们首先显示在整个开机自检过程中将要使用和比较的内存速度之间的差异。这些性能统计数据是由AIDA64收集的,因此读者可以更好地了解与库存相比,手动调整的内存是什么样子。

手动调整内存,甚至做一些像启用XMP(Extreme Memory Profile)这样简单的事情,不仅在RPCS3中有很多好处,而且几乎无处不在。降低延迟,大幅提升内存带宽,这对RPCS3绝对有帮助,如下图所示(请注意最小/最大FPS图表):