你的SSD可以用100年,你造吗?

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

闪存密度的提升,依赖于制程的减小(现在已经进入15nm时代)和单个存储单元存储数据的增加(SLC->MLC->TLC),还有就是3D技术(平房变高层电梯房),前者带来的问题就是闪存的耐写性和寿命减小。

回忆一下闪存的基本原理(具体参看《闪存基础》):

nand1

上图是闪存的一个基本存储单元,由一种类NMOS的双层浮空栅 (Floating Gate) MOS管组成,用以存储一个bit(SLC)或者2个bit(MLC)或者3个bit(TLC)的数据。电荷是存储在浮栅极里面的,由上下两个绝缘层(黄色标识)包裹,这样即使掉电,里面的电子也出不来,所以闪存可以做到掉电数据不丢失。在写入数据前,必须清空浮栅极里面的电子,就是我们通常说的擦除操作,具体做法就是衬底加高电压,把浮栅极里面的电子吸出来;清空后,然后再在控制极(最上层)加高电压,把电子吸入到浮栅极,从而完成写入操作。

 

随着擦除和写入次数的增加,浮栅极下面的那个绝缘层(黄色标识)会慢慢变薄(该说法不准确,硅谷Violin Memory的登涛指出:浮栅极下的氧化层是不会变薄的,是氧化层里的化学键退化,导致绝缘作用减弱。磨损的含义不是氧化层变薄,而是化学键退化减弱。特别更正。),隔离作用慢慢减弱,导致浮栅极里面的电子可能偷偷溜出来,或者浮栅极外面充满好奇心的电子钻入浮栅极里面去。不就是围城吗?里面的人想出来,外面的人想进去,现在墙上出现个狗洞,刚好为这些人提供了方便。这种绝缘层磨损带来的后果就是,存储在里面的数据会发生翻转,即1变成0,或者0变成1。这不是我们想要的。可以说,我们从事SSD开发工作的人,一辈子大多数时间都是在跟这样的问题做斗争。

图片1

 

为什么制程减小,闪存的擦除次数会减小?主要原因是随着制程减小,浮栅极下面的绝缘层的厚度也相应的变薄,隔离作用天生就弱,所以耐擦写性方面,制程小的不及制程大的闪存。

 

TLC SSD的出现,为人所诟病,大家都知道它没有MLC SSD耐用。那为什么TLC就没有MLC耐用呢?什么是SLC,MLC和TLC呢?就是上图中的一个存储单元,如果里面存储1个bit的数据,就是SLC,如果存储2个bit的数据,就是MLC,当然,TLC就是一个存储单元里面存储3个bit的数据。

 

对SLC来说,只有两个状态,0和1。我们怎么判定0和1?假设浮栅极里面电子数低于50,我们认为是1;多于50,就认为是0。对于一个擦除的存储单元,浮栅极里面的电子数几乎接近0,如果要让闪存误判(1判为0),就需要外面偷偷溜进来50多个电子;假设写入1,浮栅极里面的电子数接近100个,如果要让闪存误判(0判成1),那么浮栅极里面的电子必须溜出来50多个。

 

我们继续看MLC,一个存储单元要存储2bit数据,2个bit有4个状态,假设与SLC同样制程(存储单元大小一样),还是拿100个电子来打比方。我们四等分100个电子:

11用0-25个电子表示,01用25-50个电子表示,00用50-75个电子表示,10用75-100个电子表示。显然,100个电子不再只分成两份,更精细了。对SLC来说,可以允许最多50个电子的出入而不会发生数据错误,而对MLC来说,现在只允许最多25个电子的变化了,超出了,状态就会发生变化,数据就出错了。比如,如果我们写入的数据是01,这个时候,有30个电子从浮栅极跑出去了,那么状态就变成11了,用户读取的时候,就出现数据错误。

 

同理TLC,3个bit,8个状态,还是100个电子来分,每个状态更精细了,允许电子进出的数目就更小了。

102315_0742_TLCMLC4.png

 

因此,我们可以看出,同样制程的闪存,SLC,MLC和TLC对电子变化(意外的变化)越来越敏感了,也就是对浮栅极下面的绝缘层越来越敏感了。因此,要保证绝缘层的隔离作用,应减轻其磨损程度,擦除次数应该越来越少。现在大家应该明白为什么TLC不如MLC耐写,MLC不如SLC耐写吧。其实,你也应该从中明白另外一个道理,那就是:二胎生活质量不如一胎。还是别再生了!

 

为什么3D TLC的擦除次数比2D MLC擦除次数还多(见《天呀,三星说TLC比MLC还好》)?

图片2

 

那是因为他们所说的3D TLC制程比2D MLC大,他们不会告诉你它是在用30nm制程和你15nm制程比较的,绝缘层天生就比你厚,耐磨。如果同样制程,我相信3D TLC干不过2D MLC的。

 

