闪存寿命是个妖怪:很恐怖但不真实

大家都知道,固态硬盘有个缺点就是写入寿命太短。我以前写过文章曾浅显地分析过受限于写入寿命的基于闪存的固态硬盘怎样在基于RAID的数据保护系统中出现问题。从理论上来说,多个拥有相同写入寿命问题的固态硬盘可能会在同一时刻出现问题,引起数据损失。但是我个人并不觉得这是个大问题。下面我就进一步分析一下闪存写入寿命的问题,以及它深层的原因。

一个闪存单元是由一个浮置栅极来控制的,在浮置栅极旁边则是两层硅氧化物电介质和绝缘层。当对浮置栅极充电或放电来写入或擦除信息时,单元通道内的电荷会通过电介质层,会对其造成一定的损害。

久而久之,电介质层就会出现一些问题,要不就是不允许通道通过,导致数据存储在闪存单元中保持0状态,要不就是高电压使得氧化层被破坏,数据无法存储,一直保持1状态。

不同闪存技术的闪存单元写入-擦除寿命是不同的。一般来说,SLC闪存可进行100000次写入-擦除循环,MLC可进行10000次,而eMLC可进行30000次。

厂商闪存产品的等级一般会按照最低保障时间和规定的平均故障间隔时间来定,排名第一和第五的不同,实际上也是用失效率百分比来表示的。在规定的写入-擦除循环周期中,芯片中会有百分之几的单元失效,在当下的写入-擦除循环中的失效比例会继续出现在今后的循环中,厂商们会建议你更换新的闪存。

当提到固态硬盘时,英特尔,美光和东芝就像日产或福特那样。汽车厂商会宣称汽车的同步齿带的寿命是使用60000英里,而闪存商们会宣称闪存的寿命是支持30000次写入-擦除循环,但汽车厂商并不是说在行驶到61000英里的时候,同步齿带就坏了,它们只是说,行驶完60000英里之后,同步齿带有坏掉的可能。同理,对于闪存来说,就是说超过了厂商宣称的使用寿命之后,有可能存不了新的数据,但更多的闪存还会坚持一段时间,不过我可不是那个能找出精确的损坏时间的那个人。

也就是说,闪存设备不可能在到了额定的使用次数之后就立即一命呜呼。随着闪存逐渐老化,闪存单元逐渐失效,写入的错误率也在逐渐上升。闪存控制器能采用纠错码和数字信号处理器技术来应对单个闪存单元失效,只要失效单元不是很多,控制器就能改正错误,保证单元可以被继续使用。

最后,错误率上升到连控制器都无能为力的程度,这时候,控制器就会提示这个单元坏了。

一个典型的企业级固态硬盘在被使用的时候容量会有所保留,比如说它的容量是256GB,用户可以访问200GB或更多一些,处理器可以利用剩余的闪存单元来代替失效的单元。这虽然会影响固态硬盘的整体性能,但是能避免固态硬盘整体失效。当剩余的闪存单元代替失效单元被用尽时,整个固态硬盘就失效了,不过即便如此,固态硬盘中的数据还是可以读取的。

如今的半导体生产工艺已经是令人难以置信地精确了,但是当说到20纳米或更小的闪存时,用户不可能用到整个芯片的每个模块,每个单元,更不要说上千块同时使用,总会有一些多出来的单元用于代替失效单元,所以整体来看,失效率还是很低的。

东芝或美光的研究人员宣称其闪存产品的氧化层有170个原子那么厚,这是指平均值。有一些可能有150个原子那么厚,其它的可能有200个原子那么厚,随着氧化层的损耗,有一些单元会比其它的单元更早失效。

实际上,测试闪存设备以求出它的失效变量,这个工作没有意义,花了大量的时间,最后还毁掉了大堆的芯片,我还没有见到有研究向人们揭示失效率的变量是怎样的。经过和闪存,固态硬盘及阵列厂商的交流,我觉得我们不需要太担心固态硬盘的损耗,应该多想想如何重建。

考虑到固态硬盘的重建速度是机械硬盘的5到10倍,而且新一代的固态硬盘速度更快,容量也更大。当我把这些因素考虑进来的时候,我觉得固态硬盘的损耗问题实际上是一个妖怪:很恐怖,很严重,但是不真实。

你还担心闪存写入寿命吗?因为这个你是否会考虑不采用闪存?我希望得到你的反馈,在下面写下你想说的话吧。

Posted by Howard Marks