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

让我们深入了解和理性看待SSD上采用的SLC加速模式

[复制链接]
跳转到指定楼层
1#
neeyuese 发表于 2015-6-13 10:13 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
点击数:40589|回复数:77
随着闪存工艺的更新,颗粒内部Die的单位容量越来越大,小容量的SSD型号所需要搭配的Die数减少造成了写入速度越来越差。另外从MLC转换到TLC的过程中,出错率也随之提高了几个数量级。这肯定会影响到用户体验和耐久度,怎么办呢?

SLC加速模式就这样诞生了,它被用来解决瞬间爆发力和降低出错率的问题。因为普通家用和商用环境下的数据读写压力并不大,而且大多数情况下对性能没有持续性要求,因此只需要在用户需要速度的时候给予速度,不需要的时候再偷偷后台里恢复速度就行了。

SLC加速模式简而言之就是让MLC或者TLC的闪存模拟成SLC的工作模式进行操作。

当这项技术运用在MLC闪存SSD产品上时,主要目的是为了提高爆发力,它可以让低容量型号的SSD尽可能达到外部接口带宽,例如东芝64GB的THNSNF64GBSS Quark系列19nm MLC SSD写入速度最高可达到440MB/s,这就是依靠了闪存颗粒自带的ABL技术和SSD主控固件里的SLC加速模式两项并用来达成的。


上图是闪迪TLC A19nm 128Gb Die颗粒运行在SLC或者TLC模式下的性能区别。

当这项技术运用在TLC闪存SSD产品上时,主要目的是为了显著提高写入速度的同时降低错误率,因为TLC的闪存对读写电压产生的信号干扰特别敏感,而且TLC的闪存还有不少隐藏限制我以前并没有提到过。举个最简单的例子就是TLC颗粒上3bit数据编程没完成的情况下是不能单独访问其中某个数据的(这是硬性限制,因为这种情况下访问会产生干扰,可能会造成数据直接完蛋),所以这部分数据必须在缓存里留一份用来满足读取请求的需要,这样就平白无故的增加了缓存的开销和突发掉电时的安全隐患。为了尽可能避免这种情况发生,必须从缓存里把随机写入的小数据合并起来,持续滴温柔滴写入下去才是正确的做法。(轻拿轻放才能降低磨损度)另外由于TLC的速度慢,把完整的映射表放在TLC闪存上操作也不是明智的做法,必须放在SLC加速模式的闪存内来提高映射表更新和访问速度,这样才能够加快开关机速度(开机需要加载映射表到内存,关机需要保存更新后的映射表到闪存),加快休眠唤醒速度,在SSD生命周期里尽可能多的更新映射表次数,总而言之言而总之就是尽可能避免把需要频繁更新的数据在TLC闪存里操作就是啦。但是这样也会带来新的问题,那就是长时间的持续写入性能被降低了,因为数据会被先写入SLC,再写入TLC,同样数据可能被写入两次造成了写放大提高,还有就是后台SLC加速模式转TLC的时候也有概率出现数据错误。

SLC加速模式是个统称,它的做法是由SSD主控固件控制闪存颗粒的操作模式,而且各厂牌的产品之间是有区别的。

区别一,SLC加速模式的用户区范围



如图,美光的M600的动态SLC加速模式在空盘情况下占用用户可用容量的1/2,256GB SSD格式化后用户可用容量为238GB附近,1/2的话就是119GB的SLC加速模式范围。这张图里中间那块就是这块SSD的OP空间(跑在MLC模式下),大约是256GB减去238GB等于18GB左右。当OP空间用完后SSD必须进行Folding,也就是后台要进行SLC到MLC模式的转换来释放可用空间,此时的主控资源都被后台的转换消耗掉了,边释放空间边接受新的写入数据,反应出来的速度就跌到100MB/s以下。

拿目前市面上采用SLC加速模式的几个主流产品技术举例。使用MLC闪存的产品中,闪迪nCache和nCache Pro技术SLC加速缓存范围在1GB以内,美光、东芝、OCZ的则基本是用户可用容量的1/2。



