大数跨境

有些你不知道的情况,Facebook闪存失效大规模研究引发...

有些你不知道的情况,Facebook闪存失效大规模研究引发... 海宁皮革城
2015-07-11
4
导读:其中被调查项目:工作环境的温度和SSD存储单元生命周期网友投票最多,后面紧跟系统级别的写入疲劳和稀疏的非连续

其中被调查项目:工作环境的温度和SSD存储单元生命周期网友投票最多,后面紧跟系统级别的写入疲劳和稀疏的非连续性数据布局。可见大家对于温度、存储单元生命周期最为看重。也从中可以发现,大家在闪存与应用对可靠性要求方面还是有着非常明确的目的。


其实,这个调查的蓝本是参考了卡耐基梅隆大学《Facebook闪存失效大规模研究》论文的内容观点。借此,由绿芯科技主办、阿明自媒体协办的Greenliant 2015闪存热点沙龙活动在6月29日举行,特别针对“闪存与应用对可靠性到底存在什么需求” 这个核心话题,展开了讨论。




现场邀请到来自Greenliant亚太营销副总裁李炫辉,他就《Facebook闪存失效大规模研究》论文展开一系列现场讨论的话题。《大话存储1&2》作者张冬也将带来他对该论文的独家分享。 同时,本次沙龙还邀请到来自达沃时代雷迎春博士、乐生活与爱IT微信微信号作者也是SDS技术专家Peter Ye,以及人人网李蓓、美图杨尚刚等互联网用户和专注存储领域的专业编辑记者。


与此同时,微群技术会:闪存夏日清凉聊第一波,也同期在技术大圈和存储圈微信微信群展开。


线上线下讨论目的,从技术层面来探讨卡耐基梅隆大学《Facebook闪存失效大规模研究》论文中提出造成闪存失效的几种原因和现象,来论述我们如何避免和消除这些潜在风险。从而提升业界对于闪存存储介质的技术认知,启发大家对于闪存技术的进一步探讨与研究。


Facebook闪存失效大规模研究论文提到了哪些关键点?


在此之前,已经有不少业界朋友发布了对该论文的看法,也有媒体发布了Facebook闪存失效大规模研究论文的观点文章,从中我们也可以发现几个关键因素影响,工作环境的温度、总线供电情况、系统级别的写入疲劳、SSD存储单元生命周期、稀疏的非连续性数据布局、存储空间占用情况,以及不可预知的其他方面。


不过,Greenliant亚太营销副总裁李炫辉在分析中认为,“A Large-Scale Study of Flash Memory Failures in the Field《Facebook闪存失效大规模研究》的论文题目,立足点非常好,它是在一个完整的闪存产品生命周期里面,并且在一个真实生产环境里面,去研究和发现闪存的可靠性对于现代软件以及数据中心的影响。因为很多设备厂商可能只看自己设备的情况,但是对于下游厂商如何使用自己的设备应用的情况和问题,了解不多。而且从整个生命周期去理解这个事情,是非常有意义的。”


实际上,在这之前,我们非常缺乏一个对于闪存规模化使用的系统性研究报告。Facebook这篇论文的研究方法也比较客观,研究时间长度跨度近4年左右。在几万台服务器上安装了数据采集的脚本,自动化采集数据。并且把所有数据又做了完整分析,在里面也讲到把数据采集到Hadoop平台上,再去生成等等。就是说时间跨度足够长、数据量足够大,所以很有代表性。


在一个运行现代程序和系统软件的真实数据中心中,在闪存的整个生命周期了解闪存的可靠性特点是非常重要的。


需要指出的是,这个论文第一次展示了闪存SSD可靠性的大规模研究。“他们在 Facebook数据中心通过近四年和数百万次的操作小时进行数据收集来了解闪存SSD失败的性质和趋势。”


研究方向针对主要几个SSD的特性,一是从闪存芯片来看数据读写数量;二是数据如何与SSD地址空间映射;三是被闪存控制器复制、擦除以及丢弃的数据数量; 四是闪存板温度以及总线供电。


Facebook为什么能做到这样的研究?因为Facebook使用了非常多的PCIe SSD,应用到了各个业务平台之上,在这个论文中,就针对其中的6个平台进行了研究。


