PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

毁三观?你所不知道的那些SSD的事 • 三

[复制链接]
跳转到指定楼层
#
nighttob 发表于 2014-8-8 23:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
点击数:33865|回复数:41
本帖最后由 nighttob 于 2014-8-9 22:41 编辑

第一回 http://bbs.pceva.com.cn/thread-96059-1-1.html (补档)
第二回 http://bbs.pceva.com.cn/thread-96063-1-1.html (补档)
既然有人要求来点新鲜货,那么就满足你们。
这也是论坛回档以后,咱的第一个新帖。补档的12篇帖子多少都有一些修改,大部分是帖子之间的内容关联更密切了,有空不妨再看一遍。链接就从我的空间里找就是了,点我头像上方的名字,拉到下面找“主题”就全有了。

下面进入正题



SSD主控也有步进升级

大家都习惯听CPU和芯片组升级步进,但SSD主控的步进就很少听说了。就像CPU和芯片组以样,SSD主控步进升级也会修复一些BUG、改进稳定性或者提供一些新特性,就比如我们熟悉的SF-2281主控。

作为一款长寿的主控,SF-2281从最初的高端到如今的烂大街,几乎所有SSD厂商都出过SF-2281主控的产品,其中不乏Intel和KST这样的大厂,而那些听说过或者没听说过名字的中小厂商就更多了。SF-2281如此受欢迎,其自身强大的能力当然是最主要的,它的某些指标即使今天来看依然很先进。而且提供公版方案,也可以让刚入门的厂家不至于抓瞎,但这也直接导致这颗主控被某些无良商家给搞臭了,也让很多人误解了它。

毕竟SF-2281是2011年的主控了,想想当年的NAND颗粒还是34nm,而现在已经是1xnm了。3年间颗粒制程进步了3代,算上初版,SF-2281也有3个主要步进版本。

首先是最早的正式版步进,SF-2281VB1(以下简称VB1),随着当年OCZ Vertex 3等一系列产品登场,被人熟知的还有Intel 520系列和KST V300系列。

(图为Intel 520)

但很快人们就发现VB1有个很大的BUG,就是虽然标称支持AES-256加密,但实际上只有AES-128,这也导致包括Intel在内的一些厂商被坑。而要使SF-2281重新支持AES-256加密,就是第二个步进,VB2的任务了。

(图为ADATA SX300。小知识,有两行等大等长数字的颗粒,就是威刚的白片,非常容易辨认,可以在西数的真•混合硬盘上见到它)

现在在售所有标称支持AES-256加密的都是VB2步进的了。但VB2普及已经是2013年了,这时候20nm颗粒已经有了。由于Intel的猪队友Micron不给力,20nm的L85颗粒对ECC要求太高,直接秒杀所有老主控。为了能支持L85颗粒,SF-2281重新流片数次。本来VB2就要支持L85的,后来的VB3也是失败,直到VB4才成功。

(图为KST MS200 240G。MS200是个挺老的系列,之前有60G和120G版本,搭配的是SF2241这个4通道节能/缩水主控)

即使靠步进升级,ECC能力能跟上新颗粒的要求,主控自身的一些性能指标还是落后了。这也使得本来用来拯救烂颗粒的主控,反而需要颗粒来拯救它了。(例子就是KST V300换颗粒前后)

现在麻烦的问题在于下一代SF-3700系列难产,现在还只有跑分都不利索的样品。虽然规划的很美好,但在新产品上线之前,SF系的大旗还得靠SF-2281来扛。

除了SF-2281以外,另一款经典主控 Marvell 88SS9187也经历过A2 A3 A4几个步进升级,但跟其他主控一样,这些升级都不太声张。不像CPU和芯片组的步进升级,铺天盖地地宣传,怕你不知道。


设计影响颗粒速度

NAND颗粒可以通过接口速度来分级,比如我们知道ONFI标准有同步和异步之分,那些参数上达不到同步要求的就被刷下来做为异步颗粒。就跟无法在CL=11的要求下跑到800MHz的内存条就不能标PC3-12800,而只能降级作为PC3-10700类似。这并不是说异步的品质就比同步的差,只是等级较低,只要不强开同步(超频)的话,二者的寿命是一样长的。

