SSD纠错码向LDPC码演变

作者:Stephen Bates

                SSD控制器芯片中采用的纠错编码(ECCs)的类型正在发生一场演变,相信许多这篇博文的读者对此都有所了解。传统上采用的纠错码是基于群变换的博斯-查德胡里-霍昆格母(BCH码,对于大尺寸的NAND闪存而言完全胜任。然而,对更为廉价及密度更高的NAND闪存的需求意味着BCH不再够用,为了寻求替代方法,多数人目前都选择了低密度奇偶校验码(LDPC)。

            本篇博文将讲述这场演变的意义所在及其对我们PMC称之为Software Defined Flash(软件定义闪存)这一领域的影响。如需了解更多LDPC码的背景,请参看Kent Smith 的精彩博文

            BCHLDPC转变的原因有若干条,但最终都归于一点:LDPC码在相同的用户数据与ECC校验码之比下可以纠正更多的错误。这句话中提到相同的用户数据与ECC校验码之比非常重要。原因是我们不想增加SSD中的ECC校验位数,因为增加ECC校验位数会带来各种难以处理的问题,如写放大(Write Amplification , WA)及数据格式的低效利用等。

            你也许会说,“如果LDPC码这么棒,那为什么不打一开始就用它呢?”这个问题也在情理之中,答案在于几个因素:

·        虽然LDPC码最早由Robert Gallagher1960年提出,其真正价值直到90年代才真正实现,那是在NAND闪存已经采用了BCH码之后。

·        解码LDPC码的电路与相当的BCH码电路相比,通常体积与功耗都需要更大

·        LDPC码的优势只在能从NAND闪存中提取软信息是才真正彰显出来,而这种信息提取只在最新一代技术中才刚刚实现

但是,现在任何LDPC码应用的阻碍都不复存在,因此面世的多款SSD控制器中

都已经集成了LDPC码。我们因此可以从若干新角度来讨论SSD的问题。

LDPC提供的耐久度与/或数据留存

            BCH码向LDPC码演变带来的一个显著益处是控制器可以借此来延长SSD的使用寿命。NAND闪存随着编程-删除(PE)周期而逐渐损耗。举例而言,改成LDPC码可能将闪存周期从10,000提到15,000PE周期,这样一来,就可以实现SSD在耐久性上50%的提升,而无须更换NAND闪存。类似地,改为LDPC码也可以提升SSD的留存率。

SSD纠错码向LDPC码演变_第1张图片

闪存随着编程-闪存周期而损耗。LDPC与BCH相比,可以在每页中纠正更多错误,因此可以维持闪存更长的寿命,从而带来更高耐久度的SSD。

LDPC带来容量改善

            从BCH码变为LDPC码带来的一个不那么明显的好处是每个闪存页面上的出错数目因此增加了。“为什么竟然会想要增加闪存页面上的出错数目呢?”有意思的是,如果接受每个NAND闪存页面上出错增加能换取NAND闪存上页面数目的提升不是很好吗?从MLCNAND闪存向TLCNAND闪存过渡恰好会实现这一点。

            TLC NAND闪存比MLC NAND闪存的页数多出50%,比SLC NAND闪存多出150%,因此可以提供$/GB方面巨大的改善。每页出错数增加当然会带来负面影响,但对于某些应用而言是可以接受的。

            从BCH码向LDPC码的演进促成了NAND闪存的TLC市场,并将NAND闪存的$/GB降至更低。

LDPC带来延迟改善

            如果说企业级和数据中心用户对其使用的SSD只有一点要求,那一定是延迟。对某些应用而言,延迟及延迟的稳定性要求至关重要。我会在将来的博文中更详细地讨论这个问题。在这里,我想提一下,采用LDPC码——尤其是速率适应型的LDPC码——可以实现延迟控制,甚至对延迟的变化幅度作出限定。

LDPC对软件定义闪存的意义

            有意思的是,如若精心设计,上述所有场景中采用的LDPCIP可以完全相同。通过对控制LDPC IP的固件进行微调,可以使控制器适用于多种应用。这一点对于Software Defined Flash (SDF) 很有价值。

            SDF允许用户通过改变运行于SSD之上的固件及软件的行为来调整SSD的属性。这就使物理上完全相同的SSD可以以完全不同的属性运作,这一点不管从静态还是动态的角度来看都很有意思:

·        静态配置——假设某人想要在其数据中心中部署大量SSD。设想一下,这些SSD中有些需要高耐久度,而另外一些需要$/GB较低。支持SDF的SSD可以通过在SSD上安放不同的固件及软件来满足单个驱动中这些多样化的器件需求。

·        动态配置——假设某人想要在其数据中心中部署大量SSD。设想一下,他们需要一种昼夜交替的负载模式,白天需要低延迟,夜晚则需要低功耗。那么,支持SDF的SSD又可以根据置于SSD之上的软件管理层上的指令来调整其一天当中的行为。

结论

            由此可见,从BCH码变为LDPC码可以促成SSD 内部的许多精彩改变。有些改变一目了然(耐久度提高),有些比较隐讳(延迟控制),另一些则更为激进(如SSD的属性在一天中变化不定)。

            该项技术的普及将会带来些什么,我们拭目以待。Software Defined Flash 及其对SSD在企业级和数据中心环境中如何部署会带来的影响,在未来很长一段时间,将会引发种种讨论。

            你认为这一演变将带来的最为激动人心的变化是什么呢?

 

你可能感兴趣的:(SSD纠错码向LDPC码演变)