在论文中也提到了一个观点,并且这个观点在整个业界都是认可的。就是随着Flash密度的增加,在芯片层面的可靠性是降低的。大家都在谈闪存颗粒越来越便宜了,比如说20纳米只有25纳米80%的价格,16纳米大概只有20纳米70%的价格,越来越便宜了。但问题便宜是便宜了,但是可靠性会下降。这就是为什么你会看到尽管成本很高,大部分企业级产品仍然选用高制程工艺的闪存颗粒,并非低制程的工艺。


为什么颗粒厂商都开始注重3D NAND?原因在于 3D NAND在平面上可以采取更高制程,回到35纳米甚至40纳米的制程上,通过多层结构增加容量,提高单个晶圆产出率、降低成本。




加州理工在2012年专门做了研究,增加闪存密度也带来了芯片级的可靠性降低,就是制程缩小带来的可靠性下降。纵轴是可靠性、可擦除次数,横轴是纳米制程。


早期在72纳米的情况下,MLC的可擦除次数可以达到1万次。比如说到了35纳米,可擦写掉到几千次了。并且这里面还有bit error rate的变化,就是擦写过程中会出现错误的比例。


当前,业界提到了一个现象,“SSD将于两年内突破HDD的容量/价格临界点”,这个现象也是大家所注意的。那么闪存又便宜了,是不是闪存卡、SSD盘就便宜了?不是的,消费类的产品可能会便宜,但是企业级方面会慢一些。


你不知道Facebook论文中的几个重要发现!


从Facebook论文探讨中,有几个重要发现需要指出:



一是SSD失败并不是单纯地随闪存芯片磨损增加。它们历经几个明显的时期,与失败如何出现和随后如何被检测到相一致。


二是读干扰错误并不普遍。但写一般会有影响的,因为写是要重新加电,要把电激发到cell,但读不是,读是电位感应。


三是跨SSD物理地址空间的稀疏逻辑数据布局(如不连续数据),需要通过大量的存 储在SSD内部DRAM缓存的metadata来跟踪逻辑地址翻译,会极大地影响SSD 失败率。“如果说你的数据布局和物理的区域布局非常分散,就是说本来我在逻辑上是连续的数值,但是在物理上是分散布局,这对损害值会大。这和我们磁盘是完全不一样的,磁盘是说我一个逻辑上连续的文件最好是分散的布局。”


四是高温会带来高的失败率,通过截流SSD操作看来可以极大地减少高温带来的可靠性负面影响,会带来潜在的性能下降。对此,李炫辉指出,“闪存并不是温度越低性能越高,实际上温度越低由于电子驱动性能会下降因此还需要合适的工作温度,50到55摄氏度是比较好的工作环境。既比较流畅,又没有那么高的激发态会出现电子流失。如果说太高了,可能电子流失会比较多一点。如果太低了,对于电子操作性能会下降了,所以说还不能太低。”,不过对于这个问题,“所谓限流,直接对供电进行限制,相对来讲就是降低散热,降低散热实际上就变相地降低温度了。通过限流可以降低温度、提高可靠性,但问题是这样又影响到了性能,实际上这是一个矛盾体。这个问题就需要在板卡的设计过程中,怎么去这个给分摊掉,防止出现热点。热点就是真正的热点了,就是温度高点,一个地方的温度高会造成整个系统温度高。这就是之所以用分布式架构的原因,防止出现集中式的热点。”


五是由于SSD控制器的优化以及系统软件的缓存机制,操作系统写到闪存SSD的数量 并不能精确地反映闪存Cell上的擦写数量。


基于这样的发现,业界同仁希望在真实工作负载以及真实系统中有所新发现,然后需要了解各种不同因素对闪存可靠性的影响,包括系统软件、应用以及SSD控制器;更需要设计更加可靠的闪存架构和系统;同时为今后闪存可靠性研究改善评估方法。


稳定性测试带来什么启示?


不过,在闪存层面,可靠性大家探讨比较多,但稳定性几乎很少有人探讨,原因在于使用磁盘时,一个15000转的磁盘,性能是200 IOPS,用上十年还是200个IOPS。但是闪存就完全不一样了,实际上闪存颗粒在使用过程中会越写越慢,由于bad Block问题,实际的性能会随着使用时间和频率逐渐下降,出现性能衰减的问题。常理来说,板卡厂商要有一些数据来帮助用户了解这个方面的情况,当然需要做一系列的测试、评估。