封装形式同样会影响颗粒速度。拿Toggle标准颗粒来说,如果用TSOP封装,颗粒速度就被限制在100MHz左右,而换用BGA封装,就可达到200MHz甚至更高。这跟现在DDR3内存就没有TSOP封装是类似的,BGA封装的电气性能更好,利于高频稳定。所以可以看到新款SSD用东芝颗粒的,清一色全是BGA封装。遗憾的是,虽然颗粒往往可以跑到400MB/s的高速(200MHz频率 x 8bit接口位宽 x DDR = 3200Mb/s),但多数主控无法支持这么大的接口带宽,所以实际上颗粒大多是降频运行的。

(图为浴室评测SanDisk Extreme II的颗粒,虽然颗粒可以跑到400MB/s,但Marvell 88SS9187主控只支持200MB/s的通道速度)

不仅如此,当颗粒总容量达到主控和固件所支持的容量上限的时候,颗粒也会降频。这也跟主板上插到最大内存上限容量不易跑高频和RDIMM插满内存直接降频1档或者2档类似。高容量会对整个系统产生一定影响,这个影响大小一定程度要看SSD厂家和技术能力。比如200MHz的颗粒,做的好的只降低到180MHz左右,做的不好的就只有150MHz。


映射表中学问大

作为NAND颗粒内数据的“目录”,闪存映射表有非常重要的作用。以往我们听说这个,更多的是突然掉电,然后重启不认盘。这是因为映射表损坏,虽然数据都在,但不知道谁在什么地方。如果固件完善的话,可以让SSD通电静置以自行修复,甚至可以满血复活,比如我们熟知的美光M4 30分钟大法。但M4掉映射表的概率太高,不是突然掉电的问题,是它的DRAM缓存太烂,通着电都能出错。

回到映射表本身,目前SSD的映射表的主流方案是page mapping,顾名思义,以NAND颗粒的page为单元在DRAM缓存中建立映射表。在早先,由于NAND颗粒的page尺寸正好就是4KB,所以page mapping有着非常好的性能,同时结构比较简单。随着颗粒制程进步,从34nm到25nm再到20nm,page尺寸从4KB翻倍到8KB再到16KB,page mapping的单元也随之变大。但文件系统的最小数据尺寸还是4KB没变,如果直接把4KB数据写入到16KB page的SSD中,就需要在4KB的有效数据后面填充12KB的无效数据。因为是无效数据,当再有4KB数据写入的时候,就要把这个包含12KB无效数据的page一起读出来,修改掉其中的4KB为新的有效数据,然后将这个包含8KB有效数据和8KB无效数据的数据块再写入到新的page里。这个操作被称为R-M-W (Read-Modify-Write,读取-修改-写入。这个现象在SSD 4K不对齐和AF格式HDD 4K不对齐的情况下也会发生)。如果每次写入的4KB数据都不连续的话,会造成4倍的写入放大,而且会比较明显地影响性能。

page mapping的性能问题在M4时代就已经有所显现了,不过那只是256G和512GB的M4才用8KB page的颗粒。后来8KB page颗粒普及,到现在16KB page要成为新主流,如果继续用page mapping,无论对SSD寿命还是用户体验来说都不好。所以有了page mapping的改进型,4KB mapping和half-page mapping。顾名思义,4KB mapping就是以4KB为单元做映射表,而half-page mapping就是以半个page尺寸为单元做映射表。这样做的好处是当写入数据为4KB或者8KB时,依然保持高性能。当写入数据不足以填满整个page时,写入数据将被DRAM缓存,待有新数据写入时合并一起写进page里,或者超过一定时间就直接写进颗粒,以避免突然掉电带来的损失。

使用4KB mapping和half-page mapping也导致一个后果,那就是DRAM缓存容量要随着SSD总容量变大而增大;而page mapping就好很多,毕竟page尺寸也相应翻倍了。那么SSD的DRAM缓存里到底有多大空间是装映射表的呢?一般来说一个mapping entry(也就是映射表的最小单元,一个mapping entry对应一个4KB或者page)是4Bytes,如果1块512GB的SSD采用4KB mapping,映射表大小也就是512MB,正好是1GB=1MB。如果NAND颗粒是16KB page的话,采用half-page mapping和page mapping则减半再减半。经过压缩和优化,mapping entry还可以缩小,使整个映射表体积变小。