如图三星的840Evo 120GB和250GB的SLC加速模式区域一样为3GB,250GB因为写入速度高,因此比120GB的型号更快消耗掉SLC加速区域而造成跌速。

使用TLC闪存的产品中,闪迪的nCache 2.0和三星的TurboWrite技术,都是随着SSD容量的提高而增加了SLC加速模式的范围。(闪迪至尊高速II120GB型号里SLC加速模式范围为5GB,到了960GB型号里则是40GB。三星840Evo850Evo120GB250GB容量SSDTurbowrite3GB,到了1TB容量则提高到了12GB。)
区别二,SLC加速模式是否采用了磨损平衡

上面提到的MLC闪存产品,他们的SLC加速模式范围是动态的并且有全局磨损平衡机制的。固件内部一般会有2P/E计数,一套是SLC模式下的计数,一套是MLC模式下的计数,颗粒错误多的区域拿来做SLC加速模式,颗粒错误少的区域拿来做数据区(MLC),复杂度相对来说显得更高。

上面提到的TLC闪存产品,他们的SLC加速模式范围是静态的并且没有全局磨损平衡机制(TLC用户区域有)。因为TLC的算法本身已经够复杂了,再加上全局磨损平衡的话反而更容易出bug,而且主控硬件资源也不一定允许这样折腾。所以它们的SLC加速模式容量范围就需要根据SSD容量而翻倍。这样可以确保当TLC闪存磨损完之前SLC加速模式区的闪存不会提前磨损完。


这张是美光20nm 128Gb Die颗粒参数图,图中128 Gb MLCM500M550高容量用的闪存颗粒,128Gb MLC+主要是JMF主控在使用。

我们可以看到当MLC+开启SLC缓存加速模式(硬件支持,但需固件激活)后,P/E可以从3000提高到20000,也就是说提高了7倍左右。既然SLC模式比MLCP/E高出7倍的话,那么比SLC模式比TLC高出多少倍呢?

这里举例拿三星840Evo 120GB来计算,内部模拟了3GBSLC(消耗9GBTLC),全盘容量128GBTLC,比例是3 : 128-9),差不多就是40倍的P/E区别。因为840Evo250GB内部也是模拟了3GBSLC3:(256-9)差不多是80倍的区别。假设我现在测试的是三星840Evo 120GBSSD19nm TLCP/E1000的话,那么这部分SLC需要达到40000 P/E才能满足同时挂的需求。

这里讲一个故事,根据某国外评测网站数据,840Evo 120GB在连续通电跑写入的测试下,P/E达到3000以上并且没有出现重映射,然后各大新闻站纷纷转载高P/E840Evo的测试,说再也不担心TLC的耐久度问题了,然而继续测试途中突然无征兆的暴毙了。什么原因造成了SSD暴毙?根据上面的算式,TLC要达到3000 P/E,此时SLC加速模式范围内磨损度至少已经为12P/E,因为SLC加速模式出错率低,01的电位容易判断,而且是一直在被刷新的缓存区,所以只要通着电和高温(持续写入发热量最大)就能最大化闪存P/E表现,你测的其实是SLC加速模式区域的极限耐久度。SLC加速模式区域磨损完了后,由于没有内部磨损平衡,只能暴毙给你看了。那么为什么没有重映射?因为SLC缓存后持续释放到TLC,而TLC又不需要被覆盖,只需要擦除再持续滴写入新数据,就是我前面说的轻拿轻放,降低了出错率自然就不会那么容易出现重映射了。现在知道为什么850Evo120GB250GB的官标保修限制耐久度是一样的都为75TBW了吧,因为他们的SLC缓存加速区的容量是一样的都为3GB,也就是25000 P/E (75000 / 3 = 25000 ),这块区域又是没有磨损平衡的,挂了的话那后面的TLC数据区耐久度再高也就没意义了。

区别三,SLC加速模式的数据模型筛选