对于稳定性方面,一个产品应该在整个生命周期里面所定标准应该是99.9%的时间里面性能不低于90%。李炫辉介绍说,对于稳定性,Greenliant有一组测试数据,使用闪存卡一直在做测试擦写,全盘擦写了差不多18000次,性能衰减基本上控制良好,像写的性能衰减值只有3-4%,读的性能衰减稍大一点,接近7-8%。这样的性能表现是在5年的闪存生命周期最后一段时间里面,意味着如果人的寿命是100岁,他已经99岁、100岁了,他的承受能力和20岁时基本上是一样。作为闪存专业厂商,这就是做产品化必须考虑的,这样的跑卡测试一直在进行着。


由于闪存设备在长期擦写情况下,坏块会逐渐 增多,故障率上升,由此会带来潜在的性能大幅下降。


Greenliant对产品进行长期擦写以及性能测试 。在疲劳测试环境中,每天全盘擦写50次, 超过18000次擦写后,性能衰减不超过10%。


DWPD是每天全盘擦写的缩写(Disk Write Per Day),10 DWPD就是每天全盘擦写10次,为什么会有这样的数据呢?因为我们知道闪存颗粒有擦写次数的限制,如3000次,我们通过架构设计、磨损平衡算法以及配置冗余的颗粒,来延长闪存卡的寿命,通过全盘擦写这个数值,就可以推算出闪存卡的使用寿命。每天擦写次数越高,其实对闪存卡的寿命影响就越大,因为闪存还有一个特点,就是它需要有一个relax时间,叫放松时间。原因是什么呢?因为闪存是电子器件,当进行数据操作的时候,实际上是要释放电子调整电位,当电子隧道突然打通之后,电子泄漏到规定的阀值马上就关闭隧道,实际上里面的电子仍然处于不稳的抖动状态,需要一个放松时间。这个放松时间越长,有利于闪存持久性。这就好像我们搬东西,一小时搬50块砖和五天搬50块砖的感觉是不一样的。


Greenliant测试在55度的恒温环境下,每天50次擦写, 并且现在还再继续跑,已经跑了一年。最终计划要把这几块卡全部跑到最后不能用, 到底可以到什么程度。Greenliant当时设计目标是每天10次全盘擦写,寿命可以用不少于5年。实际上已经测到了,10DWPD是保守值,但Greenliant想看实际值究竟能撑到多少?


做闪存卡设计的时候,GreenLiant每做一次具有软件功能的固件firmware的升级,就要把整个板卡的测试跑一遍。从开发完新的firmware到这个新的firmware能正式通过至少一个月。原因是什么呢?闪存的Firmware升级,可能会对设备运行带来不确定因素。如新的算法带来组件发热量或功耗的升高,底层设备访问的机制变化与其它代码和接口的兼容性等等,可能会影响板卡的稳定性。并且对于一些BUG修改,也许会带来一些新的BUG,所以要把整个卡的都要跑一遍。例如以前其它厂商闪存产品曾经出现的意外掉电容量丢失,错误的指令造成数据丢失等等,都是由于测试不完整造成。


因此,Greenliant每一次Firmware的更新,从高温耐受到整个的功能性能测试都要跑一遍,并且同时在异地两个实验室同时做测试,只有两个实验室均通过测试后,才会发布新的Firmware版本。


因此,对于一个专业闪存厂商来说,闪存的可靠性设计,实际上必须要将整个的设计和生产流程考虑进去。


闪存控制器实际上是针对颗粒去设计的,比如说每一种控制器,其里面的算法和可靠性的保护都会针对做评测。评测完后,会在算法里针对颗粒来去设计,基本上,控制器是按照最坏的情况去预估。


并且,闪存控制器是联系主机和NAND Flash的桥梁,闪存控制器需要具备主要几个闪存管理功能:Error-correcting code (ECC校验)、RAID保护机制、Wear leveling(磨损平衡)、Bad block mapping(坏块管理)、Read/write disturb management(读写干扰管理)、Garbage collection(垃圾收集)。闪存控制器也有其它定制化功能,如加密、安全擦除或自毁、压缩或去重。


实际上,在架构设计里面,就可以推算出来大概什么情况。随后还要在前期设计每一个流程对颗粒、流片做测试,然后再做整合短期密集的测试,去验证整个可靠性。同时还会跑实际的情况,长期时间进行测试。


不同批次的颗粒质量都会不一样,对于封装厂那边,质量会直接影响到产品的产出率,就是同样一个wafer晶圆要切割封装,如果质量好产出率自然就高,可以达到98%、99%, 质量不好可能到70%多,这就是在wafer切割封装过程中需要考虑的情况。