而“另类”的SF-2000系列主控用的是sector mapping,也就是512B mapping。可以说映射表超级详细,所以也难怪SF-2000系列主控没有DRAM缓存,8倍于他人的映射表体积也不是一般DRAM颗粒可以装得下的,结果就直接全塞在NAND颗粒里面,省得再费心了。SF系主控的映射表太过独特,这里不再讨论了。

那么如何判断一块SSD使用了哪种映射表方式呢?可以测量随机4KB、半个page尺寸和page尺寸的写入IOPs值,如果三个IOPs基本相同,那么就是4KB mapping;如果不同,再根据数据块尺寸和物理page尺寸来分析确定。

另外,DRAM缓存并不是专门用来放映射表的,虽然映射表是很大的一块。如果你测试和计算以后发现DRAM比映射表大得多,剩下的DRAM空间可能是用来存放颗粒磨损平衡、更详细的映射表,当然还有数据缓存。而且现在DRAM价格不高,为了简便制造工序,一系列都用同一容量的DRAM颗粒也是可能的。

这里还是要提醒,我本节提到的都是比较理想化的情形,事实上会复杂的多。映射表其实是SSD固件算法的一部分,为了保证SSD的可靠,编写一个好固件是非常复杂的,其设计难度不亚于设计SSD主控。这里只是简单带你认识映射表,太复杂的我也不理解,如果看不懂很正常……


随机4K够用即可

系列第一回我就提到过4K的事,但无奈拿着AS SSD和CDM跑分来问你4K是不是低了的人还是如潮水般。

用我在各种“软RAID”在日常应用环境下的性能表现这篇帖子里的比喻就是 (原文很长,如果没耐心的话就别看了)

现在很多人说单线程4K如何如何,但这个值是很难以提升的,单线程4K写入理想情况就是颗粒的编程速度(这个在浴室的各个SSD评析里面都会讲),而单线程4K读取实际上是SSD内部寻址延迟的体现。要提升单线程4K写入相对简单,用编程速度更快的颗粒、更快的闪存通道、更快的主控;而想提升单线程4K读取就困难的多,延迟的产生其实是物理定律的体现,我们当然可以用更大的缓存去储存一个详细的闪存映射表,但信号要走过的路径还是要比点对点要长。形象点说就是我们在一片田地里种种子,单线程4K写入就是拿一颗种子随便找一个坑种进去,单线程4K读取就是从田地的所有坑里找一颗特定的种子,哪个更复杂显而易见。

如果说随机4K写入可以靠更好的硬件来实现,随机4K读取就纯粹是延迟体现了。

为了4K而组RAID 0,完全是适得其反。对RAID来说,低于条带尺寸的数据就不可再分了,而对SSD来说,低于4K的数据不可再分。在绝大多数情况下,条带尺寸大于等于4K。所以随机4K不会因条带而收益,反而会因为增加一层RAID逻辑,而使延迟增大,导致4K降低。(实测数据都在上面的帖子里)

很多人也知道,节能和CPU性能同样影响延迟,所以关节能,还要让CPU跑满频。只是初次使用,跑个分作为基准留档当然没问题,日常使用中还这么干的话,就得算算一年下来多交的电费钱够不够买个新盘的了。同理,由于笔记本平台CPU性能低,还有各种电源管理措施,所以笔记本平台当然跑不过台式机,更不用提一般评测的时候还会给CPU超频。

有空纠结如何提高SSD的4K跑分,还不如直接换平台、换CPU。

那么如何才能降低延迟?

第一回就提到下一代存储驱动界面NVMe,但普及还需时日。

在现有平台中,降低延迟的最佳手段就是让设备离CPU更近一些,比如SoC化,在CPU内部直接集成存储控制器,而不再走外部总线。杯具的是,目前的桌面SoC性能都比较低,由集成降低的延迟会被低性能给抹消掉。这种SoC也极大地限制了芯片规模,所以在高性能领域SoC很难实现。

