标题应改为PS5运行PS4游戏的加载速度不如XBOX SERIES X/S运行同样的Xbox one游戏的加载速度, 也就是PS5拥有更快的SSD,但向后兼容的游戏反而加载更慢(这个测试的速度甚至慢于PS4+SATA SSD的速度)
游戏加载,对于传统的游戏而言, 分两个部分(1)将压缩的文件加载到内存并解压(2)将GPU使用的纹理数据使用图形API加载到显存.这里借一个Nvidia的图:
游戏机的CPU和GPU是位于一个Soc的,并且使用同一个物理内存,但是逻辑上仍有CPU管理的内存向GPU提交的过程,因此仍是2步加载.
次世代(包括Xbox series X/S, PS5, Nvidia 图灵/安培和 AMD RDNA2)具有更新的加载方式:
这个图是Nvidia的,但是基本上适用于所有次世代的设备, 可以看到GPU现在可以之间从存储设备读取(DMA)压缩过的数据并解压到显存, 无需CPU的干预,这样图形的IOPS就会大幅度上升.
当然这和题目没有关系,题目测试的没有次世代游戏. 假设这个测试是正确的,没有搞什么大新闻,那么问题就出在PS5的向下兼容的实现方式上.
当运行PS4游戏时,PS5的Soc会降低性能至PS4或PS4 Pro, 以避免软件bug的出现.
索尼早在2015年就申请了一个专利(2018年通过), 介绍了为什么性能变强时实时性高的软件会出现bug
如果新设备的 CPU 性能低于旧设备的 CPU,则由于无法满足显示计时、音频输出等规定的实时截止时间,旧版应用程序中可能会出现许多错误。如果新设备的 CPU 性能比旧设备的 CPU 高得多,则由于这种高速操作的未经测试的后果,旧应用程序中可能会出现许多错误。例如,在生产者-使用者模型中,如果数据使用者(例如 CPU)运行速度高于最初预期,则它可能尝试在数据生产者(例如计算机的其他组件)提供数据之前访问数据。或者,如果数据生产者(例如 CPU)以高于最初预期的速度运行,则可能会覆盖数据使用者仍在使用的数据(例如计算机的其他组件)。
很明显的,如果CPU的性能降低,那么对数据包的处理性能会降低,因为GPU的操作也是CPU提交的(但是比PS4还慢就很难以理解了).
另一方面Xbox并不是以这种方式实现向下兼容的,Xbox的基本系统是作为Hyper-V管理器的定制win10(Host OS), 在运行初代Xbox,Xbox 360,Xbox one或次世代的游戏时分别加载不同的操作系统(Xbox模拟器,Xbox 360模拟器,win8定制版和win10定制版,即Game OS), 而Dashboard, 主界面和UWP则是另一个虚拟机(System OS), 所有的系统和游戏文件都存储在只读加密的虚拟硬盘镜像中(XVD).
游戏均在虚拟机内运行, 并通过硬件半虚拟化接口与Host OS通信, 而Host OS则具有操作实际硬件的驱动.(所以快速唤醒就是虚拟机挂起,把虚拟机内存保存至SSD,而PS5的游戏直接在FreeBSD宏内核上跑,就做不到这一点) 所以即使微软也使用PS5的策略,降低运行时的性能,只需要对Game OS的虚拟CPU进行限制就可以了,真正和硬件通信的Host OS并不会限制, 这也包括IO.
但实际上只有初代Xbox和Xbox360的模拟器需要精确时钟仿真,Xbox one使用的DX12 API并不会产生索尼所描述的诡异的多线程bug, 因为DX12 API本身是多线程的, 开发者在开发时应该已经考虑到不同线程之间的同步问题, 而且同样使用DirectX的PC配置五花八门, 开发者肯定要考虑到的.
微软以极具二进制兼容性的操作系统起家,在兼容这方面做的肯定比索尼强.