当然这些涉及可靠性方面,从闪存设计上可以给予很好的支持,通过短期高密集擦写来进行验证,但是对于稳定性来说,就需要长时间的测试,就像Greenliant这样一直对几块闪存卡长期跑下去,从中监测性能与稳定性的变化。


为什么分布式ECC可以带来更好的稳定性与可靠性?


稳定性测试只是启示我们对于闪存卡稳定性和可靠性的验证还是有所不同,如何做到闪存卡架构上更好的稳定性与可靠性,不得不提到散热问题,这也是Facebook论文研究最为关注的第四个方面。


如何消除性能衰减和可靠性下降的问题,这就需要在架构设计方面进行创新。Greenliant在闪存设备架构上实现了分布式ECC 设计架构, 在每一个NAND Package中都封装一个闪存控制器里面。这样就避免了前面所讲的性能衰减和可靠性下降的问题。同时为了防止闪存颗粒故障造成数据丢失,在架构上还实现了板载硬件RAID的功能。

当然,目前大家都明白了:散热对稳定性和可靠性影响很大。过热的话会造成系统不稳定,现在闪存卡都采用FPGA,FPGA在高温情况下可能会算出错误的值,系统就会出问题。


Greenliant采用分布式的架构,因为在整个闪存卡控制里面主要存在几个高性能计算的环境,一是ECC校验,ECC校验是计算密集型的;二是XOR RAID也是高计算型的。


过去的情况下,一般来讲在一个控制器里面,一个ECC校验码处理整个板卡芯片上的ECC请求,一个XOR芯片处理整个板卡上的所有RAID的请求。这就意味着这两个芯片是计算量非常高的芯片,就会产生过热,高密集计算过程中会过热,这就可能产生稳定性问题。


Greenliant的思路就是:把ECC引擎封装在颗粒里面做分布式ECC,一个板卡上可能做40个ECC的引擎,这样把计算给分开了。原来是1个,现在是40个了。XOR的RAID根据分组是8个芯片,也把计算量分开了,就意味着总发热量不变,分摊多了就更低,散热面更大,所以性能更稳定。并且闪存卡散热不能靠风扇,要靠热传导,最多在控制器上加一个散热片,而里面的闪存颗粒全是靠热传导出来。如果能降低每一个颗粒的发热量,那么实际上就使系统会更加稳定、更低,可靠性就更高。这就是为什么测完之后Greenliant数值稳定性会很高,这是这个分布式ECC架构带来的好处。


为什么SSD失效并不完全由于擦写过度造成?


在针对Facebook论文探讨中,大家确实发现到SSD 失效并不完全是由于擦写过度造成的,实际上是在不同的时期里面会有不同的原因造成的。


其中,提到不像磁盘是一个浴盆曲线,刚开始使用的时候故障率高,然后降低到很平稳时期,到了一定时期突然故障率又增高。


SSD 表现出来的是双曲线,刚开始使用过程中故障率高,这与磁盘有点类似。也就是说磁盘在刚开始使用的前三个月里面,故障率最高,只要过了三个月后,基本上性能很稳定,很少出错,然后到了三年后,故障率又开始增加。


但是SSD表现的曲线就是:刚开始增加,随后性能下降,之后突然升高。每一个阶段的情况还是不太一样,第一个是early detection 的阶段,当一个闪存卡在开始运行过程中,实际上这时候就会出现,因为原来没有大规模应用读写所以颗粒是稳定的,当出现大规模擦写时一旦有质量不好的颗粒就会坏。而当质量不好的颗粒开始坏时,这时就靠OP,需要过度预留空白颗粒来替换,替换完成自然就好了。不过,有一些情况下,没有能够替换完成,那么在后期就会出错、出现失败。


因此,Facebook论文里面还提到一个现象,早期替换率高的反而后期是比较稳定的,早期替换低的后期可能故障率更高。原因是什么呢?原因是前期会有一些颗粒处于临界值,早期没有能够把处于临界状态的颗粒给替换掉,随后临界状态颗粒到后期变成坏的了 。早期出现的故障多是坏块,由于块造成的SSD失效。