前面说了SLC加速模式会增加写放大,是因为写入到SLC加速模式区域的数据可能会再次写入到MLC或者TLC用户数据区造成2次写入。我上面也提到了SLC加速模式区域的P/EMLC或者TLC用户数据区域的几倍至几十倍。理论上来说,持续写入的数据写放大接近1,随机写入的数据写放大则会比较高。如果写入的数据大多为随机写入的数据,这些数据在SLC加速模式区域合并再写入MLC或者TLC用户数据区,虽然意义上的写放大提高到2倍,但实际上却降低了用户数据区的写放大。

闪迪的nCache技术在这个基础上,还能对随机写入和持续写入的数据进行过滤,对于持续写入的数据直接写入到MLC用户数据区上避免了在SLC加速模式区域的磨损。别家的做法例如美光,东芝和OCZSLC加速模式区域范围很大,那么在这个SLC加速模式区域数据还没释放到真正的MLC用户数据区前,任何在这个SLC加速模式区域内被覆盖和Trim指令操作掉的无效数据都可以不用再释放到MLC用户数据区里,这样就利用SLC加速模式区域P/E高的优势间接的降低了对颗粒的磨损度,而且这些SSD都有全局SLC加速模式的磨损平衡,耐久度和利用率理论可得到真正意义上的最大优化。

区别四,SLC加速模式导致后台Folding的时机

所谓鱼和熊掌不可兼得,你是要基准测试例如ASSSDCDM这类爆发力跑分好看还是要稳定态下的跑分好看呢?如果是前者的话,则需要在有足够SLC缓存容量的情况下不做任何后台folding来让主控的资源全部发挥在这类短时间的爆发力测试上。类似代表就是目前所有采用TLC闪存的消费级SSD产品,新的PS3110-S10主控公版固件的产品。如果是后者,那么就要牺牲掉爆发力,主控的资源永远有一部分消耗在后台的folding上,这样的代表就是OCZ的消费级MLC产品,跑分不高但是稳定态表现较好,性能降幅较低。

既然TLC闪存配合SLC加速模式几乎成了必然需要,那么除了本文开始说的SLC加速模式提高写入速度,降低错误率外,它无法解决的问题是什么呢?


TLC闪存实在太烂而造成的数据保存期问题

三星TLC的旧数据掉速问题,温度高低速度变化问题我也已经在之前的帖子里强调过多次了。那么如何保证旧数据掉速在可控范围内呢?不要一掉就掉的连U盘都比不上了。那就需要牺牲容量和性能做数据的XOR,在写入数据的时候同时把校验数据一起写入,这样当数据因为掉电位造成在多次尝试后依然没法读取的情况下就可以依靠之前的冗余数据直接生成正确数据。

本帖子中包含更多资源

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

x
2#
neeyuese  楼主| 发表于 2015-6-13 10:51 | 显示全部楼层
thinkpad 发表于 2015-6-13 12:46
L85A 是M500 用的,M550低容量128 256 不是用的64Gb L84C吗???

已经改了,确认L85C是JMF在用。
3#
neeyuese  楼主| 发表于 2015-6-13 19:12 | 显示全部楼层
evev 发表于 2015-6-13 16:35
其实对美光那个dwa的描述并不是很准确吧 无论剩余容量有多少都有加速效果 而不是规定的50%容量 不然怎么显 ...

DWA是永远占用1/2的用户可用空间,没有错呀,如果用户用了全盘50%容量,那么剩下的50%里取其中的一半(总用户可用容量的25%)做DWA不是一样的意思么。那个图就是要告诉你加速范围而已。

4#
neeyuese  楼主| 发表于 2015-6-13 19:54 | 显示全部楼层
你有拆解图么?我不清楚。
5#
neeyuese  楼主| 发表于 2015-6-13 20:32 | 显示全部楼层
thinkpad 发表于 2015-6-13 22:20
难道就是传说中的无限SLC? 和OCZ的一样。。

可能做法还是有点区别,毕竟颗粒不同嘛,不过道理是一样的。

6#
neeyuese  楼主| 发表于 2015-6-13 20:35 | 显示全部楼层
cell-v 发表于 2015-6-13 22:30
OCZ 动态SLC加速模式占用用户可用容量的1/2  ,那很多人以为的 容量占用过半会降速的说法应该是错误的吧
...