目前的南桥,其实就是个大交换机,把从CPU来的有限带宽,分配给尽可能多的外围设备用,这种再分配也就导致了高延迟。对目前主流的SATA SSD来说,想避免这个延迟就是走另一条路,通过专门的SATA HBA直接与CPU连接。但这个方案缺点也很明显,第一是要增加额外成本买扩展卡;第二是这些扩展卡良莠不齐,买到“雷”货就是赔了夫人又折兵;第三是需要有一定动手能力,高端HBA可能需要自己手动配置为I/T固件,以最简化逻辑;第四是主流平台PCIe插槽稀少,为了提升磁盘性能,所以要跟显卡抢带宽,值不值得有待商榷。还有一点,如果不知道PCIe是从哪儿来的,买了一张好卡,结果插到南桥给的PCIe线路上,那延迟就是1+1>2了。这也是为什么主板集成的第三方SATA接口速度和延迟都不如原生的原因之一。

既然CPU里没有SATA控制器,只有PCIe,那么何不直接用PCIe SSD。这也是新一代SSD的发展方向,不论是AIC(Add-In-Card)插卡形式、NGFF M.2还是SATAe,都在利用PCIe通道。而且我们可以一定程度上自主选择这个路径是走PCH绕一圈,还是直连CPU。但就像上面提到的,主流平台直连CPU的PCIe通道就那么几条,而且只有原生PCIe SSD,而非再次转接并RAID的SSD(比如ORZ RevoDriver系列),才能具备低延迟的优势。目前原生PCIe SSD只有浦科特M6E和三丧的XP941(仅限消费级,企业级有很多)。

那么同样一块盘,在同样一套平台上,就因为走的路径不同,差距能有多大?可以看RK评测华擎Z97 EX6的帖子,定位主流市场的全能型主板 华擎Z97 Extreme6评测。直接看图说话,测试对象是目前最强消费级SSD,三丧XP 941,在系列第二回有过简介。

这是插在由CPU过来的M.2 x4接口上

这是插在由Z97 PCH过来的M.2 x2接口上

除了持续读写主要受接口带宽影响以外,其他6项都受延迟影响,体现出很显著的差异。仅仅是换了个接口,就使得4K相差10%以上。

话说回来,AS SSD和CDM这种娱乐跑分软件,本身就不科学。如果只是用来检测驱动和分区是否正确还可以,真拿篮框里的几百几千分当回事,那真是图样了。关于AS SSD的总分是如何不科学,见仙仙的从数学角度谈谈为什么AS SSD Benchmark跑分无意义

我个人认为,一块SSD的随机4K读写取超过10MB/s就是合格的,超过20MB/s就不会有实际体验差别。盲目追求4K,还不如找个持续读写高的。


关于3D NAND

3D NAND应该是最近唯一值得成为SSD业界焦点的对象了,这是值得来个专题好好说一下的,显然这里盛不下它。

简单评价一下这项技术就是,颠覆传统,前途光明。

颠覆传统是,3D NAND的结构与传统2D完全不同,而且对其信号处理也完全不同于传统2D结构。三丧又一次用“老”主控安上了“新”东西,他们确实又NB了一回。而且从各家评测来看,性能确实霸道,就是可惜插在SATA上面了。不过后续产品也会很快跟进的,喜欢SSD飙分的肯定不会错过。

前途光明是,各大厂也都在研发各自的3D技术,当然不只三丧用的这一种,还有其他的3D形式。目前的3D技术可以做到用更老的光刻制程实现跟最新2D 16nm工艺同样的存储密度,这也就意味着同等容量下,3D NAND具有更高的性能而且更耐擦写。随着layer-层数的增加,以及制程进步,3D NAND的容量还能大幅提升。当然摆在工艺上的难度也是一样的,但对于已近末路的NAND来说,新技术的应用不仅是延长NAND的生命周期,也同样是为下代NVM积累经验。



最后……

真遗憾,曾经写的帖子提到的存储陋习,结果咱们论坛就中了,话说一个以存储见长的论坛死在存储上真是喜闻乐见了。不过还好我自己的帖子在事发前都完整备份过了,所以我只是重新整理,稍微修改了一下就补全了。这里也再次提醒大家关注自己的数据安全,没有任何单一方式是完全可靠的,重要数据一定多种形式多份保存。除非你想验证我的签名

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 2活跃度 +10 收起 理由
爱若晨风 + 5 很给力!
frankfree + 5 很给力!