通过这个时间的经历之后,会开始稳定一段时间,随后又会出现一些故障,这个故障才是擦写次数造成颗粒过度擦写,这时候是算法的问题,算法不好很快就出问题。如果算法的均匀度非常高,就可以长久一点。所以SSD故障是由两方面组成的:早期是由坏块检测功能造成的,后期就是wearout磨损造成的,对于wearout可以优化。


那么这里就需要提到磨损均衡的概念。磨损平衡分为动态和静态磨损平衡以及全局磨损平衡。动态磨损平衡写一个文件时候,永远写在一个空白块,空白块写完之后再写回到之前的那些数据被删除块上,这样循环地写。但是当一个文件写到闪存上就不很少被访问,而其他块被写了几十上百次,在这种情况下块与块的擦写次数就不再一致,动态磨损平衡算法就失效了,因此又采用静态磨损平衡算法,就是当一个块擦写次数和临近块次数超过一定阀值时就作一个数据存储交换,这样保证擦写平衡。这样有利于改善闪存耐久性,会优化闪存的性能。另外在颗粒级别会有全局磨损平衡算法,这样进一步提升设备的可靠性。


当有Wear Leveling磨损均衡的时候,基本上所有的擦写都是一致的。“你擦了102次,我擦了98次,大家都差不多,这样大家均匀的一起走向末路,而不会在一个SSD里面,我这个颗粒很快挂掉了,你那个颗粒还有半年的生命周期。”


全局磨损是在颗粒级再做一次磨损平衡,动态磨损平衡和静态磨损平衡实际上是在颗粒内部做的, 在颗粒级如果没做磨损均衡的话,就会碰到一个情况,颗粒会很快地磨损掉 。在颗粒之间的磨损均衡和在颗粒内的块之间的磨损均衡都是非常有必要的,虽然做磨损均衡性能会下降,但为了寿命会加长,这还是必须有的。


按道理来讲,每个闪存卡厂商都应该提供磨损平衡的测试报告。由于磨损平衡测试需要在物理层面做一些特殊限定才能进行测试,而各个闪存卡厂商的底层架构并不相同,因此现在还没有很好的通用的磨损平衡的测试手段。



GreenLiant采用的算法是划定物理的块范围然后开始进行擦写,几十万次高密度擦写。擦写完之后监测到每一个块的擦写次数,得到值之后看到底是均匀还是不均匀,先进的磨损平衡算法可以保证无“热点”。


怎么理解闪存中最关键的底层东西,比如Cell?


在谈论了这么对针对《Facebook闪存失效大规模研究》论文的话题,相信大家对SSD包括闪存的技术架构和特点有了很多了解,不过,这还不够深入。比如你了解闪存中最关键的Cell吗?你对闪存中最底层的东西有多少了解呢?


在日常对于闪存的讨论中,经常会提到Cell,Cell是什么,怎么串起来的?这些都是一些常识问题,其底层到底什么样子?《大话存储1&2》作者冬瓜哥(张冬)给出了深入浅出的诠释。



一个Cell就是一个晶体管,现在叫晶体管不太合适,叫半导体长效应管。这就是两个电极,给个电压,这是控制芯片,给了电压就会产生电场。一旦通电的话,本来是绝缘的,加电压之后就打通了,电子就流动起来。通电开关打通之后,这就是晶体管。所有的数字电路都是拿开关去堆起来的,包括加法器、计数器等等堆成一个CPU。


但是这个东西让Flash用作存储了,是把中间这个地方加了一个floating Gate浮动栅的东西,内部是能储电的电容。DDRAM也是这么干的,但是里面的电容外面是没有绝缘体的,充电马上就漏掉了,漏得非常快,所以要不断刷新。但是Flash充进去能够保存一部分电,而且能保存一段时间。不过,其外面也是一个绝缘体,意味着充电时间就长,所以Flash性能不如DDARM。



这是一个Cell,储存一个bite,怎么把Cell连起来呢?把正负极串联,把控制器并联,有32768个列。为什么72768?就是除以8之后是4K,这就是一个Page。


32768列,然后一行一个Page,具体多少行每个厂商设定也不一样。比如一个Block设定512k,那么里有多少行。


要读写Page的话,需要把Block里面所有其他的Page控制极都加一个电压。正负级会打通, 开关串联起来,如果把其他开关都打通,然后加一个信号,在另一边考察信号能不能从上面透下来,如果透不下来证明里面是断开的。这就证明里面存了电,或者说不存电。


其里面是很复杂的,里面存了电。给里面加正电压,导通性增强了,如果加负电压,导通性就降低,绝缘性就更强了。


