纠错码技术比如低密度奇偶校验码早就有了,它存在的时间比大多数读者的年龄还要长。原因是:没有哪一种存储或传输媒介是完美的,它们都存在某种程度的错误。 为了避免在每次出错后重新读数据或重新发送数据,存储和连网系统都配备了内置纠错码技术。 所需的纠错码强度随存储或连网系统的原始误码率以及最终解决方案可接受的输出误码率不同而不同。
本文介绍了低密度奇偶检验(LDPC)码技术,它是一种非常强大的纠错码技术,在当前最流行的存储媒介NAND闪存上应用得越来越多。
对固态硬盘纠错的需求
NAND闪存是一种非易失性、固态存储媒介,与旋转磁场媒介比如硬盘相比,它有四项优势:性能更强、密度更高、可靠性更高和功耗更低。这些优势让闪存特别适用于便携式设备以及高性能固态硬盘和服务器端高速缓存系统。
但是NAND闪存也有其弱势,它的存储单元会因为每次程序写数据/删数据而略有磨损。每当存储单元磨损时,它精确保持特定电荷状态的能力就会减弱,从而导致读数据误码率上升。 到一定程度之后,那些错误就不能被纠正了,存储单元就不能用了。
纠错能力越强,闪存单元的可用寿命就越长。换句话说,强大的纠错码技术会让存储单元变得更弱,而且读数据的可靠性也会更强。 到目前为止,象Bose-Chaudhuri-Hocquenghem(BCH)和Reed-Solomon(RS)那样的纠错码技术在固态存储解决方案中的使用效果一直还不错。但是随着芯片制造工艺的改进,以及单级单元向双级单元或三级单元进化导致存储密度增加,那种情况肯定会发生变化。
在更小的单元中储存更多的数据会让更小尺寸的存储设备具备更高的存储空间,但是存储单元尺寸变小以及密度的增加会使电量减少并导致存储单元中储存的数据的原始误码率上升。NAND闪存提供了固定数量的备用存储空间,例如为每1K字节的用户数据提供80字节的备用存储空间。 鉴于那些固定存储空间的存在,BCH和RS纠错码技术只能达到一定的原始误码率,当存储单元的变质程度达到一定的水平之后,就会出现无法纠正的错误。能够经受住更高原始误码率的纠错技术会让存储单元进一步变质,从而导致NAND闪存的P/E周期更长。
LDPC 101
低密度奇偶检验解码是一种可追溯到上个世纪六十年代的强大纠错算法。问题是:LDPC解码对计算能力的依赖性很强,它花了多年的时间去等待处理器性能提高(包括从真空管向集成电路转变), 以便让算法能够实时运行。
LDPC 纠错码最早在十年前被应用于电信行业,主要用于纠正各种媒介上的传输错误码。例如,它们现在被用于10GBase-T以太网,以及作为高吞吐量PHY规范的一部分用于802.11n和802.11ac Wi-Fi标准。 最近,LDPC纠错码已经被用于硬盘中的磁性媒介的纠错。
LDPC纠错码技术的复活尚未引起固态存储行业的注意。很多大学和厂商正在研究将LDPC纠错码用于下一代闪存控制器中的纠错的最佳方案。这项工作已经导致某些商业应用的出现,那些商业应用不久将在固态硬盘和闪存高速缓存产品中出现。
包括LDPC纠错码技术在内的所有纠错码技术都有可能在特定原始误码率条件下失效。 你可以用丢硬币的方式来验证这一点,结果可能连续丢出32个人头。当然这种情况出现的概率不高,但并非不可能。 固态硬盘纠错码技术的设计目标可能只有10%到15%的概率在不高于某个限制的原始误码率的情况下遇到无法校正的错误,那个限制与NAND闪存的预期寿命有关。与BCH相比,LDPC纠错码能够满足相同的概率目标,因此它能从NAND闪存单元中获得更多的P/E周期。
需要指出的是,某些企业级固态硬盘和闪存高速缓存解决方案包括了检测或修补不能被纠错码检测并纠正的任何错误的规定。其中有两条规定是端到端循环冗余校验(CRC)和类似于RAID的数据保护。 在性价比和可用容量上的轻微副作用会让它适用于业务关键应用。
使用LDPC纠错码技术时有两类解码方式,一种是硬件决定,一种是软件决定。硬件决定型解码技术的纠错率堪比BCH纠错码技术。 硬件决定型解码技术在两个相邻存储状态之间只使用一个量化电平,它实际上是每字节基础上的二进位解码技术。这会让硬件决定型LDPC(HLDPC)解码技术具备合理的性能。 但是与BCH纠错码技术相比,HLDPC解码技术在纠错率上并无丝毫改进。
与HLDPC解码技术相比,软件决定型LDPC(SLDPC)解码技术使用的每字节量化水平更高。每字节并不仅仅是指一个0或者一个1,而是它是0或1的概率。 每字节的概率提供的更多信息是什么令SLDPC解码技术有了这么高的纠错性能。信息越多,纠错能力就越强。
鉴于硬件决定型解码技术是一种纯二元技术,软件决定型解码技术需要深入到相邻存储状态之间的模拟电平之中。鉴于这个原因,很多机制需要使用相当复杂的数字信号处理技术,将从不同的参考电压电平上的NAND闪存单元中读出的数据转换成概率,由SLDPC解码技术处理。
在某些复杂的系统中,每当硬件决定型解码技术不能纠正错误时,软件决定型LDPC解码技术就会接手。各种软件决定型机制都有可能,其中有些技术还可明显改善纠错性能。 这就是为什么软件决定型解码技术目前引领着最新型闪存纠错码技术。为了保护知识产权,厂商们都不愿公布太多与它们使用的机制有关的信息,但它有可能提供一些洞察力。
正如可预期的那样,软件决定型解码技术相对更强的纠错能力是有代价的,那就是它的延迟时间会比较长。这主要有两个原因。 其中一个原因是NAND闪存单元需要在各种参考电压电平上执行更多精确读数据操作和/或搜集更多与NAND闪存单元的误差特性有关的信息;另一个原因是需要对结果执行更多复杂的数字信号处理和复杂的算法解码。
有一种技术可以将延迟时间最小化同时保留SLDPC解码技术的纠错能力,那就是只有在需要修正错误时才逐步执行越来越强的软件决定型解码技术。解决的办法有一个,即在快速HDLPC解码技术上建5个这种水平的SLDPC解码系统。

