如何解决闪存制程差异下的坏块管理问题

背景及动机

3D闪存架构中的制程差异增加了坏块管理的难度。由于不同块之间的错误特征不同,现有的基于P/E次数的坏块管理策略下,很难确定合适的P/E阈值。若P/E设置激进,则增加数据丢失的可能性;若P/E设置保守,则无法充分利用强可靠性闪存块的寿命,从而降低了SSD的整体使用寿命。本文探讨的坏块管理,本质是如何权衡可靠性和SSD使用寿命?

一个理想的坏块管理策略是在一个块失败之前立即退役,关键是能够准确地预测闪存块何时接近其生命周期的末端。

在本文中,利用闪存块之间的空间相关性划分集群,以集群为粒度进行坏块管理。如果在块级存在空间相关性,那么一个块的失效是其相邻块近期失效的有力指标。本文在海力士3D TLC闪存上进行可靠性实验,分析相邻闪存块之间的错误特征,并且表明存在集群相似性,即物理接近的闪存块具有相似的错误特征。

集群相似性

实验设置:

从10块海力士TLC闪存选取40个cluster,每个cluster的选取采用同个plane中的连续10个块。对这些块执行编程随机数据,然后执行擦除,循环直到报废。擦除之前数据的dwell time为10s。收集对应P/E下的比特错误率。

结论:

1)对于不同集群中的块,在P/E周期中的比特错误率趋势可能非常不同;2)对于同一集群中的块,比特错误率趋势更加相似,即存在集群相似性。

基于集群的坏块管理

基于集群相似性,提出了一种基于集群的坏块管理策略。集群中的闪存块可靠性及在P/E影响下错误率趋势具有相似性。也就是说,在坏块管理时,当其中一个闪存块成为坏块时,整个集群中的闪存块全部标记为坏块。通过这种集群相似性特征来管理坏块,可以及时标记坏块,从而在确保可靠性的前提下,尽可能提升闪存寿命。

提出的基于集群的坏块管理策略有两个关键设计问题。

集群大小的选择

集群大小决定了SSD寿命和可靠性之间的权衡。更大的集群大小会导致更低的故障率(更加保守,并不能完全耗尽每一个闪存块的寿命),但会以更短的SSD寿命为代价。如何选择集群相似度强的集群大小,在不牺牲SSD寿命的情况下保证可靠性,对于基于集群的坏块管理机制的有效性至关重要。为此,本文提出了一个度量标准来量化集群的相似性,并推导出闪存块故障率和集群大小之间的相关性。因此,给定集群大小的可靠性和SSD寿命之间的权衡可以被定量地评估。

集群退役时对I/O性能的影响

集群退役的时候,该集群的所有有效数据需要拷贝到其他集群。由于集群退役而导致的读写突发可能会干扰用户的I/O请求。为了解决这一问题,本文提出了一种关键块优先调度策略,当集群中某个块标记为坏块时,该块的数据迁移优先级高于用户请求。集群中其余块在之后SSD空闲时,执行关联的读写操作。因此,可以尽量减少集群退役时的性能影响。

实验测试

实验一:对比基于集群的管理方法和基于块的管理方法

权衡Block usage和Block failure rate。其中,‍Block usage指的是被定义为在SSD不再可用之前所承受的平均P/E。Block failure rate定义为发生块故障的块的比例。

当P/E次数增加时,块的使用情况和块的故障率都会上升。基于集群的块管理方法中,可以实现23000P/E次数,并实现block failure rate为0.01。对于基于块的管理方法,当确保块失败率为0.01时,P/E仅为11000。如果要实现23000P/E,块失败率为0.09。这表明,所提出的基于集群相似性的方法在块使用和块故障率之间实现了更好的权衡。

为了进行更详细的分析,从块管理策略中选择以下设置,以查看块退休率和块故障率如何随时间变化。

不同的集群大小如何影响基于集群的管理策略?图8展示了块退休率和块故障率随时间变化趋势。评估了五种不同的集群大小,包括1、2、5、10,以及clusterAll表示同一芯片内的所有块视为单个集群。注意,cluster1相当于BlockNoLimit,clusterALL代表集群很大。

  • 当集群大小增加时,寿命降低。然而,对于集群大小为1、2、5、10,差异不显著。这是因为当集群大小等于10时,集群相似性仍然很强。
  • 随着集群大小的增加,块故障率减小。当集群大小等于10时,块故障率已经小于0.01。因此,没有必要选择一个更大的集群大小。

实验二:测试数据重新分配的性能情况

比较了基于集群管理策略与基于块管理策略的I/O性能。该实验表明,通过关键块优先分配调度可以减轻基于集群管理策略的I/O影响。下图表示块退役前后的I/O延迟。x轴表示分析时间和块退役之间的时间差,从块退役前50秒到块退役后50秒。y轴表示每1000个请求的平均I/O延迟。可以看到,基于集群的方法会引入延迟尖峰。而关键块优先分配解决了此问题。

总结

本文发现物理接近的闪存块间存在相似的误差特征(集群相似性),提出一种基于集群的坏块管理方式,确保闪存可靠性的前提下,提升闪存寿命。考虑到基于集群的管理下,集群退役引起的I/O性能问题,本文还提供了一种针对坏块重新分配的关键块优先调度方法。实验表明所提出的方法可以延长闪存寿命2倍,而不会有任何I/O性能下降。