本帖最后由 nighttob 于 2015-5-24 21:03 编辑
第一回 http://bbs.pceva.com.cn/thread-96059-1-1.html (补档)
第二回 http://bbs.pceva.com.cn/thread-96063-1-1.html (补档)
第三回 http://bbs.pceva.com.cn/thread-96827-1-1.html
数据保存期的“真相”?
拜某位专家所赐,5月一开始我们就连续看到几篇给SSD用户“敲响警钟”的新闻。我们先不管到底是外国专家危言耸听、国内小编哗众取宠还是希捷的HDD卖不出去了,总之,这回事是存在的。
但这个问题就跟“稳定态性能”一样,是普通用户"Don't Care"(不需要关心)的。事实上这个事也并没有影响SSD用户的信心,要说影响力,应该还不如春节那段时间三星850 PRO的固件升级事件。
要理解数据保存期这个概念,首先我们复习一下NAND闪存的编程/擦除(P/E)过程。
编程(Program)时,控制栅(Control-Gate/CG)高电位(比如+10V),从而把电子从“供体”硅基底(Base)拉过“阀门”氧化层(Tunnel Oxide)存到“受体”浮置栅极(Floating-Gate/FG)中,而浮置栅极中储存电子的多少也就表示了编程状态(SLC的0/1,MLC的00/01/10/11,等);
擦除(Erase)时,控制栅低电位(比如-10V),从而把电子从“受体”浮置栅极中推到“供体”硅基底。
也就是说,NAND闪存的编程/擦除过程,其实就是浮置栅极的充放电过程。从某种意义上说就跟电容一样,所以SSD实际上相当于一个大电容阵列……
理解了这个,也就明白了为什么NAND闪存有擦写循环(P/E cycle),因为作为“阀门”的氧化层有寿命磨损。每一次循环都会让少量电子困在氧化层中,形成一个漏电的“隧道”,让浮置栅极中的电子漏回到基底中,使编程状态发生改变。久而久之,这个“阀门”也就失效了,浮置栅极无法保存电子,这个存储单元(Cell)也就废了。
NAND闪存的数据保存期也就是浮置栅极保持某个编程状态的时间。
这个时间,也就是数据保存期,受到多种因素的影响。比如:材料(工艺)、擦写循环次数、使用时间、温度(通电及断电)等。
其中,温度是很关键的一点,对数据保存期影响巨大。这也就是那位专家声称“一周(几周内)不通电就变砖”的根据所在。
那么为什么温度对数据保存期影响巨大呢?大家应该听说过“电子迁移”这个现象,特别是超频玩家。“电子迁移”往往是长期通电,特别是高温长期通电的典型现象。对CPU等逻辑电路来说,电子迁移的危害性较大,严重以后会导致报废。但闪存不一样,闪存的原理依靠的就是电子迁移,如果电子不迁移,浮置栅极自然无法储存电子。
温度升高以后,电子迁移率增大,有利于电子穿过氧化层到达浮置栅极(或者返回基底)。
当然,这不仅对通电状态有效,断电状态也是有效的。断电时温度高,电子就会更快速地从浮置栅极中漏回到基底去。
至于这个速度有多快,或者说不同通电及断电温度下,NAND闪存的数据保存期都有多久,有公式可以计算。但对一般玩家来说,还是直接查表更方便。
需要注意:JESD218标准的适用对象是SSD整体,此表格是根据JEP122中提供的数据保存期模型汇总出来的。
用红框圈出来的也就是我们经常听到的“消费级1年,企业级3个月”这一说法的来源。严谨的表述应当是:消费级产品以40℃的工作温度每周通电5天,每天8小时,断电后在30℃的环境中,数据保存期为1年(52周);企业级产品以55℃的工作温度每周通电7天,每天24小时,断电后在40℃的环境中,数据保存期为3个月(13周)。
从表格中也可以明显看出,通电温度相同的情况下,断电温度每升高5℃,数据保存期都要减半。虽然表格中未列出断电温度比通电温度高的情况,但我们可以估计一下通电低温断电高温的情况。结论就是,只要你的机箱内部不是全天候的蒸笼或者你有给SSD做日光浴的习惯,就不需要担心数据保存期这回事。
除了“消费级1年,企业级3个月”这个说法以外,还有一个“加热利于ECC,冷冻利于数据保存”的说法,道理也是前面提到的。电子迁移率的升高还会导致RBER(读取错误率)下降,使颗粒ECC需求降低,有利于性能提升。但一般情况下温度对性能的影响十分不明显,除非RBER接近ECC阈值,比如前段发现的三星840系列TLC SSD的事情(http://bbs.pceva.com.cn/thread-119411-1-1.html)。
关于这件事的始末,这个“爆炸性新闻”是有一个过程的。最开始的新闻里只说一周或者几周内就会变砖,随后逐渐补充内容,到了第三篇新闻的时候已经可以让普通玩家明白这回事了。这就跟某些网络流言一样,先有一个唬人的标题吸引你点进去,然后里面有一套很厉害的说辞引起你的重视,并让你广为传播,最后再来人辟谣澄清。稍有区别的是这从头到尾都是那一个专家做的,但不同的转载媒体也会添上去点什么,特别是正逢三星的TLC SSD遭遇连环打击,正好推波助澜一下。不过典型案例应当是当年压死旧OCZ的最后一根稻草,也就是26nm Hynix那批颗粒。由于漏电率极高,导致RBER巨大,数据保存期也短,本来是很烂的颗粒,OCZ再拿去做跑分盘,那结果大家都清楚了,返修榜霸榜的伟绩。
同一块MLC的晶圆切下来的,调好的做eMLC,用剩的做SLC
有点夸张,但是没有错别字,且往下看。
在我们的认知中,SLC是高大上的存在,其次是eMLC,最后是普通的MLC。用以划分等级的标准无非就是速度及耐久度。
以普通MLC(Client Computer MLC/ccMLC)为标准,SLC的写入速度大约是ccMLC的2倍多,耐久度则是20倍,eMLC的写入速度比ccMLC略慢,但耐久度却高了10倍。既然是同一块晶圆切下来的,为什么会有这么大差距?
那就是颗粒的筛选分等。颗粒厂会对同一块晶圆上的颗粒进行测试,包括坏块数、漏电率和出错率等。首先坏块数达标的(最低可用块数达标+第一个块是好的)符合原厂MLC要求,漏电率较低的被挑走并经参数调整做成eMLC,出错率较高的可以屏蔽高位改成SLC。
为什么SLC反而成了“残次品”?看下面我整理出的表格,列出了美光近几代NAND闪存的部分技术参数。
数据来源是美光的颗粒说明书,这里把同代的MLC和SLC列在一行,以方便比较。没有准确信息的数值以*表示,20nm SLC的说明书不公开,所以关键的地方都没有了。而16nm的SLC,我不确信美光是否还单独做SLC,因为自L85C以后已经有了MLC+的功能,简单来说就是让用户(这里指的是美光的用户,也就是SSD生产商)直接以SLC模式操作MLC,而不是现在这样在固件中模拟成SLC。至于为什么是(只有)美光的,因为它们的PDF很好找……
从表格中可以看出,SLC的ECC需求要比MLC低得多,对那些难以胜任MLC工作的颗粒来说,改成SLC还有重新做颗粒机会。
事实上,现在已经有实用技术,可以在最终用户的阶段,动态转换MLC及SLC的产品。一类实例就是各家的SLC缓存方案,利用的就是SLC模式下编程页(tPROG)和擦除块(tBERS)的时间短,ECC消耗低(一方面是SLC缓存写入本身错误率低,另一方面是持续把SLC缓存GC成MLC的过程干扰较少,同样是降低了错误率),而且几乎不消耗耐久度(即使模拟SLC没有“原生”SLC那样20倍于MLC的耐久度,10倍也总是有的)。特别是当前的平面(2D)MLC颗粒保持3k的耐久度已经不易,以及低容量盘颗粒喂不饱主控性能太低,因此采用SLC缓存是平衡性能与耐久度的合理做法。
另外一类则是另外一种最大化颗粒使用寿命的方案。我们知道一个块到了寿命末期错误率会上升很多,当错误率超过主控和固件的ECC能力以后,这个块就要被标记为坏块。但是,这个块的错误率只是超过了MLC的ECC需求,如果把这个块屏蔽高位变成SLC的话,错误率就会显著下降。即使不能当全新的用,至少是能以SLC的形式继续发挥余热的。配合刚刚提到的SLC缓存方案,那就真是如鱼得水了。
但是,并不是任何情况都适合把MLC转换为SLC。除了写入密集型这种性能因素导致没有办法充分利用SLC缓存以外,还有就是NAND自身缺陷。对漏电大的颗粒来说,高错误率只是表象,即使转换为SLC还是会漏电。换句话说,SLC不解决数据保存期的问题。电位无法保持只能靠自刷新解决,而只有通电状态下才会刷新。
从上面的表格中我们可以轻易看出随着工艺(制程)的进步,NAND颗粒的ECC要求一直在稳步提升。如果ECC要求不变,现在的颗粒必然无法维持3k的P/E。但以SSD整体来说,现在的SSD跟5年前的SSD比,耐久度并没有显著降低,原因就在于NAND颗粒和SSD主控之间此消彼长相互平衡。虽然老颗粒的自身耐久度高,但受制于主控较弱及固件不完善,难以完全发挥颗粒的能力(主控弱,要靠颗粒带);现在主控和固件都得到了长足进步,让“烂颗粒”实现同等效果并非不可能(颗粒弱,要靠主控带)。而SSD最重要的两个指标——容量和价格,也驱使所有人只能往前走,因为没人愿意再回到80GB就要¥2000的时代,即使它看上去再怎么美好。
揭下来再让我们看看eMLC和ccMLC的区别,这里把L74A这一代MLC、eMLC及M73A SLC放在一起
通过增加tPROG和tBERS及ECC需求,以及上面说到的减少数据保存期,实现了eMLC的高耐久度。
增加tPROG和tBERS的意义就类似于慢工出细活。我们已经知道了每次编程/擦除操作都需要控制电子在氧化层中穿行,那么更精准的控制就会使其中滞留的电子更少,以最小化对氧化层的损伤。增加ECC需求则是容许颗粒出更多错误,以此延缓无法纠正错误的出现,不过这对ccMLC颗粒也有用,主控和固件可以开到超过颗粒需求的ECC水平,用以进一步延长颗粒寿命。减少数据保存期就是简单粗暴的玩法了,一方面是企业级负载更高难以确保1年的数据保存期,另一方面也可以视作“主动降低要求”以确保全心全意为通电时服务。
这样的结果也就是我们看到的,很多使用eMLC的SSD产品,写入性能并不如同样方案但使用ccMLC的产品,但TBW却能高数倍甚至十几倍。
懒得翻图了,这里就用OCZ最新发布的NVMe来举例。ZD6000用的是ccMLC,ZD6300是eMLC,可以看到ZD6300的写入性能明显低于ZD6000,但写入耐久度要高。
可能有人要问了,我还见过I家的DC S3500和S3700就是ccMLC的比eMLC的慢得多,怎么解?
1、这俩一个用的是L85A一个用的是L74A-ENT,后者并不比前者慢;
2、L74A的单位容量“劣势”也使得以充分发挥主控能力;
3、I家当然做限速了,不然低端的比高端的性能强,高端的卖给谁,就算耐久度高了20倍,不也一样有搞跨界的么。而且,I家限速是传统,从X25-M到现在,一直都在限速,避免低端直接与高端对头竞争。
虽然eMLC的速度劣势较大,但耐久度接近SLC,在SATA的外部限制下,eMLC可以替代SLC。而SLC由于单位容量这一不可回避的短板,只能在低容量有所作为,容量大了以后其读取劣势就显露无遗。所谓尺有所短寸有所长,就是这个道理。
早先的SLC就是纯SLC,MLC当然也是纯MLC,后来SLC才变成直接用现成的MLC颗粒屏蔽高位得来的。具体是什么时候我说不准,至少IMFT 25nm这一代开始就是这样做的了,所以后来听说三星850 PRO是TLC屏蔽成MLC的以后也没太吃惊。不过三星称第二代V-NAND的P/E可达35k也就是上面说的,先屏蔽高位,再调整参数。本来电荷陷阱(Charge Trap)就比浮置栅极捕获电子的能力更强,再加上外部手段,耐久度高出平面MLC闪存几倍完全不成问题。
曾经我们以为SLC缓存是投机取巧的办法,并对此嗤之以鼻。现在来看,这都是年轻而犯下的错。虽然旧OCZ确实干了不光彩的事,但也让SLC缓存这个方案得以发扬光大,然后有了干爹继续用……
我记得论坛里曾有人设想过TLC降级成MLC,MLC再降级成SLC的方案,果然只有人想得到才能做得到。而拒绝思考的人只会幻想着SLC。
企业级SSD的等级划分
消费级SSD有高中低端,企业级同样有高中低端。只不过消费级靠性能(其实是跑分)区分,企业级靠耐久度区分。
通常来说,企业级SSD分为读取密集型(Read-Intensive/RI)、混合读写型(Mixed use/MU)及写入密集型(Write-Intensive/WI)这三级,如果加上商用级(Business class)的话就是四级。其实我不希望把商用级算进企业级当中,但下面说明的时候也会有它的事。
除了用耐久度区分企业级SSD的等级以外,还可以看内部使用的颗粒类型及OP大小,下面用个表格简单说明。
| 商用级 | 读取型 | 混合型 | 写入型 | 写入量 | 72TBW | <1DWPD | 1-10DWPD | ≥10DWPD | 使用ccMLC | 7% OP | 20%-28% OP | - | - | 使用eMLC | - | 7% OP | 20%-28% OP | ≥28% OP | 固件功能 | 全盘加密等 | | | 高耐写策略 |
容易混淆的地方就是对读取密集型来说,既有用ccMLC颗粒开28% OP的,也有用eMLC颗粒只开7% OP的,实现的效果都是一样的,都是每天小于1遍全盘覆写(DWPD)的写入强度。而混合读写型和写入密集型都是28%的OP,区别主要在固件策略上。当然对写入密集型来说,OP可以开的更大,甚至超过100%。
不同的等级对应着不同的使用需求,不是你用个写入密集型SSD,效果就一定比别人用主流消费级的好,更不代表不会坏。就象我一直说的,企业级与消费级的考量有很大区别,随便跨界可能死的很惨。
OP迷思
类似于“新买的SSD要不要设置三级OP”以及“OP设置多少最好”这样的问题也是求助区的常客了。问这个问题的,往往是头回买SSD的,或者刚从不知道哪儿学习了新姿势的。
但奇怪的一点是,这些“节衣缩食”买来人生中的第一块SSD,要买“性价比”最高的。放着大牌靠谱的128G不要,一定要自己买一个160G的回来,手动OP成128G的才行,这样才能实现物质和精神的完全胜利。
反正不是花我的钱……
回到技术问题上来。既然我们上面看见,读取密集型SSD就可以用一般的ccMLC颗粒开28% OP得到,那么我们自己划分一定量的OP,是不是也能达到类似的效果?
我的回答总是——如果你有相应的需求的话,当然没问题。
那么什么算是相应的需求?
比如你有0.5DWPD的日常写入需求,但不要求性能一致性及端到端数据保护等。那你可以找一个没有写入量限制保修的盘,自己设置一定量的三级OP,然后该怎么用怎么用。
但OP不是万能的,功能上不支持端到端数据保护、企业级QoS、完整掉电保护的,就算开到250% OP,耐久度上升20倍,也不会升级成企业级。
OP的局限性还体现在,少数主控和固件并不能利用用户自行设置的OP,或者即使设置了也无法扭转自身的劣势。典型的就是浦科特全家,就算你开了OP,其稳定态性能还是渣渣一样。这就是固件策略纯粹为家用设计,企图改变的一切努力都是徒劳。
而对像东芝Q Pro这种开启全盘模拟SLC的SSD来说,其简单粗暴且有效的固件策略使得手动开到100% OP能实现近似原生SLC的效果,非常适合跑分党用来吊打各路旗舰,只要你能接受买个256G的来只能当128G的用就行。
第一波NVMe袭来
毁三观的第一回我就提到过NVMe,三星依靠XS1715抢占了先机。虽然XS1715是DELL专供,面向通用的SM1715被取消,直接由SM1725取代。Intel也没闲着,一口气发布了从WI级的P3700到消费级的750一整条NVMe产品线。同时750也抢在SM951-NVMe版之前成为第一个消费级NVMe SSD。就在最近,OCZ也发布了其NVMe产品,也就是上面提到的ZD6000及ZD6300,并声称技术指标优于三星和Intel的产品。
这不当然的嘛,先出头的必然要成为“众矢之的”,对这两款同样使用PMC-Sierra主控的产品且都有第一手颗粒来源的厂家来说,产品优与劣就看两家固件编写的能力了。什么?你刚知道XS1715不是全三星产?
对不差钱,总先人一步的土豪们来说,早站到起跑线,可不要“犯规”。要记住,NVMe是协议与指令一体的,不能用现在ATA设备的一套来招呼它。比如你用CDI看750的SMART信息估计就是一张白纸。Intel本月刚刚更新了3.3.0版本的ITB,就是为了招待750。
“新版ITB已安装,就差一块750了。”
添头
今天家里来客人,包括熊孩子x1,那么当然是服务器的虚拟机+快照伺候。
在我登陆vSphere Client的时候才发现,做ESXi系统盘的X25-E掉盘了,但ESXi和所有虚拟机却一切正常,包括虚拟机开关机、建快照等,因为虚拟机存储在浴室牌sTec PCIe SSA上。对企业级Linux系统来说,系统完全加载到内存运行正是为了防止这种事情的发生。盘可以掉、网可以断、内存可以坏、CPU可以烧,但是服务不能宕,这便是那些花大价钱买来方案体现价值的地方。(然而这跟我却没啥关系……)
事后查明,盘没事,只是ESXi存储器的路径信息始终锁定为出错或者不可用,重启服务器后变恢复如常了。
有信息指出这跟X25-E(固件8860)对SATA3.0不友好有关,而我正是插在SATA3.0的接口上。
所以说,忘了SLC的神秘光环吧。别认为只有某些厂才是专注掉盘30年,也别认为只有电源管理冲突才会导致掉盘。好在没8M……
5.24 update
7爷和喵哥说凑不够5条不给射(弥天大雾)。今天突然想到了点东西,于是补了进去。另外又稍作调整。
看完这大半天的回帖,似乎大家的关注点都集中在了X25-E是怎么掉的这回事上。可这明明是添头……
我有想过这部分做回复后可见,但又一想这也是分享经验的一部分。明明为的就是让别人知道,却还要藏着掖着傲娇一下,这种方式还是让我不齿的。
所以,就像以前写完又臭又长没人看的帖子一样,欢迎酱油,只要不故意歪楼搭车就行。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|