OCZ的做法和美光很像,容量占用过半后有闲置时间的话,剩余空间也会划分成SLC加速模式。

7#
neeyuese  楼主| 发表于 2015-6-13 20:44 | 显示全部楼层
固特异轮胎 发表于 2015-6-13 22:43
还是想问问浴室后台folding是指什么呢?能不能用中文描述一下?

就是把SLC转换成MLC或者TLC的操作。

8#
neeyuese  楼主| 发表于 2015-6-13 22:20 | 显示全部楼层
大号跳蚤 发表于 2015-6-14 00:18
应该有均衡算法,且是全局的,不然先挂哪边?

MLC的话就是全局(MLC和SLC之间可以按时切换)。TLC的话就各自独立,所以才需要不同容量SSD不同SLC加速模式区域来确保两边同时磨损完。

9#
neeyuese  楼主| 发表于 2015-6-16 15:31 | 显示全部楼层
chungexcy 发表于 2015-6-16 16:59
请问浴室,以256GB的M600为例,如果剩余空间只有36GB的时候,是不是可以认为18GB作SLC。如果现在把这36GB ...

剩余空间只剩下36GB,又闲置过一段时间,那么就是剩下18GB的SLC + OP空间,如果你再写18GB速度还是高速,然后就是写OP速(MLC),再写下去才是100MB/s以下。

10#
neeyuese  楼主| 发表于 2015-6-16 17:24 | 显示全部楼层
sunbaolai 发表于 2015-6-16 19:17
按照该说法,英睿达M550系列的耐久度都是72TB,是否可以理解M550系列的SLC缓存加速区的容量是一样多?

还 ...

M550是没有SLC缓存加速的,M550的闪存速度比M500快。
11#
neeyuese  楼主| 发表于 2015-6-16 17:55 | 显示全部楼层
sunbaolai 发表于 2015-6-16 19:44
多谢。为什么M550系列的耐久度都是72T啊?
网速有点慢,以为我的回复丢了,所以重复回帖,请见谅。
...

64GB的是36TB的,128GB的是72TB,256和512GB的颗粒是L85A所以也是72TB,只能说验证偷懒了。
12#
neeyuese  楼主| 发表于 2016-1-17 10:36 | 显示全部楼层
q102911594 发表于 2016-1-17 11:11
浴室大大,有个问题,最近从朋友那收了一块全新850evo,主要是价格感人,读了你的帖子了解到模拟slc区域和 ...

850Evo就不要想着延长寿命了,官方不是75/150TB后就不给保修了么。
13#
neeyuese  楼主| 发表于 2016-1-17 18:50 | 显示全部楼层
q102911594 发表于 2016-1-17 20:21
浴室大,还有个疑问想咨询下,850evo 250g和闪迪至尊高速2 240g,选哪一个?@neeyuese
...

国外前者,国内后者,前提是你只有这2个选的情况下。

14#
neeyuese  楼主| 发表于 2016-1-17 19:04 | 显示全部楼层
q102911594 发表于 2016-1-17 20:58
价格别太离谱,还有什么?苍穹?

不要找我推荐SSD,我最烦就是帮人推荐SSD,人要有主见,是不是坑跳过去又死不掉。
15#
neeyuese  楼主| 发表于 2016-1-17 19:16 | 显示全部楼层
q102911594 发表于 2016-1-17 21:15
闪迪至尊高速2的ncache2.0持续写入是直接写入tlc吧?850evo的模拟slc缓存感觉寿命不久呢。闪迪至尊高速2 24 ...

三星的高不少,但是闪迪的保修好。

16#
neeyuese  楼主| 发表于 2016-1-18 09:52 | 显示全部楼层
Y6-0785 发表于 2016-1-18 10:47
为什么三星寿命高还要把写入量限制得这么低?岂不显得很没信心?
不过我觉得,如果不考虑全球联保,这两 ...

这是策略,不是没信心。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部