一块2TB的SSD要进行3000PE耐久度测试,需要在顺序写入方式下(写入放大比接近1)写入2TB x 3000=6000TB的数据,这需要相当长的时间才能完成。
有朋友可能会问:在SSD里划分一个1GB容量的小分区,往里面覆盖写入3000GB,不就能测试闪存3000PE了吗?
简明版答案:闪存不支持直接覆盖写入。SSD具有磨损均衡功能,能平衡每个闪存单元的擦写次数。所以划分1GB小分区单独测SSD耐久度的方法是不可行的。
看似简单的问题,背后却有着很多深层次的秘密。
Flash Translation Layer闪存转换层:
拥有FTL闪存转换层是SSD和HDD之间的显著差别。FTL闪存转换层的影响下,操作系统以及用户角度看来固定不变的位置,在SSD内可以对应不同的闪存单元。并且FTL的映射关系是动态可变的,无法定向瞄准特定闪存单元反复擦写。
FTL除了提供闪存映射,还会参与垃圾回收和磨损均衡。
Wear Leveling磨损均衡:
SSD主控管理的磨损均衡算法会平衡所有闪存单元的擦写循环次数,避免让个别闪存单元提早损坏。
磨损均衡分为静态磨损均衡与动态磨损均衡。和很多朋友想象中不同的是,在这里静态要比动态更先进:静态磨损均衡是在每次写入时从空白闪存单元中挑选擦写次数最少的进行写入,已经存储有数据的闪存单元就无法参与到磨损均衡当中来。而静态磨损均衡会在条件具备的情况下搬走长期占用“年轻闪存单元”的静态不变数据,将其释放出来用于新数据写入,从而避免过度消耗其他闪存单元的寿命。
有了磨损均衡算法,SSD中的闪存寿命将被均匀地消耗。容量越大的SSD,使用寿命也将越长。致态TiPlus5000 2TB拥有高达1200TBW的官标耐久度,按5年计算每天可写入高达657.5GB的数据,远超日常使用所需!
SLC缓存和延缓释放:
致态TiPlus5000和其他TLC SSD一样,都具备SLC缓存功能。主控通过一系列智能SLC算法来优化SSD写入寿命。
正常情况下,写入SSD的数据都先进入SLC缓存内,然后空闲时在主控管理下释放到闪存的TLC存储区域,相当于每次数据写入会对闪存造成两次磨损。
好消息是闪存在SLC模式下写入的寿命要比TLC模式更持久。另外SSD会应用延缓释放算法,若SLC缓存内的数据后续又被删除,就免去了缓存释放产生的二次磨损。
闪存单元既能用作模拟SLC,也能直接以TLC使用,在使用选择上也是有一定讲究的。主控通常会挑选那些健壮性指标较高的闪存单元用于模拟SLC写入,其中的原因跟下面将要提到的Copyback有关。
Copyback和闪存品质:
SLC缓存释放、动态磨损均衡、垃圾回收以及处理读取干扰,都需要SSD在闪存内移动数据到其他位置。
正常情况下要移动闪存内的数据,需要SSD从特定位置读出数据内容到主控,经过ECC纠错后写入到其他位置。如果闪存支持Copyback,就可以简化这一步骤:由主控发出指令,数据无需经过主控,直接在闪存内部完成位置移动。
Copyback之所以高效是因为它实现了主控减负,不会影响到SSD执行其他任务。不过也因为未经主控纠错,数据移动过程发生的比特错误可能无法被立即发现和纠正,一旦累积到超过主控纠错引擎能力的水平,就会影响数据安全。挑选健壮性较高的闪存单元用作SLC缓存,就可以提高SSD缓存释放过程中使用Copyback的可靠性。
回顾PCEVA去年进行的SSD耐久度测试,在3000次PE之后,相当一部分SSD的SLC缓存容量出现大跳水。在其他的测试中,我们还曾发现某些SSD在寿命末期出现SLC缓存彻底被禁用的情况,这些都是SSD闪存磨损达到一定程度之后为了保障安全而在性能端做出的牺牲。
如此看来,选择采用原厂高品质闪存的SSD,无疑能获得更为持久的高性能使用体验。
最后我们回顾一下文章开头提出的问题,在致态TiPlus5000 2TB中将一个1GB文件反复覆盖写入3000次会发生什么?答案是仅仅消耗1200TBW耐久度的0.25%!真的是小case啦。
出处: 百家号 https://baijiahao.baidu.com/s?id=1753517073983035206