查看全部评分

41#
rgwan 发表于 2016-3-22 11:51 | 只看该作者
nighttob 发表于 2016-3-21 22:21
所以我说这是消费级的策略,企业级可以做到聪明且周全,但这都是成本

光一个4k对齐就已经让成堆的人茫然 ...

专用FS倒不一定弄到手忙脚乱,甚至用户体验可以更简单。比如分区得时候不必注意4k对齐,系统自动按PEB对齐。也不必用SE和TRIM。这都是FS自己实现,弹性好很多,性能也好。只是闪存技术的发展,这类fs必须同步更新。比如说现在UBIFS对MLC/TLC的支持还是老大难╮(╯▽╰)╭对存储厂商而言,用FTL做FS该做的事情对他们而言更方便而已。坑
40#
rgwan 发表于 2016-3-22 11:46 | 只看该作者
frontwing 发表于 2016-3-22 07:53
理论上在SMART定义里弄一个统一标准的MWI值,让windows根据它发出预警(而不是不知所云的蓝屏)就可以了 ...

没人在意也是照样没用,而且MWI过于保守。真不如检测到ECC错误到阈值全盘写保护,这样对用户的警告更有效。起码不会让不关心的用户稀里糊涂就挂了。
39#
frontwing 发表于 2016-3-22 07:53 | 只看该作者
rgwan 发表于 2016-3-21 22:56
现在消费级的盘直接写到爆表的机制我觉得太暴力了。如果到达了认为寿命该终止的时候,应该给用户一个挽救 ...

理论上在SMART定义里弄一个统一标准的MWI值,让windows根据它发出预警(而不是不知所云的蓝屏)就可以了,就看愿不愿意做。
38#
nighttob  楼主| 发表于 2016-3-22 07:03 | 只看该作者
rgwan 发表于 2016-3-21 22:56
现在消费级的盘直接写到爆表的机制我觉得太暴力了。如果到达了认为寿命该终止的时候,应该给用户一个挽救 ...

有厂家这么做,但不是全部
37#
rgwan 发表于 2016-3-21 22:56 | 只看该作者
nighttob 发表于 2016-3-21 22:21
所以我说这是消费级的策略,企业级可以做到聪明且周全,但这都是成本

光一个4k对齐就已经让成堆的人茫然 ...

现在消费级的盘直接写到爆表的机制我觉得太暴力了。如果到达了认为寿命该终止的时候,应该给用户一个挽救数据的机会,即使是立刻写保护。

36#
nighttob  楼主| 发表于 2016-3-21 22:21 | 只看该作者
rgwan 发表于 2016-3-21 21:58
其实我个人是不喜欢FTL这种东西的,在操作系统的文件系统层面直接使用类似UBIFS/NANDFS之类的NAND专用文件 ...

所以我说这是消费级的策略,企业级可以做到聪明且周全,但这都是成本

光一个4k对齐就已经让成堆的人茫然不知所措了,再来个专用文件系统就是99% GG了
35#
rgwan 发表于 2016-3-21 21:58 | 只看该作者
本帖最后由 rgwan 于 2016-3-21 22:07 编辑
nighttob 发表于 2016-3-21 20:32
page mapping或者其他平面映射表在现在消费级还是主流,企业级上会有其他算法
如果闪存容量继续翻倍增长 ...

其实我个人是不喜欢FTL这种东西的,在操作系统的文件系统层面直接使用类似UBIFS/NANDFS之类的NAND专用文件系统,SSD主控做好纠错和坏块屏蔽就可以了。这样可以杜绝不少隔靴搔痒的机制,比如TRIM和SE。文件系统的优化也会更显而易见,比如说零散写入完全可以由文件系统合并请求,直接适配到NAND的块或者页大小,可以显著降低写放大。掉电也不会导致掉盘问题——起码系统还能启动,在fsck这段时间里起码用户可控的部分更多,而不是插个电等30分钟后看人品。当然,也变相的降低了SSD厂商的门槛~何乐而不为。当然,用户可控的参数也能更多,比如说可以直观的调查文件系统的效率,更有效率以ECC错误率估测寿命,甚至寿命快到了的时候,在卷未满时自动减小容量使用SLC模式续命等等。这么做后Flash的存储弹性更高,稳健性应当更好。现在看很多消费级SSD寿命一到就直接挂机认不到盘,简直……如果我做FTL的话只要ECC错误到达阈值,全盘只读。做FlashFS到ECC阈值,报警+SLC续命,再到阈值,只读报警~