图 1:只有当硬件决定型解码技术失效时才逐步使用越来越强(同时也越来越慢)的软件决定型解码技术可以将LDPC解码技术的延迟时间最小化。软件决定型解码技术的性能是可以通过使用高级数字信号处理技术和多处理器并行技术得到提高的。与具体应用对应的数字信号处理技术能够更迅捷和精确地处理闪存单元电压检测,在更低的SLDPC解码水平上修正错误,而并行处理技术是一种能够在各个层次上加快解码速度的常用技术。
提高性能的另一种做法是增加超额准备的内存数量,以备未来纠错所用。当NAND闪存芯片是全新的并且出错率很低的时候,纠错所需的存储空间就很少。 当存储单元开始磨损,原始出错率提高的时候,为纠错分配更多存储空间就有助于提高纠错性能。使用这种自适应的纠错存储空间分配技术的目标是在容量和耐久性之间达到一种平衡。
还有另一种技术涉及到预期和减少原始误码的各种来源(例如P/E循环、留存、读干扰等等)。 如果管理得当,这些错误来源就能通过硬件决定型LDPC解码技术得到解决。 因此,找出出错的原因以及减少这些错误来源的影响是避免性能受到影响的有效做法,否则就会造成利用速度相对较慢的软件决定型LDPC解码技术去修正那些错误来源。
结论
这在现实中意味着什么? 这意味着下一代固态存储解决方案会有更高的闪存耐用性和更高的存储容量。NAND闪存芯片在出现高得不可接受的误码率之前将指定拥有一定数量的P/E周期。 LDPC纠错技术能够利用更高的原始误码率满足输出误码率要求,因此可以极大地拓展NAND闪存的可用P/E周期。这些技术可以让20纳米以下的三级单元芯片能够在高容量、高性能固态硬盘和闪存高速缓存解决方案中具备商业可行性。
当然,LDPC纠错码和外形更小/存储密度更高的芯片并非固态存储技术的唯一进展。实际上,在提高耐用性、提高性能和可靠性以及降低能耗方面,还有更多其他的技术可用。 这些技术包括数据简化来将写数据、写放大和磨损水平最小化,让所有的单元的使用寿命跟主平板电脑、PC或服务器的使用寿命相当。