其实把所有打通之后,还要比拟器,需要在旁边有预充电的比较电压,再加一个基准电压,基准电压跟比较电压一样值,看你这边漏电的速度有多快。如果多少纳秒以后,基本不漏电证明里面是断开的。导通性基本不导通的,绝缘性增强了,证明里面是有电的。


如果比较的时候发现漏电很快,证明这里面没有电。没有电也会漏电,这个开关都是漏电的,所以功耗大,而漏电占了很大一部分。


如何读写?写是充电,往Cell里面充,充电是代表0,没电代表1。正常是充电表示1,这里为什么是充电代表0呢?因为有SenseAMP放大器,放大器的逻辑就是对充了电反而输出高电压是1,所以最后是不稳定了。问题是不能同时对Cell放电又充电,不能写1又写0,如果对它进行放电的话,这一块就是要加一个高电压。比如说起码要20伏的压差,当然实际上不会这么高,在这里只是举个例子。这里起码要加40伏,40减10等于30,那只能充电,但不能同时充满电。


NAND Flash最大的罪魁祸首是不能同时充满电,但是DDARM可以对每个Cell同时充满电,可以对每个Cell里面根据一大堆电路充满电,正因为如此电路面积变大了。Flash比DDR密度要高,不用每个Cell都充电,这就是拿价钱、拿密度来换性能。


再就是写放大,正因为不能同时写,所以每次都写到擦好的Block,每次只写0就可以了,1已经写好了。


如果出现写放大没有办法,把整个Block读出来擦成1再写回去,这样的性能就非常差了。


3D NAND的底层架构到底是什么样子?


目前业界谈论最火的3D NAND,如这个图示,所谓3D NAND之前只有一层,3D NAND就是把整个晶体管给多层排列起来,提升密度。每一个栅极越做越小,现在是把整个卷起来了。当然这是一种,还有很多的方式,怎么做都行,要看各自工艺。



3D NAND里面的工艺就有很多东西,如果在硅片上腐蚀一个坑,腐蚀得很不规则,质量就不行。比如下图S|A东倒西歪的,这个不圆。下面就是比较良好的工艺,很规整。最后固定Cell的东西都在这儿插着,一根柱子、一根柱子地插在一起。



这种东西都是拿半导体工艺一层一层的如 3D打印,只不过是用笨方法一层一层来做,刻了膜把要腐蚀的地方漏出来,把不腐蚀的地方盖住。


大家谈论TLC、QLC,为什么会有LDPC呢?


最有意思的一个问题是,大家谈论TLC、QLC,为什么会有LDPC呢?


SLC出错率很低,因为每个Cell只存一个位,就一个电压。TLC出错率高了,拿四个电压存两个位,假设1.2伏表示00,1.5伏表示01,如果充电冲到1.35伏就没法判断到底是00还是01,还有可能出现错误。所以ECC就要增加,你不能无限增值。ECC无限增加是什么结果?相当于你有1TB的Flash,而拿另外一个Flash做了一个镜像。这么做成本就太高了,就需要尽量少的位冗余更多的错误,比如说4KB里面有多少个bite校验位,就能冗余多少位的错误。


这已经达到理论极限了,就是纠错能力已经达到极限,不能再上了。但是这种算法也是非常复杂,不是确定性的算法,应该是非确定性的,带有几率预测的算法,所以这里面算法非常复杂。


如果你用软件实现没有问题,拿CPU不断去算,但是很慢,不可能用在Flash里面。你就把它硬化,硬化后电路展开以后就非常大,用FPGA就搞不定了,FPGA也是笨办法,把所有结果算好,然后放到RAM里面,判断以后从RAM里面把结果选出来, 这么一种算法,面积就非常大,不精简,所以必须用ASIC拿电路算出来,而不用是FPGA选出来。


你了解闪存的P/E值和Data Retention吗?


冬瓜哥提到:另外一个是P/E值,按照优化后的来算,如果真的全盘顺序写一遍,恐怕能够达到Cell擦写极限,这个时候恐怕只能用OP来做。很多真实的业务场景一般都是随机写,而且有一定的几率写一个4K块,就算写了4K进去,这个时候底下并没有真正往下写4K,而是缓存到这里一段时间。应用主机又发过来,又针对4K改写了一遍,这很有可能。两个4K,厂商算的时候是算成8K,但是实际只耗了4K。这就是写合并。