34#
rgwan 发表于 2016-3-21 21:52 | 只看该作者
nighttob 发表于 2016-3-21 20:32
page mapping或者其他平面映射表在现在消费级还是主流,企业级上会有其他算法
如果闪存容量继续翻倍增长 ...

以前三星在小型设备上的设计大多是用混合映射——块表+页表。只需要非常少的内存就能管理较大的NAND Flash,U盘主控也大多是这么做的。我半年来的工作大概就是让NAND适配微型设备,大概我论文发了那个小FTL就能开源了。

SSD控制器就不太清楚了,如果用DFTL算法的话,维护个比较大的页映射表对内存要求是高一些,而且要快速启动只能依靠超级块,读取性能上混合映射稍微好一些,随机写入上DFTL/WA-DFTL好一些。

B+树/u树我觉得在性能上和内存占用做的会比页映射好一些,时间复杂度也可以,我也打算结合DFTL和u树做我的项目。不过目前我的研究方向主要在保证实时性,稳定性,性能对我倒是次要的。B+/u树这点要好一些,不太依赖超级块。

33#
nighttob  楼主| 发表于 2016-3-21 20:32 | 只看该作者
rgwan 发表于 2016-3-21 20:13
一般DRAM不会完全放下整个映射表,比如说128G NAND,16K page算,就要32MB空间。大多数基于B+ tree/DFTL/hy ...

page mapping或者其他平面映射表在现在消费级还是主流,企业级上会有其他算法
如果闪存容量继续翻倍增长,但主控MC没有进步的话,FTL肯定要换个思路去做了

2012年以前像B-tree这种算法确实很流行,但似乎一瞬间就全变page mapping了,除了SF以外
32#
rgwan 发表于 2016-3-21 20:13 | 只看该作者
一般DRAM不会完全放下整个映射表,比如说128G NAND,16K page算,就要32MB空间。大多数基于B+ tree/DFTL/hybird mapping的算法要么靠展开树+superblock,要么靠缓存算法,要么靠页表+块表混合用。不过我看的资料包括我自己实现的FTL都较为老旧(4年前),不知现在还是否流行压缩映射表的做法。
31#
szyzb 发表于 2014-11-22 10:18 | 只看该作者
观点鲜明,好。
30#
xia86101 发表于 2014-11-18 11:50 | 只看该作者
SF 还是相对来说低端了一些,基本上深圳这边的小厂都可以拿到方案,跟SMI 一样,JMF相对来说,就高端一些,价位和严格程度都不是SF能比的。
29#
coolerlan 发表于 2014-11-16 12:43 | 只看该作者
哈哈哈 看到最后的吐槽好欢乐
28#
panderul 发表于 2014-8-29 17:17 | 只看该作者
一下午都在充电补脑了,
27#
讯极天度 发表于 2014-8-17 14:51 | 只看该作者
颇为受益!多谢楼主。  后面几句话有点意思
26#
Sayhoo 发表于 2014-8-15 21:38 | 只看该作者
这是否说明这2年出的SSD提升的性能其实都没太大的实用意义  还不如降价来得明显些?
25#
haierccc 发表于 2014-8-15 20:47 | 只看该作者
纯技术好文!
24#
ysydys 发表于 2014-8-14 19:41 | 只看该作者
虽然看不明白,但是感觉好厉害的样子
23#
keysis 发表于 2014-8-14 09:40 | 只看该作者
支持,很好的东西啊,赞一个
22#
nighttob  楼主| 发表于 2014-8-13 22:11 | 只看该作者
灰之影 发表于 2014-8-13 21:06
小白问一下,4k性能在日常应用究竟体现在哪些方面呢?

系统载入,软件安装,软件载入
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部