以上算前戏(有点多),解答了几个很多人知其然不知其所以然的问题,诸如为什么闪存越来越不可靠,为什么TLC不如MLC耐写,等等。

 

下面切题,看看你的SSD怎样能用100年。

 

一个绝缘层,即使你没有擦写几次,随着时间的推移,也是有电子能穿透它的,正所谓没有不透风的墙。这也就是我们经常听到的,写在SSD上的数据,过若干年后,数据就丢了。

Capture

电子进出浮栅极的难易程度,是与绝缘层的磨损程度成正比的:磨损越厉害,电子进出更容易,也就是越容易发生数据错误。

图片1

 

上图是人家的研究成果。什么意思,就是说,如果一个block擦除次数在3000次以内,里面的数据可以保证在3年之内是不会丢失的(发生数据错误),即数据寿命是3年;如果擦写次数在8000次以内,数据的寿命只有3个月了,绝缘层的磨损,使得电子在3个月就可以穿过绝缘层,破坏浮栅极里的数据;如果擦写次数达到20000次,数据寿命只有3个星期了;如果擦写次数达到150000次,数据寿命只有3天了。

图片3

 

Block在擦写了150000次后,我能想象绝缘层的惨状,犹如上图,崭新的一双球鞋,最后变成破鞋一双,哈哈。

 

上图的研究成果表明,闪存数据寿命(retention,从数据写入到数据丢失这段时间)是与闪存擦写次数成反比的:闪存擦写次数越多,绝缘层损耗越厉害,存储在里面的数据越容易出错,也就是寿命越短。我们通常所说闪存最大可擦写次数(PE),是与数据寿命挂钩的,比如说一个MLC的PE是3000次,是说一个block擦除次数在3000以内,存储的数据寿命可达官方宣传的3年。一个block,擦除次数超过官方所说的3000,不意味着这个block就不能用了,只意味着存储在里面的数据寿命达不到官方称的3年。以上图为例,如果你只要求写入的数据寿命是3个月,你可以继续写5000次(总共8000次擦写)。脱离数据寿命谈闪存PE都是耍流氓。

 

问题来了:如果我们每天都把整个SSD都写一遍,那么一个普通的MLC (标称最大PE是3000)SSD,你说它能写多少天?

3000天?

NO! 应该是150000天以上!150000/365 = 410年!!!

然后考虑写放大等因素,100年应该可以了吧。

哎呀,我的天,太神奇了吧。

捕获

 

在《SSD可靠吗》的文章里,说的是有歪果仁对五六个SSD写了一年半,来证明SSD还是很耐写的。1.5年算神马,100年才是硬道理。

 

有人问,你这个150000天是怎么来的?从那个研究成果来的。你没有看到吗,如果闪存擦写次数在150000次以内,数据寿命是3天。如果数据在3天之内,即数据生命耗尽之前,重新刷新写入的话,数据寿命虽然只有短短的3天,但它永远都不会死亡!因为写入新的数据,就是新的生命开始。这有点像DRAM的刷新机制,一定要赶在数据丢失之前刷新一下。对数据寿命只有3天的闪存,我们刷新频率不能大于3天,如果你每隔4天刷新一次,就没有用了,因为数据昨天就已经死掉了,救不活了。所以,我强调,我们必须每天(小于3天即可)把整个SSD都写一遍,即对闪存上所有数据都刷新一遍。我估计还能活50年,剩下50年需由我儿子去负责写SSD了。在我临死前,我得交代我儿子,记得每天把SSD都写一遍!家祭无忘告乃翁。

 

一个SSD用100年,夸张了,事实上不可能做到,能用上10年就算不错了。但是,我们的确可以想办法延长SSD的寿命。基于上面的研究成果,随着擦写次数的增多,闪存数据的寿命缩短,但是,如果我们在数据寿命耗尽之前,把数据读出来,纠错,重新写入,那么数据永远都不会丢失。所以,基本思路就是赶在数据丢失之前刷新它。这里有个问题,就是刷新数据,重新写入后需要耗掉PE (必须擦除然后再写入)。我们目标是增加更多PE,因此,很多牛人就在想办法怎么让数据刷新时耗掉尽可能少的PE。比如,把数据分成冷数据和热数据,对冷数据,我们需要经常刷新;但对热数据,由于用户频繁的更新,事实就是在做刷新动作,因此,我们不需要额外的对其刷新。

 

关于此算法细节,可查看附件论文。本文灵感就来自此论文,感谢论文作者。

 

以后见面,大家记得彼此提醒:你的SSD今天刷新了没有?

 

论文:Improving NAND Flash Memory Lifetime with Write-hotness Aware Retention Management

 

分类目录 SSD, 技术文章, 闪存.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。