再一个概念就是Data Retention,现在有人写文章说优盘如果七天不用就丢数据,真正感觉没有这么夸张。不过,闪存SSD漏电是不一样的,每一家的品质不一样,漏电速度都不一样,谁也不知道漏多快。之前某厂商也出了问题,因为没有控制好漏电的时间把数据丢了。


Greenliant的闪存卡有专门的Data Retention算法,会主动检测Cell内部的电位变化,进行数据维持。当然,这也带来了少量的性能影响。通过专有的电路保护技术,Greenliant可以保证在系统完全断电情况下,数据保持不少于90天。


闪存颗粒的材料与质量


对此,李炫辉介绍说,GreenLiant一般是买的裸晶圆(Wafer)自己切割,一个晶圆不可能百分之百利用起来,里面是有坏块的地方。这不是均匀分布的,在片上是随机分布的。随机分布第一是要有自己的切割算法,保证切割下来每一个都能满足我的质量要求,如坏块不能超过多少个。但是切割完之后,可能还会留下来一些边角料,这些材料是不满足我们高质量标准要求的,但是这些东西还会有一些厂商去收购,因为便宜嘛。因为大家已经把晶圆成本分摊到高质量成品上了,所以这样的材料就非常便宜。同样都是从上游晶圆厂商出来的,可是质量、标准、价格就会不一样。


比如说GreenLiant在卡上是有OP的,比如说标称1.8T,其实裸容量是2.75T,多出来的这部分容量就是过度配置的容量,简称OP(Over Provision),OP比率越大实际上可靠性越高。但是很多厂商为了降低成本,采用尽可能低OP比率。另外在切割的Die上也有不同,比如标成4K,可能不是4096,可能是4192,多的那些也是额外的OP,这些东西你是看不见的,在注册层才会有的,也是做一些坏块管理,如果在擦写过程中可以做一些替换。


同样规格的颗粒价格成本都会不一样,质量可靠性也会都不一样。但是对于用户来讲是看不到的,可能看到的是价格和测试的性能,这是最艰难给用户解释的地方。


对于用户采购闪存的最佳建议?


闪存是由核心的颗粒组成,电子总会有问题的时候。诚然,它和磁盘不一样,闪存随着使用时间延长,性能出现下降。好颗粒更需要好的架构。但是,我们在了解完由《Facebook闪存失效大规模研究》论文引发的多个方面思考后,是否对采购SSD或闪存卡存在疑虑了呢?


当然不是。


美光相关人士在出差途中也参与了微群技术会——闪存夏日清凉聊活动,他指出了几个方面的情况,理性和积极的认知值得大家参考。这里阿明将他非常精辟几个观点分享给各位:


一是,SSD使用上大致分消费级应用和企业级应用两种应用场景。消费级应用的特点:a.不会满盘使用; b.不会随时随刻使用; c.几乎大部分操作都是读操作、顺序地址操作。


企业级应用的特点:a.满盘使用; b.要求随时随刻都在读写; c.读写比例有要求,很多系统要求更高的随机地址性能。


二是,针对这两种应用场景,消费级SSD更多关注于FOB性能,即新开封状态,或出厂状态 (FOB) fresh out of box;企业级SSD更多关注于稳态性能Steady state。


三是,关于稳态性能测试,大家可以搜索SNIA,有一套成熟可靠和稳定的测试方法。


四是,所有的SSD都有冗余即OP的存在(over provisioning),只不过有多有少,因为基于NAND结构的容量是1024*1024*1024=1GB,而厂商的SSD标称容量1G基于1000*1000*1000,所以,就算是消费级的SSD,也至少有1024*1024*1024-1000*1000*1000,即~7%的OP。


五是,再来讨论温度,SSD厂商一般在SSD内部都有temp senser,SMART信息中也有温度监控,温度高了一般做法是SSD自主降速。


六是,个人认为,由于NAND晶体构造,bit错误更多的是浮栅层的charge loss或charge gain,更低的温度让charge更难自主在能级中跃迁。所以,温度越低,基于NAND的出错的概率越低。


http://ok.jd.com/m/index-49131.htm

【声明】内容源于网络
0
0
海宁皮革城
介绍海宁皮革城的商业信息 皮衣皮草品牌
内容 1487
粉丝 0
海宁皮革城 介绍海宁皮革城的商业信息 皮衣皮草品牌
总阅读4.0k
粉丝0
内容1.5k