我最近才意识到这一问题,对于不同人来说寿命的定义是有很大不同的。对你而言寿命是什么?

是cell连slc mode下都不能有效读写才算做寿命耗尽?是按照JEDEC218B进行完整的测试,fail了才算寿命耗尽?还是误码率达到一定水平就算耗尽?亦或者是性能出现下跌、数据存储时间不过关就算寿命耗尽?这其中每个人、每个厂商都有不同的思考,并没有所谓的正确答案。在谈论寿命之前,最起码要知道自己在说什么、在说哪个寿命。

关于寿命的两个经典误区,TBW和健康度,在此我进行一些解释:首先说说TBW/PBW,这是一个厂商针对自己产品保修政策设定的值,并非是说写了那么多他就会坏,比如pceva给几块硬盘写了差不多3pb健康度才归0。

厂商的dpwd其实也是一种针对产品的预估以及定位,和绝对寿命反倒没有什么特别的关系。例如Intel750的1.2T版本与400G版本,tbw都是127T,这显然不符合客观的实际,写了差不多800T还活蹦乱跳的大把存在。在这点上可以理解汽车的保修路程,十万公里之后厂商便不对其进行保修,但你或许开了二十几万公里也没有任何问题。

当然具体的情况比较复杂,一些厂商不看写入量只看健康度,一些厂商按照先到达者去计算,一些厂商直接保证无条件质保(某些highend型号的DC SSD,实际上为无条件质保,协议上出现的任何问题都会给予售后和赔偿)。

如果你认为TBW可以代表寿命,并以此为论据痛骂QLC多么垃圾,那么你就要接受960PRO 1T有800TBW、NM800 1T有3000TBW、SN550 1T有500TBW,而p41 plus有400TBW的事实,从这一角度来看nm800的寿命吊打960pro、p41plus的寿命和sn550差不多。如果你已经了解到了TBW不等于寿命,并认可jedec218B的测试标准以及pceva等进行的耐久性测试,那么请进入下面一个内容。

为什么健康度是不可完全信任的?首先我们要理解这个健康度是怎么来的,对于一个block,我们如何推断出他的磨损程度?

答案是写入一个电平,然后去观察这个一片block的整体写入速度,以及读取电压去预估他的磨损程度,再去代入一个以及预设好的多元函数求解,以猜测这一块的相对寿命。当然,主控不可能为了测试相对寿命主动而大批量的去进行主动的磨损测试,因此健康度的预估更多是在读写以及进行磨损平衡、数据校验时根据误码率、写入延迟等进行被动的分析,其中坏块数量、备用块使用量(有些叫做block重映射,这两个是一个意思)也会对健康度产生较大影响。

如何知道固态硬盘寿命还有多少(这是关于固态硬盘寿命的半个科普吧)(1)

如何知道固态硬盘寿命还有多少(这是关于固态硬盘寿命的半个科普吧)(2)

可以看出健康度曲线本质上是一个依据nand写入量、误码率以及写入延迟等因素去预设的一个模型,这是厂商在研发时候就预先设定好的数据,而并非是一个神奇的盒子,你塞进去一个SSD他就告诉你准确的答案。

那么问题来了,如果说健康度曲线相对不准确,明明是还有大把寿命的cell却误判为了bad cell,或者使用者长期在高温工作造成cell的电平流失更加严重,这些都会造成健康度的异常情况。

况且cell的磨损并非是线性的,这是很多人不理解、也无法认识到的一个事情,他在度过了一段的平滑期后就会迅速下跌,因此单纯的用除法计算寿命是一个很可笑的事情。他可能在写入500t时候健康度还剩下90%,但是在写入600t时候直接归零,也有可能一个写了50t就95%健康度的固态直到写了600t还剩下90%,这些都是完全有可能的事情。

按照一个最极端的例子:清零的固态健康度肯定是100%,但是你觉得他的寿命还是那么靠谱吗?

如何知道固态硬盘寿命还有多少(这是关于固态硬盘寿命的半个科普吧)(3)

我觉得在谈论寿命之前,先要理解自己所说的寿命是什么、如何测量你所说的寿命、如何正确的理解Datasheet以及耐力赛里面的数据。

有兴趣和疑问的同学可以在下面讨论留言。

,