译介 | 不仅仅是塞了一块SSD这么简单,PlayStation 5存储系统前瞻
游戏论坛resetera的用户gofreak发布了一个有关PlayStation 5硬盘读取速度的帖子,他通过对Sony在2016年提交的一项专利的研究后,对Sony宣称的超级高速硬盘读取速度做出了自己的一些判断以及解读。
下文包含大量技术名词与技术推测,且并不一定与PlayStation 5实际发售后的情况一致,请读者自行斟酌后再继续阅读,末尾有要点总结。
原贴选译
Sony的该项专利(专利号United States Patent Application 20170097897,Saito, Hideyuki )包含了一系列对现有固态硬盘在游戏系统内数据储存、读取瓶颈的软硬件改进措施。
在大部分情况下,操作系统将各种不同级别的存储硬件(寄存器、各级缓存,内存,硬盘)抽象化,使用一个虚拟文件系统(Virtual File System)来管理所有的数据存储与读取,该系统的任务都由CPU来进行调配与执行,如数据的加密、压缩与解压缩等。虽然固态硬盘有着远高于机械硬盘的连续与随机4K读写性能,但CPU的性能很容易在某些极端条件下成为固态硬盘的传输速率瓶颈,尤其是在同时打开一大堆小文件的时候,因为CPU在进行大量的读写操作时,需要不停的进行进程切换,在这过程中CPU会频繁的处于中止、切换进程再继续的循环。
Linux File System
在硬件层面,固态硬盘为了应对更加常见、广泛的使用场景,常常会有一个最小单位的存储单元(data block)来组成整个存储空间,固态硬盘通过将需要存储的数据分发到整个由NAND闪存颗粒组成的存储单元里面,以实现存储功能。如果系统需要调用一个文件,则固态硬盘里面的主控芯片(controller)必须通过实际物理地址的查找表(look- up table)来进行这个文件的调用。在普通产品里,一块1TB容量的固态硬盘需要占用最少1GB空间的查找表来建立索引,而且这些产品一般会使用DRAM来建立查找表的缓存,这样主控芯片必须先访问DRAM的缓存后,才能拉取系统所需要的任何数据。 而这个查找表的大小以及查找表的缓存就是该专利里面所阐述的除了CPU以外的另一个瓶颈。
NAND Data Block
该专利比起传统的SSD系统,做了一些硬件上的改动:
- 固态硬盘内部使用SRAM取代DRAM,可以让主控芯片进行数据寻址的时候提供更低的延迟与更高的吞吐量。该专利提出使用一种粗略数据粒度(coarser granularity)的数据访问模式来存储那些写入后,不会再修改的数据,比方说游戏的安装文件。由于这些数据的数据粒度非常大,所以可以让查找表的尺寸从1GB缩小到32KB(按1TB容量的固态硬盘算),主控芯片同样可以通过SRAM来进行缓存加速,顺带进行ECC数据错误检查,该专利同时指出,通过舍弃DRAM,可以实现整个系统的复杂度与成本的双重下降,而且由于查找表尺寸的下降,固态硬盘的容量越大,成本的优势会愈发体现。
- 固态硬盘可扩展的读取单元与一致性,得到更高效的读取性能。
- 引入了第二CPU以及其它的硬件加速器来实现解码、数据完整性核验与解压缩。
- 主CPU,第二CPU还有系统内存(RAM)以及IO总线都通过一个统一总线(coherent bus)连接到一起。该专利指出次CPU可以与主CPU采用不同的指令集来获得最佳的优化性能,只要它们的使用同样的虚拟内存容量且连接到同一个数据总线上。
- 硬件加速器和IO控制器都连接到IO总线上
下面是整个系统的示意图:
在软件层面上,这个系统在添加了一个新的文件管理API,“文件归档API(File Archive API)”,专门为游戏安装文件这种一次安装后就不管了的数据类型而设计。不同于其他通用的虚拟文件管理系统,这个API专门为NAND闪存做了优化,该API处于应用层与NAND驱动层与加速器驱动层之间。第二CPU处理所有访问固态硬盘请求的优先级,当数据读取的请求通过文件归档API发送时,所有其它的硬盘读写请求都将被搁置以获得最大的读取吞吐量。
当主CPU发送了一个读取数据的请求,这个请求会送到第二CPU,然后第二CPU将这一个读取请求分成很多个小的数据访问操作。这么做的原因有两个,第一是为了最大化利用NAND颗粒的并发性能与通道(对应上面第二点的可扩展性),第二点是为了让数据单元足够小,使得它们可以通过SRAM来进行缓存加速与ECC校验。第二CPU需要处理的元数据比起传统的虚拟文件系统要简单的多,处理速度也快非常多。
NAND控制器对于不同粒度大小的数据都有很好的兼容性:对于那些通过特殊通道(文件归档API)传输过来的数据请求,如上文说的游戏安装数据,NAND控制器可以允许地址查找表整个被缓存到SRAM里面来最小化性能瓶颈。其他粒度的数据结构则用来存储那些需要被经常修改的内容,如用户的游戏存档,在这种情况下,就可以将一部分查找表缓存进SRAM里。
当固态硬盘将需要传递的数据都核验无误后,这些数据从SSD和SRAM中被送到系统内存的核心中,然后硬件加速器使用DMAC(Direct Memory Access Controller,即直接内存访问控制器)来读取数据,然后将读写结果回写给系统内存。整个读写操作在固态硬盘与系统内存之间进行,完全绕开CPU的性能瓶颈,直到系统告诉CPU所有的数据都已准备就绪,CPU才介入后续的处理流程。
下面是上述流程的示意图:
再一次强调,上述所有内容并不一定和PlayStation 5所将要采用的技术方案完全一致,不过起码这是Sony一直以来在研究,如何快速读取已安装游戏数据的固态硬盘的软硬件的一种解决方案。
说人话
这个贴子通过对专利页面上的说明发掘出了很多有意思的部分,总结有以下几个部分值得我们注意:
- Sony大刀阔斧的修改了整个数据存储结构的设计,在游戏数据的读取过程中将CPU基本剥离开去,实现了SDD的SRAM缓存和系统内存的直连互通,绕开CPU的性能瓶颈,目前展示的PlayStation 5《蜘蛛侠》的0.8s读取时间就是最好的证明。
- 通过引入定制化的文件管理API,让PlayStation 5可以智能判断哪些文件需要走特殊通道实现极速读取,哪些文件可以用普通的模式操作,采用这样的设计可以以一个很低的成本达到非常好的效果。
- 引入SRAM取代了DRAM,一方面可以进行数据的核验,保证游戏数据的完整性,另一方面可以降低整体的生产成本,通过缩减查找表的大小,可以让系统快速定位需要的数据文件位置,配合上述两点进行快速传输,发挥出NAND颗粒的最高性能。
PlayStation 5所强调的固态硬盘对于整个生态的意义不仅仅是引入了固态硬盘这么简单,Sony认真研究了普通固态硬盘的工作模式与特点,结合自身20多年游戏主机与游戏开发经验,再通过高度定制化的软硬件设计,从系统最底层将固态硬盘的高并发与高吞吐性能融入到PlayStation 5的方方面面。以往的游戏设计被各种各样的瓶颈所制约,数据读取速度是非常大的一方面,Sony方面表示他们很期待未来开发者可以在高速硬盘性能的加持下,带来更加富有创意的内容。
Sony的设计思路可以说非常简单明了:
- 减少数据传输的环节,尽可能减少会出现瓶颈的地方
- 提前将需要传输的数据进行分类,不同的数据走不同的传输通道,让开发者提前做好准备,对性能优化有进一步的帮助
- 通过第二点的提前分类降低硬件成本,采用SRAM作为缓存,实现数据安全与成本降低的兼顾。
由于定制系统的便利性,Sony可以将整体性能通过完全定制化的方式来优化到一个非常夸张的程度,我相信《蜘蛛侠》只是一个非常基础、简单的应用,在这样的系统架构里,固态硬盘的成本将只取决于NAND颗粒的价格,其余的主控与软件算法都是Sony独有的设计,这就是游戏主机的优势,Sony不用考虑很多罕见却又不得不覆盖的使用场景,将所有的性能都压榨出来带来最强大的性能,这也是游戏主机的核心竞争力。
现在就让我们静待Xbox次时代主机的更多消息,来看看微软能为玩家们带来什么黑科技!
作者暂无likerid, 赞赏暂由本网站代持,当作者有likerid后会全部转账给作者(我们会尽力而为)。Tips: Until now, everytime you want to store your article, we will help you store it in Filecoin network. In the future, you can store it in Filecoin network using your own filecoin.
Support author:
Author's Filecoin address:
Or you can use Likecoin to support author: