什么是SSD以及SSD和机械硬盘(HDD)有何不同
Xbox Series X和PlayStation 5里面的SSD和PC上的有什么不一样
当用户需要数据时,假设数据存储在机械硬盘里,我们把传统机械硬盘看成一个开了挂的摇奖机,每次都能摇出想要的东西(数据)。每当要读取或写入数据,我们需要手摇机器(磁盘旋转),把需要的商品摇到出口附近(定位扇区),再微调机器让商品掉下来(让磁头位于数据区块的开头位置),拿取商品(完成读取)。
在这个过程中,定位扇区和数据区块需要进行很多次,这些重复操作浪费了大量时。机械硬盘的工作原理限制了它的最大速度,毕竟磁盘的转速是一定有上限的。
如果说机械硬盘是一个摇奖机,那么我们可以把固态硬盘SSD看成一个自动售货机。
首先售货机的框体就是(2.5寸)固态硬盘的外壳了,这个不用多说了(M.2的固态请当作是没有外壳,只有底座的售货机)。我们可以把SSD的闪存颗粒当成是售货机的货架,一层代表着一颗;有些SSD有很多颗容量小的颗粒,那么就可以看作是多层,但是每层货品少的售货机;有些是大容量的颗粒,但数量少,就可以看作是层数少,但每层货物数量多的售货机。
但是光有仓储的部分,怎么买东西呢?很简单,我们只需要看看自动售货机里面有些什么商品,然后在旁边的键盘上输入对应的编码、付款后就可以等着售货机把商品推下来。
SSD内部有一块专门的区域记录了所有保存在SSD内部数据的位置,这个叫做编码表。当我们需要读取数据的时候,我们不会盲目地搜索整个SSD,只需要对照编码表检索然后得到所需数据的位置,就跟我们在自动售货机前面看一下商品的编号一样,立即就可以调取相应的数据传递到内存,完成数据的读取。负责这些操作的就是主控芯片了,它相当于我们的付款、选货的控制器。
控制器有很多功能,包括上面提到的商品编码表,推动货架让商品掉下来,以及报告货架的状态,比如还有多少空间闲置,有多少货物等等,主控芯片就相当于SSD的CPU。这是SSD最基本的构造,为了让SSD的使用更加顺畅,寿命更久,制造厂商还添加了很多别的东西,比如DRAM缓存。由于SSD没有机械运动结构,以纯粹的电信号为基础,所以SSD的速度可以做得非常可观,在继续下去之前,我们先要了解一下评判磁盘的性能指标。
我这里使用HDTune来测试自己电脑上的两块硬盘:
SSD:HP EX950 1TB
HDD:希捷 酷鱼3TB
用HDTune是为了更直观的对比两种硬盘的性能差距,结果如下:
顺序读写
随机读写
在顺序读写这一类,SSD大概是HDD速度的8 - 10倍,可以说领先幅度较大,但是到了随机读写这一块,SSD甩开HDD几个数量级,这就是SSD会让用户感觉电脑起飞的根本原因。由于编码表以及纯电信号的数据传递过程,我们可以看到“时间”这一栏,SSD大部分项目都在0.0035-0.0073毫秒之间,而HDD的随机读写响应时间则达到了十几毫秒甚至几十毫秒。
SSD最大的优势便是极短的响应速度所带来的超快随机速写性能。
我们的操作系统也好,软件、游戏也好都由海量的零散文件组成,传统机械硬盘在小微文件上的读写有着天生的缺陷。而SSD的工作原理与构成完美的解决了这一个问题,使得它能够极大地提高我们的日常体验。
而且随着游戏体积的不断增大,对于磁盘连续读写性能的要求也越来越高,但是PC平台由于软硬件平台百花齐放,很多底层硬件接口无法统一,为了保证最大的兼容性。更重要的是游戏厂商为了跨平台的方便,没有针对SSD做任何优化,这就导致了普通SATA3固态硬盘和Nvme固态硬盘在游戏体验上几乎完全一致,但这种情况在全新次世代主机上将不复存在。
在我们聊次世代主机的存储系统之前,我们先看看最常见的个人电脑操作系统,Windows是怎么处理读写的。
乍一看很复杂,但我们把它当作千层饼,一层一层的来分析。第一层就是 Application 和 Windows services ,后者我们略去不提,Application顾名思义,应用程序。我们普通用户日常直接接触的就是各种各样由不同开发者开发的应用程序,这是整个Windows系统暴露在最外面的一层。
往下面就到了相对底层的部分,为了简便,我将第二三四层统称为“中间层”,包括IO的底层服务以及I/O管理系统和驱动。具体细节我就不展开了。
简略来说,Windows将所有的Application以及Services的I/O读写处理 抽象 成一个request(请求),然后通过中间层来进行处理,最后下达到HAL(Hardware Abstraction Level,硬件抽象层)。微软为了最大的保障硬件兼容性,将所有的,不管什么型号的硬盘都一视同仁,你是M.2的SSD,还是U.2的SSD,还是PCI-E插槽的SSD,或者机械硬盘,在Windows眼里,都只是 “磁盘” 而已。Windows不知道,也不在乎你是什么类型的硬盘,有多快的读写速度,只要你的接口以及驱动符合标准,Windows就当你是一个合格的存储磁盘,这就是HAL的意义。
这就让微软的工程师将硬盘兼容的工作剥离开来,使得整个系统的兼容性以及可以用性有了巨大提升。所有的繁杂工作都交给中间层以黑箱的形式处理,我们用户的日常使用也好,软件程序的开发者们也好,一般并不需要操心磁盘性能对于软件的表现有影响,这也减轻了开发者们的负担。
从商业以及软件开发的角度来看,这都是一个非常正确和高效的解决方案,它有着无与伦比的通用性和兼容性,但是,对于游戏,尤其是跨平台游戏开发来说,在次世代将成为一个非常严重的问题。
我们可以归纳出Windows下磁盘性能的几个特点:
硬盘调用需要层层中转,存在大量瓶颈
因为要保证兼容性,所以对硬盘无法做有针对性的优化
读写系统优化难度巨大,牵涉到的软硬件厂商很多,协调统筹很难
优化读写系统收益有限,没有动力去做这件事情
PlayStation 4和Xbox One是各自第一代采用x86架构的游戏主机,和PC一样。Xbox One目前采用的是最新定制版Windows 10操作系统,在存储I/O上的处理这一块,我推测应该和普通Windows 10的区别不大,而且官方也没有给出太多这方面的资料。
而PlayStation 4的I/O系统在Mark Cerny老师主讲的那堂课上有提到过,如下图:
我们可以看到,就算你为PlayStation 4 Pro更换一块比机械硬盘快10倍的SSD,你最后能得到的提升最多也只有两倍。因为PlayStation 4的I/O系统里,存在的瓶颈实在太多了,就和Windows类似,各种各样的开销大大影响了I/O系统的实际性能。
为了解决这个问题,索尼和微软可谓是英雄所见略同,两家的思路基本一样。我们先看看微软为Xbox Series X所打造的全新Xbox Velocity Architecture。我在这里引用一下Xbox官网上,公布 Xbox Series X详细硬件规格的Blog 里,关于Xbox Velocity Architecture,下称XVA的介绍。 Xbox Velocity Architecture – The Xbox Velocity Architecture is the new architecture we’ve created for the Xbox Series X to unlock new capabilities never-before seen in console development. It consists of four components: our custom NVMe SSD, a dedicated hardware decompression block, the all new DirectStorage API, and Sampler Feedback Streaming (SFS). This combination of custom hardware and deep software integration allows developers to radically improve asset streaming and effectively multiply available memory. It will enable richer and more dynamic living worlds unlike anything ever seen before. It also effectively eliminates loading times, and makes fast travel systems just that: fast.
Xbox Velocity Architecture是我们为Xbox Series X全新研发的架构,可以为主机游戏开发带来前所未有的可能性。该架构由四大部分组成:独家定制的NVMe SSD,专用硬件解压缩单元,全新设计的DirectStorage API以及Sampler Feedback Streaming (SFS)。
独家定制的SSD就不提了,两家都是,我们需要重点关注的就是后面这三项。
先从专用硬件解压缩单元说起。微软和索尼在本世代主机上都选择了zlib作为主要的压缩算法,压缩数据对于游戏主机有着非常重大的意义,不仅可以往蓝光盘里面塞进更多的数据,还能提升磁盘的读写效率。问题在于,解压缩需要占用宝贵的CPU资源。
在两家都彻底抛弃机械硬盘转到SSD之后,根据Xbox硬件团队的说法,光是解压缩任务就需要整整两个Ryzen核心。这令人难以接受,所以微软和索尼都引入了定制的芯片来单独运行压缩算法,这样就不会影响CPU的性能输出。
DirectStorage API和SFS的任务基本一样,都是为了减轻硬件的负担。现代电子游戏在设计上,可以让游戏在后台不停的加载当前场景或者下一个场景所需要用到的游戏素材,但是这样的操作需要耗费大量的CPU资源,因为CPU在不停的进行复制粘贴的操作,而DirectStorage API可以大幅减轻CPU的工作量,让CPU腾出手来进行别的操作,比如物理演算等,至于具体怎么实现这一点,还需要微软进一步公开更多信息。
SFS则可以大幅减轻内存的压力,随着主机全面进入真·4K时代,8K贴图素材将会变得越来越常见,但是如此庞大的素材游戏在渲染时可能只会用到很小一部分,所以SFS针对这一点大幅度优化了加载过程,使得只有需要用到的部分才会传递到内存里。配合速度更快的SSD和全新的硬件解压缩单元以及DirectStorageAPI,整个Xbox Velocity Architecture可以轻松实现远超PC以及本世代主机的I/O读写性能。
全新定制的SSD作为一切的基础,为超高I/O性能表现提供强有力的保障
大幅改进Windows原有的I/O系统,引入DirectStorage API来优化CPU以及内存读写数据的流程
单独的硬件解压缩单元解放CPU,让CPU彻底释放潜能
SFS大幅度提高内存的利用率,让游戏开发者能够实现更大更复杂的游戏场景,塞入更多的细节
为了写这篇文章,我又去听了一遍Mark老师讲课,说实在的,Mark老师的嗓音还是很有“睡”服力的,我仔细听了关于SSD的部分。先放一张PlayStation 5的I/O系统图:
看着很复杂,我们先从Xbox Series X没有的部分说起(或者说我查不到资料的部分,毕竟我也不知道人到底有没有)。
Custom Flash Controller,定制的闪存控制器。在文章的第一部分提到,闪存控制器可以理解成SSD的CPU,它的好坏很大程度上决定了一块SSD的性能表现,根据官方的数据,XSX上的NVMe的最大读写速度为2.4GB/s,而PS5上的这一块是5.5GB/s。
闪存颗粒玩不出花来,所以这一倍多的速度差距就在这块索尼定制的控制器上了。Mark老师提到这个定制主控不一般,直接给到了12通道来访问闪存颗粒,为了发挥出最高性能,搭配了825GB容量的闪存颗粒。作为对比,三星高端NVMe M.2 SSD 970 Evo和Pro采用的全新Phoenix主控,拥有8通道。索尼根据自身的经验以及第三方工作室反馈的数据,定下了5GB/s的读写性能指标,从头设计了这一控制器,直接给了12通道,才有了令人惊讶的5.5GB/s的读写速度。
接下来是全新的压缩算法,Xbox One和PlayStation 4采用的都是业界主流的Zlib压缩算法,到了次世代PlayStation 5,索尼本来打算继续用Zlib。但是Mark老师发现了Zlib的衍生算法,Kraken,并且表示这个算法虽然出现没多久,但已经成为了游戏业界的标准之一,相对Zlib能提高10%的压缩效率。配合和XSX一样定制的硬件解压缩芯片,可以实现5.5GB/s的输入,8-9GB/s的输出,在理想压缩状况下,解压缩芯片可以输出恐怖的22GB/s,等效9个Ryzen核心的表现。
就算是复制粘贴这样简单的读写操作也是需要占据CPU资源的,同XSX一样,索尼在这里也引入了自己的解决方案,DMAC(Dedicated DMA Controller),这个控制芯片可以让开发者自由指定游戏所需要的数据如何在内存里存放,解放了CPU资源,而且同样的优化了游戏加载过程,使得内存利用率大幅度提高。索尼还定制了其他几个芯片或者引擎来协助上述这些定制解决方案更好的发挥出SSD的所有性能,而所有的这一切都不需要开发者们操心。
彻底重新设计的闪存控制器,性能输出爆炸
全新的压缩算法,额外提升读写性能
深度定制的I/O芯片,从内存管理,到缓存刷新以及I/O通道,全方位彻底优化整个读写流程
从结果上看,索尼的方案更加彻底,对性能的挖掘更深入,Mark老师在公开课开始的时候一直强调,索尼和很多开发者交流之后,想让次世代主机的游戏能够瞬间启动,消灭读盘,游戏更新无需安装。这和Xbox团队的想法不谋而合,但是索尼从架构上做的更加激进,不仅完全定制了硬件部分,在软件上也能够比微软走得更加彻底。因为索尼无需考虑移植Windows的兼容性,可能第三方工作室会有跨平台的考量,但索尼一直都敦促旗下的第一方工作室将自己主机的性能压榨到极致(微软也是一样,而且成绩斐然,效果令人惊讶),所以在新主机I/O系统的设计上毫无保留。
至于为什么GPU是现在这个样子,那就是另外一个话题了,等更多的资料公开后才能明白索尼为啥这么设计。
评论区肯定会有朋友问道,不是说好的不需要开发者操心吗,怎么Unreal 5还改代码呢?
我个人的想法是,Unreal 5引擎的开发肯定不是一天两天的,前期的版本肯定是针对双平台通用的思路做的。后来发现PS5的存储系统强这么多,他们可以玩点花样,提升演示的效果,骗(划掉)、吸引更多的开发商用虚幻5引擎。什么?为什么不用Xbox Series X演示?请发送邮件给Tim Sweeney,或者直接推特私信他比较好。
在另一方面,微软已经明确说了DirectStorage API会登录Windows,毕竟挂着DirectX的名号,所以他们在研发Xbox Series X的时候,更多地考虑到了Windows移植的问题。他们并不是做不到PS5的SSD性能表现,只是出发点不同,可以理解。而且Xbox Series X的GPU要明显强一截,所以最后两家的独占游戏能够将新主机的性能压榨到什么程度,是次世代的另一个焦点。
不管是XSX还是PS5,对于第三方游戏开发商来说,尤其是像EA、UBI这样的跨平台厂商,如何取舍和调用两台主机的I/O系统就成为了一个大问题。XSX的理论读写性能在XVA的加持下最高也只有PS5的一半多一点,大概是4-5GB/s,而PS5的GPU性能又比XSX的低一些,所以两边的开发平衡就成为一个很关键的点。
最惨的还是PC,因为再怎么说两台主机最低也有4-5GB/s读写性能,PC就千奇百怪,从几十MB/s的机械硬盘,到顶级富佬的SSD Raid动辄8 - 9GB/s的速度,跨平台游戏要如何为这样宽泛的硬盘做优化,还不影响主机平台的表现,是一个非常大的挑战。也许主机独占的时代又回来了?抑或跨平台开发商为了兼容性舍弃次世代主机的全新特性?后者我觉得不太可能,毕竟主机才是游戏销量的绝对大头。
Mark Cerny在讲SSD之前提到,索尼问了很多开发者他们对于下一代主机有什么想法,排名第一的就是SSD,我想这也是为什么索尼官方的宣发以及Tim Sweeny多次提到这一点,在课堂上Mark老师说道,“SSD解放了开发者”,这不是一句空谈,他详细阐述了由于过去读写性能的限制开发者们不得不做出的各种妥协,但为了充分调用这块性能澎湃的SSD,开发者们又需要花费多少精力呢?让我们拭目以待......PS5的真正造型先。
评论区
共 151 条评论热门最新